Java版本特性 + NIO

笔记:大致记录一下Java8-14版本特性,以及NIO中的类和方法。帮助梳理回忆串知识点

Java新特性总结

  • Java7 - 2011.7.28

    • switch中使用String。

    • try-with-resources。try(InputStream stream = ...)

    • 捕获多个异常。catch(IOException | NullPointerException e) {...}

    • 泛型实例化类型自动推断。

    • 增加二进制表示。0B111, 0b001

    • 数字中可增加分割符。1_000_000

  • Java8 - 2014.3.18

    • Lambda表达式。

    • 方法引用。System.out::println

    • 接口中增加默认方法和静态方法。

    • 重复注解。

    • 更好地类型推断

    • 拓宽注解的应用场景

    • 获取参数名称

    • Optional类

    • Stream API

    • Date / Time API

    • Nashorn JavaScript引擎

    • Base64

    • 并行数组

    • JUC工具包扩充。并发性方面。 StampedLock、DoubleAccumulator、DoubleAddr、LongAccumulator、LongAddr

    • Noshorn引擎工具jjs命令,类依赖分析器jdeps

    • JVM特性。使用Metaspace代替持久代PermGen space。

      https://www.cnblogs.com/onetwo/p/8526374.html

  • Java9 - 2017.9.22 非TLS版本

    • modulartiy System模块系统

    • HTTP/2

    • JShell。哈哈,Java也有shell了。

    • 不可变集合工厂方法。List.of, Set.of, Map.of

    • 私有接口方法

    • HTML5风格的Java帮助文档

    • 多版本兼容JAR

    • 统一JVM日志

    • Java9的垃圾收集机制

    • I/O流新特性

  • Java10 - 2018.3.20 非TLS版本

    • 局部变量和类型推断var关键字

    • GC改进和内存管理 并行全垃圾回收器G1

    • 垃圾回收器接口

    • 线程-局部变量管控

    • 合并JDK多个代码仓库到一个单独的储存库

    • 新增API:ByteArrayOutputStream

    • List,Map,Set增加方法copyOf。获取视图?

  • Java11 - 2018.9.26

    • 各种类的增强

    • 化繁为简。一个java命令运行源代码,java **.java

  • Java12 - 2019.3.19

    • switch可以作为表达式

    • 默认CDS归档

    • Shenandoah GC

    • JMH基准测试

    • JVM敞亮API

    • G1的可中断maxed GC,归还不可使用的内存

    • 保留32位ARM端口和64位ARM实现

  • Java13 - 2019.9.17

    • 文本块。python中先有的

  • Java14 - 2020.3.17

    • 文本块和Switch表达式之前预览过了。

    • instanceof 模式匹配。if (obj instanceof Group group)

    • Record预览功能

    • NullPointerException异常信息更详细

点评:Java增加了java *.java和jshell特色,哈哈,把人家解释型语言方便使用的有点给借鉴来了。令我想起了go run *.go。有点“自欺欺人”的感觉,可能中间编译产生的文件输出到了%tmp%文件夹下,或者直接就存在了内存中?

Java NIO

  • 管道

    • FileChannle(不能切换到非阻塞模式)

    • DatagramChannel

    • SocketChannel

    • ServerSocketChannel

    • AsynchronousFileChannel

  • 缓冲

    • ByteBuffer

    • CharBuffer

    • ShortBuffer

    • IntBuffer

    • FloatBuffer

    • LongBuffer

    • DoubleBuffer

    • MappedByteBUffer

  • 选择器

    Golang语言中也存在选择器

    open, register,

  • (mark, reset) 成对的方法

  • (scatter read, gather write)

  • transferFrom(position, count, fromChannel) transferTo(...)

  • truncate

  • Pipe

    • 写入sink管道,从source管道读出。

  • IO vs NIO

    • IO 面向流 阻塞IO

    • NIO 面向缓冲 非阻塞IO(注意FileChannle是阻塞的)

  • Paths Path

    • get, normalize,

  • Files File

    • exies, createDirectory, copy, move, move, walkFileTree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值