本篇文章爲你們介紹如下Scala和Scala的安裝以及IDE(eclipse)的使用,雖然這個基本環境沒有什麼技術含量,可是基本環境作很差,日後探討再高深的東西,都是白扯,這裏的全部Scala使用都是在window環境下的。java
官方網址:http://www.scala-lang.org程序員
官網對scala的介紹:算法
Scala既是面向對象的語言,也是面向函數的語言。scala能夠爲你在作大量代碼重用和擴展是提供優雅的層次結構,並能夠經過高階函數來實現這樣的目標。(高階函數是函數式編程裏的特性之一,容許函數做爲參數傳遞,也容許函數做爲返回值來返回)。編程
Scala創始人Martin Odersky馬丁·奧德斯基。數組
Martin是EPFL(瑞士領先的技術大學,洛桑聯邦理工學院)編程研究組的教授。他在整個職業生涯中一直不斷追求着一個目標:讓寫程序這樣一個基礎工做變得高效、簡單、且使人愉悅。網絡
他可能比世界上任何一我的寫過更多的Java和Scala代碼。他編寫了javac,這是目前大部分Java程序員所使用的編譯器。他也編寫了Scala編譯器scalac,可謂是Scala社區飛速發展的基石。他著有《Programming in Scala》一書,是最暢銷的Scala書籍。他曾經就任於IBM研究院、耶魯大學、卡爾斯魯厄大學以及南澳大利亞大學。在此以前,他在瑞士蘇黎世聯邦理工學院追隨Pascal創始人Niklaus Wirth學習,並於1989年得到博士學位。數據結構
對於scala這門語言,有人把它當作Java的延伸版,有人把它當作JVM上的C++,有人以爲這是面嚮對象語言和麪向函數語言的簡單混合,有人以爲這就是Haskell,並且也還不如Haskell強。(純的面向函數式編程語言)多線程
下圖Martin Odersky馬丁·奧德斯基(Scala的發明者,EPFL教授)在2016年夏天的Scala Day舊金山大會上發出了這張著名的玩笑照片:併發
這個圖片上的翻譯是:「Scala惟一的做用是將人引向Haskell」。馬丁·奧德斯基以此做爲一個笑話,說他該把Scala改一下名字,叫作Hascalator,還請人設計了一個Logo。eclipse
Scala並不適於編程的初級課程。相反,它是爲專業程序員定製的強力語言。
1)它是一門現代編程語言,做者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等語言的影響。
2)它便是一門面向對象(OOP)語言,每一個變量都是一個對象,每一個「操做符」都是方法。它同時也是一門函數式編程(FP)語言,能夠將函數做爲參數傳遞。你能夠用OOP、FP,或者二者結合的方式編寫代碼。
3)Scala代碼經過scalac編譯成.class文件,而後在JVM上運行,能夠無縫使用已有的豐富的Java類庫。即Scala的代碼會編譯成字節碼,運行在Java虛擬機(JVM)上。
4)接觸語言的第一天你就能編出有趣的程序,可是這門語言很深奧,隨着學習的深刻,你會發現更新、更好的編寫代碼的方式。Scala會改變你對編程的見解。針對同一任務,能夠有不少種不一樣的實現方式,而且可讀性以及性能都有不同的體現。
Array(1,2,3,4)
如何遍歷數組中的元素,你應該這麼作:
for(i<-Array(1,2,3,4))println(i) Array(1,2,3,4).foreach{print(_)}
若是嘗試將這些元素轉換爲新的集合,應該使用for/yield表達式或者map方法:
for(i<-Array(1,2,3))yield i*2 //> res4: Array[Int] = Array(2, 4, 6) Array(1,2,3).map(_*2) //> res5: Array[Int] = Array(2, 4, 6)
好比過濾出一個集合中元素小於4的集合,你可使用filter方法:
val nums=List(1,2,3,4).filter(_<4) //> nums : List[Int] = List(1, 2, 3)
Scala相較於Java而言,則是相信程序員的優化能力。馬丁·奧德斯基說:「不少程序員會告訴我,他們通常會重構他們的Scala代碼兩三次,甚至三四次。」這聽起來彷佛很是的沒有效率,但Scala就是這樣的語言,每一次重構,代碼的性能或者是可讀性都會有極高的提高。
Scala不把程序員當傻子。馬丁·奧德斯基對於scalca的定位很清楚:「Scala如今是爲聰明人創造的,之後也是爲聰明人服務的。」
Scala提供一整套工具,讓程序員自由選擇,不管是mutable數據結構,immutable數據結構,並行(parallel)數據結構。而後在這些選擇中,Scala再針對他們進行算法層面的特殊優化。Scala相信程序員的聰明才智,讓程序員自行選擇合適的結構,以針對變化萬千的任務需求,這點是Scala作得極好的地方。
scala不是一門純的函數式編程語言,因此有別純函數式語言的區別之一是:scala提供變量和常量,而純函數式編程語言是沒有變量這概念的。
以前就有人提到過,Scala新手和老手寫出來的代碼徹底會呈現兩種不一樣的風格,甚至新人根本不能讀懂有經驗的Scala程序員所寫的代碼,有人因而戲稱:「太好了,這樣的話咱們部門的實習生就不能亂碰我寫的代碼啦!」但其實不只風格不一樣,執行效率差距也必定是巨大的。
kafka:分佈式消息隊列,內部代碼常常用來處理併發的問題,用scala能夠大大簡化其代碼。
spark:處理多線程場景方便,另外spark主要用做內存計算,常常要用來實現複雜的算法。利用scala這種函數式編程語言能夠大大簡化代碼。
注:本文僅列舉一部分。
安裝Scala的前提必須已經安裝好了JDK,JDK的安裝不作贅述。這裏須要1.7版本及以上的。
到官網下載以下圖的安裝包便可。
雙擊運行,基本就是傻瓜式的操做,這裏就很少作贅述。
若是安裝以後,看到系統環境變量的Path中已經有了scala的環境變量,那麼就不須要配置。我在安裝的時候,是這種狀況。
若是安裝完成以後,查看環境變量Path中沒有Scala的環境變量,那麼就須要手動添加scala安裝目錄的bin目錄路徑到系統環境變量中。這個配置和JDK的配置是差很少的。以下圖所示:
Scala基本是基於Java的,全部的使用的方法基本和Java相同,差異就在與一些命令不一樣,以下:
經過cmd命令窗口,輸入scala,查看Scala的版本信息,和Java的java -version同樣的功能。以下圖:
①交互模式
能夠經過命令行直接輸入scala命令,以下爲打印字符到控制檯:
②編譯模式
也能夠先編寫***.scala文件,經過執行文件來執行命令,好比:
先在e盤下建立一個hello.scala文件,文件中寫入以下內容:
print("hello scala");
而後經過cmd執行:
也能夠先生成.scala文件,再編譯生成.class文件,再執行。
在e盤下,建立Person.scala文件,內容以下:
object Person{ def main(args: Array[String]): Unit = { println("hello scala hello world~") } }
在e盤路徑下進入cmd命令窗口,而後執行:scalac Person.scala
執行完後會發如今e盤下多出了對應的class文件。
調用執行:scala Person
看到這裏你就會發現,Scala和Java的共通之處了。
在網上看到不少人,爲了在eclipse中安裝Scala插件而發愁,這裏我直接使用的就是帶有Scala的eclipse,解壓以後配置幾個參數就可使用。你們也能夠下載這個版本的eclipse進行開發。
解壓便可使用。
以下圖:打開eclipse的window選項的preferences,通常須要調的地方就是紅框框的這幾個選項。
workspace:主要就是字符編碼,調成本身須要的,我這裏選用的是UTF-8,如今開發,通常也都是用的這個字符編碼。
Java-Compiler:檢查jdk版本是否和本身安裝的jdk版本一致。
Java-installed JREs:檢查jre版本是否和本身安裝的一致,若是不一致,進行修改。
Scala-Conmpiler:檢查JVM的版本,想調成和本身jdk同樣版本的也能夠,使用默認1.6的也能夠。
若是你們有須要這個eclipse,能夠在下方留言,或者私信我,我會將這個版本的jdk放到網絡中,將連接貼到這裏供你們下載使用。
建立scala project,以下圖:
工程建立完畢後,建立scala object,以下圖:
編寫代碼,以下圖:
運行獲得結果。
下一篇:Scala語法介紹