关于Java 9 你所需要知道的一切
更新列表
- JShell – 命令行交互工具
- Java Module – 模块化(封装、依赖、聚合、服务)
- Custom Runtime Image – 自定义JRE、二次封装
- Runtime.Version – 全新的版本定义和解析方式
- 删除JRE、重新定义JDK结构
- 保留双亲类加载器 – 扩展系统引导、平台、应用三类类加载器
- 去掉java.ext.dirs扩展类加载器
- 全新的类资源访问方式,支持模块化
- 运行时资源访问地址jrt:,有别于jar:
- JDK区分公共API和内部API,不直接访问内部API(Unsafe)
- –patch-module 新的模块修补方案
- Process API – 完整的系统进程访问与控制
- List.of(10,11,12) – of([1,2,..10|array]) 有0,1,2,3,4,5,6,7,8,9,可变参数11个方法
- Set.of(100,200) – of([1,2,..10|array])
- Map.of(‘name’,’ady’) – of(….)
- Map.ofEntries,() Map.ofEntry()
- jdk.incubator.httpclient – 支持HTTP2.0/async等,唯一一个孵化项目,不能直接访问
- 丰富@Deprecation – 更多高级好玩的用法
- 更高效的访问/编译异常堆栈
- Reactive Streams – 响应式流服务(订阅发布升级)
- Stream.dropWhile、Stream.takeWhile – 对 Stream.skip/Stream.limit进行补充
- Stream.ofNullable、Stream.iterate 完善Stream
- Collectors.filtering、Collectors.flatMapping – 城会玩
- Platform Logging – 难道想干掉slf4j、commong-logging、Logback
- 可以访问jvm的系统日志
- _ – 只是关键字,预计在JDK 10中大有可为
- try-with-resouces 升级 – 支持不定义变量进行关闭资源
- 匿名类泛型类型推导
- 接口interface中允许有私有方法private – 牛逼哄哄的
- 私有方法private的类型擦除 – @SafeVarargs
- ProcessBuilder.Redirect – 类似于/dev/null
- Math.floorDiv等扩充方法
- ClassLoader扩展一些方法支持访问Model等
- Optional.ifPresentOrElse, Optional.of(Supplier), Optional.stream() – 比swift难用1w倍
- CompletableFuture.completeAsync等13个方法
- Spin-Wait Hints – 自旋等待 while(cond) Thread.onSpinWait() 【酷】
- Clock.tickMillis(ZoneId)
- Duration.toDaysPart 等10个方法
- LocalDate.ofInstant(Instant, ZoneId)/toEpochSecond – 为了【兼容】java.util.Date
- LocalDate.datesUtil – 生成Stream<LocalDate>
- LocalTime.ofInstant/toEpochSecond,OffsetTime.toEpochSecond – 为了【兼容】java.util.Date
- 儒略日格式化支持 – 【不明觉厉】天文学家用
- java.util.Scanner.finalAll/tokens – 支持Stream操作
- java.util.regex.Matcher.results – 支持Stream操作
- Objects增强 – requireNonNullElse/…/…/checkFromToIndex/checkIndex 【少写一个if/throw】
- Arrays.equals/compare/mismatch(数组系列)- 终于有了
- Applet终于废弃了 – 从诞生到现在坚持了22年,不容易啊,虽然依然可以使用
- Javadoc 增强 – 支持HTML5,支持模块,支持搜索
- 本地桌面java.awt.Desktop的扩展
- 反序列化过滤器 – 好高深
- IO流的 transferTo – 类似有IoUtils.copy(from, to)
- Buffer.duplicate/slice – 共享缓冲区
- java.lang.ref.Cleaner – 废弃Object.finalize,对象不可访问时只需清理操作
- java.lang.invoke.VarHandle – sun.misc.Unsafe 终于转正一等公民
- AtomicInteger.getPlain/getOpaque/getAcquire – 太复杂,哥还没懂
- InputStream.readAllBytes/readNBytes/transferTo 【屌】
- AbstractStringBuilder.chars/codePoints/ – Stream流操作
- TimeUnit.toChronoUnit()/TimeUnit.of(ChronoUnit) – TimeUnit和ChronoUnit互转
- java.util.zip.CRC32C – 提供crc32的校验
- 提供SHA3的算法实现
- java.util.zip.ZipEntry.setTimeLocal(LocalDateTime)
- javax.sql.DataSource.createConnectionBuilder() – 自定数据库连接
- jdk.security.jarsigner.JarSigner – jar包签名
- scripting.nashorn – 众多更新,哥没用过
牛X/重量级的功能
- Java Module 【Java工程师都废了,而且大部分工程师估计也学不会】
- JShell 【入门级玩具、小工具,我最爱的python shell】
- Process API 【过于暴力和危险,终于可以杀无赦】
- VarHandle 【99%的工程师用不上,不知其强大之处】
- HttpClient 【大家都很期待,却没有默认实现】
- Reactive Streams 【过于复杂】
———————————–EOF—————————————-