亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

選擇合適的java腳本語言

2019-11-18 13:41:03
字體:
來源:轉載
供稿:網友

  選擇合適的java腳本語言
--假如你正考慮在java應用中集成腳本解釋器,最難得是決定使用那種

摘要:腳本語言已經向java開發者證實了它的價值。它讓客戶實現應用功能的擴展和界面的個性化,從而程序的價值得以提升。另外,它們可以顯著的簡化程序開發者的設計任務,通過實現動態定義、裝載和評估。對于開發人員,集成一種或多種腳本語言的任務是簡單的,從越來越長的可選列表中選出一個確實困難的。本文描述了一些伴隨java應用中腳本語言支持的問題,并從不同角度比較了Groovy, JudoScript, Pnuts, JRuby, Jacl, Jython, Rhino和Beanshell,以期能幫助讀者作出正確的決定。

三年前,我在javaworld寫了一遍叫做“javascripting語言,那種是適合你的?”的文章。當我收集解釋器并進行比較時,我盡量選擇那些看起來滿足苛刻商務需求的。理想狀態下,我希望解釋器能夠方便的擴展應用的用戶接口,并且有易讀的腳本代碼,高可靠,快速,有好的支持和文檔,并且是完備的。在那個時候,我把列表限制到了Jacl,Jython,Rhion和BeanShell。

過去的三年中發生了很多變化??蛇x項不再是很少的幾個,不管是動態開發還是直接選擇,可選的腳本語言都有一打以上??煽康倪x擇列表比三年前增多了,現在還包括了Groovy, JudoScript, Pnuts和BeanShell。我們還可以考慮不再這個列表中的其他解釋器,但這個列表中,已經足夠開發人員自己的所需了。

我預備標準化所有解釋器,看看Jacl, Jython, Rhion和BeanShell在2002年后性能有沒有提高,并看看Groovy, JudoScript, Jruby和Pnuts同它們比較起來會怎樣。我認為,看看不同腳本語言有什么獨特之處,有什么非凡的強項和弱點是很有意思的事情。

商務風險

在以前的文章里,我講述了一些聞名的優秀腳本解釋器的資料,并說明了結合腳本解釋器時你可能碰到的風險。本文中,我把這些內容簡化為一些要點,并根據我在寫那些文章之后的經驗進行了改進。Java腳本解釋器的優點是毋庸置疑的。使用腳本語言編碼比使用java簡單;腳步語言使程序的應用邏輯和用戶界面的推動(drive/驅動?)和擴展成為可能;腳本代碼可以違反java應用中類接口而運行,這是非常強大的功能。這樣可以輕易的編寫程序測試驅動(write test drivers against your PRogram),與編碼并編譯用于java類的單元測試相比,這是更加快速的。另外,假如用戶花時間使用腳本擴展你的應用,他們就作你的工具上進行了投資,這使得你在競爭中多了一件利器。

但是,當在應用中集成jiava腳本解釋器時,你必須面對一定的風險。兩個主要的風險是,解釋器可能成為孤兒,或者是當你把產品裝上后,你可能發現解釋器的致命缺陷。大多數解釋器是通過開源模型動態維護和更新的,在這種情況下,你可以向研究你所發現問題的專家尋求幫助,給解釋器打補丁,或者在未來版本中包含你需要的bug-fix(bug修理?)。這是一種安全的賭博,但并不能得到足夠保證。假如你正嚴厲的考慮采用某個特定的解釋器,請先看看它的開發站點,看看它的代碼的進化,看看上面的流言板,用戶的提問都有答案否。這可以幫助你了解代碼支持的實際情況。

自我保護的另一格措施是,對你預備采用的任腳本何解釋器進行完全測試。一些解釋器在發布時包含了一個單元測試集。在測試你的應用中集成的解釋器時,這些單元測試可以作為你的更大的測試集中的一部分。在測試解釋器和應用之間的集成時,可以剔出自己的工作(you have your work cut out for you),因為腳本解釋器有足夠的彈性,并向開發人員暴露了足夠的功能。你在早期向質量保證投入時間,而不是在應用已經成為產品,當用戶需要急切的bug修復時才考慮。

