領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多請注意,有一篇關於 Spring 5 系統要求 的後續博文。如果您主要對 Spring 5 的規劃過程感興趣,可以從那裡開始。
在我們尋求 Java EE 整合的過程中,我們正積極擁抱最新一代的規範,例如 JPA、Bean Validation,當然還有 Servlet 和 JMS API。截至 Spring 4,我們同時支援 Java EE 6 和 7 級別的規範。我們希望儘快將其提升到 EE 7+ 級別(JPA 2.1、Bean Validation 1.1,特別是 Servlet 3.1 和 JMS 2.0),但面臨一個根本性問題:EE 7 平臺普及率不足。
Java EE 7 平臺已於 2013 年 5 月釋出,因此現在已有兩年曆史。令人驚訝的是,它至今在生產環境中仍很少見。但這也不是那麼令人驚訝:儘管幾年來已有少數專案獲得了 EE 7 認證,但主要供應商的缺失顯而易見:目前還沒有主流的 EE 7 伺服器提供生產支援,無論是 Web Profile 還是完整平臺。截至 2015 年 6 月,常見的 EE 供應商仍在銷售基於 2009 年的 Java EE 6 API 的伺服器許可證。而且不只是傳統的幾家大廠。
重磅新聞(6 月 9 日): WAS 8.5.5 的 EE 7 修復包將於 6 月 26 日正式釋出。IBM 棒極了!
儘管 EE 7 umbrella 下的幾個規範已獲得獨立採用,例如透過 Hibernate 4.3 採用JPA 2.1,以及透過 Tomcat 8 和 Jetty 9 採用Servlet 3.1 / JSR-356 WebSockets,但公平地說,Java EE 7 作為平臺整體未能進入市場。畢竟,“平臺”的意義在於廣泛的主流可用性。具有諷刺意味的是,稍後釋出的 JDK 8(2014 年 3 月)卻在生產環境中得到了快速擁抱,甚至在 EE 領域!因此,截至 2015 年中期的現狀是,在生產環境中執行著基於 JDK 8 的 EE 6 伺服器,並有供應商支援……
我們的決定: 考慮到 Spring 4 和 Java 8 的普及程度,我們將在 Spring Framework 5 代中將最低要求提升到 JDK 8+。然而,由於 Java EE 7 平臺普及率不足,我們將不得不保留與當前一代應用伺服器的相容性:允許即將推出的 Spring 5 應用程式部署到生產環境中常見的基於 JDK 8 的 EE 6 伺服器上——就像我們現在對 Spring 4 所做的那樣,但至少我們可以在框架程式碼庫及其所有核心介面上獲得 JDK 8+ 的額外好處。
附註(6 月 6 日)
僅供參考,我非常欣賞GlassFish 和WildFly 作為開源工程的努力。Spring 為兩者都提供了專門的支援,而Undertow HTTP 伺服器(位於 WildFly 之下)非常適合與 Spring Boot 進行嵌入式部署。但這並不能改變專案所有者(分別是 Oracle 和 Red Hat)不願支援它們,而是選擇投資 WebLogic 12 和 JBoss EAP 6 用於生產環境的事實。來自 Payara(針對 GlassFish)等公司的外部支援只能在一定程度上緩解這種情況,而 Java EE 市場的大部分在 2015 年仍然依賴於供應商的生產產品——所有這些都基於 EE 6。
對於來自開源專案本身的出色的生產支援的例子,看看Tomcat 就可以了。Tomcat 專案在修復錯誤,特別是安全漏洞方面有著令人稱讚的記錄,而且速度非常快,即使是跨越了伺服器過去三個主要版本。所以我並不是在主張商業支援本身,我是在主張像 Tomcat(而且敢說:像 Spring)那樣進行適當的維護髮布,無論是來自開源專案本身還是來自商業支援訂閱。例如,WildFly 這兩者都沒有;GlassFish 沒有來自 Oracle 的支援,但至少有 Payara 的支援選項。