WebSphere Liberty or JBoss EAP?我選擇 WebSphere Liberty

WebSphere 與 JBoss 堪稱是 JavaEE middleware 市場上兩個主要的商用軟體,在 traditional WebSphere Application Server 不再更新 JDK 後(停留在 IBM JDK8),使用者要往下一個世代的規格去發展,就是選擇 WebSphere Liberty 或是 JBoss EAP 了;在這篇文章裡我透過兩個面向:JVM 支援與 Java EE/Jakarta EE 規格支援,來探討我為什麼會選擇 WebSphere Liberty。

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 使用者一個絕佳的移轉環境。

https://www.ibm.com/docs/en/was-liberty/base?topic=SSEQTP_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_arch.htm

這也是 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 也不是完全都沒有缺點,不過目前看到的缺點部分,是可以透過我們這些有經驗的專家來解決的。

markkwsu

markkwsu

1 comment