Java虛擬機(jī)已經(jīng)不再是僅僅局限在 Java 了,,很多語言提供了腳本轉(zhuǎn)換,,可以讓其他的程序在java虛擬機(jī)上運(yùn)行,,這樣能夠讓更多的開發(fā)者能夠依靠JVM在Java平臺上大有作為。而且虛擬機(jī)以及 對應(yīng)的字節(jié)碼都是開源的,,所以你也能很容易地生成對應(yīng)字節(jié)碼來做一款屬于你自己的編程語言,。我們今天來看看以下9種新的編程語言。
Groovy是一個(gè)被編譯成字節(jié)碼的面向?qū)ο蟮恼Z言,。它的語法風(fēng)格與java很像,,但是又沒java那么混亂。Java程序員能夠很快的熟練使用 Groovy,;實(shí)際上,,Groovy編譯器是可以接受完全純粹的Java語法格式的,這樣能夠讓程序員在學(xué)習(xí)Groovy時(shí)不需要學(xué)習(xí)任何新語法,。需要注 意使用Groovy的一個(gè)重要特點(diǎn)就是使用類型推斷,,即能夠讓編譯器能夠在程序員沒有明確說明的時(shí)候推斷出變量的類型。同時(shí)Groovy也提供了一個(gè)高級 架構(gòu)來解決字符串處理,,xml的序列化與反序列化以及單元測試等等 -- 所有的這一切好處都能為程序員節(jié)約不少時(shí)間,。
JRuby是用來橋接Java與Ruby的,它是使用比Groovy更加簡短的語法來編寫代碼,,能夠讓每行代碼執(zhí)行更多的任務(wù),。就和Ruby一 樣,JRuby不僅僅只提供了高級的語法格式,。它同樣提供了純粹的面向?qū)ο蟮膶?shí)現(xiàn),,閉包等等,而且JRuby跟Ruby自身相比多了很多基于Java類庫 可以調(diào)用,,雖然Ruby也有很多類庫,,但是在數(shù)量以及廣泛性上是無法跟Java標(biāo)準(zhǔn)類庫相比的。
Jython,,aka JPython,,屬于第一種專門為JVM專用的腳本語言。它能夠用Python語言來高效生成動態(tài)編譯的Java字節(jié)碼,。一些可選的靜態(tài)編譯方式能夠被用 來開發(fā)applets,,servlets,以及beans,。作為Jython的首席程序員,,Jim Hugunin,,現(xiàn)在已經(jīng)停止了Jython的相關(guān)工作而去微軟干活,。所以這門語言的發(fā)展僅僅也就從2005-2008年,所以就現(xiàn)在看來Jython已 經(jīng)無法與Groovy以及JRuby作為對手了?,F(xiàn)在Jython可以在一些商業(yè)應(yīng)用中找到,,也已經(jīng)得到了WebSphere Application Server以及IMB的商業(yè)Java EE產(chǎn)品部門的官方支持,。
Clojure是純粹的函數(shù)式編程語言。與Scala類似,,Clojure已經(jīng)有很多內(nèi)置的并行運(yùn)行基礎(chǔ)建設(shè)能夠讓很多方法同時(shí)執(zhí)行,。Clojure也是 被設(shè)計(jì)為生成通用語言,能夠生成.NET以及JavaScript,。雖然Clojure也能被直接編譯成Java字節(jié)碼,,但是無法使用動態(tài)語言特性以及直 接調(diào)用Java類庫。與其他的JVM腳本語言不一樣,,Clojure并不算是面向?qū)ο蟮摹?
Scala經(jīng)常被我們描述為多模式的編程語言,,因?yàn)樗旌狭藖碜院芏嗑幊陶Z言的元素的特征。但無論如何它本質(zhì)上還是一個(gè)純粹的面向?qū)ο笳Z言,。它相比傳統(tǒng)編 程語言最大的優(yōu)勢就是提供了很好并行編程基礎(chǔ)框架措施了,。這是唯一一個(gè)在JVM中擁有actors -- 另一種并行編程代碼生成器。Scala代碼能很好的被優(yōu)化成字節(jié)碼,,運(yùn)行起來和原生Java一樣快,。
Kotlin是靜態(tài)類型的語言,也可以編程成Java字節(jié)碼以及JavaScript,,作為一個(gè)時(shí)髦又表現(xiàn)豐富的編程語言,,Kotlin就是被設(shè)計(jì)用來生 產(chǎn)高性能要求的程序的,所以運(yùn)行起來和Java也是不相上下,。Kotlin可以從 JetBrains InteilliJ Idea IDE這個(gè)開發(fā)工具以插件形式使用,。
Rhino是使用Java編寫的開源的JavaScript引擎。當(dāng)前是Mozilla公司在主導(dǎo)它的發(fā)展,,Rhino的特點(diǎn)是為JavaScript加 了個(gè)殼,,然后嵌入到Java中,這樣能夠讓Java程序員直接使用,。其中Rhino的JavaAdapters能夠讓JavaScript通過調(diào)用 Java的類來實(shí)現(xiàn)特定的功能,。
Ceylon是一個(gè)通用的,靜態(tài)類型編程語言,,也是基于阻塞以及面向?qū)ο蟮?。?jù)說這個(gè)語言深受Java的影響,而且它一開始就是被Red Hat公司設(shè)計(jì)為給大型團(tuán)隊(duì)合作完成大型項(xiàng)目來的,。Ceylon的主要努力方向是將語言變得更加可讀,,更加可預(yù)期,更加工具化以及更加模塊化,。據(jù) Gavin King所說,,Ceylon將不僅僅只是個(gè)編譯器,而將是一個(gè)可以取代Java SDK的新Ceylon SDK。
Fantom能夠在運(yùn)行時(shí)為JVM以及.NET或者JavaScript平臺生成字節(jié)碼,,F(xiàn)antom是與Groovy以及JRuby差不多的一樣面向?qū)?象的編程語言,,但是悲劇的是Fantom無法使用Java類庫,而是使用它自己擴(kuò)展的類庫,。忘了說Fantom也包括actors,,而且它最大的優(yōu)勢就是 在網(wǎng)站上有一個(gè)非常完備卓越的API文檔系統(tǒng)。