WebSphere 與 JBoss 堪稱是 JavaEE middleware 市場上兩個主要的商用軟體,在 traditional WebSphere Application Server 不再更新 JDK 後(停留在 IBM JDK8),使用者要往下一個世代的規格去發展,就是選擇 WebSphere Liberty 或是 JBoss EAP 了;在這篇文章裡我透過兩個面向:JVM 支援與 Java EE/Jakarta EE 規格支援,來探討我為什麼會選擇 WebSphere Liberty。
我先從 JVM 切入,JBoss EAP 官方宣稱支援以下 JVM:
https://access.redhat.com/articles/2026253
可以看得出來 Redhat 很刻意的只支援 OpenJDK 以及 Oracle JDK,而在 enterprise 的環境裡,通常會選擇 middleware 與 JVM 都是必須有 commercial support 的,畢竟當產品發生問題的時候,可能不見得單純是 middleware 的問題,也有可能會是 JVM 的問題,不論是使用 open source 的方案、或是使用的 middleware 與 JVM 是不同廠牌的,都有可能會增加找問題的難度。
讓我比較好奇的是,JBoss EAP 並沒有支援 Eclipse Temurin,這個專案其實 Redhat 是有在裡面,而且有針對它提供 commercial support 的,不知道為什麼沒有被放在支援的 JVM 裡面,反倒是放了 Eclipse OpenJ9 這個 JVM(當然更不用說放了一個很特別的版本:11)
20231223 更新:針對 JBoss EAP 的 JDK 支援,修正的資訊在這。
我們來看 JBoss EAP 的 open source 版本,WildFly:
https://docs.wildfly.org/30/Getting_Started_Guide.html#requirements
WildFly 比較沒有侷限,最新的 30 Final 僅需要 Java SE 11 以上的版本都行(22 Final 則是 Java SE 8 以上都行,取決於這些版本支援的 JavaEE/JakartaEE 版本),所以使用者可以自行選擇自己喜歡的 JVM。
接著看 WebSphere Liberty,官方宣稱支援以下 JVM:
https://www.ibm.com/software/reports/compatibility/clarity/softwareReqsForProduct.html
由上可見,WebSphere Liberty 支援所有符合 Java SE 8/11/17 規格的 JVM,所以你要選 OpenJDK/Oracle JDK/IBM JDK 或是其他的 JDK 都行。
而 WebSphere Liberty 的 open source 版本,Open Liberty 則是支援這些 JVM:
https://openliberty.io/docs/latest/java-se.html
感覺這個就比較刻意了,Open Liberty 官方宣稱只支援 IBM 自家(或是有控制力)的 JVM,不過有支援到 Java SE 21 就是了。
接著看規格的支援:
目前最新的 Jakarta EE 10 是在 2022/09/22 釋出的,WebSphere LIberty 因為與 Open Liberty 版本是拉齊的緣故,所以 WebSphere Liberty 是從 23.0.0.3(即 2023 年 3 月的版本)開始支援 Jakarta EE 10;在這篇文章撰寫的當下(2023/12/16)JBoss EAP 8.0 還在 beta 的狀態,而 JBoss EAP 8.0 是 JBoss 第一個支援 Jakarta EE 10 的版本。
看完新規格的支援,接著看向下相容的能力。
WebSphere Liberty/Open Liberty 是以 OSGi 架構去進行開發的,所以支援以 feature 的方式來決定目前這個 WebSphere Liberty/Open Liberty 可以使用哪些規格;以我自己使用的經驗來說,我喜歡以 Liberty 的 kernel 版本(僅有 14MB 左右)來建置整個底層的規格。
所以 WebSphere Liberty/Open Liberty 是可以一路從 Jakarta EE 10 往下,支援 Jakarta EE 9.1、Java EE 8、Java EE 7、Java EE 6,這提供了 traditional WebSphere Application Server 使用者一個絕佳的移轉環境。
這也是 JBoss EAP 8.0 做不到的事情,如果 JBoss EAP 要向下相容,就必須降低版本到 JBoss EAP 7.4 才能使用 Java EE 8 以下的規格;如此一來,就無法使用同一個 install base,來滿足各種不同應用程式的規格需求了。
不過呢,WebSphere Liberty/Open Liberty 這個 feature 的方式,也不是全然沒有缺點。缺點就是當你選擇不以 Java EE 或是 Jakarta EE 某個版本的完整 feature,而是改以 Servlet、JSP 這些規格去選擇的時候,就會碰上這些細部規格在版本上面會有相依性的問題,這時候你就會需要一位很有經驗的專家(比如說像馬克ㄙㄨ),來協助你做評估,甚至是應用程式的調整了 😛。
從整個生態系的角度看,WebSphere Liberty/Open Liberty 也不是完全都沒有缺點,不過目前看到的缺點部分,是可以透過我們這些有經驗的專家來解決的。
[…] WebSphere Liberty or JBoss EAP?我選擇 WebSphere Liberty 這篇有提到 JBoss EAP 所支援的 JDK,其中一項是 […]