但未來會怎樣?這是一個大問題。盡管今年發生了如此多的大事,但它們會向哪里發展并不明顯。在這篇文章中,我們將列出一些主要事件,并指出它們在2007年的發展。
開放源代碼Java
2006:Sun采用GPLv2發布其Java VM和編譯器
2007:期待類庫、關注衍生版Java
采用GPL發布Java編譯器和VM表明Sun對于開放源代碼Java是認真的,但要判斷它的結果還為時過早。其一,Sun發布的是早期版Java SE 7,Sun不希望開放源代碼影響在12月初發布的Java SE 6。Sun發布的代碼還缺乏打造一個有用的Java環境所需要的類庫。
提供類庫的挑戰之一是,必須從數百萬行代碼中找出Sun可以在Java中使用、但無權以GPL方式發布的代碼。其中一些代碼已經有了開放源代碼版替代品,但是,Sun還必須重新許可、編寫、放棄一些代碼,這是不可避免的。
除此之外的一大問題是,在采用GPL后,人們會如何“處理”Java。除了與在一些版本的Linux中包含Sun的JVM所牽涉的“政治性”問題和將JVM移植到Sun沒有興趣這么做的平臺上外,人們還會做出一些不可預測的事來。HotSpot的動態運行時間庫編譯器會服務于其它語言的運行時間庫嗎?開發人員會通過修改編譯器或者增添和刪除功能構建多種不同版本的Java語言嗎?這樣的語言可能不能再叫Java了,但它叫什么呢?Java可能被用于域定義語言。
2006:Sun制定并推廣Java分銷許可(Distro License for Java,DLJ)
2007:Java分銷許可還有用嗎?
如果你是一家Linux分銷商,Sun現在無疑給了你當頭一棒。在選定GPL前,Sun向Ubuntus和Debians推薦了Java分銷許可,它使平臺開發商能夠以對它們的平臺有意義的方式封裝Java SE,使用戶能夠象apt-get那樣獲得JVM,而無需人工安裝。
有了GPL版Java,DLJ似乎就再無用武之地了,用戶能夠方便地修改類庫、JVM。因此,只有在GPL Java被封裝為.dpkg軟件包時,DLJ才是必需的。
Java平臺
2006:Java SE 6發布
2007:開發人員何時會采用它?
Java SE 6在12月中旬發布,比原定計劃略微晚了一些。Java SE 6提供了包括XML Digital Signature在內的一些新API,更新了JDBC 4.0和JAXB 2.0等API,重新設計了圖形渲染管道,提高了Swing的Windows的精度GTK。
但是,由于開發人員、部署人員、用戶在采用新版Java方面的緩慢,Java SE 6能夠立即吸引人們嗎?除非需要一些特定的新功能,安裝全新的JVM值得嗎?盡管性能有所提高━━特別是對于桌面應用軟件而言,但在進入2007年時,SE 6不會成為許多人的缺省Java版本。
2006:Java SE 6支持Java之外的其它語言
2007:我們會在JVM上運行什么語言?
Java SE 6中最有趣的變化是它內置地支持腳本語言。新的javax.script API使我們能夠在Java中使用腳本語言引擎,在腳本語言和Java之間交換數據。Java SE 6提供了對JavaScript的內置支持,第三方廠商肯定會增添更多的腳本語言。
由于Sun在9月份招聘了JRuby的開發人員,最可能的“下一種語言”是Ruby。很顯然的是,Sun還在吸引Perl和PHP等其它腳本語言的開發人員。
2006:JDK 7開發工作啟動
2007:與closures有關的爭論達到頂峰
JDK 7的開發已經在進行,但功能清單的發布還需要一段時間。JDK 7中最有爭議的語言功能是在Java語言中增添closures。
在這一問題上有二種觀點。其一是closures是否有必要,或者說closures帶來的復雜性是否超過了它帶來的好處。考慮到closures提供的一些功能已經能夠由inner類完成,closures能夠減輕的“痛點”可能只不過是證明另一種語言結構是不必要的;第二種觀點與closure的語法有關,即它對簡潔的期望是否會使Java closures不容易理解。
2006:Java EE 5發布
2007:EJB 3能夠重新贏得開發人員的青睞嗎?
Sun在今年夏季發布了Java EE 5以及EJB 3.0企業對象框架。
2007年值得關注的是EJB 3.0能否重新贏得放棄了EJB 2.x的開發人員的青睞。
2006:Java ME在手機上非常普及
2007:GPL ME會改變什么嗎?
在三大Java平臺中,Java ME最不引人注目,但由于被應用到了手機上,它的應用比SE或EE要廣泛得多。盡管有了一個開放源代碼CLDC/MIDP平臺,是否有人采用它還是個問題。手機制造商可能會選用當前的許可協議,但GPL ME對于其它領域的初創廠商是非常理想的。
Sun之外的情況
2006:作為藍光技術的一部分,BD-J引起了關注
2007:如果藍光標準失敗,它還會支持BD-J嗎?
Java ME的一個另類用途是為藍光標準提供交互平臺。藍光標準中包含有基于Java的“BD-J”環境,藍光的支持者認為,該標準需要比DVD提供的交互性更有吸引力的交互性,僅僅靠更好的畫面質量不足以確保藍光標準獲得成功。
但是,藍光能夠成功嗎?藍光的主要支持者索尼最近可是麻煩纏身,其中包括使用rootkit軟件和問題電池。PlayStation 3采用藍光技術有助于藍光標準的普及,但它可能傷害到PS3,有玩家抱怨稱藍光抬高了PS3的價格,拖累了它的普及速度。對于BD-J而言更糟糕的是,索尼的第一款藍光影碟機并不支持它。索尼聲稱將在2007年發布的固件升級包中支持BD-J。
由于藍光標準并非一定能夠成功,開發人員是否無需支付巨額許可費就能夠獲得BD-J SDK這一問題也就不那么重要了。
2006:Eclipse Callisto同時發布了10款產品
2007:除了IDE外,誰還會成功?
所有跡象都表明,Eclipse IDE仍然是Java開發的首要選擇。但Eclipse不僅僅只是一個IDE,通過今年夏季發布的Callisto,Eclipse向所有人都表明了這一點。
但是,Eclipse在IDE之外的領域能夠獲得多大成功仍然有待觀察。Eclipse的開發部分能夠被用來以RCP方式開發富客戶端應用程序,但不清楚會有多少開發人員采用這種模式。Eclipse的Standard Widget Toolkit(SWT)被認為能夠解決Swing的問題,但經過多年開發后,它的普及程度與Swing相當━━也就是說不太普及。2007年SWT能夠大規模地進駐桌面領域呢?它和Swing還是只是“小池塘里的大鴨子”?
2006:Google發布GWT
2007:GWT能夠成為開發Ajax的新寵嗎?
在JavaOne 2006上推出的Google Web Toolkit提供了一種開發Ajax應用程序的創新性方法:使用UI對象編寫Java代碼。GWT能夠將代碼編譯為客戶端JavaScript語言,為我們處理棘手的瀏覽器兼容性問題。它能夠將開發人員由JavaScript代碼編寫、調試等繁重的工作中解放出來。但是,開發人員是否愿意放棄對代碼的控制權,或他們是否堅持自己手寫代碼還有待觀察。
2006:Google反對SOAP搜索API
2007:這會是SOAP時代終結的開始嗎?
InfoQ本周表示,Google反對其SOAP搜索API,而支持更適合客戶機-服務器架構、面向Ajax的技術。一名博客將這稱作是“一個單方面的舉措,至少會疏遠Google開發人員社區的部分成員,并導致他們轉向其它服務”,他還對這一舉措對web服務的影響表示了擔憂。史蒂夫的措辭則更激烈,將它稱作是SOAP時代的終結。他說,這不會在一夜之間發生,但SOAP時代將會終結。
社區
2006:JSR 306被賦予改革JCP的使命
2007:JCP能夠讓所有人滿意嗎?
JCP 306是在今年8月份批準成立的,其任務是“開發新版的JCP”。它的目標包括提高Java Community Process的透明度、提高個人的參與性等,它還將改進與其它標準機構的合作、與非Java實現的配合、簡化現有技術向JSR的移植。
2006:Java圖書的銷售在持續滑坡
2007:滑坡的是Java本身?還是圖書?
在最近進行的調查中,提姆發現,Java圖書的銷售在持續滑坡,下滑了15%。他說,Java圖書銷售的滑坡在加速,C#圖書的銷售則在繼續穩定上揚。C#圖書市場比Java圖書市場大約12%。
Java圖書市場是頭怪獸,很少有圖書適合所有的Java編程人員,大量的主題和編程框架范圍非常窄小,無法出版專門闡述它們的圖書。