新的競爭者列表

假如你正在尋找一個腳本解釋器,你有很多選擇。一些解釋器支持已經存在的語言,比如Ruby, Python, javascript, Java和Tcl。另外一些解釋器,如JudoScript, Groovy和Pnuts,選擇了它們自己的類似java的語言語法。在比較不同的解釋器,需要進行的最大的選擇是,那種腳本語言的語法能很好的適合你的應用。像這種個人偏好發生作用的技術選擇,可能在不同的開發人員團隊引起激烈的爭論。也許本文能有助于解決一些爭論。

我收集比較了最近發布的八種不同的腳本解釋器。解釋器及其版本都在下表中列出。假如你對這些解釋器并不熟悉,我還給出了每種解釋器功能和開發活動的概要(a thumbnail sketch)。

腳本語言

版本號

簡短描述

Jacl

1.3.1

Tcl解釋器的java實現。假如你希望在腳本中使用工具包來創建用戶接口類,看看Swank工程中的包裹(wrap)java swing 工具的類集。Jacl已經存在較長時間了,并且還在持續改進。

Jython

2.1

Python解釋器的java實現。我注重到的一個問題是,已經有很長一段時間沒有看到這個解釋器的新版本了。但在Jython的網站上,說明了改變這種現狀的計劃,并且有基金支持。

Rhino

1.6.1

javascript解釋器的java實現。它還支持把腳本編譯成類文件。它的最新版本在幾個月前發布,并加入了xml支持。

JRuby

0.8

Ruby解釋器的java實現。它正在發展中,其測試版0.8表現良好。

BeanShell

2.0 beta 2

它是一個java源文件解釋器,正在持續的發展和加入新特性。2.0版本提供了完全的普通java源文件解釋支持。

Groovy

1.0 beta 9

Groovy是把Python和Ruby的特征加入java類似語法形成的,由很多令人興奮的特征??梢园涯_本直接編譯成類文件,對不同的IDE,又很多Groovy插件可供選擇,JSR委員會正在制定Groovy的規范。

JudoScript

0.9

它有和javascript類似的編程語法,學習和使用更加輕易。在它的FAQ中提到了它的一個明確目標:“支持對象級,操作系統級和應用級的腳本”。我測試的0.9版運行良好。

Pnuts

1.1 beta 2

Pnuts有和java相似的編程語法,并保持持續更新。它可以把腳本直接編譯成java類文件。

第一個指標:性能

未來測試第一項指標,我為每個解釋器編寫了等價的腳本代碼,讓他們完成簡單的任務集并記錄它們執行腳本所花的時間。我的測試腳本主要關注基本操作,如循環,整數比較和大的一維、二維數組分配和初始化。用于各個解釋器的測試腳本和運行它們的java程序可以在原文資源部分下載。

在基準測試中最有用的信息是,解釋器完成簡單任務速度的apples-to-apples比較。假如你重點考慮吞吐量,基準數將十分重要。對每種腳本語言,我盡力編寫相識的測試代碼。測試使用Java1.4.2在東芝Tecra8100筆記本上運行,CPU為PIII700MHz,內存256MB。啟動JVM時使用了默認的堆尺寸。出于向你展示解釋器到底有多快還是多慢的愛好,我編寫了測試用例的java代碼,并在java1.4.2上運行了。測試集包括:

1到1,000,000的計數

1,000,000次整數相等比較

分配并初始化包含100,000個元素的數組

分配并初始化一個500*500的二維數組

在2002年后有提高么?

