Java 9中的5个功能将改变您开发软件的方式(还有2个不会)

有望在Java 9中发布的最令人兴奋的功能是什么?

不要对Java 9的相对沉默近来分散注意力。JDK提交者正在努力准备下一个版本,该版本预计将在2015年12月完成,而功能将在几个月后完成 。此后,它将通过严格的测试和错误修复了将其计划于2016年9月发布的一般可用性。

今天,我们对Java 9的功能有了一个清晰的了解。如果可以将Java 8描述为lambda,流和API更改的主要版本,那么Java 9完全是关于Jigsaw ,额外的实用程序和更改的内容。 在这篇文章中,我们收集了一些我们认为是针对Java 9的最令人兴奋的功能–除了通常的怀疑之外,Jigsaw项目承担了分解JRE并将Java核心组件引入模块化的使命。 。

这里有一些Java 9必须绝对要了解的功能,其中一些已经准备好供您在早期发行版中使用 。

1. Java + REPL = jshell

是。 以前,我们对Kulla项目能否及时发布Java 9表示怀疑,但现在它是正式的。 Java的下一发行版将具有一个名为jshell的新命令行工具,该工具将添加本机支持并普及Java模式以实现REPL(Read-Eval-Print-Loop)。 举例来说,这意味着如果您希望自己运行几行Java,则无需将其全部包装在单独的项目或方法中。 哦,分号–您可以忘记那些:

-> 2 + 2
| Expression value is: 4
|     assigned to temporary variable $1 of type int

有一些替代方法,例如流行的IDE的REPL插件和Java REPL Web控制台之类的解决方案,但是到目前为止,还没有任何官方正确的方法。 jshell已在早期发行版中提供,并等待您对其进行测试。

2.微基准测试即将到来

Alexey Shipilev的Java Microbenchmarking Harness( JMH )正在迈向其发展的下一步,并加入Java作为官方基准测试解决方案 。 我们真的很喜欢在塔基皮(Takipi) 进行 基准测试 ,因此我们希望能有一种标准化的基准测试方法。

JMH是用于构建,运行和分析nano / micro / milli / macro基准测试的Java工具。 当涉及到准确的基准测试时,诸如预热时间和优化之类的因素可能会对结果产生重大影响。 尤其是当您下降到微秒和纳秒时。 因此,如果您想获得最准确的结果来帮助您按照基准测试做出正确的决定,那么今天的JMH是您的最佳选择–现在,它已成为Java 9的代名词。

3. G1将成为新的默认垃圾收集器吗?

我们经常听到的一个常见误解是Java只有一个垃圾收集器,而实际上只有4个 。 对于Java 9,有一个正在运行的建议仍在争论中,以Java 7中引入的G1替换默认的垃圾收集器(并行/吞吐量收集器)。有关不同收集器之间差异的概述,您可以查看这个职位在这里 。

通常,G1旨在更好地支持大于4GB的堆,并且已知会导致较少的GC暂停,但是当出现暂停时,它往往会更长。 最近,我们已经与Outbrain的性能负责人Haim Yadid讨论了GC的所有方面,以帮助您进一步了解收集器之间的不同权衡 。 另外,如果您想深入了解这场辩论,那么hotspot-dev和jdk9-dev邮件列表是一个不错的起点。

4. HTTP 2.0是未来

官方的HTTP 2.0 RFC是在Google的SPDY算法的基础上于几个月前获得批准的。 SPDY在HTTP 1.1上已显示出极大的速度改进,范围在11.81%到47.7%之间,并且其实现已存在于大多数现代浏览器中。

Java 9将完全支持 HTTP 2.0,并具有一个新的Java HTTP客户端,它将取代HttpURLConnection,并实现HTTP 2.0和websocket。

5.流程API有了巨大的提升

到目前为止,使用Java控制和管理操作系统进程的能力有限。 例如,为了执行与在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(“您的pid是” + Process.getCurrentPid());

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

您在Java 9中看不到什么?

我们假定有两个有趣的功能将成为即将发布的Java版本的一部分-但现在我们知道这次将跳过这些功能。

1.标准化的轻量级JSON API

