Scala語(yǔ)言的名稱(chēng)來(lái)自于“可伸展的語(yǔ)言”,Scala 是一種函數(shù)對(duì)象混合的語(yǔ)言。它可以運(yùn)行在Java 平臺(tái)上,Scala程序會(huì)被編譯為JVM的字節(jié)碼。它們的執(zhí)行期性能通常與Java程序一致。Scala代碼可以調(diào)用Java方法,訪問(wèn)Java字段,繼承自Java類(lèi)和實(shí)現(xiàn)Java接口
可以從 Scala 主頁(yè): http://www.scala-lang.org/ 下載 Scala 包,截止到目前為止,最新的發(fā)行版是 2.7.5-final,同時(shí)也提供了IDE的支持插件,Eclipse的Scala的插件下載地址為:http://www.scala-lang.org/node/94,也可以通過(guò)Eclipse 的Update Manager 的方式下載:http://www.scala-lang.org/scala-eclipse-plugin (現(xiàn)在的Eclipse 插件支持的好像比較差勁)
將Scala的下載壓縮包解壓,比如解壓地址是:C:\Program Files\Java\scala-2.7.5,然后設(shè)置環(huán)境變量,將SCALA_HOME 設(shè)置為:C:\Program Files\Java\scala-2.7.5,將SCALA_HOME\bin 添加到Path環(huán)境變量中,打開(kāi)命令行輸入:scalac -version 測(cè)試,如果能夠正確輸入版本信息就OK了。
開(kāi)始認(rèn)識(shí)Scala
在計(jì)算機(jī)科學(xué)領(lǐng)域大家都達(dá)成了一個(gè)默契,通常都是使用“HelloWorld" 作為演示程序,這里也不例外,Scala的語(yǔ)法和Java還是存在很大不同,就像國(guó)外的一位大牛批判Scala是"為了不同而不同",為何不能像Groovy那樣采用和Java接近的語(yǔ)法,如果你是從JDK 轉(zhuǎn)到 Scala,學(xué)習(xí)Scala 的感覺(jué)可能會(huì)很不同,也可能有排斥它的情緒,其實(shí),通常有這種感覺(jué)可能是因?yàn)閷?duì)它不熟悉,如果深入了解背后的設(shè)計(jì)意圖,可能會(huì)改變你現(xiàn)在的觀點(diǎn)。
下面來(lái)看一下Java中的 HelloWorld寫(xiě)法:
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
Scala 的 HelloWorld :
2 def main(args: Array[String]) {
3 System.out.println("HelloWorld");
4 }
5 }
這里的Scala的聲明類(lèi)的方式和Java不同,Scala通過(guò)object來(lái)定義,在方法塊中使用“def“開(kāi)始函數(shù)的定義,接著聲明函數(shù)名,在括號(hào)中指定參數(shù)列表,參數(shù)的聲明方式是參數(shù)名:參數(shù)的類(lèi)型,方法的返回值類(lèi)型是在函數(shù)名后的括號(hào)后面指定的,比如你聲明一個(gè)無(wú)參數(shù)的A 方法,返回值類(lèi)型為Int可以這樣寫(xiě):def A():Int = {//方法內(nèi)容}; 上面的main函數(shù)顯示的指定返回值,系統(tǒng)默認(rèn)返回值類(lèi)型為Unit,相當(dāng)于Java中的Void,不過(guò)Unit返回類(lèi)型在最新的版本中已經(jīng)置為@Deprecated 了,也就是說(shuō)不用顯示的指定返回類(lèi)型Unit了,這樣方法就簡(jiǎn)潔了許多。
這里只是比較了Scala的HelloWorld寫(xiě)法,通過(guò)這么簡(jiǎn)單的任務(wù)顯然和Java進(jìn)行代碼簡(jiǎn)潔性的PK是分不出高下。如果想看到更精彩的對(duì)決,建議參考Scala官方網(wǎng)站上的文檔:文檔:http://www.scala-lang.org/node/197 例子:http://www.scala-lang.org/node/219 ,IBM的官方網(wǎng)站也有文章對(duì)Scala進(jìn)行詳細(xì)的介紹 http://www.ibm.com/developerworks/cn/java/j-scala/