Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 序 本文主要讲述一下Java9的新特性 特性列表 完整的特性详见...系列(三)模块系统精要 java9 opens与exports的区别 java9迁移注意事项 java9 module相关选项解析 G1成为默认垃圾回收器 相关JEP: JEP 248: Make G1...的 现在java9可以直接利用jdk内置的集合工厂,比如 List.of(1,2,3,4,5); Set.of(1,2,3,4,5); Map.of("key1","value1","key2","value2...新引入的jlink可以精简化jdk的大小,外加Alpine Linux的docker镜像,可以大大减少java应用的docker镜像大小,同时也支持了Docker的cpu和memory限制(Java SE...的区别 java9迁移注意事项 java9 gc log参数迁移 java9 module相关选项解析 使用maven构建java9 service实例 使用示例带你提前了解 Java 9 中的新特性
序 本文介绍下如何在docker运行java9 镜像 docker pull openjdk:9-jdk 启动 docker run -it openjdk:9-jdk /bin/jshell 然后就可以正常使用...Arrays.asList(1,2,3,4).stream().limit(3).forEach(e -> System.out.print(e)) 123 退出 jshell> /exit | Goodbye 查看此镜像的java
序 本文主要研究一下java9的classloader java9之前的classloader bootstrap classloader加载rt.jar,jre/lib/endorsed ext classloader...加载jre/lib/ext application classloader加载-cp指定的类 java9及之后的classloader bootstrap classloader加载lib/modules...jdk.xml.dom java.xml.ws.annotation* jdk.zipfs application classloader加载-cp,-mp指定的类...jdk.scripting.nashorn.shell jdk.javadoc jdk.xml.bind* jdk.jcmd jdk.xml.ws* jdk.jconsole 小结 java9...模块化之后,对classloader有所改造,其中一点就是将ext classloader改为platform classloader,另外模块化之后,对应的classloader加载各自对应的模块。
【大牛经验】Java9的新特性 Java 9 包含了丰富的特性集。虽然Java 9没有新的语言概念,但是有开发者感兴趣的新的API和诊断命令。 我们将快速的,着重的浏览其中的几个新特性: ?...Java 9中主要的变化是已经实现的模块化系统。模块化的引入使得JDK可以在更小的设备中使用。采用模块化系统的应用程序只需要这些应用程序所需的那部分JDK模块,而非是整个JDK框架了。...模块化系统也可以将公共的类封装到一个模块中。因此一个封装在模块中的定义为public的类不能再任何地方使用,除非一个模块显式的定义了这个模块。...这个新的API定义在java.awt.image包中,这个API能给我们带来如下的帮助: * 将不同分辨率的图像封装到一张(多分辨率的)图像中,作为它的变体。 * 获取这个图像的所有变体。...* 获取特定分辨率的图像变体–表示一张已知分辨率单位为DPI的特定尺寸大小的逻辑图像,并且这张图像是最佳的变体。
序 本文主要研究下java9 opens与exports的区别 open及exports open open module 主要用于解决deep reflection问题,open的作用是表示该模块下的所有的包在...runtime都允许deep reflection(包括public及private类型) 但是编译时期,仅仅允许该module中声明过exports的包可以访问,如果没有exports则该包的类在编译时期不可读...opens package 用于声明该模块的指定包在runtime允许使用反射访问 exports 表示允许在编译时和运行时访问指定包的public成员 open及exports对反射的影响 反射方法...小结 open表示允许运行时通过反射使用open的作用是表示该模块下的所有的包在runtime都允许deep reflection(包括public及private类型);opens package的作用只是允许该包在...runtime都允许deep reflection open及opens都仅仅是开放runtime时期的可以通过反射访问(蕴含了运行时的exports)。
我们将快速的,着重的浏览其中的几个新特性: 模块化系统–Jigsaw 项目 模块化是一个很通用的概念。...在软件中,模块化可以运用到编写和实现一个程序和计算系统,他们都是作为独立的模块,而不是作为一个单一的和完整的设计。 Java 9中主要的变化是已经实现的模块化系统。...模块化的引入使得JDK可以在更小的设备中使用。采用模块化系统的应用程序只需要这些应用程序所需的那部分JDK模块,而非是整个JDK框架了。模块化系统也可以将公共的类封装到一个模块中。...因此一个封装在模块中的定义为public的类不能再任何地方使用,除非一个模块显式的定义了这个模块。由于Java 9的这个变化,Java内部的API(例如com.sun.*)默认情况下是不能使用的。...这个新的API定义在java.awt.image包中,这个API能给我们带来如下的帮助: * 将不同分辨率的图像封装到一张(多分辨率的)图像中,作为它的变体。 * 获取这个图像的所有变体。
大家好,又见面了,我是你们的朋友全栈君。 1. ...Java9概述 Java发布于2017年9月发布,带来了很多新特性,其中最主要的变化是模块化系统 模块就是代码和数据的封装体,模块的代码被组织成多个包,每个包中包含java类和接口,模块的数据则包括资源文件和其他静态信息...具体如下: module 模块名称 { } 模块化的优势 减少内存的开销 可简化各种类库和大型应用的开发和维护...钻石操作符的使用升级 在Java9中,允许在匿名内部类的使用中,使用钻石操作符 代码 4. ...集合工厂方法 基本概念 Java9的List, Set 和 Map集合中,增加了静态工厂方法of,实现不可变实例的创建 不可变体现在无法添加、删除和修改它们的元素
一、概述 自从java9开始商用后,到现在一直停留在java8上。...java8的时候对接口进行了改动,使接口可以编写方法体。java9对这一功能进行了升级,增加支持私有方法。 try-resource也进行了升级,可以直接传入句柄不用再转换了。...另外,java9自己实现了一套httpclient不用再引用第三方实现了。 2.2 JDK10 G1终于正名了,java10开始,G1成为默认垃圾回收器。 ...String增加类似trim的实用方法,可以不用再用lang3包实现了。 丰富了java9的httpclient包的方法。 引入了一个新的垃圾回收器:Epsilon。...建议还停留在1.8的可以升级到17,已升级到17的,再等几个月升级到21。总而言之,java9~20是个不断吸取他人长处弥补自己短处的过程,java在进步,我们也是时候更近一步了。
Java9相关记录 https://gitee.com/bgt0314/java-9 模块化系统运行影像 示例 System.out.println(ClassLoader.getSystemResource...在Java8中_是可以作为变量名使用,只不过会警告,在Java9则是错误 8 ?...中的Flow(生产者消费者) 以下为官方示例 package com.ricky.flow; import java.util.concurrent.ExecutorService; import...中新增的生产者消费者 以下是官方示例(源码中的用法) * */ public class FlowDemo { public static void main(String[] args...Deprecated注解 改善 Java9之前的 package java.lang; import java.lang.annotation.*; import static java.lang.annotation.ElementType
JDK的维护者在GC选择上一直是比较保守的,G1从JDK 1.6时代就开始进入开发者的视野,直到今天正式成为Hotspot的默认GC,也是走了很长的路。...本文将包含以下内容: GC的作用范围 GC负责的事情 JVM中的4种GC G1的一些细节 使用Java 9正式版对G1进行测试 一些简单的GC调优方法 一、GC的作用范围 要谈GC的作用范围,首先要谈JVM...在老年代中进行压缩 在上一条的基础上,将还存活的对象进行压缩(CMS和G1的行为与此有些不同之处),压缩的过程就是将存活的对象从老年代的起点进行挨个复制,使得老年代维持在一片连续的内存中,消除内存碎片,...G1会在平衡吞吐和响应时延的基础上,尽可能的满足用户的需求。它适用的JVM往往有以下特征: 堆的大小可能达到数十G(或者更大),同时存活的对象数量也很多。...注意传统的VM参数-XX:+PrintGCDetails在Java9中已经废弃,会有Warning信息。
Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。...在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。...你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。为什么不使用这些信息创建一个最小的运行时环境,其中只包含运行应用程序所需的那些模块呢?...jshell 的即时反馈使它成为探索 API 和尝试语言特性的好工具。 测试一个 Java 正则表达式是一个很好的说明 jshell 如何使您的生活更轻松的例子。...多版本兼容 JAR 我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java 出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。
Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。...在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。...Linking 当你使用具有显式依赖关系的模块和模块化的 JDK 时,新的可能性出现了。你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。...jshell 的即时反馈使它成为探索 API 和尝试语言特性的好工具。 ? 测试一个 Java 正则表达式是一个很好的说明 jshell 如何使您的生活更轻松的例子。...多版本兼容 JAR 我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java 出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。
序 本文主要解析一下java9 module相关选项 module分类 unnamed module 在classpath的所有jar(不管是否模块化)共同组成一个unnamed module unnamed...这个选项主要是为了方便迁移到java9而设计的,不过在java10可能会移除掉 named module 有module-info.java的模块,是java9正规的module 没有module-info.java...的jar包,如果放在module-path下,java9模块系统自动将其变成automatic module(其中如果jar包中MANIFEST.MF文件有Automatic-Module-Name属性...,限定的范围是main module,—add-modules添加的modules,以及该参数指定的modules及其transitive依赖的modules 当包含main方法的module是unnamed...,可以有助于我们更好地使用java9的模块系统。
Java9之HttpClientAPI实战详解 前言 相信关注java9的小伙伴们都知道java9版本内置模块提供了Http功能,当然并不是说之前jdk之前并不支持,那么这次更新又多了什么呢?...如果想使用Java9的HttpClient服务,那么你必须熟悉(jdk.incubator.http)包中的以下三个类: HttpClient http客户端 该类是Java9开始引入的,官方文档的翻译说明是这样的...在所有情况下,提供的处理程序功能都是方便的实现, 它忽略了提供的状态代码和头文件,并返回相关的预定义的BodyProcessor 。...cf.join(); System.out.println("uri:"+resp.uri()+"---body:"+resp.body()); }); } } Java9...相关文章 Java9之Shell入门 https://my.oschina.net/u/3048852/blog/1543044 Java9 Module解惑 https://my.oschina.net
官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew...modular-模块系统 java9的模块化,从一个独立的开源项目而来,名为Jigsaw。...顺便说一句,java9中不允许使用extdirs了。 另一方面,jdk本身有很多的api: ? 对于一些小设备,它太庞大了。 helloworld 还是习惯先来一个helloworld。.../jre/bin/java -m hello Hello java9 modular. jlink还提供了一个launcher开关,可以将我们的模块编译成和java命令一样的可执行文件,放在 jre/.../jre/bin/Hello Hello java9 modular. 请留意launcher的格式——"[命令]=[模块]",为了区分,命令使用了首字母大写。
new 一个 module-info.java 即可 比如我们看看 java.sql 如何实现的呢?
主要是用来取代java.util.concurrent.atomic包以及sun.misc.Unsafe类的功能。...一个variable handle是一个variable的类型引用,用来在一系列访问模式下来读写variable。支持的variable包括实例变量,静态成员,数据元素等。...Variable Handles需要依赖jvm的增强及编译器的协助,即需要依赖java语言规范及jvm规范的升级。...getAndBitwiseAndRelease, getAndBitwiseXor, getAndBitwiseXorAcquire, getAndBitwiseXorRelease. ## 小结 java9...关于access modes部分涉及了JVM的内存模型,需要了解内存可见性、指令重排序等,才能使用好相关api。
Java9模块系统特性 Java SE 9模块系统提供以下的便利性: 在Java SE 9中分离了JDK, JRE,jar等为更小的模。因此我们可以方便的使用任何我们想要的模块。...Java9中的模块是代码、数据和有些资源的自描述的集合。它是一套相关package、type(类、抽象类,接口等)与代码&数据和资源。...它叫作基本的模块。 它是一个独立模块并且没有依赖于所有其他模块。 默认情况下,其他模块依赖于这个模块。 所以“java.base”模块是被成为Java9模块化系统之母。...它是所有JDK模块和用户定义的Modules的默认模块. 对比的Java 8和Java9应用 使用Java 5,6,7或者8.,我们已经开发了许多Java应用程序。...应用的其余同初期版本应用一样如下所示。 ? 像Java 8应用一样,顶层组件是package,在Java9中则使用module作为顶层组件。
序 本文主要研究一下java9 gc log参数的迁移。 统一JVM及GC的Logging java9引进了一个统一的日志框架,把gc相关的log输出及配置也给纳入进来了。...,用%t表示jvm的启动时间戳。...比如 -Xlog:gc:demoapp-gc-%p-%t.log 输出的文件名如下: demoapp-gc-1678-2018-03-01_21-44-18.log decorators time —...旧版运行时参数到Xlog的迁移 Legacy Runtime Flag Xlog Configuration Comment TraceExceptions -Xlog:exceptions=info...小结 java9把gc log的选型及输出也给统一到了Xlog中,可以按照官方给出的迁移表进行迁移。
一:计划 2016-05-26: 功能开发完成 2016-08-11: 执行测试 2016-09-01: 开始减速 2016-10-20: 零错误反弹(注:指在项目中的某一点上,开发活动最终赶上了测试的步伐...212: 解析 Lint 和 Doclint 告警 213: 打磨Coin项目:(译注:Coin是一个改进Java语法使用性的项目) 214: 移除 JDK 8 中废弃的GC组合 215: 让 javac...PKCS12 秘钥库 231: 移除启动时对JRE版本的选择 232: 改进应用安全性能 233: 自动生成运行时编译器测试用例 235: 测试 javac 生成的 class 文件属性 236: 为...Nashorn 提供解析API:(译注:Nashorn是JDK自带的Javascript引擎) 237: Linux/AArch64 移植 238: JAR 文件支持多个版本:JAR文件可同时包含多个版本的...270: 为临界区预留栈资源 271: 统一 GC 日志 272: 提供平台相关的桌面应用功能 273: 基于确定性随机数产生器(DRBG)的 SecureRandom 实现 274: 改进方法句柄(
领取专属 10元无门槛券
手把手带您无忧上云