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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章