Java 9 –终极功能列表

Java-9-望远镜
这篇文章将针对即将到来的Java 9版本进行更新,新增功能最新更新:2014年 9月9日


OpenJDK开发正在加快速度:2014年3月Java 8发布之后,我们预计将进入2年的发布周期。 据报道,Java 9将于2016年发布,并且已经发布了针对该版本的早期JEP(JDK增强提案)列表。 此外,一些JSR(Java规范请求)已经在开发中,并且我们还添加了一些可能包含的其他功能的提示。

旗舰功能包括Jigsaw项目,显着的性能改进和人们期待已久的API,包括:流程API更新,作为java.util一部分的JSON和一个资金处理API。 对于那些想掌握最新技术的人, 这里已经提供了 JDK 9早期访问版本。

在本文中,我们将继续围绕Java 9的主要新功能及其最新内容进行更新。 因此,请继续关注其他更新!

目录

  1. [已接受]拼图项目–模块化源代码
  2. [已接受] Process API更新
  3. [已接受]轻量级JSON API
  4. [已接受]货币和货币API
  5. [已接受]改进的竞争锁定
  6. [已接受]分段代码缓存
  7. [已接受]智能Java编译–第二阶段
  8. [预期] HTTP 2客户端
  9. [预期] Java中的REPL
  10. 新功能从何而来?

接受的功能

1. Project Jigsaw –模块化源代码

Jigsaw项目的目标是使Java模块化并将JRE分解为可互操作的组件,这是Java 9最受关注的功能之一。此JEP是迈向Jigsaw的4步中的第一步 ,不会改变JRE的实际结构和JDK。 此步骤的目的是将JDK源代码重组为模块,增强构建系统以编译模块,并在构建时强制执行模块边界。 该项目最初是为Java 8设计的,但此后被推迟,并重新定位到Java 9。

完成后,将允许创建按比例缩小的运行时Jar(rt.jar),以针对项目实际需要的组件进行自定义。 JDK 7和JDK 8 rt.jar具有约20,000个类,它们属于JDK,即使其中的许多类并未真正用于特定环境中(尽管Java 8 紧凑型概要文件功能中包含部分解决方案)。 其背后的动机是使Java易于扩展到小型计算设备(物联网),提高安全性和性能,并使开发人员更容易构建和维护库。

关于JEP 201的更多信息

2.处理API更新

到目前为止,使用Java控制和管理操作系统进程的能力有限。 例如,为了做一些简单的事情,例如今天获得流程PID,您将需要访问本机代码或使用某种解决方法。 不仅如此,每个平台还需要不同的实现方式,以确保获得正确的结果。

在Java 9中,期望用于检索Linux PID的代码现在看起来像这样:

public static void main(String[] args) throws Exception
{Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });if (proc.waitFor() == 0){InputStream in = proc.getInputStream();int available = in.available();byte[] outputBytes = new byte[available];in.read(outputBytes);String pid = new String(outputBytes);System.out.println("Your pid is " + pid);}
}

要变成这样(也支持所有操作系统):

System.out.println("Your pid is " + Process.getCurrentPid());

该更新将扩展Java与操作系统交互的能力:处理PID,进程名称和状态的新直接方法,以及枚举JVM和进程等的能力。

关于JEP 102的更多信息

3.轻量级JSON API

当前,有一些替代方法可用于处理Java中的JSON,此API的独特之处在于它将成为语言的一部分,是轻量级的,并且将使用Java 8的新功能。它将直接通过java.util传递(与JSR 353不同)使用外部软件包或其他替代方法 )。

**代码样本即将推出!

关于JEP 198的更多信息

4.货币和货币API

在Java 8中引入了新的Date and Time API之后,Java 9带来了一个新的官方API,用于表示,传输和执行Money和Currency的综合计算。 要了解有关该项目的更多信息,可以在Github上访问JavaMoney。 代码和用法示例已在此处提供。 以下是一些要点:

