Java IO在各版本中的提高
JDK8中的提高
在標準的(java.nio.charset.Charset)和擴展的charset實現方面,有許多改進。包括:
- SelectorProvider在Solaris上有新實現(基于Solaris事件端口機制)。這種SelectorProvider有可能 在一些工作負荷下有可能會提升性能和擴展性。/dev/poll這種SelectorProvider依舊是默認的。要使用Solaris事件端口機制, 啟動的時候要設置系統屬性java.nio.channels.spi.Selector為 sun.nio.ch.EventPortSelectorProvider。
- 將<JDK_HOME>/jre/lib/charsets.jar文件大小減小。
- java.lang.String(byte[], *)構造函數和java.lang.String.getBytes()方法的性能改善。
JDK7中的提高
java.nio.file包和相關包,java.nio.file.attribute,提供了對文件I/O和進入文件系統全面的支持。Zip文件系統在JDK7也可用了。下面的資源提供了更多信息。
- 手冊中加入File I/O (NIO 2.0特性)。NIO是指non-blocking I/O。
- 可以開發自定義的File System Provider。
- 可直接使用的Zip File System Provider。
- /sample/nio/chatserver/目錄下有些演示java.nio.file包的例子。
- /demo/nio/zipfs/目錄下有些演示NIO.2 NFS的例子。
另外,下面的改進也被引進:
- JDK7之前,要開direct buffer得使用java.nio.ByteBuffer.allocateDirect,會對齊在一頁的范圍里。JDK中,實現被修改了,申請到的 direct buffer將不再是頁對齊的。這樣的好處是減少了內存的浪費,但會創建不少小的buffer。
JDK6中的提高
java.io
一個新的類:
- Console
為File提供了新的方法:
- 為了解磁盤信息準備的方法:
- getTotalSpace()
- getFreeSpace()
- getUsableSpace()
- 為設置權限準備的方法:
- setWritable
- setReadable
- setExecutable
-
canExecute
-
為IOException類增加了新的構造方法 IOException(String, Throwable) 和 IOException(Throwable)。
-
File.isFile在windows的實現有變化。
java.nio
-
基于Linux epoll事件通知機制,有了 java.nio.channels.SelectorProvider的新實現。epoll在Linux2.6及以上的內核中才有。當有成千上萬的 SelectableChannels注冊在一個Selector上時,基于epoll實現的SelectProvider比傳統的能更可擴展。新的 SelectorProvider實現會在2.6內核上默認使用。2.6以下的內核默認還是原來基于poll的實現。
-
sun.nio.ch.disableSystemWideOverlappingFileLockCheck系統屬性,設置了FileChannel要給一個文件加鎖的時候,能不能多次加。
JDK5.0中的提高
java.nio
- 新加javax.net.ssl.SSLEngine。之前只能用SSLSocket自己搞。
J2SDK1.4中的提高
java.nio
- 在FileInputStream和FileOutputStream中添加了getChannel方法,返回FileChannel,添加了close方法。
- RadomAccessFile中也同上。
- 為InputStreamReader和OutputstreamWriter類添加構造函數可傳入Charset對象。添加了getEncoding方法。
java.nio
- nio包被添加。
- JNI支持direct buffer添加了三個新方法。
過去的提高
- java.io.File
- java.io包
- java.io charset相關
原創文章如轉載,請注明:轉載自五四陳科學院[http://www.54chen.com]
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!