2020ok  Directory of FREE Online Books and FREE eBooks

Free eBooks > Computers & Internet > Programming > Java > General > Java Native Interface:Programmer's Guide and Specification

Java Native Interface:Programmer's Guide and Specification

by Sheng Liang

Download Book
(Respecting the intellectual property of others is utmost important to us, we make every effort to make sure we only link to legitimate sites, such as those sites owned by authors and publishers. If you have any questions about these links, please contact us.)

link 1

About Book

Written for the experienced Java developer, The Java Native Interface documents the latest in native code programming for the Java platform using the Java Native Interface (JNI) with C/C++. Author Sheng Liang built the book around "dos and don'ts," even specifying within the introduction when you should and when you should not use JNI. Though sometimes densely written, this title certainly conveys a good deal of technical information on using native code with Java.

After a simple JNI "Hello World" code example, this book explores multiple aspects of the JNI API, starting with the use of Java strings and arrays within native code. Liang follows by transitioning into calling Java members and methods in C/C++. Here the author presents caching strategies for improving the performance of native code that interacts with or executes Java programs, including a discussion of local and global references that incorporates global weak references in Java 2.

The book also looks at handling exceptions within C/C++ code, as well as tips for working with Java threads. The author shows how to simplify access to C/C++ code through shared stubs and how to use peer classes to encapsulate native code from within Java. A section on common traps and pitfalls lists some common pitfalls to avoid when working with the JNI. After presenting the JNI specification, the author provides the most immediately useful text in the book--over 100 pages of reference material listing JNI data types and methods.

As a reference and programming guide, The Java Native Interface provides concise and timely technical details on getting Java and C/C++ code to coexist within your projects. --Richard Dragan

Book Info
Definitive resource and a comprehensive guide to working with the JNI. Numerous examples are included to illustrate proven programming techniques. Softcover.

From the Back Cover

The Java Native Interface (JNI) enables the integration of code written in the Java programming language with code written in other languages such as C and C++. It allows programmers to take full advantage of the Java platform without having to abandon their investment in legacy code.

This book is the definitive resource and a comprehensive guide to working with the JNI. Entirely up-to-date, the book offers a tutorial, a detailed description of JNI features and programming techniques, JNI design justifications, and the official specification for all JNI types and functions.

You will find coverage of important topics such as:

  • Writing native methods
  • Passing data types between the Java language and native programming languages
  • Embedding a Java virtual machine implementation in native applications
  • Leveraging legacy native libraries
  • Improving the efficiency and reliability of your code

An entire chapter is devoted to avoiding common traps and pitfalls. The book uses numerous examples to illustrate programming techniques that have proven to be effective.


About the Author

Sheng Liang, a staff engineer in Java Software at Sun Microsystems, Inc., designed the JNI and led the Java virtual machine development for the first release of the Java 2 platform. He holds a Ph.D. in computer science from Yale University.


Excerpt. © Reprinted by permission. All rights reserved.

This book covers the Java(TM) Native Interface (JNI). It will be useful to you if you are interested in any of the following:

  • integrating a Java application with legacy code written in languages such as C or C++
  • incorporating a Java virtual machine implementation into an existing application written in languages such as C or C++
  • implementing a Java virtual machine
  • understanding the technical issues in language interoperability, in particular how to handle features such as garbage collection and multithreading

First and foremost, the book is written for developers. You will find easy steps to get started with the JNI, informative discussions on various JNI features, and helpful tips on how to use the JNI effectively. The JNI was initially released in early 1997. The book summarizes two years of collective experience gained by engineers at Sun Microsystems as well as the vast number of developers in the Java technology community.

Second, the book presents the design rationale of various JNI features. Not only is this of interest to the academic community, but a thorough understanding of the design is also a prerequisite to using the JNI effectively.

Third, a part of the book is the definitive JNI specification for the Java 2 platform. JNI programmers may use the specification as a reference manual. Java virtual machine implementors must follow the specification to achieve conformance.

Send comments on this specification or questions about JNI to our electronic mail address: jni@java.sun.com. For the latest on the Java 2 platform, or to get the latest Java 2 SDK release, visit our web site at http://java.sun.com. For updated information about The Java(TM)Series, including errata for this book, and previews of forthcoming books, visit java.sun.com/Series.

The JNI was designed following a series of discussions between Sun Microsystems and Java technology licensees. The JNI partly evolved from Netscape's Java Runtime Interface (JRI), which was designed by Warren Harris. Many people from Java technology licensee companies actively participated in the design discussions. They include Russ Arun (Microsoft), Patrick Beard (Apple), Simon Nash (IBM), Ken Root (Intel), Ian Ellison-Taylor (Microsoft), and Mike Toutonghi (Microsoft).

The JNI design also benefited greatly from Sun internal design reviews conducted by Dave Bowen, James Gosling, Peter Kessler, Tim Lindholm, Mark Reinhold, Derek White, and Frank Yellin. Dave Brown, Dave Connelly, James McIlree, Benjamin Renaud, and Tom Rodriguez made significant contributions to the JNI enhancements in Java 2 SDK 1.2. Carla Schroer's team of compatibility testers in Novosibirsk, Russia, wrote compatibility tests for the JNI. In the process they uncovered places where the original specification was unclear or incomplete.

The JNI technology would not have been developed and deployed without the management support of Dave Bowen, Larry Abrahams, Dick Neiss, Jon Kannegaard, and Alan Baratz. I received full support and encouragement to work on this book from my manager Dave Bowen.

Tim Lindholm, author of The Java(TM) Virtual Machine Specification, led the Java virtual machine development effort at the time when the JNI was being designed. Tim did pioneering work on the virtual machine and native interfaces, advocated the use of the JNI, and added rigor and clarity to this book. He also provided the initial sketch for this book's "kitchen and dining room" cover art design.

This book benefited from the help of many colleagues. Anand Palaniswamy wrote a portion of Chapter 10 on common traps and pitfalls. Janet Koenig carefully reviewed a preliminary draft and contributed many useful ideas. Beth Stearns wrote a draft of Chapter 2 based on the online JNI tutorial.

I received valuable comments on a draft of this book from Craig J. Bordelon, Michael Brundage, Mary Dageforde, Joshua Engel, and Elliott Hughes. Lisa Friendly, editor of The Java(TM) Series, was instrumental in getting this book written and published. Ken Arnold, author of The Java(TM) Programming Language, first suggested that a JNI book be written. I am indebted to Mike Hendrikson and Marina Lang at Addison-Wesley for their help and their patience throughout the process. Diane Freed oversaw the production process from copy editing to final printing.

In the past several years I have had the privilege of working with a group of talented and dedicated people in Java Software at Sun Microsystems, in particular members of the original, HotSpot, and Sun Labs virtual machine teams. This book is dedicated to them.

Sheng Liang

May 1999




PLEASE READ: All comments must be approved before appearing in the thread; time and space constraints prevent all comments from appearing. We will only approve comments that are directly related to the article, use appropriate language and are not attacking the comments of others.

Message (please, no HTML tags. Web addresses will be hyperlinked):

Related Free eBooks

Related Tags

DIGG This story   Save To Google   Save To Windows Live   Save To Del.icio.us   diigo it   Save To blinklist
Save To Furl   Save To Yahoo! My Web 2.0   Save To Blogmarks   Save To Shadows   Save To stumbleupon   Save To Reddit