Money amt1 = Money.of(10.1234556123456789, "USD"); // Money is a BigDecimal
FastMoney amt2 = FastMoney.of(123456789, "USD"); // FastMoney is up to 5 decimal places
Money total = amt1.add(amt2);

新的货币类型:Money和FastMoney

MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat(
Locale.GERMANY);System.out.println(germanFormat.format(monetaryAmount)); // 1.202,12 USD

根据不同国家格式化货币

关于JSR 354的更多信息

5.改善竞争性锁定

锁争用是许多多线程Java应用程序的性能瓶颈。 增强建议旨在改善Java对象监视器的性能,这些性能由不同的基准测试得出。 这些测试之一是Volano 。 它模拟了具有大量线程数和客户端连接的聊天服务器,其中许多服务器试图访问相同的资源并模拟重型现实应用程序。

这些压力测试将JVM推到极限,并尝试确定它们可以实现的最大吞吐量,通常以每秒消息数为单位。 该JEP雄心勃勃的成功指标是对22个不同基准的重大改进。 如果成功,这些性能改进将在Java 9中推出。

关于JEP 143的更多信息

6.分段代码缓存

Java 9的另一个性能改进来自JIT编译器角度。 快速执行某些代码区时,VM会将其编译为本地代码并将其存储在代码缓存中。 此更新旨在将代码缓存分段到已编译代码的不同区域,以提高编译器的性能。

而不是单个区域,代码缓存将根据代码在缓存中的生命周期分为三部分:

  • 永久保留在缓存中的代码(JVM内部/非方法代码)
  • 寿命短(配置文件代码,特定于某些条件)
  • 潜在的长寿命(非配置文件代码)

分割将允许进行一些性能改进。 例如,方法清除程序将能够跳过非方法代码并更快地执行操作。

关于JEP 197的更多信息

7. Smart Java编译,第二阶段

Smart Java编译工具或sjavac最初是在JEP 139上开发的 ,目的是通过在所有内核上运行javac编译器来提高JDK的构建速度。 借助JEP 199,它进入了第二阶段,将在第二阶段进行改进和推广,以便默认情况下可以使用它并构建JDK以外的其他项目。

关于JEP 199的更多信息

还有什么期望?

8. HTTP 2客户端

HTTP 2.0尚未作为标准发布,但是它将很快提交以供最终审查,并且有望在Java 9发行之前完成。JEP 110将为Java定义并实现一个新的HTTP客户端,它将取代HttpURLConnection,并实现HTTP 2.0和websockets。 它尚未作为公认的JEP发布,但针对Java 9,我们希望将其包含在内。

HTTP 2.0 RFC的正式发布日期当前定为2015年2月,以Google的SPDY算法为基础。 SPDY在HTTP 1.1上已显示出极大的速度改进,范围在11.81%到47.7%之间,并且其实现已存在于大多数现代浏览器中。

关于JEP 110的更多信息

9. Kulla项目– Java中的REPL

最近宣布的Java 9不太可能出现,但可能会在2015年4月设定目标集成日期,从而按时完成。如今,还没有“原生” Java方式实现REPL(读-评估-打印-循环)。 意思是,如果您要运行几行Java来快速地自行检查它们,则必须将其全部包装在单独的项目或方法中。 流行的IDE以及其他解决方案(如Java REPL)都有REPL附加组件,但到目前为止,尚无官方方法可以这样做– Project Kulla可能是答案。

有关库拉计划的更多信息

奖励:新功能从何而来?

