1.5 Java版本
Java有多个不同的版本,其中每个版本都针对不同的用例。多年来,有些版本的名称发生了翻天覆地的变化,当前版本的名称如下:
- Java标准版(Java SE)
- Java企业版(Java EE)
- Java微型版(Java ME)
1.5.1 Java SE
这是最重要的版本,大家说到Java时,通常指的是就是这个版本。本书只考虑Java SE 平台。
这个版本用于台式机和服务器。另外,你将看到,还有一个嵌入式版本,用于Raspberry Pi的Linux发行版就自带了这种嵌入版本。Java SE自带了完整的Java类库,还包含经典的Swing GUI工具包,而大多数版本还包含较新的JavaFX GUI工具包。
注意:较新的Java SE Embedded更新删除了JavaFX工具包。在Raspberry Pi上安装这个更新后,JavaFX组件将消失。Oracle以开源的方式提供了用于Raspberry Pi的JavaFX,让高阶用户能够下载并编译它。
Java SE主要用于创建独立的控制台应用程序、桌面GUI应用程序和无界面(headless)应用程序,还可用于创建外部库。
1.5.2 Java EE
Java EE建立在Java SE的基础之上,因此要求安装Java SE。它添加了类型众多的API。Java EE应用程序通常运行在JVM应用程序服务器上。本书不会深入介绍Java EE,但时不时会提及它,因为它是Java平台的重要补充,对企业开发人员来说尤其如此。
Oracle网站没有提供独立的Java EE版本,你必须下载与所需Java EE平台版本兼容的应用程序服务器。有些IDE也自带了Java EE应用程序服务器,这将在下一章讨论。
Java EE标准只描述了必须提供的API,而没有指定实现方式。具体如何实现符合标准的API,由与Java EE兼容的应用程序服务器决定。
示例:两款应用程序服务器实现的Java持久化API
Java EE描述了Java持久化API(Java Persistence API,JPA)。这是一个对象关系映射器(object relation mapper,ORM)API,位于Java对象和关系型数据库(通常是SQL数据库,如Oracle、Oracle MySQL、PostgreSQL等)之间;使用它只需编写几行代码,就可将JVM对象的内容写入数据库,反之(从数据库读取数据并将其加入对象中)亦然。
Oracle提供的Java EE参考实现是一个开源的应用程序服务器,名为GlassFish。GlassFish包含开源项目EclipseLink,该项目实现了JPA标准。Red Hat出品的WildFly也是一款开源的Java EE应用程序服务器,其中包含Red Hat自己开发的ORM开源项目Hibernate,这个项目也实现了JPA标准,但更流行。
如果只使用JPA标准规定的功能,则使用哪种实现无关紧要,但要使用其他功能,选择使用哪种实现就很重要。
如果你不喜欢某个应用程序服务器厂商的设计决策,通常可转而使用其他实现。对于选择空间,JVM开发人员非常在乎!
1.5.3 Java ME
在iOS和Android面世前,Java ME是重要的功能手机和智能手机游戏和应用程序开发平台。iOS和Android都不支持Java ME应用程序,因此它现在已不再是主角。
Java ME包含Java类库的一部分,同时提供了其他一些与移动设备交互的API。Java ME获得了重生,它现在名为Java ME Embedded,可用于商业IoT设备。
注意:较新的Java SE Embedded更新删除了JavaFX工具包。在Raspberry Pi上安装这个更新后,JavaFX组件将消失。Oracle以开源的方式提供了用于Raspberry Pi的JavaFX,让高阶用户能够下载并编译它。