iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 1
1
Software Development

認識scala系列 第 1

Scala day 1 (Run scala)

前言

在還沒開始之前有些稍微找了一些 scala 的資料.scala 基本的核心概念或許就是名字的本身 scalable(sca) language(la),感覺這語言就是要讓它的擴充性很強大.而且很有意思的是發現它還可以用來實作 functional programming,但 scala 是基於 JVM 的語言,Java 卻是 object oriented programming,這樣看起來的意思是 scala 可以跨越 functional programming 及 object oriented programming 的一種語言.但由於本身只會一點點 java,也不太了解 functional programming.所以無法很宏觀的來看待 scala.不過相信一種語言用久了一定會漸漸了解它的好與不足的地方.所以還是別想太多一天一天的來認識 scala 吧~

Run scala

scala安裝:

1.下載scala-2.12.4版本(需要jdk1.8),這邊使用的是scala-2.12.4.tgz

參考網址:https://www.scala-lang.org/download/

2.下載後解壓縮,設定環境變數(vi ~/.bash_profile)

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
export SCALA_HOME=/Volumes/Transcend/scala-test/scala-2.12.4
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH:~/bin

修改完後,重新讀取設定檔:

source ~/.bash_profile

確認java版本

daniel@Danielde-MacBook-Pro > java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

使用指令執行scala:

使用三種方式印出HelloWorld.

  • 第1種 使用 scala REPL 環境印出HelloWorld.
    執行scala,要離開scala 環境,可下:q 或 :quit
daniel@Danielde-MacBook-Pro > scala
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111).
Type in expressions for evaluation. Or try :help.

scala> val msg = "Hello World"
msg: String = Hello World
scala>
  • 第2種 使用 HelloWorld.scala 印出HelloWorld.
object HelloWorld {

  def main(args: Array[String]): Unit = {
    println("Hello World!")
  }
}

直接執行scala程式

 daniel@Danielde-MacBook-Pro > scala HelloWorld.scala
 Hello World!
  • 第3種 使用 HelloWorld.sh 印出HelloWorld.
#!/usr/bin/env scala

object HelloWorld extends App {
  print(args(0) + " ")
  print(args(1) + "\n")
}

val args = Array("Hello","World!")
HelloWorld.main(args)

val msg="This is by shell"
println(msg)

執行HelloWorld.sh

daniel@Danielde-MacBook-Pro > ./HelloWorld.sh
/Volumes/Transcend/scala-test/./HelloWorld.sh:8: warning: Script has a main object but statement is disallowed
val args = Array("Hello","World!")
    ^
one warning found
Hello World!
This is by shell

總結


  • scala 安裝時需要安裝jdk.

  • 執行scala有三種方式:

    1. 使用scala REPL.
    2. 使用scala直接執行scala程式.
    3. 直接執行shell的方式.

下一篇
Scala day 2 (Compile Scala)
系列文
認識scala30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Wolke
iT邦新手 1 級 ‧ 2017-12-07 23:53:27

scala主要開發什麼用的?

stana iT邦新手 5 級 ‧ 2017-12-08 12:17:28 檢舉

基本上Java可以開發的,Scala都可以開發,因為Scala最後也是在JVM上面執行。

kmtiger iT邦新手 5 級 ‧ 2018-03-17 13:08:08 檢舉

是這樣 因為現在大數據最紅的是SPARK,而SPARK是SCALA寫的

0
Wolke
iT邦新手 1 級 ‧ 2017-12-07 23:53:28

scala主要開發什麼用的?

scala 可以運用在許多領域,不管 Web 或 Batch 程式都可以開發,我目前主要是要用在 Big Data 的 Spark 上面.至於主要開發什麼用的 ? 我認為語言應該只是我們開發應用程式上的工具,所以應該先思考想開法哪種領域的東西,像是web、手機、物聯網、AI、Big Data 之類的,再來決定要用哪種語言來實作.希望有幫到你.

vitojeng iT邦新手 5 級 ‧ 2017-12-11 10:44:50 檢舉

/images/emoticon/emoticon38.gif
想回答卻貼錯地方了 ~~
麻煩請見下方.

1
vitojeng
iT邦新手 5 級 ‧ 2017-12-11 10:10:13

Scala 可以像 Java 一樣運行在 JVM 之上, 同時擁有 OOP 及 FP 的特性, 因此 Java 能做的範圍,基本上 Scala 都可以做.

目前在分散式運算以及大數據這二大領域算是 Scala 主要發揮的地方,像 Apache Spark, Apache Kafka(core), Akka 等都是 Scala 開發出來的.

另外, 也有 Scala.js, 可以用 Scala 開發前端 javascript 程式,讓你可以在開發前端時, 同時享受 Scala 帶來的優勢.

Reference:
ITHOME - 【大資料2016趨勢分析】超夯Big Data新架構SMACK崛起
InfoQ - Scala.js:将Scala编译为JavaScript的编译器

我要留言

立即登入留言