Java 9的前9大改进和功能,程序员不妨先了解

Java 9即将推出。你准备好新版本将带来的新功能吗?在本文中,笔者对Java重要的生态系统的改变,包括新的模块系统,语言和语法的变化等,进行综合介绍。

Java 9随着发布的日期临近,程序员和开发者对其带来的新功能的兴趣逐渐升高。新Java版本的发布日期是2017年9月21日。还有不到两个月的时间!Java 9有很多变化,下面我将列出将其添加到新的Java 9中的9个重要改进。

1.新模块系统

编写大型应用程序或维护库有几个问题。随着代码库的增加,创建复杂代码的机会增加。每个用户都很难真正封装代码类成为公共API的一部分,并且在系统的不同部分之间没有明确的依赖关系的概念。

包含在新Java版本中的Jigsaw旨在解决所有这些问题。模块将由通常的类和新的模块声明文件组成。该模块描述符明确地定义了我们的模块需要什么依赖关系,以及哪些模块被外部使用。在exports子句中未提及的所有包默认情况下将封装在模块中。

一个简单的模块声明,导出一些它的包:

如果你想了解如何构建应用程序模块或熟悉Jigsaw语法和项目的更多示例,可以在此处访问快速入门指南。

http://openjdk.java.net/projects/jigsaw/quick-start

2.支持HTTP/2.0

HTTP/1.1和HTTP/2的主要区别是如何在客户端和服务器之间构建和传输数据。HTTP/1.1依赖于请求/响应周期。 HTTP/2允许服务器“push”数据:它可以发送比客户端请求更多的数据。 这使得它可以优先处理并发送对于首先加载网页至关重要的数据。Java 9将完全支持HTTP 2.0,并为Java提供了一个新的HTTP客户端,它将替代仅适用于blocking模式的HttpURLConnection – 每对请求/响应有一个线程,这增加了延迟和加载时间的网页。HTTP客户端还提供API来处理HTTP和服务器推送等HTTP功能。

两个HTTP交互示例如下所示,它们来自Java 9文档:

3.改进的Javadoc

根据我在Java开发公司Dreamix工作的经验。目前,如果想要找到一些类文档,必须在google中搜索。在Java 9中,Javadoc有几个改进,其中一个是添加一个搜索框。

如图在Java 8中

如图在Java 9中

4.Stream改进

Stream API是Java 8中的游戏更改功能之一,Java 9已经变得更加出色。 现在,你可以创建Stream from Optional。Stream接口还添加了四种新方法:iterate,dropWhile,takeWhile,ofNullable。

DropWhile丢弃Stream的第一个项目,直到满足条件。

TakeWhile处理项目直到满足条件。

Iterate允许使用Stream为for循环写入适当的替换。它需要Stream的初始值,定义何时停止迭代的条件和生成下一个元素的步骤函数。

OfNullable作为名称建议让你从对象创建Stream,而不需要检查null。它返回一个包含单个元素的顺序Stream,如果非空,则返回一个空的Stream。

5.使用新的工厂方法更容易地初始化Collections

目前,如果要创建预定义值列表,您必须进行大量输入:

将来,通过新添加的工厂方法,常用Collections的初始化将会更加容易。接口中的静态方法使其成为可能,增强了列表,集合和映射接口,以便使用多达10个元素创建Collections的方法。 生成的对象是针对性能进行了优化的不可变Collections。

在创建后向这些Collections添加项将导致“UnsupportedOperationException”。

上面的代码看上去更加美观:

这些是一些添加的方法:

6.接口中的私有方法

Java 8给了我们界面中的默认方法。这些方法具有body和给界面的行为,不仅是空的签名。 如果你有两种公共方法几乎相同的话,你会怎么做? 很可能将尝试以私有方式移动通用代码,并从公共方法中调用它们。但是在类似的情况下,你会在接口中使用两种默认方法,而不是类中的两种公共方法吗?

在Java 9中,可以使用完全相同的方法,并具有通用逻辑的私有方法,此方法将不会成为你API的一部分。

7.语言和语法的改进

现在用资源语句编写try将更容易。 以前,执行后必须关闭的所有资源必须在try子句中初始化,如下例所示:

从Java 9开始,我们可以在try子句中使用最终和有效的最终资源:

从Java 9变量名称不能由单个下划线(“_”)组成。 可以在my_var中的变量名中写下划线,但是单独的下划线将导致错误。背后的原因是下划线将被保留以供将来在语言中使用。

我们将能够与匿名内部类共同使用钻石操作符(diamond operator):

8.增强处理API

到目前为止,管理和控制操作系统进程的能力有限。 此外,你编写的执行此类交互的代码取决于操作系统。

新版本将扩展与操作系统进行交互的能力。将添加新的方法来处理PID管理,进程名称和状态,子进程管理等等。

检索当前进程PID并在所有操作系统上运行的示例代码将如下所示:

9.Java REPL = Jshell

最后但并非最不重要的Java9将包括项目Kulla(http://openjdk.java.net/projects/kulla/)中的Read Evaluate Print Loop(REPL)工具。这个命令行工具被称为jshell,如果你想自己编写几行代码来测试一下,这将是完美的工具。

只需执行简单的命令,就不需要使用main方法的新类。

我们在新版本中看不到什么?

有几个好的功能从即将发布的版本中删除。但是,可以在Java 10中等待。

一个标准化和轻量级的JSON API被许多java开发人员所青睐。但是由于资金问题无法在Java 9中见到,但并不会削减掉。Java平台首席架构师Mark Reinhold在JDK 9邮件列中说:“这个JEP将是平台上的一个有用的补充,但是在计划中,它并不像Oracle资助的其他功能那么重要,可能会重新考虑JDK 10或更高版本中实现。

===============================================================================

IT学习交流QQ群543427910

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,293评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,566评论 25 707
  • 彩袖殷勤捧玉钟,当年拚却醉颜红。舞低杨柳楼心月,歌尽桃花扇底风。 从别后,忆相逢,几回魂梦与君同。今宵剩把银釭照,...
    磊叔阅读 387评论 2 6
  • 创建数据库的API * SQLiteDatabase.openDatabase : 直接打开一个数据库 * SQL...
    gogoingmonkey阅读 228评论 0 0