目前来看,JDK11已有九个已经确认的新功能,而且还有更多新功能仍在考虑之中。计划的新功能包括:HTTP客户端(标准),这个功能于JDK9中引入并在JDK10中得到了更新,现在终于转正了。该API通过CompleteableFutures提供非阻塞请求和响应语义,可以联合使用以触发相应的动作。自从JDK9和10中引入该功能后,JDK11完全重写了该功能,现在其实现完全是异步的。RXFlow的概念也得到了实现,这样就无需为了支持HTTP/2而创造许多概念了。现在,在用户层请求发布者和响应发布者与底层套接字之间追踪数据流更容易了。这降低了复杂性,并最大程度上提高了HTTP/1和HTTP/2之间的重用的可能性。Epsilon垃圾回收器,被称为“no-op”回收器,它仅负责内存分配,却没有实现任何实际的内存回收机制。Epsilon回收器可以用于性能测试、内存压力测试和虚拟机接口。它还可以用于短生命周期的任务。lambda参数的局部变量语法,可以消除隐含类型表达式中正式参数定义的语法与局部变量定义语法的不一致。这样就能在隐含类型的lambda表达式中定义正式参数时使用var了。Java的类文件格式将被扩展,以支持新的常量池,CONSTANT_Dynamic。其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。采用Curve25519和Curve448加密的密钥交换比现有的Diffie-Hellman椭圆曲线密钥交换方式更有效、更安全。根据IETF的资料,Curve25519和Curve448两种椭圆曲线采用常量时间的实现方式,以及不会发生异常的数乘实现,能更好地抵抗各种旁路攻击,包括时序攻击、缓存攻击等。该提案的目标是为密钥交换方法提供一个API和实现,同时开发一个平台无关、纯Java的的实现。由于该提案采用了复杂且精密的模算数,因此还是有风险的。飞行记录仪(FlightRecorder)将提供低开销的数据收集框架,用来调试Java应用程序和HotSpotJVM。飞行记录仪是Oracle的商业版JDK的功能,但在JDK11中,其代码将移动到公开代码库中,这样所有人都能使用该功能了。Iclouded将作为API,以事件的形式产生或消耗数据,同时提供缓存机制、二进制数据工具,同时支持配置和事件过滤。该提案还提议为OS、HotSpot和JDK库提供事件。更新platformAPI以支持Unicode版本10.0,从而使Java跟上潮流。预计以下的类将支持:lang包中的Character和Stringawt.font包中的NumericShapertext包中的Bidi、BreakIterator和Normalizer实现ChaCha20和Poly1305加密算法。ChaCha20是种相对较新的流加密算法,能代替旧的、不安全的R4流加密。ChaCha20将与Poly1305认证算法配对使用。ChaCha20和ChaCha20-Poly1305加密实现将通过crypto.CipherSpiAPI于SunJCE(Java加密扩展)中提供。增强Java启动器,使之能够运行单一文件的Java源代码,使得应用程序可以直接从源代码运行。单文件程序常见于小型工具,或开发者初学Java时使用。而且,单一源代码文件有可能会编译成多个类文件,这会增加打包开销。由于这些原因,在运行程序之前进行编译,已成为了不必要的步骤。JavaJDK11仍在开发中的新功能。
Java11的创建者们还在考虑几个对JDK11的变更或新功能的提案:
给Java添加raw字符串字面值。这样可以更容易地以人类可阅读的形式书写字符序列,而无需特殊的Java标记。这样也能更容易地将非Java语法的字符串提供给Java使用,还能支持多行字符串,而无需使用特殊的标记。扩展switch语句,使之能作为语句或表达式使用。这样还能改进switch处理null值的方式。这些改动可以简化编程,同时为switch支持模式匹配做准备。嵌套的访问控制,对应于Java当前的嵌套类型。嵌套可以让逻辑上属于同一代码实体但被编译到不同的类文件中的类互相访问对方的私有成员,而无需让编译器插入扩大访问权限的方法。JDK11删除的功能JavaEE和CORBA模块从JavaSE9就成了不推荐使用(deprecated),并计划在未来的版本中删除。这个未来版本就是JDK11。JavaSE6于2006年12越发布,它为JavaEE平台提供了整套的Web服务技术栈:JAX-WS(JavaAPIforXML-basedWebServices),JAXB(JavaArchitectureforXMLBinding),JAF(JavaBeansActivationFramework),以及CommonAnnotationsforJava。这些年来,JavaEE版本在不断进化,这给JavaSE造成了许多麻烦,例如加入与JavaSE无关的技术,以及同时维护两个Java版本的困难变得更大。由于独立的JavaEE版本由第三方网站提供,Oracle说JavaSE或JDK中已经没有必要提供JavaEE了。当然,一些依赖于JDK中的JavaEEAPI及工具的应用程序将无法编译或运行。将JDK6、7或8移植到新版本时将会产生二进制不兼容和源代码不兼容。Oracle说,受到这些影响的开发者可以部署相应的JavaEE版本。CORBA来自于二十世纪九十年代,Oracle说,现在用CORBA开发现代Java应用程序已经没有意义了,维护CORBA的成本已经超过了保留它带来的好处。但是删除CORBA将使得那些依赖于JDK提供部分CORBAAPI的CORBA实现无法运行。目前还没有第三方CORBA版本,也不确定是否会有第三方愿意接手CORBAAPI的维护工作。JavaFX已经被移除,因此已经与JavaJDK每年两次的更新无关。