當「J2EE」這個縮寫首次在1999年6月的JavaOne大會上亮相,鮮少有人能預見它日後將經歷的跌宕歷程。當時Sun公司Java企業開發部門主管Mala Chandra滿懷激情地向世界介紹這位Java世界的新成員。台下聽眾對於「多層企業開發架構」、「容器與組件」、「廠商中立的開放規範」、「隱藏中間件細節」、「無縫集成」等全新術語,表情交織著驚喜與困惑。放眼當下,這些概念已成開發者的常識,但在那個年代,投影片上閃爍的每一句口號,都預示著聽眾將踏上一段艱辛的學習之路。
幸好Chandra不僅口才了得,更擁有建築學科班出身的空間想像力。她清晰闡述了J2EE架構的雙重初衷:對廠商而言,它是開放標準,讓產品能跨平台運行,成為企業運算體系中可替換的組件;對開發者而言,它是現成解決方案,能迎刃而解跨平台移植、事務處理、安全性等難題,讓資訊「像一條不間斷的河流,經過各種平台與設備,從企業應用系統這一端流向那一端」。
為了理解這番話的實際效力,必須將時針撥回1999年。那年除了備戰千年蟲,業界還在做什麼?翻閱六年前的工作記錄,發現一份日本知名IT廠商企業信息治理系統的規格書,恰好呈現了當時「Java企業開發」的標準樣貌:運行於Netscape 3.0 Gold瀏覽器的Java Applet介面,透過專用中間層連接Oracle 8資料庫。該中間層已相當成熟,提供遠程對象調用、事務處理等底層服務,開發團隊只需專注於伺服器端業務對象代碼與客戶端交互。
除Applet客戶端外,該系統與今日常見的J2EE架構高度相似:業務對象編碼同樣由Home類、PK類、Entity類構成,機制與EJB如出一轍——只不過未繼承javax.ejb介面,而是採用專用API。這種相似性絕非巧合,設計者顯然參考了Sun於1997年底發布的EJB 1.0規範。
換言之,J2EE剛誕生時,市場上已存在各種程度的「準J2EE中間件」。它們主要解決三大類問題:事務處理、分布式對象治理、Web請求處理。事務處理監控器(TP Monitor)是高端企業計算的熱門產品,BEA正是透過收購Tuxedo切入中間件市場。90年代初,「N層分布式對象架構」開始取代傳統C/S架構,CORBA技術成為推手(前述日本廠商的中間層即基於CORBA)。另一方面,Java在Web領域的應用初露鋒芒:1997年6月Sun發布Java Web Server並公開Servlet API;1998年JSP問世,意外契合廠商戰略需求。對N層架構而言,HTTP服務是理想前端,基於Java的Web引擎遂成為企業級Java方案的必備部分。
Java、Web、事務、分布式對象四股潮流匯流,催生了最熱門的產品——「應用服務器」或「中間件」。1998年BEA以1.92億美元收購WebLogic,Netscape與Sun也以相近價格收購Kiva與NetDynamics。這正是J2EE規範誕生的背景:幾乎所有廠商都推出或趕製應用服務器,卻對「應用服務器」該是什麼各執一詞、莫衷一是。