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>
其他参考了这篇文章: