偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JVM話三國 腳本語言之五虎上將

原創(chuàng)
開發(fā) 后端
“JVM話三國 腳本語言之五虎上將”本文原為外文文章“Top five scripting languages on the JVM”。翻譯成漢語為“基于JVM的5大腳本語言”。編輯們稍作加工,希望大家喜歡。

【51CTO獨(dú)家特稿】蜀漢昭烈帝劉備麾下的五員猛將。建安十六年(219年)劉備攻取漢中,自立漢中王,冊封麾下關(guān)羽、張飛、趙云、馬超、黃忠為五虎上將。

在JVM中也有五個炙手可熱的腳本語言,堪稱JVM的五虎上將!

Groovy和JRuby二將領(lǐng)銜JVM,Scala、Fantom和Jython三位亦是JVM腳本中的好漢。

很多人都知道,在過去很長一段時間里,Java技術(shù)是指Java編程語言和Java虛擬機(jī)(JVM)。把Java語言被編譯成字節(jié)碼在JVM上運(yùn)行,而通過這樣的技術(shù),Java也被認(rèn)為是可以在任何環(huán)境、操作系統(tǒng)中都可以運(yùn)行萬能語言。(51CTO推薦專題:Java虛擬機(jī)原理與優(yōu)化

[[13033]] 
五虎上將:關(guān)羽、張飛、趙云、馬超、黃忠

 

五種語言
五種語言特性對比

但是,Java和JVM的發(fā)展軌跡卻不相同:Java與C、C++等語言一樣,越來越復(fù)雜,而卓越的性能以及擁有便攜性和可擴(kuò)展性的JVM卻逐漸成為最快和最有效的執(zhí)行平臺,JVM現(xiàn)在已經(jīng)創(chuàng)造了一個新一代的開放編程語言平臺。

在寫本文之前,我們找到一些可以在JVM上運(yùn)行的腳本語言,讓他們做一些對比,我認(rèn)為這些開源的語言要比閉源的語言好得多。開發(fā)人員在編寫程序時都會使用腳本語言。這種語言的狹義概念是使開發(fā)人員快速編寫程序的語言。這些語言編寫出來后一般被認(rèn)為是可執(zhí)行或半編譯的程序,而不是傳統(tǒng)意義編程。我們用另一個廣義概念來解釋就是這些都是可以在JVM上運(yùn)行的語言,比Java更加輕便的語言。有些是可以執(zhí)行的,有些是半編譯的,但是都發(fā)展迅速。我把定義成JVM上的五虎上將:Groovy、JRuby、Fantom、Jython和Scala。

今天JVM的腳本語言我們可以分為兩個重量級。 Groovy和JRuby自然是第一陣營。

值得注意的是,Groovy和JRuby的位置也并不牢靠,就在兩年前他們的位置還很邊緣化。我認(rèn)為,在未來他們的位置隨時會被Scala、Fantom和Jython取代。如果你聽我講完之后,你會覺得Jython的陽光時刻可能已經(jīng)來了。

JVM的腳本語言五虎上將:

關(guān)羽——Groovy - 強(qiáng)大的,高層次,企業(yè)級JVM腳本語言。

趙云——JRuby -還有比紅寶石更好的嗎?

張飛——Scala - 快,多范例programmingJVM腳本語言。

馬超——Fantom - Java和.Net的performanceJVM的腳本語言。

黃忠——Jython中 - Python中的JVM的腳本語言。

#p#

關(guān)羽——Groovy - 強(qiáng)大的、高層次、企業(yè)級JVM腳本語言。關(guān)羽,[字:云長][終屬:蜀漢](生卒:?-219)[并州]河?xùn)|解縣 [今山西運(yùn)城]人,官至前將軍,封漢壽亭侯,追謚曰壯繆候。Groovy是一種面向?qū)ο蟮恼Z言。其主要特點(diǎn)是它的語法與Java極為相似,但與很多雜亂的設(shè)置都被刪除了。Groovy中是最早的腳本語言之一,具有獨(dú)特的歷史,是開源世界的奇葩,如果說Java就是蜀國漢昭烈帝劉備的話,那只有忠勇的Groovy可稱關(guān)羽。Java開發(fā)人員可以很快使用Groovy,事實上Groovy的編譯器接受純Java的語法,Java開發(fā)人員可以很快地學(xué)習(xí)這個全新的腳本語言——Groovy。

