一文详解Java9 的11项新特性

发表于:2018-2-26 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:木九天    来源:开源中国

  1、Java9新特性之---目录结构
  包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图:
  jdk9之后,目录结构发生变化如图:
  这个新特性只要了解下就可以了,这个目录结构是方便为了接下来新特性做保证
  2、Java9新特性之---JShell工具
  怎么理解,怎么用呢?这个只是针对于java9来说,相当于cmd工具,你可以和cmd一样,直接写方法等等,不过我认为只是适用于初学者做一些最简单的运算和写一些方法:
  在cmd中打开这个工具:
  进入工具后可以做一些简单的java操作
  ......等等,我认为只适用于初学者学习java不用其他编辑工具就可以学习java
  3、Java9新特性之---模块化
  一个大型的项目,比如淘宝商城等,都会包含多个模块,比如订单模块,前台模块,后台管理模块,广告位模块,会员模块.....等等,各个模块之间会相互调用,不过这种情况下会很少,只针对特殊情况,如果一个项目有30个模块系统进行开发,但是只要某个单独模块运行时,都会带动所有的模块,这样对于jvm来说在内存和性能上会很低,所以,java9提供了这一个特性,某一个模块运行的时候,jvm只会启动和它有依赖的模块,并不会加载所有的模块到内存中,这样性能大大的提高了。写法上如下:
  一个项目中的两个模块,模块之间通过module-info.java来关联,在IDEA编辑器右键创建package-info.java
  在这个两个模块java9Demo和java9Test中,java9demo编写一个实体类Person,在java9Test调用这样一个过程
  这个是java9Demo 将 java9Test 模块需要的文件导出 exports  把它所在的包导出
module java9Demo{
exports com.mdxl.layer_cj.entity;
}
  然后在java9Test模块中创建一个package-info.java,引入java9Demo模块导出包名
module java9Test{
requires java9Demo;
}
  这样就可以直接在java9Test中引入Person实体类了,这只是一个简单的例子。exports 控制着那些包可以被模块访问,所以不被导出的包不能被其他模块访问
  4、Java9新特性之---多版本兼容Jar包
  怎么理解呢?
  好多公司用的jdk大部分还是老版本,jdk6,7 都有,他们都不敢升级主要是因为兼容的问题,但是java9做到了这一点,就是不管公司的项目是用的java6,7,8甚至5,他都可以兼容不出错,打个比方,你之前用的是iphone5,现在出现了iPhone6,iphone7,iphon8和iphone9,但是你不敢买9,因为你自己已经适应了iphone5的所有手机的运行流程,6,7,8每个手机的运行流程不一样,但是这个9很强大,它能够识别你现在所用的版本iphone是5,所以当你升级到iphone9的时候,你的这个手机运行流程还是iphone5的流程,只是在原有基础上拥有了更多的iphone9的所有优势。
  5、Java9新特性之---接口Interface的升级
public interface FilterProcess<T> {
//java 7 及以前 特性  全局常量 和抽象方法
public static final String a ="22";
boolean process(T t);
//java 8 特性 静态方法和默认方法
default void love(){
System.out.println("java8 特性默认方法");
}
static void haha(){
System.out.println("java8 特性静态方法");
}
//java 8 特性 支持私有方法
private void java9(){}
}
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号