JEP和JSR通常不会突然出现,这是将它们结合在一起的结构:

  • –在广泛的主题或特定代码体系方面具有共同利益的个人和组织。 安全,网络,Swing和HotSpot是一些示例。
  • 项目 –产生大量代码,文档或其他努力的工作。 必须由至少一个团体赞助。 最近的示例是Lambda项目,Jigsaw项目和Sumatra项目。
  • JDK增强建议 ( JEP )–允许在需要进一步探索时在JCP之前或与之并行地非正式地推广新规范。 接受的JEP成为JDK路线图的一部分,并分配一个版本号。
  • Java Specification Request ( JSR )–该功能的实际规范在此阶段发生,可以通过组/项目,JEP或来自单个JCP(Java Community Process)成员来进行。 通常会为每个Java版本打开一个伞式JSR,而Java 9尚未实现。社区的各个成员也可以提出新的Java规范请求。


翻译自: https://www.javacodegeeks.com/2014/09/java-9-the-ultimate-feature-list.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js中的作用域和作用域链

作用域就是变量与函数的可访问范围。在js中只有 全局作用域 和 函数作用域 ,并没有块级作用域。 全局作用域 在所有函数外定义的变量、声明的函数就是全局作用域,在全部环境下都可以访问。 var a 111;function fn(){console.log(a); }fn(); // 打印了…

vue打包后不使用服务器直接访问方法

根据官网打包执行npm run build 后dist文件夹打开的index.html 是空白 需要开启http服务器才能访问,以下是解决办法 1、找到config文件夹下的index文件 修改成 2、找到build文件夹下的until文件 修改成 然后执行npm run build重新打包下就ok了 更多专业前端知…

OpenStack虚机网卡的创建过程

原文:https://www.sdnlab.com/20286.htmlOpenStack最基本和常用的操作就是启动虚机。虚机启动的过程中涉及很多内容,其中非常重要的一个环节就是创建并绑定虚机的虚拟网卡。虚机的创建和管理是Nova的任务,虚机网络的创建和管理是Neutron的任务…

js中的原型与原型链

js的学习有三座大山, 原型/原型链 、 作用域/闭包 、 异步/单线程,这三个知识点虽然基础但是入门时理解起来比较困难,本文先整理总结原型和原型链这一知识点。 1. 原型链怎么来的?对象的原型和function的prototype属性有什么关系…

HTML5 audio 如何实现播放多个MP3音频

<audio>标签是HTML5中的新标签&#xff0c;定义声音用于嵌入音频内容&#xff0c;比如音乐或其他音频流。用的比较多音频格式是.mp3。 <audio>标签常用属性如下表 属性值描述autoplayautoplay添加该属性后&#xff0c;音频会自动播放controlscontrols设置后&…

windwos下ntp服务器配置 arm平台ntp客户端获取同步时间

项目需要使用同步时间&#xff0c;在arm-linux开发板上&#xff0c;移植了ntp客户端&#xff0c;查看了一些资料&#xff0c;最终发现使用windows自带的ntp服务器比较方便&#xff0c;而且很靠谱&#xff0c;使用配置了一番&#xff0c;已经能够正常使用 详细步骤&#xff1a; …

BOM(Browser Object Model)

BOM&#xff08;浏览器对象模型&#xff09;&#xff0c;提供了一系列操作浏览器&#xff0c;获取浏览器信息的接口。这些接口在平时的工作中会经常用到&#xff0c;例如当前页面的刷新&#xff0c;获取url的参数等等。 注&#xff1a;图片来自 http://www.dreamdu.com/javascr…

入门 IT 行业,该具备哪些技能?

对于刚开始进入IT的新人来说&#xff0c;“必备技能”往往意味着一个长长的、标有重要度的学习列表&#xff0c;但是过长的列表通常会导致新人不知如何开始学习&#xff0c;压力倍增。本文尝试列举出最重要的几个技能&#xff0c;也期望通过此列表能给新人一个比较明确的学习重…

实验七作业

Part 1:验证性实验 将line29&#xff1a;for(i0;i<N;i)改为while(!feof(fp)) // 从文本文件file1.dat中读取数据&#xff0c;找出最高分和最低分学生信息&#xff0c;并输出在屏幕上 #include <stdio.h> #include <stdlib.h>#define N 10// 定义一个结构体类型…

