{"id":453,"date":"2021-08-12T21:59:19","date_gmt":"2021-08-12T12:59:19","guid":{"rendered":"https:\/\/osmanthus.work\/?p=453"},"modified":"2021-09-02T23:27:16","modified_gmt":"2021-09-02T14:27:16","slug":"hello-world-in-scala","status":"publish","type":"post","link":"https:\/\/osmanthus.work\/?p=453","title":{"rendered":"Various ways to print &#8220;Hello world&#8221; in Scala"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>I will show the way to build and run program which prints &#8220;hello world&#8221; without sbt, with sbt, with maven. Here, sbt is &#8220;Scala Build Tool&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Preliminaries<\/h2>\n\n\n\n<p>Scala Version:2.12<\/p>\n\n\n\n<p>sbt:1.2.7<\/p>\n\n\n\n<p>OS:CentOS7<\/p>\n\n\n\n<p>Java:OpenJDK8<\/p>\n\n\n\n<p>Maven:3.6.3<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Install Scala and Maven<\/h2>\n\n\n\n<p>Refer to [3]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Hello world without sbt<\/h2>\n\n\n\n<p>Execute the following procedures[1].<\/p>\n\n\n\n<p>(1) Create source file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi Hello.scala\n--Hello.scala\nobject Hello {\n    def main(args: Array&#91;String]) = {\n        println(\"Hello, world\")\n    }\n}\n--\n\n<\/code><\/pre>\n\n\n\n<p>(2) compile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>scalac Hello.scala<\/code><\/pre>\n\n\n\n<p>(3) run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>scala Hello<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. Hello world with sbt<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">5.1 Install sbt<\/h3>\n\n\n\n<p> Execute the following commands[4]. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/www.scala-sbt.org\/sbt-rpm.repo &gt; sbt-rpm.repo\nsudo mv sbt-rpm.repo \/etc\/yum.repos.d\/\nsudo yum install sbt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.2 Create project<\/h3>\n\n\n\n<p>Execute the following command[4]. Let the project name be &#8220;hello&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sbt new sbt\/scala-seed.g8\ncd hello<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.3 Hello world with sbt shell<\/h3>\n\n\n\n<p>(1) Compile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sbt compile<\/code><\/pre>\n\n\n\n<p>(2) Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sbt run<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.4 Hello World with scala<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pushd .\/target\/scala-2.12\/classes\/\nscala example.Hello\npopd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.4 Hello world with java<\/h3>\n\n\n\n<p>(1) Create &#8220;plugins.sbt&#8221;[7][8].  sbt-assembly is a plugin which create a jar from a project.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi .\/project\/plugins.sbt\n--\naddSbtPlugin(\"com.eed3si9n\" % \"sbt-assembly\" % \"0.14.10\")\n--<\/code><\/pre>\n\n\n\n<p>(2) Compile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sbt assembly<\/code><\/pre>\n\n\n\n<p>(3) Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -jar .\/target\/scala-2.12\/hello-assembly-0.1.0-SNAPSHOT.jar<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. Hello world with maven<\/h2>\n\n\n\n<p>Perform the following steps. For detail, refer to [8].<\/p>\n\n\n\n<p>(1) Create a maven project.  <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>mvn archetype:generate -DarchetypeGroupId=net.alchim31.maven -DarchetypeArtifactId=scala-archetype-simple<\/code><\/pre>\n\n\n\n<p>(2) Maven ask you some inputs. I put the followings.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>name<\/td><td>value<\/td><\/tr><tr><td>groupid<\/td><td>group1<\/td><\/tr><tr><td>artifactId<\/td><td>artifact1<\/td><\/tr><tr><td>version<\/td><td>1.0<\/td><\/tr><tr><td>package<\/td><td>package1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>(3) Add the following  &lt;plugin&gt;&#8230;&lt;\/plugin&gt;  part to pom.xml for creating jar file.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:1px\"><code>&lt;project ...&gt;\n    &lt;modelVersion&gt;X.X.X&lt;\/modelVersion&gt;\n    ...\n    &lt;licenses&gt;\n        ...\n    &lt;\/licenses&gt;\n\n    &lt;properties&gt;\n        ...\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        ...\n    &lt;\/dependencies&gt;\n\n    &lt;build&gt;\n        ...\n        &lt;plugins&gt;\n            ...\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;\n                &lt;artifactId&gt;maven-assembly-plugin&lt;\/artifactId&gt;\n                &lt;version&gt;2.4&lt;\/version&gt;\n                &lt;configuration&gt;\n                    &lt;descriptorRefs&gt;\n                        &lt;descriptorRef&gt;jar-with-dependencies&lt;\/descriptorRef&gt;\n                    &lt;\/descriptorRefs&gt;\n                    &lt;archive&gt;\n                        &lt;manifest&gt;\n                            &lt;mainClass&gt;com.your-package.MainClass&lt;\/mainClass&gt;\n                        &lt;\/manifest&gt;\n                    &lt;\/archive&gt;\n                &lt;\/configuration&gt;\n                &lt;executions&gt;\n                    &lt;execution&gt;\n                        &lt;phase&gt;package&lt;\/phase&gt;\n                        &lt;goals&gt;\n                            &lt;goal&gt;single&lt;\/goal&gt;\n                        &lt;\/goals&gt;\n                    &lt;\/execution&gt;\n                &lt;\/executions&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n&lt;\/project&gt;<\/code><\/pre>\n\n\n\n<p>(4) Create jar file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mvn package<\/code><\/pre>\n\n\n\n<p>(5) Execute jar.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -jar target\/artifact1-1.0-jar-with-dependencies.jar<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. References<\/h2>\n\n\n\n<p>[1] SCALA BOOK, HELLO, WORLD<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.scala-lang.org\/overviews\/scala-book\/hello-world-1.html\">https:\/\/docs.scala-lang.org\/overviews\/scala-book\/hello-world-1.html<\/a><\/p>\n\n\n\n<p>[2] Scala Build Tool(sbt)<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.scala-lang.org\/overviews\/scala-book\/scala-build-tool-sbt.html\">https:\/\/docs.scala-lang.org\/overviews\/scala-book\/scala-build-tool-sbt.html<\/a><\/p>\n\n\n\n<p>[3] Installing Apache Spark from source<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-pcstudy wp-block-embed-pcstudy\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"W2VvsJzPTn\"><a href=\"https:\/\/osmanthus.work\/?p=204\">Installing Apache Spark from source<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Installing Apache Spark from source&#8221; &#8212; pcstudy\" src=\"https:\/\/osmanthus.work\/?p=204&#038;embed=true#?secret=NEJQba3KPe#?secret=W2VvsJzPTn\" data-secret=\"W2VvsJzPTn\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>[4] sbt Reference Manual, Hello, World<\/p>\n\n\n\n<p><a href=\"https:\/\/www.scala-sbt.org\/1.x\/docs\/Hello.html\">https:\/\/www.scala-sbt.org\/1.x\/docs\/Hello.html<\/a><\/p>\n\n\n\n<p>[5]  sbt Reference Manual,  Installing sbt on Linux<\/p>\n\n\n\n<p><a href=\"https:\/\/www.scala-sbt.org\/1.x\/docs\/Installing-sbt-on-Linux.html\">https:\/\/www.scala-sbt.org\/1.x\/docs\/Installing-sbt-on-Linux.html<\/a><\/p>\n\n\n\n<p>[6] Custom Package Formats<\/p>\n\n\n\n<p><a href=\"https:\/\/www.scala-sbt.org\/sbt-native-packager\/recipes\/custom.html\">https:\/\/www.scala-sbt.org\/sbt-native-packager\/recipes\/custom.html<\/a><\/p>\n\n\n\n<p>[7] sbt-assembly&#8217;s repository in Github, unresolved dependency: com.eed3si9n#sbt-assembly;0.14.4: not found<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/sbt\/sbt-assembly\/issues\/239\">https:\/\/github.com\/sbt\/sbt-assembly\/issues\/239<\/a><\/p>\n\n\n\n<p>[8] SCALA WITH MAVEN<br><a href=\"https:\/\/docs.scala-lang.org\/tutorials\/scala-with-maven.html\">https:\/\/docs.scala-lang.org\/tutorials\/scala-with-maven.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction I will show the way to build and run program which prints &#8220;hello world&#8221; without sbt, with sbt, with maven. Here, sbt is &#8220;Scala Build Tool&#8221;. 2. Preliminaries Scala Version:2.12 sbt:1.2.7 OS:CentOS7 Java:OpenJDK8 Maven:3.6.3 3. Install Scala and Maven Refer to [3] 4. Hello world without sbt Execute the following procedures[1]. (1) Create [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[10],"tags":[],"class_list":["post-453","post","type-post","status-publish","format-standard","hentry","category-programming","entry"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/posts\/453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/osmanthus.work\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=453"}],"version-history":[{"count":49,"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":550,"href":"https:\/\/osmanthus.work\/index.php?rest_route=\/wp\/v2\/posts\/453\/revisions\/550"}],"wp:attachment":[{"href":"https:\/\/osmanthus.work\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/osmanthus.work\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/osmanthus.work\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}