Java IO在各版本中的提高

jopen 9年前發布 | 17K 次閱讀 Java IO Java開發

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!