在我们与350位开发人员进行的一项调查中,JSON API像Jigsaw一样被大肆宣传,但由于资金问题,它似乎没有被削减。 Java平台的首席架构师Mark Reinhold在JDK 9邮件列表中:

“该JEP将是对该平台的有用补充,但是,从总体上看,它不如Oracle为JDK 9资助或考虑为其资助的其他功能那么重要。我们可能会重新考虑针对JDK 10或JDK 9的JEP。更高版本。 ”

2.货币和货币API

在其他消息中,看起来还像预期的Money and Currency API缺乏Oracle支持。 这是我们从API规范负责人Anatole Tresch得到的答案:

翻译自: https://www.javacodegeeks.com/2015/06/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont.html

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

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

相关文章

eclipse远程tomcat javaweb debug样例(windows)

1.tomcat配置可被远程debug端口参数 catalina.bat 中添加 set CATALINA_OPTS-Xdebug -agentlib:jdwptransportdt_socket,servery,suspendn,address8000 导出项目war包到tomcat/webapps/目录下 切换到tomcat/bin目录下 双击startup.bat启动运行项目 2.eclipse中启动远程debug…

总账分录追溯发票或者付款

--总账分录追溯发票 SELECT DISTINCT AIA.*FROM AP_AE_HEADERS_ALL AAH, --帐户分录头表AP_AE_LINES_ALL AAL, --账户分录行表,每一个会计事件都会在此表中产生会计分录GL_JE_BATCHES GJB,GL_JE_HEADERS GJH,GL_JE_LINES GJL,AP_INVOICES_ALL …

mysqlDM判断字符串中是否存在非中文

MYSQL判断字符串是否全中文 正则表达式匹配[一-龥]中文字符[ a-zA-Z]英文字母[ 0-9]数字[ぁ-ゞァ-ヾ]日文字符1.查询存在非中文的记录 :select * from tablename where columnname REGEXP [^一-龥]; 2.查询存在中文的记录:select * from columnname wh…

ASP.NET MVC的ContentResult

ASP.NET MVC的ContentResult返回简单的纯文本内容,可通过ContentType属性指定应答文档类型,通过ContentEncoding属性指定应答文档的字符编码。一个例子来演习,自定义一个RwResult,它继承ContentResult,为视图象ASP.NET…

windows搜索指定目录下包含某个字符串的文件

1.打开cmd窗口 :winr 快捷键-> 输入cmd 回车 2.切换到被搜索的文件夹(E:\shgwy文档\日常\更新\20220808)下 如输入: cd E:\shgwy文档\日常\更新\20220808 e: 3.输入搜索命令 c:\Windows\System32\findstr.exe /s /i "wa…

IIS7日志文件位置

准备统计下页面访问量 查找IIS日志,发现在以前IIS6日志的位置,竟然木有找到日志... 查看下IIS设置,发现IIS7和6的默认日志位置不一样额... IIS 6 Log files location IIS 6中日志文件的位置 %windir%\System32\LogFiles IIS 7 Log files location IIS的日…

编写下载服务器。 第二部分:标头:Last-Modified,ETag和If-None-Match

客户端缓存是万维网的基础之一。 服务器应告知客户端资源的有效性,客户端应尽可能快地对其进行缓存。 如我们所见,如果不缓存Web,将会非常慢。 只需在任何网站上Ctrl F5并将其与普通F5进行比较-后者就会更快,因为它使用了已缓存的…

jwt重放攻击_4个点搞懂JWT、JWS、JWE

1.JWT是何物,有哪些常用的场景JWT(json web token)是设计一种简洁,安全,无状态的token的实现规范rfc7519,通常用于网络请求方和网络接收方之间的网络请求认证。jwt的常用场景1.1: restful api接口的无状态认证, 在传统的web应用中…

Verification Mind Games---how to think like a verifier像验证工程师一样思考

1. 有效的验证需要验证工程师使用不同于设计者的思维方式思考问题。具体来说,验证更加关心在严格遵循协议的基础上发现设计里面的bug,搜索corner cases,对设计的不一致要保持零容忍的态度。mindset:一套人们应该持有的确定的态度&…

discuz安装_手动搭建 Discuz! 论坛