(51CTO推薦專題:Groovy開發(fā)技術(shù)

[[13034]]
前將軍關(guān)羽

對于Groovy,開發(fā)者運(yùn)用時簡化了很多代碼。尤其語言能力的推斷方面。例如,Groovy可以檢查一個變量的初始使用,并確定它是一個整數(shù),字符串等。程序員可以自由地提供這方面的代碼。

Groovy中是最早的腳本語言之一,它同時還提供另一種功能,稱為封鎖,由Sun公司Java開發(fā)(現(xiàn)在的甲骨文公司)提供。封鎖使開發(fā)者指定的代碼作為一個獨(dú)立的實體,并把它運(yùn)用到其他編程業(yè)務(wù)中。這使得在描述程序的功能非常簡潔,并在其他語言里,可以提供為創(chuàng)建可作為函數(shù)的參數(shù)傳遞給其他對象的功能。

Groovy。構(gòu)建在強(qiáng)大的Java語言之上并添加了從Python,Ruby和Smalltalk等語言中學(xué)到的諸多特征,為Java開發(fā)者提供了現(xiàn)代最流行的編程語言特性,而且學(xué)習(xí)成本很低(幾乎為零),在開發(fā)Web,GUI,數(shù)據(jù)庫或控制臺程序時, 通過減少框架性代碼大大提高了開發(fā)者的效率。支持單元測試和模擬(對象),可以簡化測試。無縫集成所有已經(jīng)存在的Java對象和類庫。直接編譯成Java字節(jié)碼,這樣可以在任何使用Java的地方使用Groovy。

Groovy中具有獨(dú)特的歷史,開源世界的奇葩。該項目啟動于2003年。創(chuàng)始人后來移居到其他項目,在不同時期,都認(rèn)為Groovy不能成功。不過即使沒有他們,開源社區(qū)貢獻(xiàn)者也對Groovy產(chǎn)生濃厚的興趣,保持了Groovy前進(jìn)。一個領(lǐng)先的Web框架,使用Groovy和在他們的支持IDE最終走到世人面前。

有Laforge和Grails的開發(fā)者以及現(xiàn)在SpringSource和VMware這些企業(yè)的支持使Groovy的未來變得有保證。盡管JVM的性能優(yōu)化,但是一些Groovy特性卻有很高的成本。同時雖然Groovy語言的受歡迎程度正在上升,它患有長期的弱點(diǎn),正在慢慢出現(xiàn):緩慢的運(yùn)行速度。她也給了其他腳本語言了機(jī)會,五虎上將中的關(guān)羽是第一個陣亡的,Groovy又會不會被其他語言超越呢?

#p#

趙云——JRuby - 比紅寶石更好的嗎?JRuby是一個Ruby語言的Java的端口。趙云,[字:子龍][終屬:蜀漢](生卒:168-229(62歲))[冀州]常山真定 [今河北正定]人,官至鎮(zhèn)東將軍,封永昌亭侯,追謚曰順平侯。Ruby本身是一種腳本語言在1990年代中期的日本出現(xiàn),它已經(jīng)得到了廣泛應(yīng)用。在JVM中JRuby2004年才在美國和歐洲Ruby的殺手锏級別武器——Ruby on Rails。Ruby on Rails使得Web應(yīng)用程序裝配的各部分更容易設(shè)置,Ruby被迅速投入使用開發(fā)小型和中型的企業(yè)網(wǎng)站。 Rails的普及導(dǎo)致了Ruby的爆炸性增長。常言道:“馬中赤兔,人中呂布。”武功不在呂布之下的趙云當(dāng)有寶石的稱號,五虎上將中也只有常勝將軍常山趙子龍堪比JRuby!

[[13035]] 
中將軍趙云

Ruby語言有很多在Groovy中的功能,但它使用了更簡潔的語法——讓開發(fā)人員得到更多的工作。Ruby面臨最大的問題是性能。在多個基準(zhǔn)里,它都是排在最后的。這促使許多競爭性項目,以重寫Ruby。其中,最成功的是JRuby的。

JRuby項目開始于2001年1月,Ruby的代碼直接端口到JVM。2007年,Sun工程師對JRuby進(jìn)行開發(fā)——可以運(yùn)行Rails的Ruby和交付性能媲美非Java的Ruby。自那時以來,開發(fā)人員轉(zhuǎn)移到Ruby on Rails上,在JRuby的工作已持續(xù)快速上漲并迅速抓到了商機(jī)。在此期間,JRuby的性能是現(xiàn)在這個版本比Ruby發(fā)布的1.9版本要快得多。

JRuby。一個純Java實現(xiàn)的Ruby解釋器。通過JRuby,你可以在JVM上直接運(yùn)行Ruby程序,調(diào)用Java的類庫。很多Java編寫的Ruby IDE都是使用JRuby來解釋語法的。

對Java的運(yùn)行環(huán)境和代碼庫來說,訪問是決定JRuby的未來是至關(guān)重要的一環(huán)。Ruby一直沒有進(jìn)入在一個大企業(yè),JRuby則可能是存進(jìn)入大企業(yè)。 JRuby中的優(yōu)點(diǎn),企業(yè)可以在JVM上的應(yīng)用程序運(yùn)行,而原生的Ruby虛擬機(jī)是一種不成熟的數(shù)據(jù)中心。此外,由于與Java應(yīng)用程序集成,企業(yè)可以通過采用JRuby和Java軟件中還利用到以前開發(fā)的Ruby項目中去。最重要的是高司令離開Oracle之后全心投入到JRuby開發(fā)中去,這個給了JRuby開發(fā)者極大的信心!就像被橫掃N次團(tuán)隊突然來了個MT!

[[13036]]

高司令blog:“On a New Rord” 主頁上截取的圖片“高司令和JRuby紅鼻子小企鵝在一起”

企業(yè)是否會支持Groovy或JRuby完全取決于科技發(fā)展速度。Groovy和JRuby目前都是由發(fā)展商支持的(而不是由志愿人員),有日益擴(kuò)大的工具供應(yīng)商長時間的支持,迅速提供工作代碼。而以下三種語言現(xiàn)在并不像Groovy和JRuby成功,但他們有一些必定能使他們在未來數(shù)年內(nèi)的取得成功。即使他們沒有達(dá)到這個水平,他們也都有眾多的熱情支持者。

#p#

張飛——Scala - 快,多范例programmingJVM腳本語言。張飛,[字:翼德][終屬:蜀漢](生卒:?-221)[冀州]涿郡涿縣 [今河北涿州]人,官至車騎將軍,追謚曰桓候。最初是在2003年發(fā)展成為一個研究語言。它經(jīng)常被描述為一個多范例語言,因為它結(jié)合了不同的編程元素。其核心是一個純粹的面向?qū)ο蟮恼Z言(即,一切都是一個對象)的功能能力。Scala是一個在學(xué)術(shù)界流行的編程風(fēng)格有利于職能,沒有副作用(函數(shù)不改變函數(shù)的變量或其他國家使用),一流的功能(函數(shù)成為使用對象可以傳遞給其他函數(shù)),并盡可能多的使用常量的變量。在Java字符串不能被修改,但是Scala的任改變一在一個完全新的字符串創(chuàng)建現(xiàn)有字符串的結(jié)果是可以實現(xiàn)的。論忠誠張飛不比關(guān)云長差得半分,論武藝能喝斷橋的張翼德可給趙云斷后,強(qiáng)大的Scala不就和張飛一樣嗎?

