IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    java IO在各版本中的提高

    五四陈科学院发表于 2015-02-04 15:22:29
    love 0

    以下内容由[五四陈科学院]提供

    JDK8中的提高

    在标准的(java.nio.charset.Charset)和扩展的charset实现方面,有许多改进。包括:

    • SelectorProvider在Solaris上有新实现(基于Solaris事件端口机制)。这种SelectorProvider有可能在一些工作负荷下有可能会提升性能和扩展性。/dev/poll这种SelectorProvider依旧是默认的。要使用Solaris事件端口机制,启动的时候要设置系统属性java.nio.channels.spi.Selector为sun.nio.ch.EventPortSelectorProvider。
    • 将/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相关

    想快点找到作者也可以到Twitter上留言: @54chen
    或者你懒得带梯子上墙,请到新浪微博:@54chen


沪ICP备19023445号-2号
友情链接