千锋教育-做有情怀、有良心、有品质的IT职业教育机构

位置:首页 > 行业动态

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

时间:2017-08-08 14:49:33  |  来源:西安千锋  |  作者:千锋教育西安校区

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

  Java 9随着发布的日期临近,程序员和开发者对其带来的新功能的兴趣逐渐升高。新Java版本的发布日期是2017年9月21日。还有不到两个月的时间!Java 9有很多变化,下面我将列出将其添加到新的Java 9中的9个重要改进。
8)L~X%R0NXM)ZE`($Q[[E1F.png
 
  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有几个改进,其中一个是添加一个搜索框。
  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或高版本中实现。 ”

上一篇:数款HTML5游戏收入破千万 开放共赢非空中楼阁
下一篇:JAVA教程到处都是 但是怎样能学好Java

新开班信息

企业之声 more >
  • 人事专员 刘娇
    【博彦科技】人事专员 刘娇

    入职一年多崔志波工作非常好,感谢千锋培养的人才。

  • 技术主管李先生
    【华夏基金】技术主管李先生

    周红梅,有较强的学习能力,是有发展潜力的年轻人。

  • 总经理宋总
    【北京未来付网络技术公司】总经理宋总

    郑秋浩思想灵活,能按时保质保量完成工作内容。

西安校区咨询电话

029-85363390 18610973034

0元入学 线上咨询 申请试听
  • 校区地址:西安市高新六路52号立人科技园C座西区4层
    咨询电话:029-85363390 18610973034
    面授课程:JAVA课程培训、Android课程培训、HTML5课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营、UI课程培训
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营、UI课程培训
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905902 027-59905908 027-59905909
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 成都旅游校区:成都市一环路西二段17号四川旅游青羊校区内
    成都华立校区:成都一环路西二段17号华立大厦3楼
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 了解千锋动态
    关注千锋教育服务号

  • 扫码关注千锋互联
    身边的移动开发导师