(51CTO推薦專題:專題:Scala編程語言

[[13037]]
后將軍張飛

Scala。一種多范式的編程語言,設(shè)計意圖是要整合面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala編程語言近來抓住了很多開發(fā)者的眼球。它看起來像是一種純粹的面向?qū)ο缶幊陶Z言,而又無縫地結(jié)合了命令式和函數(shù)式的編程風(fēng)格。Scala的名稱表明,它還是一種高度可伸縮的語言。Scala的設(shè)計始終貫穿著一個理念:創(chuàng)造一種更好地支持組件的語言。

開發(fā)者在Scala這里享受過其他語言沒有的快樂:奇異的性能優(yōu)勢。語言是編譯為優(yōu)化代碼,運(yùn)行速度基本上和Java沒有區(qū)別。其余的語言遠(yuǎn)遠(yuǎn)地落后于Scala遠(yuǎn)遠(yuǎn)執(zhí)行速度。

當(dāng)然,Scala確實有缺點(diǎn)。其中第一項是有時不透明的語法,每一種語言都有用于生成堅不可摧的代碼,但它不太容易在Scala上這樣做。第二個問題是一個二進(jìn)制兼容性,Scala的維護(hù)人員已經(jīng)發(fā)布二進(jìn)制兼容新版本。如果廣泛采用,尤其是在企業(yè)開發(fā)里,把現(xiàn)有代碼重新編譯,以便能夠與現(xiàn)在的代碼兼容,這是Scala發(fā)展的一個巨大障礙。不過,對于Scala的好工具相繼出現(xiàn),以及社區(qū)的用戶是積極和熱情。我完全相信Scala會成為JVM語言里最棒的一個。