块级格式化上下文(Block Formatting Context)

CSS块级格式化上下文是块级盒子的一种能力&#xff0c;这种能力并不是直接通过css属性声明而获得的&#xff0c;而是添加css的一部分相关属性之后自动获得的能力&#xff0c;也就是说没有一个明确的属性就是生成块级格式化上下文的。 块级格式化上下文的能力就是让具有该能力的…

前端性能优化方法总结

一个网站前端性能的好坏很大程度上影响了用户愿不愿意使用访问这个网站&#xff0c;因此对前端进行性能优化是个很重要的事情。  对于前端性能优化这个问题&#xff0c;主要学习自yahoo前端性能团队总结的35条黄金定律总结&#xff0c;觉得很全很赞&#xff0c;做个学习总结和…

Akka笔记–演员介绍

过去做过多线程的任何人都不会否认管理多线程应用程序有多么艰辛和痛苦。 我说管理是因为它一开始很简单&#xff0c;一旦您开始看到性能改进&#xff0c;它就会变得非常有趣。 但是&#xff0c;当您发现没有一种简单的方法可以从子任务中的错误或难以发现的僵尸错误中恢复时&a…

Java英雄:丹·艾伦

“ Java英雄 ”系列休息了很长时间。 老实说&#xff0c;我想即使有很多人想在这里收录&#xff0c;它也可能会以虚无收场。 其中之一是丹。 我第一次要求他捐款已经将近一年半了&#xff0c;与此同时发生的一切&#xff0c;让我不再有任何答案就让我安心了。 但是以下内容在Ja…

Java-Class-I:java.util.List

ylbtech-Java-Class-I&#xff1a;java.util.List1.返回顶部 1.1、import java.util.ArrayList;import java.util.List; 1.2、List<Integer> newList new ArrayList<Integer>();newList.add(3); 2、 2.返回顶部1.1、import java.util.*;public class Test{public …

推荐:个人时间跟踪工具 ManicTime

在《个人管理 &#xff0d; 目标管理之前&#xff0c;你会时间管理吗》中我介绍的时间管理三阶段之一“对时间的实际去处进行记录”时说过现在有很多时间管理工具&#xff0c;也有人希望我介绍一下我使用的工具&#xff0c;那么我就利用中午休息时间&#xff0c;马上给大家介绍…

SQL Server 2005怎样进行性能排错

很少会有偶然的性能下降。设计不良的数据库或工作负载配置不正确的系统会经常导致性能问题。管理员需要能预先阻止或最小化问题的影响&#xff0c;当管理员遇到问题时&#xff0c;应该诊断问题并采取正确操作来修复问题。本文提供了按部就班的指导&#xff0c;通过使用可用的工…

JVM PermGen –您在哪里?

这篇文章介绍了JVM内存结构的一些基础知识&#xff0c;并快速窥视了PermGen&#xff0c;以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程&#xff0c;魔术始于java命令。 像任何OS进程一样&#xff0c;它需要内存才能运行。 记住– JVM本身是…

python6-函数

转载于:https://www.cnblogs.com/WIU1905/p/11101249.html

Windows Phone 7.1 “芒果” SDK Beta 下载地址

Windows Phone 7.1 “芒果” SDK Beta 今天早上发布&#xff0c;第一时间下载体验。功能果然激动人心。 下载地址&#xff1a; 离线ISO请点我&#xff0c; 在线安装请点我。转载于:https://www.cnblogs.com/finehappy/archive/2011/05/25/2056849.html

Windows系统安装 ffmpeg

下载及解压 ffmpeg官方下载地址&#xff1a;https://ffmpeg.org/download.html 下载好后将其解压至你想保存的位置中。 环境变量设置 打开Windows设置&#xff0c;在搜索框输入&#xff1a;系统高级设置。 新建环境变量&#xff0c;并输入bin目录具体位置。 安装检查 按住 w…