本文将根据即将发布的Java9新特性同步更新(***更新:9/9/2014),加快开发速度OpenJDK:继2014年3月发布Java8后,我们进入了下一个两年的发布周期。Java9预计在2016年发布,在JEP(JDKImprovementProposal)中已经公布了早期名单。同时,我们也整理了一些新的特性,在谈到JSR(JavaSpecificationRequest)的时候,还有一些其他的特性是提议在新版本中包含的。这些重要功能都包含在Jigsaw项目中。显着的性能改进和期待已久的API包括:流程API更新、JSON将成为java.util、货币处理API的一部分。对于那些想要走在前沿的人来说,这里提供了Java9的早期版本。本文将根据Java9的新特性持续更新,敬请期待!接受的功能1.拼图项目;模块化源代码Jigsaw项目是将Java代码模块化,将JRE划分为可以相互协作的组件。这也是Java9的众多特性之一。JEP是迈向Jigsaw的四个步骤中的第一步,它不会改变JRE和JDK的真实结构。JEP是将JDK源代码模块化,以便构建系统可以编译模块并在构建时检查模块边界。该项目最初是随Java8一起发布的,但由于延迟,它将被添加到Java9中。一旦完成,它可能允许根据项目的需要自定义组件,从而减少rt.jar的大小。JDK7和JDK8的rt.jar包中有大约20,000个类,但有很多类在某些特定环境中不会使用(尽管某些解决方案包含在Java8的紧凑分发特性中存在类冗余).这样做是为了让Java更容易应用于小型计算设备(如网络设备),提高其安全性和性能,同时也让开发人员更容易构建和维护这些类库。关于JEP2012的更多信息。简化的进程API截至目前,Java控制和管理系统进程的能力是有限的。例如,现在要轻松获取程序的进程PID,您要么调用本机程序,要么自己使用一些变通方法。不仅如此,每个(系统)平台都需要有不同的实现,以确保您获得正确的结果。希望代码可以获取LinuxPIDS。现在它是这样的:if(proc.waitFor()==0){InputStreamin=proc.getInputStream();intavailable=in.available();byte[]outputBytes=newbyte[可用];在.read(outputBytes);Stringpid=newString(outputBytes);System.out.println("你的pid"+pid);在Java9中,可以转化为如下方法(支持所有操作系统):System.out.println("Yourpidis"+Process.getCurrentPid());此更新将扩展Java与操作系统交互的能力:添加一些新的直接方法来处理PID、进程名称和状态,枚举多个JVM和进程等等。3、轻量级JSONAPI目前处理JSON的Java工具很多,但JSONAPI的独特之处在于JSONAPI将成为Java语言的一部分,轻量级并利用Java8的新特性。它将在java.util包中一起发布(但JSR353中的JSON由第三方包或其他方法处理)。**代码示例稍后列出!4.货币和货币API在Java8引入了日期和时间API之后,Java9引入了一个新的货币API来表示货币,支持货币之间的转换和各种复杂的操作。关于本项目具体情况请访问https://github.com/JavaMoney,里面已经给出了说明和示例。这里有几个重要的例子://新类型:Money&FastMoneyMoneyamt1=Money.of(10.1234556123456789,"USD");//MoneyisaBigDecimalFastMoneyamt2=FastMoney.of(123456789,"USD");//FastMoneyisupto5decimalplacesMoneytotal=amt1.add(amt2);//MoneyisaBigDecimalFastMoneyamt2=FastMoney.of(123456789,"USD");//FastMoneyisupto5decimalplacesMoneytotal=amt1.add(amt2);//货币表转化为各国货币:MonetaryAmountFormatgermanFormat=MonetaryFormats.getAmountFormat(Locale。德国);System.out.println(germanFormat.format(monetaryAmount));//1.202,12USD更多关于JSR3545.改进的锁争用机制锁争用是限制许多Java多线程应用程序性能的瓶颈。新机制已经通过各种基准测试在提高Java对象监视器(包括Volano)性能方面得到验证。测试中通信服务器开启大量进程连接客户端,多个连接申请同一个资源,模拟高负载的日常应用。通过这样的压力测试,我们可以估算出JVM的最终吞吐量(每秒消息数)。JEP在22项不同的测试中取得了优异的成绩。如果新的机制能够在Java9中应用的话,应用的性能将会有很大的提升。更多关于JEP1436.代码段缓存Java9的另一个性能改进来自JIT(即时)编译器。当某段代码被重复执行时,虚拟机将这段代码编译成机器码(native代码)并存储在代码缓存中,然后通过访问缓存中的不同代码段来提高编译器的效率。不同于原来的单一缓存区,新的代码缓存分为三种类型:-永久代码(JVM内置/非方法代码)-短期代码(仅在特定条件下适用的异形代码)-长期-术语代码(non-profiledcode)提高程序的性能。比如在做垃圾回收扫描时,可以直接跳过非方法代码(永久代码),从而提高效率。更多关于JEP1977.智能Java编译,智能Java编译工具sjavac第二阶段JEP第一阶段始于JEP139项目,用于提高JDK在多核处理器上的编译速度。现在这个项目已经进入第二阶段(JEP199),目的是完善sjavac,使其成为目前JDK编译工具的替代品javac是Java默认的通用编译工具。其他值得期待的地方:8.HTTP2.0客户端虽然HTTP2.0标准还没有正式发布,但是已经进入了最后的审核阶段,有望在Java9发布之前进行审核。JEP110将重新定义并实现一个全新的JavaHTTP客户端来替代当前的HttpURLConnection,同时还实现了HTTP2.0和网络接口(原始的websockets)。它尚未得到JEP的正式批准,但我们希望在Java9中包含该项目的内容。官方的HTTP2.0RFC(RequestforComments,官方技术讨论/会议记录等一系列文件记录)定于2015年2月发布,它基于SPDY(Speedy,快速)协议。基于SPDY协议的网络相比基于HTTP1.1协议的网络有11.81%到47.7%的显着加速。现在一些浏览器已经实现了这个协议。9.Kulla计划:JavaREPL实现了这个一个叫Kulla的项目最近宣布在2015年4月进行集成测试,虽然赶不上Java9的发布希望不大,但是如果进度快的话可能就赶上了。现在Java不是来自官方的REPL(Read-Eval-Print-Loop),这意味着如果你想运行几行Java代码来做一个快速测试,你仍然需要将这几行代码封装在一个项目或方法。虽然在一些流行的我DE中有JavaREPL工具,但官方不支持,Kulla项目可能成为Java的官方REPL解决方案。更多关于Kulla项目。这些新功能从何而来?JEP和JSR不是凭空产生的。以下是Java开发生态环境的介绍:群组——针对具体的技术内容,如安全、网络、Swing、HotSpot,有共同兴趣的组织和个人项目——编写代码、文档等工作,赞助和支持至少一组,比如最近的Lambda计划、Jigsaw计划和Sumatra计划。JDKImprovementProposal(JEP)——每当需要新的尝试时,JEP可以在JCP(JavaCommunityProcess)之前或同时提出非正式规范。批准后的JEP正式写入JDK开发路线图,并分配一个版本号。JavaSpecificationProposal(JSR)-新特性的规范出现在这个阶段,它可以来自组/项目、JEP、JCP成员或来自社区成员的JavaProposals。每个Java版本都由相应的JSR支持,而Java9尚不可用。英文原文:http://www.takipiblog.com/java-9-the-ultimate-feature-list/翻译来自:http://www.oschina.net/translate/java-9-the-ultimate-功能列表#repl