一、搭建LAMP环境安装软件(Apache、MariaDB、PHP)yum install httpd php php-fpm php-mysql mariadb mariadb-server -y2.启动服务systemctl start httpdsystemctl start mariadbsystemctl start php-fpm3.安装后首次启动mariadb设置mysql_secure_installation4.登录 MariaDB&a…

关系数据库的几种设计范式介绍

关系数据库的几种设计范式介绍1、第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓…

蓝桥杯 1223 第 2 场 小白入门赛

蓝桥小课堂-平方和 模拟 1 2 2 2 3 2 ⋯ n 2 n ⋅ ( n 1 ) ⋅ ( 2 n 1 ) 6 1^22^23^2\cdotsn^2\dfrac{n\;\cdot\;(n 1)\;\cdot\;(2n1)}{6} 122232⋯n26n⋅(n1)⋅(2n1)​。 write(n * (n 1) * (n * 2 1) / 6);房顶漏水啦 m a x ( 最大的行 − 最小的行 , 最大的列 −…

jar包是什么意思_面试难度五颗星:JVM有Full GC,为什么还会 OutOfMemoryError?

点击上方蓝色“后端面试那些事儿”,选择“设为星标”学最好的别人,做最好的我们来源:R 大zhihu.com/question/38511221问题:R大回复平时有逛知乎的习惯,一般对JVM相关话题比较感兴趣。偶然看到这个问题,结果…

mapreduce介绍_MapReduce:简单介绍

mapreduce介绍MapReduce是Google流行的一种并行编程技术。 它用于处理大量数据。 仅通过将工作并行分配给多台机器,就可以在合理的时间内完成这种处理。 每台机器都处理一小部分数据。 MapReduce是一种编程模型,使开发人员可以专注于编写处理数据的代码&…

系统执行sql很慢达梦工具执行很快的简单解决方式

现象描述:系统功能查询很慢,拷贝查询sql到达梦工具中执行速度很快 1.问题分析: 达梦SQL执行耗时异常问题排查_qq_39693441的博客-CSDN博客_sql耗时分析 2.解决方式1: 在程序sql中拼接随机数如: select /*动态随机数*…

PHP在程序处理过程中动态输出内容

在安装discuz或其他一些开源产品的时候&#xff0c;在安装数据库时页面上的安装信息都是动态输出出来的&#xff0c;主要通过php两个函数来实现的&#xff0c; flush();ob_flush(); 代码如下 <html xmlns"http://www.w3.org/1999/xhtml"><head> <meta…

roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...

日前,第十八届广州车展顺利举行。期间各大汽车品牌齐聚亮相,这其中,也包括众人熟悉的长安马自达。据悉,在本次车展上,长安马自达除携品牌全系车型次世代MAZDA3 昂克赛拉、2020款MAZDA CX-5、MAZDA CX-30和MAZDA CX-8亮相外,还正式发布「悦马星空」用户共创计划。资料显示,「悦马…

从数百万个光纤(而不是数千个线程)中查询数据库

jOOQ是在Java中执行SQL的好方法&#xff0c; Quasar光纤带来了大大提高的并发性 我们很高兴在平行宇宙的 Fabio Tudone的jOOQ博客上宣布另一个非常有趣的来宾帖子。 Parallel Universe开发了一个开源堆栈&#xff0c;使开发人员可以轻松地在JVM上对极端的并发应用程序进行编码…

matlab向量的排序(自写函数)

function a_ed arraysort(a) %冒泡排序法 for i 1:length(a)-1%进行多少次比较for j1i:length(a)%每次求出最大的数&#xff0c;放在最后if(a(j)<a(i))tem a(i);a(i) a(j);a(j) tem;endenda_ed a; endclc; clear; a [2 4 4 6 14 0 2 8 4 1 9 4] b arraysort(a)转载于…

标准错误处理机制——error

在 Golang 中&#xff0c;错误处理机制一般是函数返回时使用的&#xff0c;是对外的接口&#xff0c;而异常处理机制 panic-recover 一般用在函数内部。 error 类型介绍 error 类型实际上是抽象了 Error() 方法的 error 接口&#xff0c;Golang 使用该接口进行标准的错误处理。…