歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> Sun招安Jruby的關鍵人物意欲何為?

Sun招安Jruby的關鍵人物意欲何為?

日期:2017/2/27 11:55:13   编辑:Linux文化

Sun上周宣布雇傭JRuby的兩位關鍵開發人物Thomas Enebo和Charles Nutter,Artima采訪了Thomas Enebo和Charles Nutter以及Sun負責Web技術的Tim Bray,Sun此舉對Java和Ruby的未來意味著什麼?

  兩個JRuby項目的核心人物加盟Sun,意味著Sun將真刀實槍的在他的Java虛擬機(JVM)上實施Ruby。Enebo表示他們兩個在Sun的全職工作將可以使他們集中精力去實現JRuby項目的偉大目標:

  JRuby的目標就是在Java虛擬機(JVM)上實施最好的Ruby。一方面是使這個運行平台更加完美,一方面是在Java和Ruby世界之間搭建一個橋梁,讓開發者更容易使用。

  Sun對我們的雇傭將給我們更多的時間來研究JRuby,而且這將提高我們工作的質量,因為我們不必再為其他的事情而分心。

  Nutter指出JRuby將完全與基於C語言的Ruby的實施相兼容:“我們的目的是為C Ruby提供一個相近的替代者,我們會盡可能的讓JRuby與C Ruby兼容,與C Ruby的兼容性是我們工作的重中之重;假若我們不能欲行Ruby可以運行的,那還有什麼希望呢?”

  同時,JRuby會可以支持在C Ruby解釋器上不支持的Ruby代碼。Charles Nutter如此表示:有很多情況下,有的項目需要Java平台和類庫的支持,因為你知道現在實際上Java的類庫非常豐富。另外有的的項目可能需要超出C Ruby支持能力的線程需求,或者只有JDBC能解決的數據庫連接問題。

  Nutter表示保持JRuby與C Ruby的兼容,使項目可以輕松的在基於C語言平台和基於Java虛擬機(JVM)的Ruby解釋器之間來回移植。

  支持一個可以運行在Java虛擬機上的高質量的Ruby實施的計劃,顯示了Java虛擬機(JVM)正在逐漸發展成一個通用的執行環境,而不像微軟的CLR環境那樣。

  來自Sun的Tim Bray表示,回首十年,在Java誕生的時候,我們把平台和語言分離開來宣傳的確是非常聰明的。但是在Java發展的前幾年,Java技術達到了如此幸福的階段,你能很容易明白所有的一切(虛擬機、類庫和語言)就是一個成功的工程。微軟對此非常聰明的散布輿論:虛擬機和API指令系統沒有必要與語言捆綁。在工程方面,我們一度對支持多語言是非常認真的,例如,對開源組織Mozilla的Rhino腳步語言的支持,以及被提議的動態分離方法字節碼的支持。

  Bray還表示Java虛擬機(JVM)可以變成最強大的Ruby執行環境之一:目前,純正的Ruby大多數工作在解釋模式。假若我們把JRuby編譯成 Java的字節碼的話,他將可以運行在世界上最好的優化性能的平台Java虛擬機上。因此JRuby可以擁有性能上優勢。

  更特別的是,Sun正在負責領導在其T1000和T2000 服務器中的“酷線程(Coolthreads)”芯片中研究高並行多核計算技術,這種芯片非常適合服務器端的Web應用程序。純正的Ruby的線程實現功能是非常有限的,不能充分利用好這種CPU。JRuby采用了更先進的Java的線程技術,因此在執行特殊的高度線程並行代碼情況下,JRuby將會又更好的機會在現在的芯片上獲得成功。

  除了性能上優勢外,對於那些希望在在線Java商店中使用Ruby編碼的開發者來說,Java虛擬機可以提供一個更安全的環境,正如Nutter所指出的:

  JRubyby可以讓人們具有“平台的信心”,令已經存在的Java商店接受Ruby作為一個可以處理關鍵業務的應用語言。我們都知道人們喜歡任何“說 Java語言”的事情,最多他們認為JRuby只是另一種形式的Java而已。當然我們還是不得不從很多地方來挑選語言和類庫,無論如何現在有一個更容易的辦法來把Ruby介紹到一個基於Java的組織中來。這會令很多Ruby的愛好者感到興奮,因為這意味著更多的工作、更多的方向和更多的機會來發展這個語言和平台。

  除了運行環境和安全性的的優勢外,由於Ruby代碼可以使用Java豐富的類庫,所以Ruby開發者得到的最大的好處應該是強大的JRuby執行性能。 Enebo表示,Java具有豐富的類庫資源,你所能想到的大多數類庫已經在Java中實現了,通常作為一個開放源代碼的程序包。JRuby讓Ruby可以訪問任何Java類庫並與他們交互,就如同這些類庫是用Ruby編寫的一樣。這意味著Ruby程序員擁有一個非常大的工具箱可以使用。

  Nutter還評論說,JRuby就是為Java的編寫類庫代碼的優勢和Ruby的高產性之間架起橋梁的天生選擇。

  對於想支持已經存在了十年也測試了十年的Java平台和類庫的人來說,JRuby就是合適的工具,而且你不用為了要用Java編寫任何事情而感到煩惱。當然Java語言是偉大的,但是C語言同樣是偉大的,他們都是一門編寫災難復原和系統關鍵類庫和算法的語言。用Java來編寫更靈活動態和細膩的應用程序代碼不是一件令人愉快的建議。這就是Ruby要即決的問題。

  我更願意認為JRuby是為Java誕生的,而Ruby是為C誕生的。玩UNIX的朋友都知道,“重要的力氣活”最好使用類似C語言這樣的快速、靜態的編譯語言來完成,而大多數其他現實的工作要用腳步語言來實現,例如Perl、Python和Ruby等。由於某些原因,為了實現同樣的效果,使用Java的朋友要花費更多的時間來完成。

  來自Sun的Bray表示,對於Java開發者來說,JRuby帶來的最大好處就是可以像Ruby一樣提高生產力:最明顯的短期見效就是給那些想用 Ruby編寫他們部分應用的Java開發者帶來了方便。對一些特定問題來說,動態語言可以給你提供更好的解決方法,現在使用JRuby就可以了。這些開發者一方麼可以繼續使用他們已經存在的Java類、程序和接口,一方面可以享受Ruby所帶來的優勢。

  此外,Enebo指出JRuby也可以作為一個JSR 223腳步語言來使用。一個Java項目也能通過JSR223或BSF來嵌入使用JRuby。這允許一個Java程序托管它的部分代碼通過能更滿足特定需要的語言來實現。我最近碰到的一個例子是與JMX MBeans的交互。

  Ruby和Java就像是天生的一對,專職在Sun工作將使得Enebo和Nutter解決Ruby與Java虛擬機(JVM)的結合中出現的難題。 Nutter指出,Java一直被設計成一個多語言的平台,但是它對像Ruby這樣的動態語言的支持還沒有達到我們的需要。這意味著我們目前的Ruby要運行在一個彌補差距的“虛擬機上面的虛擬機”平台上。我們無法對Java stack控制,那麼我們要保持對我們自己控制。我們沒有在Java虛擬機(JVM)上的動態字節碼,那麼我們使用自己的方法。我們不具備對閉包(closures)的支持,那麼我們通過移動的范圍和命令執行來模擬他們。不過我們最近的努力工作已經把目標指向了解決這些問題;由於Java虛擬機也開始發展的對他們支持,我們將能夠對其逐一擊破。

  Enebo補充道,我們不得不檢測一系列不能與Java虛擬機底層設計很好兼容的語言規則。這些語言規則需要進行改造以能更正確的執行我們的意圖。我們已經幾乎能與C的執行保持平衡了,但是其中一些最後的問題依然是一個挑戰。盡管我們明白其中內部的原理,但是要想徹底實現這些改變也是非常困難的,因為需要改變的部分數量比較多。

  盡管如此,Enebo、Nutter和Bray都認為,與先前的種種Java與動態腳步語言的結合嘗試(例如Tcl/Java的結合)相比,Ruby是一個更合適的選擇。Enebo如此表示:Ruby與Java有重大區別,但是這些區別通常是在運行時的靈活性上不同。在Ruby中,你可以立即創建類和定義方法。這種靈活性與Java的嚴謹的靜態類型的環境相比有較大優勢,可以讓你實現在Java中沒法實現的對Java對象和類的一些操作。這給予開發者一個自由而強大的感覺。這也是關於Java和Ruby結合令我喜歡的原因之一。Java提供一個嚴謹完美的環境,而Ruby則因其動態屬性和動態類型而提供一個限制更小的環境。

  Nuter補充說,Java和Ruby之間的距離是非常容易溝通的。Ruby是一個純正的面向對象語言,而Java則是最純正的面向對象語言。像Java 一樣,Ruby也有類、方法、對象等。Ruby也有基本的流程控制和異常處理機制。Ruby使線程偽裝更容易,Java也可以。當你忽略Ruby的可變類型系統和簡化的語法時,語言之間的跨越就顯得不那麼遙遠了。

  你怎麼看待Java與諸如JRuby類的腳步語言的結合?會以何種程度提高你的生產力?以及在Java的靜態環境中使用腳步語言有什麼劣勢嗎?

Copyright © Linux教程網 All Rights Reserved