Scala開發之1:環境搭建

車斗發表於2020-10-14

Scala開發之1:環境搭建

好久沒寫部落格了。今天把 Scala 開發的經驗總結一下,備忘。

Why Scala

其實沒有為什麼,好玩,足夠了。Scala 足夠強大,足夠優雅,足夠挖掘其內涵。如何非要和 Python相比,Python 五大三粗,足夠醜陋,足夠彪悍,髒活累活不在話下。Scala 背後有 Java 大靠山,亦能登大雅之堂。

How to do

對於語法這些東西,不用是記不住的。我也就不重複了。其實我也是邊用邊學。首先是安裝環境。Windows和Linux均可。首先安裝 JDK8或11。我習慣用Java8。然後是 Maven。別的IDE什麼的我也不會,就不說了。然後用 Maven可以編譯Java專案。這樣一個基本的開發環境就具備了。Scala就是安裝其執行時。這樣在命令列裡敲 scala 就可以開啟其 REPL 了。

scala 執行時下載安裝

從 Scala 官網地址 http://www.scala-lang.org/downloads 下載 Scala 二進位制包。選擇自己需要的版本。

Widnows 選擇MSI安裝包:

https://downloads.lightbend.com/scala/2.12.12/scala-2.12.12.msi

Centos 下載 RPM 包:

$ wget https://downloads.lightbend.com/scala/2.12.12/scala-2.12.12.rpm

$ rpm -ivh scala-2.12.12.rpm

Cygwin 下載(add url =http://mirrors.163.com/cygwin/):

https://downloads.lightbend.com/scala/2.12.12/scala-2.12.12.tgz

安裝成功之後,開啟命令列終端,敲 scala 進去,就可以幹活了。

ammonite REPL 下載安裝

ammonite 是一個升級版的 scala repl。主要目的是為了將 scala 當成指令碼語言來使用。scala 是一個編譯型的語言,不方便動態生成程式碼並執行。於是有大牛寫了這個ammonite——既是一個命令列工具 (REPL),也包含一些好用的庫和執行時支援(jar 包)。等於是站在巨人的肩膀上。

在 Linux/Cygwin 一鍵安裝 ammonite:

$ sudo sh -c '(echo "#!/usr/bin/env sh" && curl -L https://github.com/lihaoyi/Ammonite/releases/download/2.2.0/2.12-2.2.0) > /usr/local/bin/amm && chmod +x /usr/local/bin/amm' && amm

安裝完畢之後,執行命令 amm 就進入了 ammonite REPL。

ammonite 動態執行指令碼的問題

我用 A.java 呼叫 B.scala, B.scala 裡面實現呼叫動態生成的 C.sc。C.sc就是我用 A.java 在執行時生成的指令碼檔案。這樣做有一個問題,就是執行 mvn test 命令時並不能真正執行 C.sc,而真正執行 A.jar 的時候是可以執行的。這很令人費解,不過不影響這個實現方案。

要想在 Java 專案使用 ammonite,pom.xml 需要引入下面的配置:

    <!-- https://mvnrepository.com/artifact/com.lihaoyi/ammonite -->
    <dependency>
        <groupId>com.lihaoyi</groupId>
        <artifactId>ammonite_2.12.12</artifactId>
        <version>2.2.0-4-4bd225e</version>
    </dependency>

其他參考了這篇文章:

scala指令碼執行:原生執行和框架呼叫

相關文章