Java 8整裝待發(fā) 圖謀云計算
原創(chuàng)【51CTO外電頭條】鑒于Java 7 SE(標(biāo)準(zhǔn)版)現(xiàn)已正式發(fā)布,甲骨文和Java社區(qū)進(jìn)程組織(JCP)的成員們已開始仔細(xì)考慮為這種編程語言的下一個版本Java SE 8添加什么功能特性。為這個新版本提上議程的工作是:設(shè)計面向云計算的Java。
Mark Little是紅帽公司中間件事業(yè)部的高級工程主管,也是紅帽針對JCP的主要聯(lián)絡(luò)官。他說:“Java 8旨在為云計算作好準(zhǔn)備,面向更廣泛的部署領(lǐng)域。”他強(qiáng)調(diào),為了不至于進(jìn)一步推遲版本的發(fā)布,甲骨文撤掉了原計劃為Java 7添加的許多高級功能特性。那些功能特性很有可能添加到Java 8中。
Little表示,結(jié)果將證明,那些功能特性中至少有兩項(xiàng)會非常有助于讓下一個版本的Java為云計算的大規(guī)模部署作好準(zhǔn)備。一項(xiàng)是多租戶功能,即Java虛擬機(jī)(JVM)安全地運(yùn)行多個應(yīng)用程序的功能。另一項(xiàng)是模塊功能,即把Java開發(fā)工具包(JDK)重新組織成一套定義清晰但又相互關(guān)聯(lián)的模塊。
Little說:“如果Java想在云計算環(huán)境成為主導(dǎo)者,那么模塊功能和JVM里面真正的多租戶功能對Java 8來說很重要。”
Little表示,模塊功能是紅帽最希望出現(xiàn)在Java 8中的一項(xiàng)特性。模塊功能將減小大多數(shù)Java部署環(huán)境的規(guī)模,因?yàn)椴皇撬械牟渴瓠h(huán)境都需要Java的全部核心庫。該功能還有望幫助開發(fā)人員更容易與Java進(jìn)行交互,讓他們只要使用所需的部分,而不是設(shè)法應(yīng)對整個代碼庫。
模塊功能還有助于開發(fā)人員解決Little所說的“類裝入器難題”(classloader hell)這個問題。
某個Java程序訪問多個Java存檔(JAR)即常用例程的組合時,開發(fā)人員就會遇到類裝入器難題。應(yīng)用程序可能會使用來自某個JAR的一個類,它實(shí)際上需要該類駐留在另一個JAR中的不同版本?;蛘?,應(yīng)用程序可能在使用由另一個程序使用的JAR;一旦那另一個程序終止,JAR就被移除,導(dǎo)致第一個應(yīng)用程序停止運(yùn)行。
Little說:“為了讓模塊可以隨意換進(jìn)換出,又不破壞整個環(huán)境,就需要在JVM中同樣給予支持。”
Project Jigsaw這一項(xiàng)計劃就致力于實(shí)現(xiàn)這個目標(biāo)。Sun公司掌控Java(Sun在2010年被甲骨文收購)時,這家公司的工程師青睞Jigsaw,而不是另一種方案:開放服務(wù)網(wǎng)關(guān)計劃(OSGi),后者由OSGI組織監(jiān)管。
Little表示,Project Jigsaw原本為Java 7而生,不過它在2010年被暫停,目的是為了在2011年之前交付Java。不過Little預(yù)測,來自Jigsaw或OSGi的工作成果都不會添加到Java 8中。他說:“Java SE 8中會存在一定的模塊功能。”
除了模塊功能外,Java 8可能還有多租戶功能,即通過一個JVM,安全地運(yùn)行多個應(yīng)用程序的功能。
這類功能對于Java應(yīng)用于云計算環(huán)境來說必不可少;在云計算環(huán)境下,多個有關(guān)方共享同一個基礎(chǔ)設(shè)施。
不過,如今Java EE(企業(yè)版)為解決這個問題提供了一種變通方法。Little說:“如果JVM本身不提供多租戶功能,那么我們所能進(jìn)行的操作非常有限,以免整個環(huán)境可能因同一個JVM中的破壞性租戶而受到破壞。”
Little主張為JVM添加這項(xiàng)功能:為每個應(yīng)用程序提供各自的內(nèi)存空間,即分區(qū)(zone)。這樣一來,“破壞性應(yīng)用程序就無法溢出,進(jìn)入到你為在同一個JVM中運(yùn)行的另一個應(yīng)用程序留出的內(nèi)存空間。”
推崇這個想法的不是只有Little一人。
弗雷斯特研究公司的分析師John Rymer也認(rèn)為:“為JVM添加多租戶功能很重要。如今,每家開發(fā)商都必須各自想辦法來對應(yīng)用服務(wù)器進(jìn)行虛擬化。”
把多租戶功能添加到JVM中將減輕每一種獨(dú)特方案所帶來的培訓(xùn)壓力。這不但可以緩解被開發(fā)商鎖定的現(xiàn)象,“還讓開發(fā)商可以將更多的精力投入到確保穩(wěn)定性和性能上,而不是基本功能上,”Rymer如是說。
許多人長期以來支持添加到Java中的另一項(xiàng)功能是閉包(closure),即在一個函數(shù)里面建立另一個函數(shù),讓它們共享變量的功能。閉包將有助于跨多個處理器核心,更高效地運(yùn)行Java。
盡管甲骨文的首席Java架構(gòu)師一直滿懷熱情地要將閉包功能添加到Java中,但他并不認(rèn)為建議的實(shí)現(xiàn)技術(shù)已為Java 7作好了準(zhǔn)備。閉包功能要不要添加到Java 8中會開始引發(fā)新的一場爭論。
如果添加閉包功能,Java將因而與已經(jīng)添加了這項(xiàng)功能的其他語言(如JavaScript和Scala)處于不相上下的水平。
Scala開發(fā)者兼Scala工具開發(fā)商Typesafe的聯(lián)合創(chuàng)始人Martin Odersky夸口說:“Java在閉包功能方面的工作似乎與我們已經(jīng)在Scala中擁有的閉包功能相類似,但存在更多的限制。”
除了技術(shù)本身外,許多人在密切關(guān)注甲骨文今后會如何監(jiān)管Java 8。
甲骨文還沒有為Java 8版本制定一份官方時間表,不過JCP組織的成員們似乎渴望避免為下一個版本再次等待漫長的間隔期,已在非官方場合表態(tài)會在2012年年底之前發(fā)。Little說:“我們不想在Java 7和Java 8之間再等上個四五年。”
至于如何處理Java方面,甲骨文本身一直在遭到越來越嚴(yán)格的盤查。多方指出,甲骨文交付的Java 7存在已知的軟件缺陷。
Little說:“有時我認(rèn)為甲骨文說的話模棱兩可。有時,我訪談過的甲骨文人員確實(shí)想把事情做好,竭力避免像對待閉源項(xiàng)目那樣運(yùn)營開源項(xiàng)目。”
然而有時,Little卻發(fā)現(xiàn)甲骨文的做法有悖于這些原則。他提到了2010年甲骨文在沒有征求意見的情況下,改變了維護(hù)開源版JDK的OpenJDK項(xiàng)目的治理細(xì)則。結(jié)果,紅帽失去了其在指導(dǎo)委員會的席位,“盡管明擺著我們貢獻(xiàn)了那么多的代碼,”Little憤憤不平地說。
Little說:“我們參與了好多個開源項(xiàng)目。甲骨文的整個處理方法對我們來說不是顯得非常符合開源原則。”甲骨文拒絕就本文發(fā)表評論。
從許多方面來看,Java 8將真正檢驗(yàn)甲骨文管理一個復(fù)雜的開源項(xiàng)目的水平如何,這是許多代碼貢獻(xiàn)者的利益彼此沖突的一個項(xiàng)目。
原文標(biāo)題:Java 8 gears up for the cloud
【編輯推薦】