领先一步
VMware提供培训和认证,以加快您的进步。
了解更多随着Java 8的GA版本本周最终发布,让我们一起欢欣庆祝——然后清醒过来,思考如何将其引入我们的日常工作环境……
对于原型设计来说,这很容易做到:下载一个JDK 8,使用IntelliJ IDEA或Eclipse最近完成的Java 8支持,然后开始工作。具有挑战性的部分在下一步出现:您需要弄清楚如何将您的应用程序部署到支持Java 8的环境中。
当然,实际上,这个考虑可能要早得多:在您愿意或被允许尝试Java 8之前,您首先需要制定一个支持Java 8部署的计划。在许多情况下,您甚至不会费心,因为您事先就知道目前不可能将Java 8引入您的生产系统。
不可能?真的吗?让我们针对具体的部署环境重新考虑一下……
对于Java EE服务器,通常存在一个升级障碍,即捆绑的JDK版本。在WebSphere中,即使在WAS 8.5上,默认JDK仍然是Java 6,Java 7是可选选择。在WebLogic中,最近的版本已经更强地基于Java 7。但是,这些服务器都不能让您自由选择要使用的JDK版本。
由于应用程序服务器堆栈通常与特定JDK版本深度集成,因此不建议将其简单地针对不同的JDK安装运行。当前一代的应用程序服务器即使针对JDK 8进行启动测试也可能无法生存。
对于像GlassFish和JBoss AS这样的灵活产品,您可能能够将它们指向JDK 8安装并启动服务器。但是,这通常只有在使用“-target 1.7”时才成立;一旦您开始使用Java 8语言特性,服务器的某些部分和一些集成的服务提供商将无法处理“-target 1.8”……
JBoss AS 7的继任者WildFly 8实际上是第一个具有基本JDK 8兼容性的EE服务器。其开源版本已普遍可用。但是,Red Hat尚未以基于WildFly 8的JBoss EAP版本的正式形式提供对它的支持。
至于GlassFish 4,Oracle去年停止了商业支持,此后没有发布维护版本,也没有提供任何官方支持合同。尽管如此,今年晚些时候可能会在GlassFish 4.0.1版本中提供基本的JDK 8支持。
更新(9月30日):半年后,GlassFish 4.1现已提供JDK 8支持。此外,Oracle还认证了最近发布的WebLogic 12.1.3(支持一些EE 7规范,但还不是完整的EE 7平台服务器)现在支持JDK 8。
像Tomcat和Jetty这样的精简型Web应用服务器在这里具有明显的优势,因为它们不依赖于任何JDK版本的细节。Tomcat 8和Jetty 9已经针对OpenJDK 8进行了半年的测试,并且通常被声明与Java 8兼容。甚至Tomcat 7也加入了这个行列,也收到了升级的Eclipse编译器等。
因此,Tomcat和Jetty都是立即可用于JDK 8的生产级选项。从Pivotal方面来看,我们正在尽最大努力支持JDK 8上的Tomcat,通过我们对Apache Tomcat本身的参与以及通过我们的tc Server产品。
当然,您通常不会使用普通的Tomcat或Jetty,而是将特定选择的框架和库添加到您的部署单元中。显然,这些库也需要与Java 8兼容。许多库自然都是兼容的,但是请仔细检查您的持久性提供程序和绑定框架,因为它们可能还不完全支持Java 8字节码。
Spring框架4代从一开始就被设计成Java 8兼容的。事实上,我们在第一个OpenJDK 8候选版本可用之前,就发布了具有全面Java 8开发支持的Spring框架4.0 GA版本。
在我们看来,在许多环境中,Java 8上的Spring框架4是一个很好的组合,不仅适用于Tomcat、Jetty或WildFly,也适用于最近的嵌入式引擎,如Reactor或Undertow,以及其他类型的自定义应用程序架构。
现在是尝试在Java 8上使用这种基于Spring的安排的最佳时机,因为JDK 8已进入GA!您会惊讶于您已经可以走多远。结合IntelliJ IDEA或Eclipse中最近的Java 8兼容工具,您可能会发现您现在所需的一切。
所以,请不要等到2016年再尝试Java 8……
我邀请您参加下周关于Java 8上的Spring框架4的网络研讨会,该研讨会将重点介绍关键功能主题,并重点关注在基于Spring的应用程序中使用Java 8功能:https://springframework.org.cn/blog/2014/02/11/webinar-spring-framework-4-0-on-java-8-march-25
您还会发现我在今年的几次会议上谈论Java 8上的Spring,例如柏林专家日、德国JAX、纽约QCon、阿姆斯特丹GOTO、欧洲ÜberConf,当然还有我们自己的9月份在德克萨斯州达拉斯举行的SpringOne!