Many serious Java programmers, especially enterprise Java programmers, consider the new I/O API--called NIO for New Input/Output--the most important feature in the 1.4 version of the Java 2 Standard Edition. The NIO package includes many things that have been missing from previous editions of Java that are critical to writing high-performance, large-scale applications: improvements in the areas of buffer management, scalable network and file I/O, character-set support, and regular expression matching. Most of all, it boosts performance and speed dramatically. Java NIO explores the new I/O capabilities of version 1.4 in detail and shows you how to put these features to work to greatly improve the efficiency of the Java code you write. This compact volume examines the typical challenges that Java programmers face with I/O and shows you how to take advantage of the capabilities of the new I/O features. You?ll learn how to put these tools to work using examples of common, real-world I/O problems and see how the new features have a direct impact on responsiveness, scalability, and reliability.
The book includes: * A rundown of the new features in NIO * Basic and advanced I/O Concepts * Binary I/O and the new buffer classes * Memory mapped files and file locking * Character I/O: encoding, decoding and transforming character data * Regular Expressions and the new java.util.regex package * Muliplexing with java.nio Because the NIO APIs supplement the I/O features of version 1.3, rather than replace them, you'll also learn when to use new APIs and when the older 1.3 I/O APIs are better suited to your particular application. Java NIO is for any Java programmer who is interested in learning how to boost I/O performance, but if you're developing applications where performance is critical, such as game computing or large-scale enterprise applications, you'll want to give this book a permanent spot on your bookshelf. With the NIO APIs, Java no longer takes a backseat to any language when it comes to performance. Java NIO will help you realize the benefits of these exciting new features.
Ron Hitchens is a California based computer consultant and educator whose career dates back to the disco era. His first exposure to computers was operating mainframes in the Air Force. His first programming language was COBOL, learned from a friend's borrowed textbook. Since that time Ron has used just about every computer system and programming language you can imagine: from 6502 assembler to XSLT. Ron spent much of the 1980s at the University of Texas at Austin, as student and staffer, where he burrowed deep into the Unix kernel and assisted with many interesting research projects. Ron spent the next several years doing kernel work for clients such as IBM and Unisys. Ron has also developed and taught professional development courses for the same clientele. Following a brief flirtation with C++, Ron fell in love with Java and has spent the last several years employing server-side Java technologies to build Web applications for clients ranging from start-ups to Fortune 500 companies. Ron is Founder and President of Ronsoft Technologies (www.ronsoft.com). Ron lives in California with his wife and co-pilot, Karen, and a dog named Boomer. When Ron isn't working (hah!) he and Karen enjoy snorkeling, bicycling and walking the dog.
Preface 1. Introduction I/O Versus CPU Time No Longer CPU Bound Getting to the Good Stuff I/O Concepts Summary 2. Buffers Buffer Basics Creating Buffers Duplicating Buffers Byte Buffers Summary 3. Channels Channel Basics Scatter/Gather File Channels Memory-Mapped Files Socket Channels Pipes The Channels Utility Class Summary 4. Selectors Selector Basics Using Selection Keys Using Selectors Asynchronous Closability Selection Scaling Summary 5. Regular Expressions Regular Expression Basics The Java Regular Expression API Regular Expression Methods of the String Class Java Regular Expression Syntax An Object-Oriented File Grep Summary 6. Character Sets Character Set Basics Charsets The Charset Service Provider Interface Summary A. NIO and the JNI B. Selectable Channels SPI C. NIO Quick Reference Index