1.Java.IO reason for low efficiency
But in most cases, Java applications have not truly been I / O bound in the sense that the operating system could not shuttle data fast enough to keep them busy. Instead, the JVMs have not been doing I / O efficiently. There's an impedance mismatch between the operating system and the Java stream-based I / O model. The operating system wants to move data in large chunks (buffers), often with the assistance of hardware Direct Memory Access (DMA). The I / O classes of the JVM like to operate on small pieces - single bytes, or lines of text This means that the operating system delivers buffers full ofdata that the stream classes of java.io spend a lot of time breaking down into little pieces, often copying each piece between. several layers of objects. The operating system wants to deliver data by the truckload. The java.io classes want to process data by the shovelful. NIO makes it easier to back the truck right up to where you can make direct use of the data ( a bytebuffer object).
Solution Overview 2.NIO in The java.nio package provides new abstractions to address this problem. The Channel and Selector classes in particular provide generic APIs to I / O services that were not reachable prior to JDK 1.4. The TANSTAAFL principle still applies : you will not be able to access every feature of every operating system, but these new classes provide a powerful new framework that encompasses the high-performance I / O features commonly available on commercial operating systems today Additionally, a new Service Provider Interface. (SPI) is provided in java.nio.channels.spi that allows you to plug in new types of channels and selectors without violating compliance with the specifications.TANSTAAFL principle ----------- There Is not No Such Thing As A Free Lunch.3.FileIOIn older operating systems, this usually meant issuing a command directly to the disk driver to read the needed disk sectors. But in modern, paged operating systems, the filesystem takes advantage of demand paging to bring data in to memory.3.1FileLockingWhile the name "file locking" implies locking an entire file (and that is often done), locking is usually available at a finer-grained level. File regions are usually locked, with granularity down to the byte level. Locks are associated with a particular file, beginning at a specific byte location within that file and running for a specific range of bytes. This isimportant because it allows many processes to coordinate access to specific areas of a file without impeding other processes working elsewhere in the file .File Locks area...