各位好,從javatwo回來之後,小弟會在這裡整理一些心得 與大家分享。老實說,這一年來java的變革的確相當的大,我相信一部份 跟.NET逐漸成熟有關,不可否認,.NET中的language有一些syntax sugar, 減輕了開發者的學習曲線,這方面Sun向Microsoft借鏡不少,因此下一版 的JDK,在開發上的確比以往容易許多。不過java的變革遠不只如此,這一年來, 許多規格逐漸的成熟了,正式的被納入J2SE、J2EE、J2ME的版圖,融入的 過程中,這些技術漸漸的被大家熟悉,反過來也有一些新的idea、新的framework 在影響java既有的結構,這是很有趣的現象。 這次的研討會中,感覺上在J2EE和J2ME部分都有相當的著墨,在J2ME 部分,最被強調的是JSR184的實作,JSR184規範了在Mobile上面的3D API,小弟 對這部分沒有太多經驗,不過感覺上這組API跟Java3D的能力幾乎是一樣的,但是 它的目標卻是在手機這樣的平台,一方面當然得益於手機計算能力的大幅進步, 一方面這個規格最佳化了M3G (Mobile 3D Graphics) 這個用來輸出3D Model的檔案 格式,老實說,在手機上面看到類似NBA 2000這樣的game,的確蠻震撼的。在mobile 方面,除了JSR184,還有MIDP 2.0的final,參展的motorola以及nokia這兩家手機廠商 都完整的實作了MIDP 2.0,甚至MIDP 2.1正由motorola為主在規劃中,看起來在短時間 之內,java在手機平台上的優勢仍然不容易被取代。 在J2EE部分,小弟花了一些功夫去k J2EE Design Pattern,在新的 "建議" 的 design pattern中,大家可能接觸過的Struts framework等等的觀念正式的被納入,這算 是一種正名。不過很值得注意的是POJO觀念的推廣,或許J2EE的結構真的太過繁雜了一些, 尤其是EJB,因此以Plain Old Java Object (POJO)來取代的聲音蠻大的,這次也有參展的廠商 很大力的在推廣Spring這個framework,Spring這個framework可以說是一個輕量級的應用 程式伺服器,裡面很大量的使用POJO作為基礎,據說EJB的下一個版本EJB 3.0會大幅度的採用 POJO來取代現有的EJB模式,我們拭目以待,如果真的有這樣的變革,那應該會是很大的影響。 另外一個有趣的議題是Java和Mac的合作,過去Mac的電腦一直被認為是小眾的電腦, 使用自己的程式語言、自己的應用程式、自己的作業系統,不過在Mac OS X以後,由於以linux 為核心,情況有很大的不同,過去一些linux上面很有名的軟體,像是apache、samba server, 都可以在Mac OS X上面使用,在這次的JavaTwo研討會中,Mac更表示他們已經把JVM包含在Mac OS X 的核心裡面,並非採用外掛的方式,而是直接將JVM作為Mac OS X的核心的一部份,如此一來, Java成為Mac OS X的native language一樣,有很好的效率。甚至像Web Logic這些重量級的 Java應用程式伺服器,也都內建在Mac OS X中。在研討會中提到的一個Java Desktop System,基本上是以Suse linux為核心的一個作業系統,裡面也已經把JVM內建在核心,以往 程式設計師對java最大的抱怨就是JVM散佈不易以及由此所產生的版本問題,在這樣的情況下 就不是問題了。從這兩個例子也可以看得出來,JVM很容易被編譯到linux類型的作業系統的核心, 再加上Sun自己的Sloaris系統,以及大部分的手機,JVM的散佈問題看來有機會大大的改善。 Security也是這個會期著墨甚多的議題,當然也提到了MIDP 2.0的security model, 不過讓筆者印象最深刻的,其實是WebService的security。由於WebService的精神是希望透過 http這樣的協定,讓應用程式跟應用程式的溝通變得很容易,然而也因為如此讓WebService上面 幾乎不存在security的能力,過去要改善這樣的問題,只能透過SSL來作,這樣做至少有三個問題, 第一個是SSL是單向的認證,第二個是SSL缺乏彈性,只能將整個傳輸加密,不能像其他的security model 那樣,針對使用者的身分來開放不同的權限,第三個問題是SSL在到達端點的時候,仍然會被解開成 明碼,因此只能保證傳輸過程,無法保證端點的操作。不過現在對於WebService security的思考方向, 已經轉變成在message level作處理,也就是利用金鑰對於WebService的某一部份的內容作加密,如此 一來當然會有很大的彈性,不過問題是WebService的implementation如果沒有處理加解密的能力,那WebService 程式會變得複雜許多。在最新版的Java WebService Developer Pack ( JWSDP )裡面,message-level 的WebService已經內建而且成為規格之一,雖然目前的實作還不是相當完整,但是對於WebServce security 的問題,應該是一個可能的解答。