Skip to Content
Java NIO
book

Java NIO

by Ron Hitchens
August 2009
Beginner to intermediate
302 pages
9h
English
O'Reilly Media, Inc.
Content preview from Java NIO

Appendix A. NIO and the JNI

The Street finds its own uses for technology.

William Gibson

As discussed in Chapter 2, direct buffers provide a means by which a Java buffer object can encapsulate system, or “raw,” memory and use that memory as its backing store. In the Java realm, you do this by invoking ByteBuffer.allocateDirect( ), which allocates the system memory and wraps a Java object around it.

This approach — allocating system memory and constructing a Java object to encapsulate it — is new in JDK 1.4. In previous releases, it was not possible for the Java side to use memory allocated by native code. It’s possible for native code invoked through the Java Native Interface (JNI) to call back to the JVM and request that memory be allocated from the JVM heap, but not the other way around. Memory allocated in this way can be used by Java code, but there are severe restrictions on how the memory can be accessed by native code. This made it awkward for Java and native code to share memory spaces.

In JDK 1.2, things got a little better with the introduction of GetPrimitiveArrayCrit-ical( ) and ReleasePrimitiveArrayCritical( ). These new JNI functions gave native code better control of the memory area. For example, you could be confident that the garbage collector would leave it alone during a critical section. However, these methods also have serious restrictions, and the allocated memory still comes from the JVM heap.

Enhancements in JDK 1.4 brought three new JNI functions ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Java I/O

Java I/O

Elliotte Rusty Harold
Java I/O, 2nd Edition

Java I/O, 2nd Edition

Elliotte Rusty Harold

Publisher Resources

ISBN: 0596002882Errata Page