IBM Skip to main content
Search for:   within 
      Search help  
     IBM home  |  Products & services  |  Support & downloads   |  My account

developerWorks > Wireless
developerWorks
The reading lounge: Java NIO
48 KBe-mail it!
Contents:
In conclusion
Resources
About the author
Rate this article
Related content:
Getting started with new I/O (NIO)
Subscriptions:
dW newsletters
dW Subscription
(CDs and downloads)
by Ron Hitchens

Level: Introductory

Danny Kalev (mailto:dannyk@rocketmail.com?cc=&subject=Java NIO)
System analyst and software engineer
14 August 2003

The Java New I/O (NIO) packages introduced in J2SE 1.4 contain quite a few important facilities that had been sorely lacking for years. In fact, NIO is probably the most important package added to the language since Swing. In response, Java NIO by Ron Hitchens explores this framework's components and demonstrates their usage.
  • Book: Java NIO
  • Author: Ron Hitchens
  • Publisher: O'Reilly
  • ISBN: 0-596-00288-2
  • 282 pages
  • Price: $34.95

The first of the book's six chapters is a remarkably exhaustive survey of the I/O features -- along with their underlying hardware interfaces -- in modern operating systems. For Java programmers who have been sheltered from the gory details of virtual memory, kernel mode versus user mode, and memory pages, this will be a truly revelatory experience. The next couple of chapters cover Java NIO's core features such as buffers and channels. Buffers are the primary means of data transportation in advanced I/O operations, and channels serve as gateways through which I/O transfers take place. The author then goes on to present the notion of selectors. Selectors are used in readiness selection, whereby a single thread manages multiple I/O channels simultaneously, yet efficiently.

The last sections of the book are dedicated to the novel features that are included in the NIO package, although they're not directly related to I/O. For example, Hitchens reviews the new regular expression API. Regular expressions are widely used for scanning text data from file streams, which makes them handy in I/O-bound applications. The reader will also learn to deal with character sets, a topic that goes hand in hand with text processing and display.

The over-protective environment of JVMs and sugar-coated APIs have hidden from programmers what really happens under the hood of every modern computing environment. To quote the author:

"The traditional I/O abstractions of Java... do not scale when moving large amounts of data, nor do they provide some common I/O functionality widely available on most operating systems today."

This common functionality includes nonblocking I/O, memory mapped files, and scatter/gather I/O -- the nuts and bolts of every Linux kernel hacker and C/C++ system programmer. Knowing how hard Java technology creators have tried to abstract away low-level "implementation details" from programmers, I suspect that NIO's complex concepts will flabbergast quite a few readers. This is by no means anything to blame the author for, though. In fact, Java NIO is a plausible compromise between the need to know how real world I/O bound programs should be written and Java technology's high-level abstractions.

In conclusion
Java NIO is a comprehensive and well-written guide to the new I/O facilities and its concepts. Server-side Java programmers and designers of advanced time-critical applications will certainly find it valuable and enlightening.

Resources

About the author
Photo of authorDanny Kalev is a system analyst and software engineer with 13 years of experience, specializing in C++ and object-oriented analysis and design. He was a member of the ANSI C++ standardization committee between 1997-2001. Danny is the author of ANSI/ISO C++ Professional Programmer's Handbook (Que, 1999, ISBN: 0789720221). Check out the DevX review here. He can be reached at http://www-106.ibm.com/developerworks/java/library/dannyk@rocketmail.com.


48 KBe-mail it!

What do you think of this document?
Killer! (5) Good stuff (4) So-so; not bad (3) Needs work (2) Lame! (1)

Comments?



developerWorks > Wireless
developerWorks
  About IBM  |  Privacy  |  Terms of use  |  Contact