在告訴你哪個解釋器最快之前,我們先看看圖1,這個條狀圖列出了很多耗時任務的結果:1百萬次整數相等比較。對2002年文章中講述的4種腳本解釋器,我給出了在Java1.3.1JVM和Java1.4.2上運行所需的時間。非常有趣的是,測試Jython時用的是同一個版本的腳本解釋器,結果表明新版JVM上速度提升了25%。在加上我使用了和前一次測試完全相同的硬件,所以可以肯定JVM1.4.2減少了運行基礎測試所需的時間?,F在看看Rhino,BeanShell和Jacl發生了什么:新版Rhino在1.4.2的JVM上比在1.3.1的JVM上運行的舊版本快樂86%,Jacl的這個數字是76%??梢钥闯?,性能提高了很多。



四項任務的總時間

由于解釋器在速度方面都十分相似(至少對我的基準測試是這樣),我把各解釋器完成四項基準測試所耗的總時間算出來并在圖2中給出。



多變的標志

對這些簡單測試,Rhino,Pnuts和Jytho始終是最快的,緊跟在后面的時Groovy,然后是JudoScript,然后是其他的。這些性能參數對你是否有用,取決于你希望腳本語言做的事情。假如你的腳本函數包含大量的迭代,并且用戶要等待結果,你就需要關注速度最快的解釋器,或者你就該考慮用java實現高性能要求的算法,而不是腳本代碼。假如你的腳本只需要很少的重復操作,這些解釋器速度的差異就不是那么重要了,快速的硬件也會使問題變得不同。

還有一點需要指出的是,即使最快的解釋器,完成上面測試所用的時間也是同樣功能java代碼所用時間的大約40倍。假如速度是你最主要的問題,你必須清楚,最有意義的事情是用java代替腳本代碼實現要害算法。

一些腳本解釋器支持腳本代碼直接編譯成字節碼。我對這將會產生多大的性能差異非常好奇,所以我進行了另一項測試。我用Rhino腳本解釋器把基準測試腳本編譯成了字節碼,然后我把整個基準測試集用腳本和腳本產生的字節碼分別運行了10遍。令人驚異的是,與直接運行腳本相比,腳本碼編譯成字節碼再運行僅僅節省了10%的時間。我最初任務,JVM的魔咒占用了運行測試集的大部分時間,但進一步的檢查發現JVM魔咒本身只占測試集運行總時間的20%。簡單腳本代碼編譯成字節碼看起來會有積極的意義,但這并不一定是顯著提高性能的銀彈。也許在更長的或者,更加計算中心的腳本中,會看到不同的結果。

第二個標準:集成難度

