下表為 Java 平台企業版 (EE, Enterprise Edition) 各種開發工具的版本歷史。資料來自網路,可看出從昇陽公司的 J2EE、甲骨文公司的 Java EE,到 Eclipse基金會的 Jakarta EE,EE 標準的主導權不斷異動。 如果有機會拿到依據各代 Java 平台 EE 標準開發的舊程式碼,建議查找下表找出最合適的相關開發工具,以免無法進行測試。
例如,若拿到使用 JavaServer Faces (JSF) 開發的套件,內含 @ManagedBean 註記,可先查出其適用版本為 Java EE 6 或 Java EE 7。接著,參考下表得知,其合適的開發工具版本為 JSF 2.0 + GlassFish 3.x + JDK 6 + NetBeans 6.x 或 JSF 2.2 + GlassFish 4.x + JDK 7 + NetBeans 7.x。
其中,Java 開發套件 (Java Development Kit),簡稱 JDK,也歷經多代更迭。若找不到 JDK 6、JDK 7,支援 LTS (長期服務) 版本的 JDK 8 較好找,應該也可以。至於 NetBeans 版本的要求較不嚴苛,使用較新的 NetBeans 22 也是可以的,只是伺服器要安裝支援 Java EE 6 或 7 的 GlassFish 及 JDK 版本。
Year | EE Standard | JSF/Jakarta | GlassFish | JDK | NetBeans |
---|---|---|---|---|---|
1999 | J2EE 1.2 | ||||
2000 | J2SE 1.3 | ||||
2001 | J2EE 1.3 | ||||
2002 | J2SE 1.4 | ||||
2003 | J2EE 1.4 | ||||
2004 | JSF 1.0,1.1 | J2SE 5 (1.5) | NetBeans 4.0 | ||
2005 | |||||
2006 | Java EE 5 | JSF 1.2 | J2SE 6 (1.6) | NetBeans 5.0 | |
2007 | NetBeans 6.0 | ||||
2008 | |||||
2009 | Java EE 6 | JSF 2.0 | GlassFish 3.0 | ||
2010 | |||||
2011 | J2SE 7 (1.7) | NetBeans 7.0 | |||
2012 | |||||
2013 | Java EE 7 | JSF 2.2 | GlassFish 4.0 | ||
2014 | J2SE 8 (1.8), LTS | NetBeans 8.0 | |||
2015 | |||||
2016 | |||||
2017 | Java EE 8 | JSF 2.3 | J2SE 9 (1.9) | ||
2018 | J2SE 10 (1.10), J2SE 11 (LTS) | NetBeans 9.0, 10.0 | |||
2019 | Jakarta 2.3 | GlassFish 5.0 | J2SE 12, 13 | NetBeans 11.0 | |
2020 | Jakarta EE 9 | Jakarta 3.0 | GlassFish 6.0 | J2SE 14, 15 | NetBeans 12.0 |
2021 | Jakarta EE 9.1 | J2SE 16, J2SE 17 (LTS) | |||
2022 | Jakarta EE 10 | Jakarta 4.0 | GlassFish 7.0 | J2SE 18, 19 | NetBeans 13, 14, 15, 16 |
2023 | J2SE 20, J2SE 21 (LTS) | NetBeans 17, 18, 19, 20 | |||
2024 | Jakarta EE 11 | J2SE 22, 23 | NetBeans 21, 22, 23, 24 | ||
2025 | J2SE 24, J2SE 25 (LTS) | NetBeans 25, 26, 27, 28 |
註1: Java EE 6,7 支援的 @ManagedBean 寫法,可參考如下要點,改成 Jakarta EE 支援的 @Named 註記。
// 原來 Java EE 6,7 寫法
import javax.faces.bean.ManagedBean;
@ManagedBean(name="webBean")
public class MyWebBean
// 改成 Jakarta EE 寫法
import jakarta.inject.Named;
import jakarta.enterprise.context.SessionScoped;
import java.io.Serializable;
@Named("webBean")
@SessionScoped
public class MyWebBean implements Serializable
註2: 網路參考來源: 以 Wikipedia 維基百科網站為主
沒有留言:
張貼留言