jdk9

Java9新特性之——JShell

雨燕双飞 提交于 2020-02-28 07:03:23
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9。jdk9和jdk8中的新特性不同:jdk8中的stream和lambda表达式能够让开发者非常快速和直观地感受到新版本的功能特性,而java9中的关键更新——模块化,相比而言不能让开发者有直观的感受。 今天首先带来的是java9中直观的新特性:JShell。关于更多jdk9特性的介绍可以参照infoq的一篇文章: https://mp.weixin.qq.com/s/Onj9ZJYbV5pLTAPcYBJREA 更多JDK9中的新特性说明,请参照: https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6 JShell目标 JShell的目标是提供一个交互工具,通过它来运行和计算java中的表达式。开发者可以轻松地与JShell交互,其中包括:编辑历史,tab键代码补全,自动添加分号,可配置的imports和definitions。其他的很多主流编程语言如python都已经提供了console,便于编写一些简单的代码用于测试。值得一提的是,JShell并不是提供了新的一个交互语言,在JShell中编写的所有代码都必须符合java语言规范

Java 9新特性

泪湿孤枕 提交于 2020-02-04 00:30:35
1、jdk 目录结构 JDK9 具体目录结构如下所示: bin: 该目录包含所有的命令。 conf: 包含用户可以编辑的配置文件,例如以前位于 jre\lib 目录中的.properties 和 .policy 文件。 include: 包含一些编译本地代码时使用的 C/C++头文件。 jmods: 包含 JMOD 格式的平台模块,创建自定义运行映射时需要它。 legal: 包含法律声明。 lib: 包含非 Windows 平台上动态链接的本地库,其子目录和文件不应由开发人员直接编辑或使用。Windows 平台的动态链接库直接放在了 bin 目录下。注:JDK9 目录中不再有 jre 子目录,以前 JDK 和 JRE 是分开的,二者主要区别在于 JRE 只提供运行环境,而 JDK 额外提供了 Java 编译器。 2、模块化 module-info.java:该文件必须位于项目的根目录中。该文件用于定义模块需要什么依赖,以及那些包被外部使用。 exports:控制着那些包可以被其他模块访问到,所有不被 exports 的包默认都被封装在模块里面不被外界所使用。 requires:指明对其他模块的依赖。 3、JShell JShell 是 Java 的交互式命令行。输入/help 查看帮助。 4、多版本兼容 jar 使用 javac、jar 等命令可以以任意版本编译、打包 Java

在 JDK 9 中更简洁使用 try-with-resources 语句

我与影子孤独终老i 提交于 2019-12-05 08:04:54
原本同步至 http://www.waylau.com/concise-try-with-resources-jdk9/ 本文详细介绍了自 JDK 7 引入的 try-with-resources 语句的原理和用法,以及介绍了 JDK 9 对 try-with-resources 的改进,使得用户可以更加方便、简洁的使用 try-with-resources 语句。 在 JDK 7 之前,资源需要手动关闭。 例如下面一个很常见的文件操作的例子: Charset charset = Charset.forName("US-ASCII"); String s = ...; BufferedWriter writer = null; try { writer = Files.newBufferedWriter(file, charset); writer.write(s, 0, s.length()); } catch (IOException x) { System.err.format("IOException: %s%n", x); } finally { if (writer != null) writer.close(); } 在 JDK 7 之前,你一定要牢记在 finally 中执行 close 以释放资源 JDK 7 中的 try-with-resources 介绍

jdk9、jdk10、jdk11、jdk12、jdk13新特性

牧云@^-^@ 提交于 2019-12-02 14:38:31
我们绝大部分人估计都还在用着jdk8,12其实是一个非LTS(long time support)版本,而11与8一样是LTS版,意味着下个通用的版本将从8直接到11,毕竟11包含了9和10的所有新特性,因此9和10估计就直接被废弃啦。不过9、10、11、12面向开发者的新特性其实并不是很多,大部分都是一些优化、收集器加强以及增加了一些新功能等等 而我们开发人员最为关注的肯定是对我们搬砖有用的特性,虽然可能还用不太上,但这边还是先记录一下从jdk9-12的新特性: jdk9新特性 1、集合加强 jdk9为所有集合(List/Set/Map)都增加了of和copyOf方法,用来创建不可变集合,即一旦创建就无法再执行添加、删除、替换、排序等操作,否则将报java.lang.UnsupportedOperationException异常。一般在特定场景下用还是可以的,不过如果引用了guava库的话推荐还是使用guava把hhhh,例子如下: List strs = List.of("Hello", "World"); List strsCopy = List. copyOf(strs); Set strs = Set.of("Hello", "World"); Map maps = Map.of("Hello", 1, "World", 2); 2、私有接口方法