<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Java能為應用程序提供統一的平臺嗎?

    Posted on 2007-08-24 09:03 詩特林 閱讀(1315) 評論(2)  編輯  收藏 所屬分類: J2EE
    應IT168寫的專稿.http://tech.it168.com/j/2007-08-23/200708232214378.shtml
     

    Java能為應用程序提供統一的平臺嗎?

    自由紫風

    Java作為一種成熟的語言,同時作為一種優秀的平臺,已經廣為接受。很多的程序員對Java技術很精通。如果說在進行軟件開發的時候,把Java這個平臺拋掉或對之置若罔聞,對現在的開發者來說,這是一件忍痛割愛的事情。不管是為了更好的提高程序的性能或是穩定性,還是看中了Java非常豐富的類庫,非Java應用程序在JVM上運行已經吊足了程序員的胃口。那么,Java可以為應用程序提供統一的運行平臺嗎?JVM能承擔這一艱巨的任務否?

     

    一、       引言

     

    最近筆者讀到一篇Use Java to Improve Drupal's Scalability”的文章。作者(Geert Bevin)在使用Drupal一套采用GPL授權的開放源碼軟件,它可以讓個人或社區使用者很容易地發表、管理并組織一個網站里大量且多樣的內容,已經有許多個人和組織采用Drupal來建立各種不同的網站)時遇到了程序穩定性方面的瓶頸。由于Drupal使用數據庫作為緩存,而PHP在跨越Request時是不會保存對象的狀態信息的,所以他決定使用Terracotta——一個JVM級的開源群集框架,能提供:HTTP Session復制,分布式緩存,POJO群集,跨越群集的JVM來實現分布式應用程序協調。使用這一替代方案后,盡管他也遇到了一些別的小問題,但穩定性的問題最終得以解決。同時,將PHPJava下運行,還可以得到更加安全的運行環境。

    上面的例子,我們可以看出,應用程序雖然采用了非Java的技術來構建,但最終在Java的環境下運行,并通過JVM來提高應用程序的穩定性和性能。而且,非Java編寫的程序可以在JVM上更加快速的運行,這是非常有意思且有意義的事情。而在不久之前,也許三年或四年前,程序員經常報怨,一種語言編寫的程序往往只能在特定的環境下運行。當然,這也包括Java本身。

    當然,如今而言,這聽上去有點不夠人性化。因為不管是PHP應用程序,Ruby on Rails應用程序,或是.NET應用程序,似乎都可以在Java環境下運行了。更有甚者宣稱,這三種應用程序在Java環境下的運行效率比他們在各自特定的環境下運行的效率還要高。

    不管是為了更好的提高程序的性能或是穩定性,還是看中了Java非常豐富的類庫,非Java應用程序在JVM上運行已經吊足了程序員的胃口。那么,Java可以為應用程序提供統一的運行平臺嗎?JVM能承擔這一艱巨的任務否?

     

    二、       JVM中運行.NET依舊能保證性能

     

    Mainsoft公司最近發布了2.0版本的Mainsoft for Java EE(原名Visual Mainwin),同時發布的還有一份有趣的白皮書 。據該白皮書稱,一個基于.NET的應用程序,若是借助于Mainsoft for Java EE技術交叉編譯之后運行于Java EE平臺上,那么在某些方面的性能甚至會強于原有的.NET應用程序。

    交叉編譯引擎將.NET Framework生成的Microsoft Intermediate LanguageMSIL)交叉編譯成Java的字節代碼。然后基于Java.NET Framework實現即可支持應用程序運行于Java平臺之上。不但如此,Visual Studio擴展還能夠允許開發者在Java EE平臺上編寫、編譯、部署以及調試Web或服務器應用程序。

    因為代碼的交叉編譯發生于字節碼級別,所以其過程并不需要源文件轉換——這就意味著開發者仍舊可以使用Visual Studio.Net作為他們可移植程序的開發環境。Mainsoft還使用Java重新實現了很大的一部分.NET Framework,包括ASP.NetADO.Net以及Web Service API等。不過因為Mainsoft for Java EE主要專注于Web以及服務器應用程序方面,所以類似Windows Form的組件則沒有提供。

    1. ASP.NET.NET Server部署在Java EE上示意圖

    遷移后的Java EE應用程序可以運行于IBM WebSphereBEA WebLogicApache Tomcat之上。在完全相同的硬件條件下,遷移后的Java EE應用程序(運行于WebSphere之上):每秒處理請求數(Requests Per SecondRPS)比原有.NET應用程序提高了8%;具有更好的CPU可伸縮性 ,在RPS方面幾乎是線性增長的;在各種經過測試的負載情況下,都提高了至少4%的響應時間;在重負載情況下,RPS提高了至少5%

    從客戶的角度來看這的確是一種很好且很吸引人的技術,比如客戶已經傾向于J2EE的解決方案,而對原有的某些采用.NET實現的系統,假期再采用J2EE來重寫,其中的人力物力的浪費可想而知。此外.NETJ2EE平臺現在來很難說誰優誰劣,各有所長,如果能夠發揮各自的優勢豈不是非常妙的事情。

    通常要實現.NETJ2EE之間的互操作只能通過高層接口,如WebService等,效率比較低,此外必須部署和維護不同的操作系統等問題,現在可以把.NET的程序編譯成JVM Bytecode,如此一來,兩類程序可以融合在一塊。不過互操作還是得通過高層接口才能實現,不知道Mainsoft在他們之間的互操作上有什么好方法。這方面有JIntegra的產品,ArcGIS用的就是這個產品。

     

    三、       Ruby on JVM

     

    Ruby on JVM就是說把Ruby放到JVM上運行,換句話說,在JVM這個平臺上可以去運行Ruby,為什么會把Ruby放到JVM上運行呢?因為很多人最奇怪的這一個問題就是,Ruby有它自己的平臺,它為什么就會放到JVM上運行?實際上,廣大的程序員們已經知道,Java本身是已經被大家廣為接受的一個平臺,已經有很多的程序員非常熟悉Java技術知識,所以說Java這個平臺本身已經得到了大家的一個認可,那么,如果在開發的時候把Java這個平臺去拋掉不利用,對Java開發者來說,這是一件不可能的事情。

    Ruby可能現在受程序員所關注,可能主要是由于Ruby on rails的興起,而Ruby on rails帶給大家的是什么呢?最主要的體現是開發效率的提升。有媒體宣稱Ruby on Rails可以給軟件開發帶來十倍開發效率的提升,當然這不排除炒作的成分。即便拋去這個廣告因素來說,可能也確確實實有幾倍的效率提升。而人們總是愿意用這種最少的力量去干盡可能多的事情,那既然有像Ruby這么好的開發語言,人們則希望能把Ruby運用在自己的實際的工作之中。如果把Ruby這樣好的語言編寫的程序,和Java這樣一個比較成熟的平臺,兩者結合起來的話,則能把二者的優勢結合起來,對程序員來說也是一個非常好的選擇。

    Ruby的優點就是它開發效率高,而Java的優點就是它資源非常豐富。而在企業級應用,已經有大量且成熟的Java EE解決方案,這樣兩者可以互補。如果把Ruby放到JVM這個平臺上,在Ruby的代碼里就可以使用Java的類庫。而Java已經有很多現成的且做得很好的類庫及解釋方案,都可以在Ruby代碼中得到復用;另外一方面,可以把Ruby的應用部署到JVM上。

    要使Ruby運行在JVM上,主要的方式有兩種。第一,因為Ruby是一種解釋性的語言,利用Java開發一個Ruby的解釋器,然后讓Ruby的應用程序運行在JVM平臺上,而這也確確實實是現在可能比較主流的方式——JRuby;那另外一種方式,除了解釋的方式外,還可以采用編譯的方式,把Ruby的代碼編譯成Java Bytecode,然后讓Bytecode去運行在JVM的平臺上——XRuby

     

    四、       JVM——高層次的OS

     

    在這樣的一場游戲中,我們似乎可以把Java看作為構建于OS(操作系統)之上高層次的OS——可以為應用程序或框架提供重要的底層服務及功能。但這些服務及功能非一般的普通OS技術能提供,例如普通的OS可能有:內存管理;線程,處理及同步;執行本地程序或解釋Shell腳本。而JVM這層OS,可提供:簡易的垃圾回收;在應用程序中對內存進行安全管理;即時編譯技術(JITJust In Time)執行動態代碼。

    Windows程序設計領域處于發展初期時,Windows程序員可使用的編程工具唯有API函數。這些函數在程序員手中猶如積木塊一樣,可搭建出各種界面豐富、功能靈活的應用程序。不過,由于這些函數結構復雜,所以往往難以理解,而且容易誤用。而隨著軟件技術的不斷發展,在Windows平臺上出現了很多優秀的可視化編程環境,程序員可以采用所見即所得的編程方式來開發具有精美用戶界面和功能的應用程序。這些可視化編程環境操作簡便、界面友好,比如:Visual C++DelphiVisual Basic等等。在這些工具中提供了大量的類庫和各種控件,它們替代了API的神秘功能。事實上,這些類庫和控件都是構筑在Windows API的基礎上的,但它們使用方便,加速了Windows應用程序的開發,所以受到程序員的普遍采用。有了這些類庫和控件,程序員們便可以把主要精力放在 整體功能的設計上,而不必過于關注具體細節。不過,這也導致了非常多的程序員在類庫面前固步自封,對下層API函數的強大功能一無所知。

    OS技術開始流行后,隨著C/S開發模式的發展,每種語言/編譯器/IDE等都具有各自專用的API和運行時。因此,在程序員的世界里充滿了各種各樣的內庫及可供程序員調用的組件,有如Glibs/MSVCOWL/MFCVBRUNSmalltalk VMs等等。

    Java.NET都競爭著開發高層次的OS.NET由于嵌入進了Windows操作系統,因此顯得更加的專業。但是,Java顯然更加的關注如何使JVM為更多的開發語言提供更寬闊的平臺。因此,Sun宣稱,Java EE 7將會為更多的開發語言提供更好的統一平臺。當然開源的Java JDK將使這一宣稱更具可操作性,使Java不但可以嵌入到Windows中去,同時還有Solaris……

     

    五、       小論

     

    網上已經有將CRL Bytecode轉成Java bytecode的編譯器。據稱,這使用得在.NET環境下開發的應用程序,其運行速度比在.NET環境下要塊得多。同時,最近,相關組織已經采用Java開發了兩個操作系統:JXJNode,當然這只是很前沿的探索,并非像Windows一樣的成熟。IBM也宣稱要在這方面進行更大的投入研究。同時,BEA采用Java開發的LiquidVM不再需要操作系統,它可以在自己的VMWare上運行。

    我們有理由相信,走過了十多年風風雨雨的Java,是有足夠的能力和潛力為應用程序提供一個統一的運行平臺的。不管是PHP應用程序,Ruby on Rails應用程序,或是.NET應用程序,應該都可以在Java環境下運行,且應用程序在Java環境下的運行效率比在他們各自特定的環境下運行的效率還要高。這就是Java的魅力,同時也是它的潛力。


    評論

    # re: Java能為應用程序提供統一的平臺嗎?  回復  更多評論   

    2007-08-24 09:44 by dennis
    Jruby現在走的也是編譯的方式

    # re: Java能為應用程序提供統一的平臺嗎?  回復  更多評論   

    2007-08-26 17:38 by 海邊沫沫
    呵呵,不要想著什么東西能夠統一。
    程序員的性格就是喜歡嘗試不同的新東西
    主站蜘蛛池模板: 国产成人亚洲综合a∨| 亚洲精品在线视频观看| 国产国拍精品亚洲AV片| 久久久亚洲欧洲日产国码aⅴ| 亚洲精品综合在线影院| 99视频在线免费观看| 97在线线免费观看视频在线观看| 亚洲av日韩片在线观看| 国产成人亚洲合集青青草原精品| 香蕉免费在线视频| 日本无吗免费一二区| 亚洲首页在线观看| 最近中文字幕免费大全| 国产V亚洲V天堂无码| 一级毛片免费不卡直观看| 好吊妞998视频免费观看在线| 少妇中文字幕乱码亚洲影视| 97视频免费观看2区| 亚洲色大成网站WWW久久九九| 春暖花开亚洲性无区一区二区| 中文字幕无码播放免费| 亚洲精品人成在线观看| 两个人看的www免费视频| 亚洲一区中文字幕久久| 在线观看免费高清视频| 美女扒开屁股让男人桶爽免费 | 大片免费观看92在线视频线视频| 一二三四免费观看在线视频中文版| 亚洲综合一区国产精品| 成人免费视频网址| 亚洲卡一卡二卡乱码新区| 精品国产精品久久一区免费式| 亚洲一区二区三区不卡在线播放| 三年片在线观看免费观看大全动漫 | 97免费人妻在线视频| 亚洲AV无码一区二区乱子伦| 成人免费无码H在线观看不卡| 亚洲一级黄色视频| 老司机精品免费视频| 亚洲人成电影在线观看网| 麻豆最新国产剧情AV原创免费|