早期 J2EE 專案技術棧單一,如今面臨 Spring、NanoContainer、HiveMind 等輕量容器,WebWork、Tapestry、JSF 等 Web 框架,JAX-RPC、SAAJ、WS-* 等 Web Service 標準的爆炸式選擇。Ben Galbraith 稱之為「Java 框架不確定性原則」:剛選定框架,新版本就迫使你重新評估。本文提出以「應用原型」為錨點的決策框架,助您在技術洪流中保持戰略定力。
從傳統三層架構(表現、業務邏輯、資料存取)演進,可識別五類本質不同的企業應用:
最常見、團隊最小(常為 1~3 人)、由部門級需求驅動。J2EE 全棧(特別是 EJB)對此類系統屬於「殺雞用牛刀」。輕量框架(Struts + POJO + 單機資料庫)更貼切。優勢:獨立演進、標準自定、複雜度可控。風險:易演變為其他四類,需預留擴展接縫。
核心業務邏輯不變,支援 HTML、Web Service、Rich Client、Portal 等多種入口。關鍵挑戰:
• 類型定義需平台無關(XML Schema/JAXB)
• 物件-XML 映射的循環引用、日期/值類型語意差異
• Rich Client(智能客戶端)部署與離線同步複雜度
JSR 227(通用資料綁定)正是為統一多表現層資料流而生。
整合多資料庫/舊系統,需原子性保證多資源修改。核心技術:JTA/XA 分散式事務、EJB CMT、JNDI 間接層支援熱切換資料源。EJB 正是為此場景而生——事務邊界與業務邏輯的交集點。
連接獨立維護的業務系統。選擇不限於 Web Service:
• CORBA/RMI-IIOP:EJB 容器強制支援,適合同步 RPC
• JMS/MDB/SAAJ:非同步訊息驅動,避免 RPC 瓶頸
• 資料庫層整合:存儲過程、共享資料表,Oracle 支援 Java 寫存儲過程,跨平台最省力
Portal 是典型:多 Portlet 聚合、跨 Portlet 業務調用、多資料源、跨 Portlet Session 共享。此級複雜度正是 J2EE 完整棧(EJB、JMS、JTA、JNDI、Connector)的甜點區。
無論規格如何眼花繚亂,對應五類原型的任何技術都能工作且工作良好。關鍵在於:認清你在建什麼,然後選最順手的工具把它建好。