#p#

馬超——Fantom - Java和.Net的performanceJVM的腳本語言。馬超,[字:孟起][終屬:蜀漢](生卒:176-222(47歲))[雍州]扶風(fēng)茂陵 [今陜西興平]人,官至驃騎將軍,封犛鄉(xiāng)侯,追謚曰威侯。 Fantom 前身是 (Fan) 是一個基于 Java 和 .NET 平臺的編程腳本引擎,用來在運(yùn)行時產(chǎn)生 JVM 和 .NET 平臺的字節(jié)碼,該語言是面向?qū)ο蟮模?Groovy 和 JRuby 有點(diǎn)類似,可通過特定的接口來集成 Java 的類庫。馬超天生的守城大將,攻城略地被C#——曹操打得大敗,F(xiàn)antom在JVM陣營中的停滯不前不正像馬超的后半生嗎?

[[13038]] 
左將軍馬超

Fantom這種語言遵循其設(shè)計者的想法,最初制定他們的客戶需要的實時軟件包。Fantom這種語言設(shè)計者就像是Groovy的和JRuby的設(shè)計師一樣,想使編碼更容易。他們已經(jīng)取消了相當(dāng)數(shù)量的代碼,但前面推入新的領(lǐng)域作出一些有趣的選擇。

例如,所有的整數(shù)和浮點(diǎn)值是64位。這意味著,對于所有意圖,對算術(shù)運(yùn)算的結(jié)果不能造成溢出的領(lǐng)域限制。 Fantom還包括內(nèi)置的并發(fā)——Scala只有對全面的并發(fā)這個共同特征的支持。該代碼庫已經(jīng)很成熟了,很多語言認(rèn)為按照J(rèn)ava和.net的標(biāo)準(zhǔn)API的模式是不守秩序。因此,F(xiàn)antom的API是需要一個特定的功能,只有在Fantom那里才可以找到。作出Fantom網(wǎng)站出色的文件顯然更加更容易。

像許多語言一樣,F(xiàn)antom對通過外部工具只有有限的支持。它唯一的IDE支持是NetBeans。這有可能改變?yōu)镕antom社區(qū)的增長和其獨(dú)特的設(shè)計和跨平臺特性變得更加廣為人知。總體來說Fantom有點(diǎn)像馬超一樣,有點(diǎn)獨(dú)!

