論Java未來(lái)發(fā)展前途-杭州甲骨文
84 2017-04-11
論Java未來(lái)發(fā)展前途-杭州甲骨文
Java是什么?如果要向一無(wú)所知的人解釋Java是什么還是比較有難度的,是的,它是一門(mén)編程語(yǔ)言,但發(fā)展到今天,Java一詞遠(yuǎn)程超出了語(yǔ)言的定義,具體來(lái)說(shuō),Java是一個(gè)包括虛擬機(jī)環(huán)境,與C語(yǔ)言類(lèi)似,包括庫(kù)和支持軟件,允許它運(yùn)行在各種操作系統(tǒng)、計(jì)算機(jī)、設(shè)備和域中的平臺(tái),包括以下技術(shù):用于桌面的JavaSE用于服務(wù)器和企業(yè)解決方案的JavaEE用于嵌入式和移動(dòng)設(shè)備的JavaME用于應(yīng)用程序暫時(shí)需要的實(shí)時(shí)Java(Real-TimeJava)用于構(gòu)建RIA應(yīng)用程序的JavaFX,用于PC、移動(dòng)設(shè)備和電視(機(jī)頂盒、藍(lán)光播放機(jī)等)上的媒體應(yīng)用因此,如果有人說(shuō)"我是一名Java開(kāi)發(fā)人員",他們需要澄清究竟是Java的哪一個(gè)領(lǐng)域。我這里從平臺(tái)的角度討論Java的未來(lái),包括JavaSE,JavaEE,JavaME,JavaFX,工具和語(yǔ)言。Java的市場(chǎng)有多大?按照Oracle的說(shuō)法,Java是時(shí)下最流行的,無(wú)處不在的技術(shù),2010年1月的統(tǒng)計(jì)數(shù)字如下:9百萬(wàn)Java開(kāi)發(fā)人員、8.4億桌面安裝了Java、100多種不同硬件平臺(tái)支持上億的Java桌面安裝、每天2百萬(wàn)的下載量、財(cái)富100強(qiáng)公司全部使用了Java、55億Java卡片、26億擁有Java功能的手機(jī)、250家手機(jī)運(yùn)營(yíng)商合作伙伴、10多萬(wàn)JavaME應(yīng)用程序、4千萬(wàn)電視和藍(lán)光播放機(jī)Java仍是目前最廣泛使用的編程語(yǔ)言,比所有腳本語(yǔ)言加起來(lái)的總數(shù)還多,由于Java平臺(tái)支持由不同腳本語(yǔ)言編寫(xiě)的應(yīng)用程序運(yùn)行,這些數(shù)字會(huì)是重疊的。例如,Java虛擬機(jī)(JVM)可以執(zhí)行用Java、Rexx、Ruby、、Python、PHP、Groovy、Clojure和Scala.編寫(xiě)的程序。在許多情況下,Sun的HotSpotJVM將會(huì)更好地運(yùn)行這些應(yīng)用程序,因?yàn)镴IT(實(shí)時(shí))編譯器會(huì)重新優(yōu)化編譯過(guò)的代碼。Java仍然是大多數(shù)企業(yè)和Web應(yīng)用程序開(kāi)發(fā)首選的語(yǔ)言/平臺(tái),并繼續(xù)保持增長(zhǎng),Java是免費(fèi)提供給開(kāi)發(fā)者使用的,許多大學(xué)的計(jì)算機(jī)系也選擇Java作為編程語(yǔ)言課程,雖有這些光環(huán)籠罩,但這并不意味著我們不應(yīng)該重新審視Java的未來(lái)發(fā)展方向,特別是Sun被收購(gòu)后的這段時(shí)間。JavaSEOracle已經(jīng)公布了Java的未來(lái)戰(zhàn)略,目標(biāo)是加強(qiáng)和繼續(xù)擴(kuò)大Java在新領(lǐng)域的應(yīng)用,簡(jiǎn)化,優(yōu)化,并將Java平臺(tái)納入新的部署架構(gòu),加大對(duì)Java社區(qū)的投資,允許社區(qū)更多地參與。Oracle產(chǎn)品開(kāi)發(fā)執(zhí)行副總裁ThomasKurian表示,Oracle將推動(dòng)Java成為使用最多,最具效率和世界上最流行的編程平臺(tái),也將推動(dòng)Java在更多的嵌入式設(shè)備中使用。Kurian表示會(huì)保留Java社區(qū)進(jìn)程(JavaCommunityProcess,JCP)推動(dòng)Java的發(fā)展,但我懷疑Oracle將會(huì)改造JCP過(guò)程,因?yàn)樽罱鼛啄暌呀?jīng)暴露出不少問(wèn)題,不合作的參與者可能會(huì)拖延Java規(guī)范請(qǐng)求(JavaSpecificationRequests,JSR)。Kurian也證實(shí),Oracle將繼續(xù)為所有主流操作系統(tǒng)提供支持,以及流行的Java業(yè)務(wù)支持計(jì)劃,它將為當(dāng)前和過(guò)期的JVM版本提供長(zhǎng)期的支持,對(duì)于要在舊版本Java上維護(hù)傳統(tǒng)Java程序的企業(yè)而言,獲得安全補(bǔ)丁和其它支持是至關(guān)重要的。最有趣的是,Kurian的發(fā)言幾乎總是圍繞最近發(fā)布的JavaSE7,Oracle的JRockit虛擬機(jī)和Sun的HotSpot合并展開(kāi)的,Oracle在JavaSE7中計(jì)劃包括以下新特性:模塊化的VM:我們的目標(biāo)是將VM拆分成小塊由應(yīng)用程序使用,并按需推向Inte,這樣的結(jié)果是Java應(yīng)用程序的啟動(dòng)時(shí)間更短了,當(dāng)VM不在目標(biāo)機(jī)器上時(shí),下載的時(shí)間也更短了。額外的語(yǔ)言支持:Java平臺(tái)支持用不同語(yǔ)言編寫(xiě)的應(yīng)用程序,現(xiàn)在將會(huì)添加更多的語(yǔ)言支持,當(dāng)然也包括對(duì)動(dòng)態(tài)語(yǔ)言的支持,這就是所謂的達(dá)芬奇機(jī)或多語(yǔ)言虛擬機(jī),請(qǐng)參考JSR-292。要特別指出的是,JVM增加了動(dòng)態(tài)語(yǔ)言的支持,因此要想添加更多語(yǔ)言的支持就不費(fèi)神了,在此之前,受Java語(yǔ)言靜態(tài)要求的影響,Java編譯器需要額外的編碼才能實(shí)現(xiàn)對(duì)動(dòng)態(tài)語(yǔ)言的支持,這樣會(huì)致使JIT編譯時(shí)間增加,并且比正常的內(nèi)存消耗大得多,因此也增加了垃圾回收的次數(shù)。在JavaSE7中有了這個(gè)增強(qiáng)后,可以在運(yùn)行時(shí)修改現(xiàn)有的類(lèi)字節(jié)碼,因此消耗的持久化空間更少了,垃圾回收的次數(shù)也減少了,讓JIT可以?xún)?yōu)化更多的編譯后代碼。增強(qiáng)的多核支持:需要借助工具、庫(kù)和內(nèi)置設(shè)施幫助新的和現(xiàn)有的Java應(yīng)用程序更有效地利用多核硬件的優(yōu)勢(shì),Java的線(xiàn)程模型可以輕松地創(chuàng)建并行執(zhí)行任務(wù)的線(xiàn)程,但你如何將一個(gè)單一的任務(wù)拆分成多片進(jìn)行并行執(zhí)行呢?有第三方的軟件包可以幫助我們,如Pervasive的DataRush產(chǎn)品,例如,DougLea修改了JavaFork/JoinFramework,為Java增加了這一功能,直接將框架添加到j(luò)ava.util.concurrent包,它就會(huì)遞歸地將任務(wù)分解成子任務(wù)進(jìn)行并行執(zhí)行,框架處理線(xiàn)程和協(xié)調(diào)任務(wù),當(dāng)所有子任務(wù)結(jié)束時(shí)組成結(jié)果。其它改進(jìn)包括持續(xù)的性能改進(jìn),以及許多語(yǔ)言方面的增強(qiáng),包括增加的閉包,在switch語(yǔ)句中對(duì)Strings的支持,以及多塊異常捕獲,閉包是一個(gè)有爭(zhēng)議的功能,它是通過(guò)使用匿名的Java內(nèi)部類(lèi)實(shí)現(xiàn)的。SunHotSpot和OracleJRockit合并在我看來(lái),到目前為止,最令人吃驚的消息是HotSpot和JRockit的合并。多年來(lái),前BEAJVM和Sun的JVM一直被困擾在性能和管理功能上,但現(xiàn)在王者終于再次回歸,在性能基準(zhǔn)測(cè)試、總體延遲和垃圾回收技術(shù)中達(dá)到了最好的成績(jī)。雖然很多人認(rèn)為Sun的HotSpotJIT編譯器技術(shù)是最好的,但JRockit憑借其優(yōu)秀的垃圾回收技術(shù)和其它目標(biāo)性能增強(qiáng)使它成為某些應(yīng)用程序的首選,如金融領(lǐng)域使用得就頗多。事實(shí)上,JRockit實(shí)時(shí)功能比Sun的JavaRTS產(chǎn)品更具優(yōu)勢(shì),因?yàn)镽TS經(jīng)常要求修改應(yīng)用程序的代碼。但Sun的HotSpot被認(rèn)為是最可靠的JVM,可靠比速度應(yīng)該更重要,同時(shí),HotSpot支持更多操作系統(tǒng)和硬件平臺(tái)組合。鑒于這兩個(gè)JVM都有各自的優(yōu)勢(shì),結(jié)合兩者的優(yōu)點(diǎn)將會(huì)帶來(lái)更好的成績(jī),到目前為止,Oracle表示JVM的整合目標(biāo)如下:增強(qiáng)管理和監(jiān)控:HotSpot帶來(lái)了它的VisualVM和VisualGC工具,允許你可視化配置,檢查和分析運(yùn)行中的Java應(yīng)用程序,包括它們的內(nèi)存使用情況和性能。Oracle提供了JRockit任務(wù)控制工具集,實(shí)現(xiàn)應(yīng)用程序執(zhí)行,GC活動(dòng)和由線(xiàn)程同步導(dǎo)致的延遲,IO或內(nèi)存相關(guān)問(wèn)題的可視化報(bào)告。此外,JRockit的任務(wù)控制功能提供了不真實(shí)的監(jiān)控和報(bào)告。在hypervisor上本地執(zhí)行:直接在硬件上運(yùn)行Java虛擬機(jī),超出了傳統(tǒng)操作系統(tǒng)的限制,這也是Oracle收購(gòu)BEA和Sun之前這兩家公司的共同目標(biāo)。這種設(shè)計(jì)可能消除了Java應(yīng)用程序和硬件本身之間的大量軟件層。事實(shí)上,Azul公司在很多年以前就開(kāi)始了這種嘗試,構(gòu)建專(zhuān)門(mén)的硬件和Java虛擬機(jī)協(xié)同工作,從而消除傳統(tǒng)的操作系統(tǒng)。通過(guò)增加一個(gè)hypervisor,Oracle消除了專(zhuān)用硬件的限制,讓JVM可以運(yùn)行在數(shù)據(jù)中心已經(jīng)部署的所有硬件平臺(tái)上,如英特爾,AMD和基于Sparc的系統(tǒng)。先進(jìn)的垃圾回收:結(jié)合了Oracle/BEA和Sun在垃圾回收方面的技術(shù)沉淀,現(xiàn)在再怎么說(shuō)也應(yīng)該有一個(gè)質(zhì)的飛躍了,Sun對(duì)實(shí)時(shí)行為和吞吐量(JavaSE6并行收集器)還單獨(dú)實(shí)現(xiàn)了一個(gè)GC(JavaRTS的實(shí)時(shí)垃圾回收)。Jrcokit支持更少的回收,但它允許你指定操作模式。此外,對(duì)動(dòng)態(tài)模式的支持,在運(yùn)行時(shí)回收器可以選擇最佳的垃圾回收策略。雙方都做了許多有趣的努力和工作(Sun的工作成果是G1回收器),現(xiàn)在雙方一起工作應(yīng)該可以創(chuàng)造出更優(yōu)秀的垃圾回收器。對(duì)多核系統(tǒng)的NUMA支持:非一致內(nèi)存訪(fǎng)問(wèn)(NUMA)讓內(nèi)存訪(fǎng)問(wèn)時(shí)間依賴(lài)于內(nèi)存位置相對(duì)于處理器執(zhí)行代碼的物理位置,在多核處理器技術(shù)領(lǐng)域更是一個(gè)熱門(mén)話(huà)題。例如,在多核處理器中,每個(gè)內(nèi)核有它自己的本地?cái)?shù)據(jù)緩存,在處理器級(jí)別又有一個(gè)共享的二級(jí)緩存,如圖1所示。圖1多核處理器中的NUMA架構(gòu)另一種設(shè)計(jì)是所有內(nèi)核共享處理器級(jí)緩存,但這并不一定是更好的設(shè)計(jì)。例如,共享緩存通常來(lái)自每個(gè)內(nèi)核的物理緩存,訪(fǎng)問(wèn)必須要在內(nèi)核之間進(jìn)行協(xié)調(diào)。但據(jù)OracleJavaSE首席工程師MarkReinhold透露,Java虛擬機(jī)合并可能會(huì)持續(xù)很長(zhǎng)的時(shí)間,一是難度很大,二是要保證穩(wěn)定性,他估計(jì)需要2年時(shí)間才能完成,Reinhold也希望能結(jié)合雙方的所有優(yōu)點(diǎn),造出一個(gè)超級(jí)產(chǎn)品。無(wú)論發(fā)生什么情況,為了達(dá)到最佳性能和最低的延遲,JVM需要知道和支持NUMA架構(gòu)。例如,通過(guò)與硬件打交道,JVM可以嘗試在一個(gè)內(nèi)核上使用熱緩存執(zhí)行代碼,所謂熱緩存就是你需要的數(shù)據(jù)就存儲(chǔ)在它里面。JavaEEOracle長(zhǎng)期以來(lái)一直都是Java的支持者,也是最大的JCP成員之一,公司10多年前就開(kāi)始參與JavaEE規(guī)范的編制,因此對(duì)Oracle成為Java中間件市場(chǎng)的大鱷不應(yīng)該感到意外。通過(guò)自身努力和并購(gòu),Oracle匯聚成了自己的融合中間件平臺(tái),它由完整的JavaEE堆棧,基于SOA的服務(wù),一個(gè)ESB,事務(wù)服務(wù)器和開(kāi)發(fā)工具等組成。收購(gòu)Sun后,Oracle擁有了Glassfish軟件套件,它也是一個(gè)JavaEE參考實(shí)現(xiàn)。由于Oracle還擁有另一個(gè)JavaEE平臺(tái)Weblogic,據(jù)最新的產(chǎn)品路線(xiàn)圖,Oracle在融合中間件堆棧中將使用Weblogic,而在嵌入式方面可能會(huì)使用Glassfish。至于JavaEE的未來(lái),Oracle表示將在以下幾方面做出努力:模塊化,開(kāi)發(fā)標(biāo)準(zhǔn):JavaEE6通過(guò)配置文件(Profile)定義實(shí)現(xiàn)了模塊化JavaEE,允許廠(chǎng)商根據(jù)特定需求創(chuàng)建更小的JavaEE堆棧子集,解決成本和JavaEE使用復(fù)雜問(wèn)題。通過(guò)模塊化設(shè)計(jì)和定義標(biāo)準(zhǔn),有助于簡(jiǎn)化JavaEE,讓它的應(yīng)用領(lǐng)域更廣泛。JavaEE6規(guī)定了兩種配置文件:Web配置文件(Servlet,JSP和JSF)和JavaEE企業(yè)配置文件。顯然還可以定義更多的配置文件種類(lèi),例如,為支持會(huì)話(huà)初始化協(xié)議(SIP)定義電信服務(wù)器配置文件。除了配置文件外,模塊化可用于部署中間件到其它設(shè)備,例如,JavaEE堆棧的嵌入式部分嵌入到移動(dòng)設(shè)備,如安防攝像頭,RFID閱讀器,或其它你能想到的任何智能設(shè)備,開(kāi)放了標(biāo)準(zhǔn)Java編程模型后讓它的使用范圍更廣了。UI和RIA:HTML仍然是JavaEE應(yīng)用程序隱含的UI協(xié)議,通常有JavaServlet,JSP和JSF生成,考慮到生產(chǎn)的Web頁(yè)面是靜態(tài)的,可以使用Ajax技術(shù),不過(guò)它已經(jīng)超出了JavaEE的范疇。雖然Ajax和Comet方法已經(jīng)被證明是非常強(qiáng)大的,具有活力,讓W(xué)eb應(yīng)用程序的易用性更好,但目前還缺乏標(biāo)準(zhǔn)和優(yōu)秀的開(kāi)發(fā)工具。雖然Oracle沒(méi)有明確這方面的具體計(jì)劃,但我猜測(cè)未來(lái)JavaEE和JavaFX集成時(shí)將會(huì)解決Ajax問(wèn)題,事實(shí)上,根據(jù)2009年JavaONE大會(huì)上拉里埃里森的關(guān)于Ajax和JavaFX的發(fā)言,我的猜測(cè)應(yīng)該是正確的。JavaMEJavaME是Sun的一個(gè)巨大成功,已經(jīng)用于數(shù)十億各種類(lèi)型的手機(jī),它還由第三方定制用于無(wú)數(shù)的電力嵌入式解決方案。具體而言,JavaME主要由兩個(gè)產(chǎn)品組成:連接限制設(shè)備配置(ConnectedLimitedDeviceCon**uration,CLDC)和連接設(shè)備配置(ConnectedDeviceCon**uration,CDC)。兩者之間的區(qū)別是它們的能力,CLDC是一個(gè)較小的子集,擁有一個(gè)非常小的虛擬機(jī)(VM),因此在能力有限的設(shè)備上運(yùn)行。CDC是一個(gè)較完整的Java實(shí)現(xiàn),它是為更強(qiáng)大的設(shè)備設(shè)計(jì)的。CDC與JavaSE的字節(jié)碼兼容,即為JavaSE編譯的.class文件可以在CDCJVM上運(yùn)行,但CLDC就不行。由于JavaME(CDC和CLDC)和JavaSE之間的限制和差異,在JavaAPI和庫(kù)方面也有差異,這就造成了開(kāi)發(fā)分裂,為了解決這個(gè)問(wèn)題,Oracle日前宣布將統(tǒng)一JavaME和JavaSEAPI,徹底消除Java市場(chǎng)的分裂。另外,Oracle還宣布要改善JavaME的啟動(dòng)時(shí)間和整體性能,改進(jìn)移動(dòng)設(shè)備的電源管理,并努力支持新興嵌入式設(shè)備(MID,媒體播放器等),以及改進(jìn)JavaFX和JavaFXMobile。JavaFX根據(jù)拉里埃里森和其它高層(如ThomasKurian)的表態(tài),Oracle將會(huì)繼續(xù)支持和發(fā)展JavaFX,JavaFX是一個(gè)強(qiáng)大的運(yùn)行時(shí),腳本語(yǔ)言和工具集,讓Java開(kāi)發(fā)人員更容易構(gòu)建RIA應(yīng)用程序,F(xiàn)lash/Flex和Silverlight也是RIA領(lǐng)域的競(jìng)爭(zhēng)者,但JavaFX應(yīng)用程序是為了滿(mǎn)足你生活方方面面的應(yīng)用,此外,JavaFX及基于Java構(gòu)建的,因此你可以在JavaFX程序中集成和使用現(xiàn)有Java代碼。你可以直接在桌面計(jì)算機(jī)上,嵌入到網(wǎng)頁(yè),通過(guò)JavaWebStart或支持JavaFXMobile的設(shè)備上運(yùn)行JavaFX應(yīng)用程序,在移動(dòng)世界大會(huì)(MobileWorldCongress,MWC)2009上,多家手機(jī)制造商和運(yùn)營(yíng)商宣布它們的手機(jī)將會(huì)支持JavaFX,但Oracle對(duì)JavaFX是如何計(jì)劃的呢?Oracle表示它將增加JavaFX的投資,為RIA應(yīng)用提供無(wú)與倫比的體驗(yàn),重點(diǎn)如下:基于可視化組件創(chuàng)建一個(gè)設(shè)計(jì)范式為JavaFX應(yīng)用程序創(chuàng)建一個(gè)豐富的UI擴(kuò)展庫(kù)提升所有平臺(tái)的JavaFX性能增強(qiáng)跨設(shè)備移植JavaFX應(yīng)用程序的能力與Java,和HTML5無(wú)縫集成支持新興設(shè)備和UI范式(如多點(diǎn)觸摸)當(dāng)然,埃里森本人在去年的JavaONE大會(huì)上也暗示將會(huì)基于云的方式改造OpenOffice,基于這個(gè)原因,我猜測(cè)Oracle將會(huì)讓JavaFX成為其云戰(zhàn)略的主要組成部分,即使埃里森本人對(duì)云并不感冒。開(kāi)發(fā)工具在所有Java組件中,NetBeans的前途是最不明朗的,Oracle沒(méi)有宣布具體的計(jì)劃,只是說(shuō)NetBeans將會(huì)繼續(xù)作為Java開(kāi)發(fā)人員的輕量級(jí)IDE,雖然說(shuō)是輕量級(jí)平臺(tái),但它的重點(diǎn)仍然是JavaME,JavaEE和基于腳本的開(kāi)發(fā),另外還包括移動(dòng)開(kāi)發(fā)和動(dòng)態(tài)語(yǔ)言編程。但是OracleJdeveloper和Eclipse仍然是重點(diǎn)戰(zhàn)略級(jí)Java開(kāi)發(fā)平臺(tái),Jdeveloper是Oracle融合中間件套件的一部分,Oracle將會(huì)繼續(xù)把EclipseIDE作為Eclipse11g產(chǎn)品企業(yè)包的一部分。我想Oracle將會(huì)把重點(diǎn)放在圍繞JavaFX內(nèi)容制作,UI,部署,Java和JavaFX應(yīng)用程序管理等新工具的開(kāi)發(fā)上。我個(gè)人非常喜歡NetBeans,從2006年就開(kāi)始使用它,希望Oracle能夠盡快澄清IDE的具體計(jì)劃。總結(jié)雖然企業(yè)的一舉一動(dòng)很少影響到開(kāi)發(fā)者社區(qū),但Oracle收購(gòu)Sun將在今后幾年產(chǎn)生深遠(yuǎn)的影響,雖然你可能不會(huì)關(guān)心Oracle個(gè)別產(chǎn)品的盈利能力,但作為一名開(kāi)發(fā)人員,但我想你對(duì)下面的問(wèn)題一定感興趣:HotSpot和JRockit合并產(chǎn)生一個(gè)超級(jí)JVMJavaME和JavaSEAPI統(tǒng)一增加對(duì)JavaFX的投資,讓它適用于更多平臺(tái)繼續(xù)在JVM中集成動(dòng)態(tài)語(yǔ)言看了以上這些,你對(duì)Java心動(dòng)了,是不是很想想去擁有這項(xiàng)技能。那還在等什么,快到甲骨文在浙江的唯一一個(gè)旗艦運(yùn)營(yíng)中心---杭州天眼教育咨詢(xún)有限公司來(lái)拜師學(xué)藝吧,我們將不遺余力的將畢生所學(xué)全部地傳授給你,讓你在IT武林中占有一席之地!
聯(lián)系人:喻老師聯(lián)系電話(huà):0571-86711171qq:3033279326
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)