网站首页 > java教程 正文
java9
java的版本迭代还是比较快的,很多的框架例如Spring源码用到JAVA8的新的特性,Oracle也提供了长期的维护版本的JDK11,企业将来转向新的版本,也将慢慢地变成一种趋势。所以还是有必要学习新的JAVA版本的特性。在阅读源码,包括后期的使用也是有帮助的。
java 9 在2017年9月21日发布,提供了超过 150 项新功能特性。包括:模块化系统、
可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、扩展提升、性能管理改善等。
具体的新特性可以查看官方网址:
https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-71A09701-7412-4499-A88D-53FA8BFBD3D0
java9下载:https://pan.baidu.com/s/19Q0Iy3atdRa1pjlOMqgHmw 提取码:i6rj
背景
每种新技术的诞生,都要吐槽下前面的技术遇到的各种问题。Java 已经发展超过 20 年,Java 和相关生态在不断丰富的同时也越来越暴露出一些问题:
1.每次JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.jar,不管
其中的类是否被classloader加载,第一步整个jar都会被JVM加载到内存当中去。
Java9将采用模块化,根据模块的需要,加载程序运行需要的class。下节将具体叙述。
2.当代码库越来越大,不同版本的类库交叉依赖导致操作很复杂,这些都阻碍了 Java 开发和运行效率的提升。
3.每一个公共类都可以被类路径之下任何其它的公共类所访问到,这样就会导致无意中使用了并不想被公开访问的 API。
4.类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢?
模块化系统
模块化系统:Jigsaw,又称为Modularity。 模块将由通常的类和新的模块声明文件(module-info.java)组成。
该文件是位于 java 代码结构的顶层,该模块描述符明确地定义了我们的模块需要什么依赖关系,以及哪些模块被外部使用。
新建了一个工程java9Demo,工程下包含两个模块,test01,test02。
test01和test02的工程下有个module-info.java文件。当我们在test01的mian方法调用test02中的java9类时,会报错。
这时,只需添加如下代码:
至此,test01即可调用别的模块的类。requires:需要哪个模块,引入。exports:暴露出去,给别人调用。
模块化(以 Java 平台模块系统的形式)将 JDK 分成一组模块,可以在编译时,运行时或者构建时进行组合。在于减少内存的开销。
只须必要模块,而非全部jdk模块,可简化各种类库和大型应用的开发和维护。同时增加了安全性,可以自主选择是否给别的模块调用。
Jshell
像 Python 和 Scala 之类的语言早就有交互式编程环境 REPL (read -evaluate - print - loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的 Java 版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。
Jshell使用也很简单。
配置好Java9的环境
查看帮助:/help intro 简单的介绍
所有的命令的介绍
使用
创建一个方法并调用
调用其他方法时,导入指定的包
默认已经导入如下的所有包:(包含 java.lang)
Tab键的命令自动补全
列出当前 session 里所有有效的代码片段
还有/var,显示session里所申明的变量,/methods,显示sessin里所申明的方法。
/edit add(add之前申明方法),可以在外部打开并编辑这个方法,/exit,退出jshell。
还有很多的命令不一一举例了。
在这里列举了两个主要的特性,后面继续更新。
可以关注我,持续分享Java,微服务,高并发,大数据知识。
猜你喜欢
- 2024-09-11 Java 9最终发布可能会推迟8周,到9月21日
- 2024-09-11 JAVA9模块化详解(一)——模块化的定义
- 2024-09-11 java 9 更新内容整理(java基础知识点整理)
- 2024-09-11 轻松上手Java 9模块化开发核心原则与实践
- 2024-09-11 Java 9 揭秘-模块化系统(二)(java9安装教程)
- 2024-09-11 Java9系列第8篇-Module模块化编程
- 2024-09-11 Java 9揭秘-模块依赖(十二)(java9模块化为啥没大规模使用)
- 2024-09-11 Java 9揭秘-模块依赖(七)(java9是什么版本)
- 2024-09-11 Java9新特性中的模块化到底是什么
- 2024-09-11 甲骨文又在给我们灌鸡汤:JAVA 9的未来是什么样的?
你 发表评论:
欢迎- 最近发表
-
- Java对象栈上分配(java对象分配在栈上)
- Java中类和对象到底是什么?一场技术、哲学与设计的深度探索
- VSCode手动创建SpringBoot项目的方法,及详细步骤
- Redis全栈应用实战:从缓存到分布式系统全场景解析
- 用Ansible从零开始部署Spring Boot Web应用:全栈自动化部署指南
- Docker + Kubernetes部署Java应用:从容器化到集群管理的全栈体验
- 如何成为python全栈工程师(python全栈要学多久)
- 俄罗斯程序员创建了外国Java集成开发环境的国产替代品
- Java开发环境最丝滑的打开方式(java项目开发环境)
- idea最新激活jetbrains-agent.jar包,亲测有效
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)