【小家java】java9新特性(简述十大新特性) 褒贬不一(上 )

简介: 【小家java】java9新特性(简述十大新特性) 褒贬不一(上 )

每篇一句


李连杰:生命开始的时候到生命结束。头半段是需要别人帮忙的


经过4次跳票,历经曲折的java 9 终于终于在2017年9月21日发布(距离上个版本足足3年半时间)


java 9 提供了超过 150 项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说 Java 9 是一个庞大的系统工程,完全做了一个整体改变。但本博文只介绍最重要的十大新特性

特性列表


   平台级modularity(原名:Jigsaw) 模块化系统


   Java 的 REPL 工具: jShell 命令


   多版本兼容 jar 包(这个在处理向下兼容方面,非常好用)


   语法改进:接口的私有方法


   语法改进:UnderScore(下划线)使用的限制


   底层结构:String 存储结构变更(这个很重要)


   集合工厂方法:快速创建只读集合


   增强的 Stream API


   全新的 HTTP 客户端 API


    其它特性


它的新特性来自于100于项JEP和40于项JSR


1. 平台级modularity(原名:Jigsaw) 模块化系统


模块化系统Java7开始筹备,Java8进行了大量工作,Java9才落地。首先带来最直观的感受,就是目录结构的感受:


JDK8以及以前版本:


image.png


image.png


而Java9的结构目录:


image.png


image.png


对目录做相应的介绍:


image.png


Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的**“意大利面条式代码”的几率呈指数级的增长**。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。


在模块的 src 下创建 module-info.java 文件,来描述依赖和导出(暴露)。


requires:指明对其它模块的依赖。

exports:控制着哪些包可以被其它模块访问到。所有不被导出的包

默认都被封装在模块里面。


2、Java 的 REPL 工具: jShell 命令


REPL:read - evaluate - print - loop


这个简单的说就是能想脚本语言那样,所见即所得。之前我们用java,哪怕只想输出一句hello world,都是非常麻烦的。需要建文件、写代码、编译、运行等等。现在有了jShell工具,实在太方便了


  • 即写即得、快速运行


image.png

这样我就进入了jshell环境。下面Hello World就是这么简单了


image.png


  • jShell 也可以从文件中加载语句或者将语句保存到文件中(使用Open命令)


  • jShell 也可以是 tab 键进行自动补全和自动添加分号


image.png


列出当前 session 里所有有效的代码片段:/list



相关文章
|
3月前
|
安全 Java API
Java 17 + 特性与现代开发技术实操应用详解
本指南聚焦Java 17+最新技术,涵盖模块化开发、Record类、模式匹配、文本块、Stream API增强、虚拟线程等核心特性,结合Spring Boot 3与Micronaut框架实战。通过实操案例解析现代Java开发技术栈,包括高性能并发编程、GraalVM原生编译及开发工具链配置。同时梳理面试高频考点,助力掌握Java新特性和实际应用,适合学习与项目实践。代码示例丰富,附带完整资源下载链接。
333 0
|
5月前
|
数据采集 监控 Oracle
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
阿里巴巴是 GraalVM 全球顾问委员会的唯一中国代表,阿里云程序语言与编译器团队和可观测团队合作实现了 GraalVM 应用的无侵入可观测能力,并在 ARMS 平台上线了该功能。目前在 GraalVM 24 中发布的是支持 Java agent 的第一步,其余能力将在 GraalVM 的后续版本中陆续发布。
394 22
|
4月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
143 0
|
2月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
117 1
|
2月前
|
IDE Java API
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
143 1
|
2月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
96 2
|
11月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
126 3
|
11月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
203 2