jdk 1.7語法系列(一) JAVA IO 簡史
JAVA IO簡史
Java之所以能夠廣泛流傳,其強大、豐富、簡明的類庫功不可沒,程式設計時要解決的大多數問題幾乎都可以在其中找到支援。但經驗豐富的Java開發人員都知道,在老版本的Java中,有些地方不是那麼給力。
曾經他們最崩潰的就是Java的輸入/輸出(I/O)API。
JAVA 1.0到1.3
在Java早期版本(1.0 - 1.3)中沒有完整的 I/O 支援。在開發時很可能面臨以下問題:
- 沒有資料緩衝區或者通道的概念,開發人員要程式設計處理很多底層細節
- I/O 操作會被阻塞,擴充套件能力受限
- 所支援的字符集編碼有限,需要進行很多手工編碼工作來支援特定型別的硬體
- 不支援正則表示式, 資料處理困難
Java 1.4 引入 NIO
2002年釋出Java 1.4時 非阻塞 I/O ( NIO ) 以JSR-51的身份加入到Java語言中。有以下特性:
- 為 I/O 操作抽象出緩衝區和通道層
- 字符集的編碼和解碼能力
- 提供了能夠將檔案對映為記憶體資料的介面
- 實現非阻塞 I/O 的能力
- 基於流行的 Perl 實現的正則表示式類庫 ( Perl - 正則表示式之王 想了解可訪問ofollow,noindex">http://www.perl.org )
Java 1.7 NIO.2
NIO 無疑使Java向前邁出了一大步,但 I/O 變成對於檔案系統中的檔案和目錄處理而言,支援力度仍然不夠,java.io.File類中也還存在某些侷限性,為了突破這些侷限性,同時為了支援現代硬體和軟體 I/O 新範例,
由阿蘭-波特曼主導的JSR-203應運而生,最終變成了Java7中NIO.2 API。它有三個主要目標:
- 一個能批量獲取檔案屬性的檔案系統介面,去掉和特定檔案系統相關的API,還有一個用於引入標準檔案系統實現的服務提供者介面
- 提供一個套接字和檔案都能夠進行非同步(與輪詢、非阻塞相對) I/O操作的API
- 完成JSR-51中定義的套接字-通道功能,包括額外對繫結、選項配置和多播資料報的支援。
上面簡單的介紹了Java從最初的 I/O 到 NIO 再到NIO.2的發展歷程,後期會逐漸更新,如何使用java.nio包中的類去提升開發效率,部落格僅作為學習交流使用,本人也是學習過程中,有不正確之處望各大博友指正,多謝支援。