轉貼自JavaWorld.com﹐作者: Michael Juntao Yuan, 翻譯: doodoofish
摘要
在前不久的"2003 JavaOne"會議上最矚目的名詞就是"Java無所不在"。但對許多開發者來說﹐確切理解"Java無所不在"的涵意不是這麼容易的﹐因為這個概念似乎沒有任何相對應的實際的Java API。"Java無所不在"是一種觀念﹐它影響Java平臺各個方面的演進和發展。對開發者來說﹐這個觀念遠不止與切身有關而已﹐它預示着在未來最有市場的Java技術和最有利益回報的Java商務的到來。在本文中﹐Michael Juntao Yuan解釋了"Java無所不在"這一觀念﹐它與傳統Java理念的關係﹐以及討論了它對開發人員的影響﹐特別是對當今企業級開發人員。(2400字﹐2003年8月22日)
在"Java是Java"之前﹐它被稱作Oak--一種用于在用戶電器上開發嵌入式應用的語言。在90年代那種無所不在的網絡互聯smart device還未出現﹔此一時期﹐Java作為網絡語言蓬勃發展起來﹐它被用于增強瘦客戶端(applets)﹐而後又因為服務器端的平臺技術(servlets和J2EE)而獲得巨大的成功。然而﹐巨大的並有利益回報的客戶端軟件技術這一塊仍令開發人員難以搞懂和掌握。不管Java的工具如何有垮平臺的能力﹐微軟的視窗系統的壟斷地位仍舊屹立不倒。隨着應用服務器市場日益飽和﹐並且J2EE服務器正變成"日常用品"﹐Java的成長處于關鍵時刻。
幸運的是﹐Java在客戶端上的風向已經出現變化了。隨着今年Smart Wireless Device出貨遠超過PC電腦的銷量﹐視窗系統不再是客戶端平臺的默認標準了。在2003年3月的會議演講上Bill Gates把當今無線市場比喻成"視窗系統出現前的早期階段"﹐那時市面上有巨大的投機和工作機會﹐並且沒有統治優勢的廠商。Java成為真正意譯上普遍存在的端到端平臺的機會終于到來了。
Java無所不在的觀念由Sun Microsystems在2003年JavaOne會議上提出﹐目標是提昇Java在大量成長的端到端解決方案市場中的能力。在本文中﹐我將闡述Java無所不在這個概念﹐它支持何種應用﹐它對開發人員有何意義。
什麼是"Java無所不在"?
從技術上講﹐"Java無所不在"是一種單一架構﹑端到端的解決方案。在服務器上的J2EE﹐客戶端上的J2SE和J2ME﹐以及嵌入式系統中的J2ME和JavaCard共享同一的基本語言特性﹑API﹑類庫﹑甚至開發工具。"Java無所不在"對開發人員極有價值的意義是最大限度地提供開發效率﹐並允許現有的開發人員無須經過重新培訓而能參與到各種不同市場中來。
經過若干年開發和PC平臺的成熟﹐J2SE和J2EE的架構已相對穩定。但在移動客戶端上﹐平臺仍舊在迅速演進中。與眾多設備以及網絡廠商的合作已成為一種需求﹐這一需求已經確確實實地把J2ME鎖定為一個遠景目標。
然而﹐要證明J2ME對"Java無所不在"成功的重要性就要知道﹕設備市場不僅巨大﹐而且比PC市場更有利可圖﹐因為移動設備的用戶更願意為服務付錢。"Java無所不在"的概念預想Java Runtime在各部出廠的smart device上安裝﹐這是一個頗具野心的目標。但如果成功﹐"Java everywhere"不僅將創造新的機會﹐而且將幫助整合其他相關的Java技術。為了使Java在所有設備上運行﹐我們必須遵從Java中最被認可的原則之一---Write Once, Run Anywhere (WORA).。
比Write Once, Run Anywhere更宏大
因為專著于架構上的持續性和技能過渡﹐Java無所不在遠比傳統的Write Once, Run Anywhere更宏大。因為在small devices資源的限制﹐我們不能直接在small devices上運行J2SE程序。J2ME的架構本身由configurations和profiles組成﹐它們每個都支持各種J2SE的核心語言類庫。通用的WORA原則被適當調整了﹐因為我們不能再期望一個Java程序在所有J2SE和J2ME設備上都能運行﹐而是讓WORA原則用于在同一J2ME profile的設備上。
甚至對于相近的設備﹐如移動電話﹐標準J2ME profile(如Mobile Information Device Profile, MIDP)只指明一組普遍的API和特性﹐每個設備都必須支持這些API和特性。然而﹐設備市場被認為是高速變革的﹐製造商通過提供新特性和新能力來事自己的設備區別于其他設備(如﹐從PDA電話到相機電話﹐再到視訊電話)。這對Java開發人員來說使用這些新特性來開發應用是相當困難的。
在當前J2ME的架構中﹐對那些先進設備特性的支持可通過可選包來實現。可選包的API在JCP組織中被開發和標準化。它們使開發人員能夠對相近的設備編寫可移植的應用程序。當今﹐MIDP可選包支持最現代的移動電話的特性: 從短信﹐多媒體內容﹐藍牙連接技術﹐和全球定位系統GPS﹐到SOAP Web Services。可選包的方法甚至已經用于J2SE的領域。例如﹐JSR(Java Specification Request)197讓J2ME通用連接框架(J2ME Generic Connection Framework)用于J2SE﹐它使得J2ME網絡應用程序能在J2SE的PC上運行。
當然﹐眾多的可選包有時會讓人困惑。整合的工作正在進行中。最重要的工作是JSR 185﹐無線工業Java技術(Java Technology for the Wireless Industry)。這個JSR 185的專家組由那些主要設備廠商和無線經銷商組成。這個JSR定義了在J2ME中各種不同組件的關係和交集。JSR 185提供了文件﹐TCK(Technology Compatibility Kit)suites技術兼容性工具套件﹐和給用戶和廠商的指南。
設備提供商也能通過基于它們支持的特性和API對設備的分類來幫助開發人員。一個很好的例子就是Nokia30﹐40﹐和60開發平臺系列。
開發工具是關鍵
要讓"Java無所不在"成功﹐開發人員必須採用Java來解決現實社會中端到端移動的問題。現在讓我們看看哪些開發人員會關注Java技術
1﹑當今﹐有3百萬Java開發人員。其中許多人將在未來進入smart device領域﹐因為這裡有錢﹐有工作機會。
2﹑現在的smart device開發人員很多使用C/C++。因為Java的帶來巨大的性能提高﹐這些人中的許多人正把Java看作一種更安全和高效的選擇。
3﹑擁有VB技術和客戶端開發經驗的低端開發人員正在打算轉向。他們可能轉到微軟的.NET或Java平臺。
為了吸引這些開發人員到Java陣營中來﹐一個能力超強並讓人熟悉的開發工具是關鍵。在即將到來的J2SE1.5中有新的特性﹐這一特性極大地把減少Java複雜度作為目標。許多創新如Java metadata facility (JSR 175)和一個Java IDE extension API (JSR 198)使得開發一流Java開發工具變得更加容易了。
在2003年JavaOne大會中﹐SUN演示了他們的Rave項目﹐一個用戶企業Java開發的IDE。從許多方面來講﹐Rave很象Microsoft Visual Studio .Net。它被設計成用來吸引VB開發人員。在會議中﹐SUN也演示了Relator項目﹐一個讓企業移動應用開發人員來無縫整合J2ME客戶端和J2EE服務器的工具。
在J2ME裡﹐開發工具正雨後春筍般得冒出來。所有主流Java IDE現在都支持J2ME的開發。現在的挑戰是讓它們支持更多的專有設備的類庫和模擬器(Emulator)。在JavaOne大會中﹐Borland和IBM宣佈Jbuilder和WebSphere Studio Device Developer將支持Nokia設備的特性。
在下面的部份﹐我們將詳細介紹J2ME。