jdk9是Java最新的开发运行套件,Java 9 新的特性真正具有颠覆意义的其实就是Module System,其余很多主要是一些新的feature增加,还有一些功能的加强。JDK9主要是模块化(JPMS),以及进一步提高性能;还趁着模块化功能新加了jimage、jlink、jaotc等新玩意儿,以及新增jshell改善易用性;
很多现有的Java代码都可以在Java 9中使用,类路径仍然存在,模块是选择使用。在我看来,大多数程序员都应该完全忽视模块系统,直到它们的依赖关系全部或者至少部分地被模块化。所以最大的误解是,如果升级到Java 9,那么之前的代码都实现不了了,事实上,升级到Java 9绝对不会比升级到其它Java版本更糟糕。
JDK9最大的特性,主要是为了减少内存开销。我认为不是这样,JDK9实现了OGSI的模块化当然不是为了减小内存开销,而是使JAVA实现了模块化热部署,当需要更换一个模块时,就把模块连同类加载器一块换掉以实现代码的热替换。
Java 平台级模块系统
Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。
模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。
安装使用:
很简单,直接点击安装即可,记得勾选自定义,选择一个合适的安装路径,我安装在D:\ProgramFiles\Java\jdk-9
设置环境变量
自行参考网上的配置,设置JAVA_HOME、PATH、CLASSPATH什么的,如果仅仅想尝试使用下Jshell的话,也可以不设置;
Jshell工具使用
直接在JDK安装目录的bin文件夹下双击jshell.exe即可。
创建一个类,调用静态方法
注意这里,我们不需要编写main方法就可以直接运行。
其它使用示例
输入/help获取帮助
有没发现跟Python解释器极其相似, 剩下的有兴趣自己探索吧。
什么是Jshell
其实就是一个命令行工具,安装完JDK9后,可以在bin目录下找到该工具,与Python的解释器极其相似,用过Python解释器的人应该会非常熟悉。
它可以让你体验交互式编程,有一些比较有趣的特性:
1、语句末尾可以省略分号
2、一般情况下不需要强制捕获受检异常
3、可以直接写表达式
4、在定义方法时可以引用其他方法或变量,且这些方法或变量可以在一段时间后被定义;