#p#

黃忠——Jython - Python中的JVM的腳本語言。黃忠[字:漢升][終屬:蜀漢](生卒:148-220(73歲))[荊州]南陽 [今河南南陽]人,官至后將軍,追謚曰剛侯。 JPython,是JVM釋放最早的腳本語言之一。其目的是Python用于Java平臺的實現(xiàn)。在這方面,只是部分成功,因為它沒有實現(xiàn)所有Python,而是整個Python語言的一小部分。 Python本身是沿著原來的腳本語言與Perl(1)。它保留了它的普及多年來作為一個最好的通用語言,它被廣泛應(yīng)用于內(nèi)的Google。黃忠為五虎上將最后一名,和Jython一樣,年輕時無比強(qiáng)悍,可惜耽誤了幾年,可惜可惜?。?/strong>

[[13039]]
右將軍黃忠

Jython由于繼承了Java和Python二者的特性而顯得很獨(dú)特。其是一種完整的語言,而不是一個Java翻譯器或僅僅是一個Python編譯器,它是一個Python語言在Java中的完全實現(xiàn)。Jython也有很多從CPython中繼承的模塊庫。最有趣的事情是Jython不像CPython或其他任何高級語言,它提供了對其實現(xiàn)語言的一切存取。所以Jython不僅給你提供了Python的庫,同時也提供了所有的Java類。這使其有一個巨大的資源庫。

Jython的最初受到了它的主要開發(fā)者熱情用戶,但他主要的創(chuàng)始人離開了項目,去往微軟工作之后,Jython開始掙扎著前行。在經(jīng)歷了Jython的創(chuàng)始人離去之后,項目基本在2005至2008年間停滯。在此期間,其他JVM的腳本語言尤其是Groovy,獲得了很大的發(fā)展,而Jython是否會像黃忠一樣慢慢老去、永遠(yuǎn)無法恢復(fù)的原有勢頭,我們拭目以待!

總結(jié):

本文原為外文文章“Top five scripting languages on the JVM”。翻譯成漢語為“基于JVM的5大腳本語言”。編輯們稍作加工,希望大家喜歡。

 

原文出處:http://www.networkworld.com/reviews/2010/071410-top-five-scripting-languages-on.html?hpg1=bn

原文名:Top five scripting languages on the JVM

原文作者:Andrew Binstock

【51CTO譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請注明原文出處、作者及51CTO譯稿和譯者!】

【編輯推薦】

  1. Scala 2.8最終發(fā)布 全新功能值得期待
  2. Groovy 1.7.3發(fā)布 值得關(guān)注的新功能
  3. Java上的寶石 JRuby 1.5正式發(fā)布
  4. 深入Java底層:內(nèi)存屏障與JVM并發(fā)詳解

 

責(zé)任編輯:佚名 來源: 51CTO編譯
相關(guān)推薦

2011-08-11 22:22:26

工作站行情

2011-06-22 10:14:49

JVM

2013-08-02 16:11:07

IT半小時

2011-08-24 13:32:17

2011-07-05 10:39:55

JVM

2011-08-25 14:26:40

LUA數(shù)據(jù)文件

2009-08-17 10:08:24

2018-11-06 09:39:47

芯片蘋果高通

2021-07-27 14:25:10

零信任/IBM安全/

2021-06-05 17:59:00

責(zé)任鏈模式設(shè)計

2011-09-22 10:29:26

三國塔防游戲

2014-03-31 17:35:04

云計算

2020-09-08 17:32:50

戴爾

2012-06-02 01:41:00

GroovyJVMJava

2010-11-24 10:45:28

2011-11-07 16:04:30

操作系統(tǒng)評測

2009-10-28 13:53:10

應(yīng)用接入行業(yè)

2010-02-24 09:22:28

2010-07-30 09:22:08

UbuntuSUSE開源

2013-05-24 09:19:48

VMware混合云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號