第三個標準:許

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久国产视频| 国产精品永久免费视频| 亚洲最大成人网色| 亚洲最大的av网站| 久久久这里只有精品视频| 国产精品偷伦一区二区| 91色p视频在线| 日韩国产高清污视频在线观看| 亚洲黄色片网站| 中文字幕亚洲无线码a| 欧美乱大交xxxxx另类电影| 米奇精品一区二区三区在线观看| 午夜精品视频在线| 欧美在线欧美在线| 精品久久在线播放| 亚洲精品视频在线播放| 日韩精品中文字幕在线| 亚洲精品狠狠操| 国产精品丝袜一区二区三区| 亚洲aⅴ日韩av电影在线观看| 日韩av色综合| 国产91精品青草社区| 日韩中文字幕在线精品| 91大神福利视频在线| 亚洲欧美一区二区三区久久| 久久香蕉国产线看观看网| 久久亚洲精品网站| 久久久久久亚洲精品| 国产精品香蕉在线观看| 国产欧美va欧美va香蕉在| 亚洲性日韩精品一区二区| 成人免费直播live| 成人中文字幕+乱码+中文字幕| 日韩午夜在线视频| 日韩亚洲综合在线| 国产自产女人91一区在线观看| 亚洲人成网站色ww在线| 日韩欧美在线观看| 91av视频导航| 国产成人精品视频在线观看| 久久国产精品久久国产精品| 国产精品视频久久久久| 国产精品日日摸夜夜添夜夜av| 国产精品久久国产精品99gif| 国产成人啪精品视频免费网| 91精品国产免费久久久久久| 久久精品亚洲94久久精品| 69久久夜色精品国产69| 国产精品视频久久久| 欧美特黄级在线| 懂色av一区二区三区| 久久久久久久成人| 中文字幕少妇一区二区三区| 亚洲情综合五月天| 日韩在线观看免费全| 中文字幕亚洲自拍| 欧美在线激情视频| 欧美自拍大量在线观看| 九九热精品在线| 欧美与黑人午夜性猛交久久久| 亚洲精品二三区| 欧美日韩国产综合视频在线观看中文| 国产一区二区在线播放| 5278欧美一区二区三区| 欧美华人在线视频| 国产欧美一区二区三区久久人妖| 欧美俄罗斯性视频| 日韩毛片中文字幕| 91九色视频导航| 亚洲精品wwwww| 97在线看免费观看视频在线观看| 91精品国产综合久久香蕉922| 免费97视频在线精品国自产拍| 69国产精品成人在线播放| 久久久久久久久国产精品| 亚洲精品美女久久久久| 日韩在线观看免费高清| 欧美性高潮床叫视频| 亚洲国产精品专区久久| 色偷偷偷综合中文字幕;dd| 亚洲成人a**站| 亚洲国产天堂久久综合网| 国产日本欧美一区二区三区| 久久精品视频在线观看| 国产精品一区久久| 欧美日韩亚洲国产一区| 91tv亚洲精品香蕉国产一区7ujn| 国产精品网站入口| 国产精品热视频| 91精品综合久久久久久五月天| 国产精品福利网站| 国产精品久久久久aaaa九色| 亚洲欧美激情精品一区二区| 久久艳片www.17c.com| 51ⅴ精品国产91久久久久久| 色综合天天狠天天透天天伊人| 欧美大荫蒂xxx| 亚洲精品www久久久| 性金发美女69hd大尺寸| 亚洲人成电影网站| 国产福利视频一区| 国产精品久久中文| 国产精品jizz在线观看麻豆| 亚洲a级在线播放观看| 国产精品自产拍在线观看| 国精产品一区一区三区有限在线| 欧美高清激情视频| 色播久久人人爽人人爽人人片视av| 伊人av综合网| 最新91在线视频| 中文字幕精品网| 日韩欧美在线视频日韩欧美在线视频| 久久99精品久久久久久噜噜| 国产成+人+综合+亚洲欧洲| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美性黄网官网| 国产精品白嫩初高中害羞小美女| 亚洲欧洲一区二区三区久久| 色一区av在线| 国产亚洲美女久久| 亚洲自拍偷拍福利| 国产精品国产亚洲伊人久久| 7777精品视频| 福利精品视频在线| 亚洲欧美自拍一区| 久久精品国产电影| 欧美激情亚洲视频| 久久久久久久网站| 91精品综合久久久久久五月天| 中日韩美女免费视频网址在线观看| 98视频在线噜噜噜国产| 亚洲国产中文字幕在线观看| 亚洲国产另类久久精品| 日本高清不卡在线| 精品国产91久久久久久| 日韩精品中文字幕有码专区| 久久精品国产亚洲| 成人福利在线视频| 久久视频在线免费观看| 欧美日韩免费一区| 国a精品视频大全| 精品动漫一区二区三区| 欧美精品中文字幕一区| 91在线中文字幕| 成人日韩av在线| 久久九九精品99国产精品| 国产综合福利在线| 亚洲第一二三四五区| 97视频在线观看亚洲| 欧美中文在线观看| 国产亚洲精品久久久优势| 亚洲欧美日韩中文在线| 亚洲成人久久久| 亚洲人成网站色ww在线| 国产精品丝袜视频| 精品视频久久久| 精品色蜜蜜精品视频在线观看| 亚洲三级av在线| 国产国语刺激对白av不卡| 精品国产一区二区三区在线观看| 亚洲精品美女免费| 伊人久久久久久久久久久| 亚洲精品国产品国语在线| 国产精品电影观看|