这本书覆盖讲解JNI技术。如果你对下面之一感兴趣的话,那么这本书是很有用的:
1、在Java程序中使用C或C++写的旧的程序片段
2、将一个Java虚拟机整合到C或C++写的程序当中
3、实现一个Java虚拟机
4、理解跨语言协作技术,特别是如何处理垃圾回收机制和多线程问题
首先也是最重要的一点,这本书是写给开发者的。你可以看到只需简单的几步操作就可以使用JNI,也可以看到关于JNI的特性的广泛(informative)讨论以及关于如何高效使用JNI的小贴士(tips)。JNI最早于1997年发布,这本书总结了两年中Sun Microsystems的工程师和广大开发者分享在Java技术社区的经验。(The book summarizes two years of collective experience gained byengineers at Sun Microsystems as well as the vast number of developers in theJava technology community.)
第二,这本书展示了各种JNI特性设计的基本原理。这不仅是学术界的兴趣所在,而且对设计模式的彻底理解也是高效使用JNI的首要条件(prerequisite)。
第三,这本书有一部分内容讲述Java 2平台上权威的(definitive )JNI规范(specification)。JNI程序员可以把这部分作为参考手册使用。Java虚拟机的实现必须遵循specification规定以保持一致。
你可以发送关于specification的评论或JNI的相关问题到我们的电子邮箱:jni@java.sun.com.下载Java 2平台上的JNI规范或最新的Java 2 SDK发行版,请访问我们的网站http://java.sun.com。此外,你还可以通过访问http://java.sun.com/Series来获取关于Java系列丛书(The JavaSeries)的更新信息,包括本书的勘误以及其他即将发布的图书的预告。
JNI的设计遵循SunMicrosystems和Java技术许可之间的一系列商讨规则(The JNI was designed following a series of discussions between SunMicrosystems and Java technology licensees.)。从某种程度上来说,JNI由Netscape的Java运行时接口(JRI)发展而来,JRI是由WarrenHarris设计的。许多来自于已经取得Java技术许可的公司的技术人员积极地参与设计讨论。他们分别是Russ Arun (Microsoft), Patrick Beard (Apple), Simon Nash (IBM), KenRoot (Intel), Ian Ellison-Taylor (Microsoft), and Mike Toutonghi (Microsoft)。
DaveBowen、James Gosling、Peter Kessler、Tim Lindholm、Mark Reinhold、Derek White、and Frank Yellin领导复审了Sun最初的设计,JNI的设计从中获益匪浅。Dave Brown、Dave Connelly、James McIlree、Benjamin Renaud和Tom Rodriguez为Java 2 SDK1.2中JNI的功能增强(enhancement)做出了显著的贡献。俄罗斯Novosibirsk由Carla Schroer领导的兼容性测试团队位JNI编写了测试代码。在这个过程中,他们发现了许多最初的规范中不清楚或不完善的地方。
如果没有DaveBowen,Larry Abrahams,Dick Neiss,Jon Kannegaard和Alan Baratz等人管理上的支持,JNI技术不会得到如此的发展与展开(deployed)。我从我的领导Dave Bowen那里得到了毫无保留的支持与鼓励来写作这本书。
当JNI技术被设计出来的时候,TimLindholm,《The Java Virtual Machine Specification》的作者,使得Java虚拟机在那时也得到了显著的发展。(Tim Lindholm,author of The Java Virtual Machine Specification,led the JavaVirtual mechine development effort at the time when JNI was being designed.)Tim在虚拟机和本地接口方面做出了开创性的贡献,他提倡JNI的使用,并且让这本书变得更加准确清晰(and add rigor and clarity to this book)。他也为本书的“厨房和餐厅”提供了最初的草稿,这涉及巧妙的设计。(He also provided the initial sketch for this book's "kitchenand dining room"cover art design.)
这本书还从许多同事的帮助中受益。Anand Palaniswamy完成了第十章中关于共同的陷阱和常犯的错误这一部分。Janet Koenig细心地审阅了初稿并提出了许多有用的意见。Beth Stearns基于在线JNI教程完成了第二章的初稿。
我从Craig.J.Bordelon,MichaelBrundage,Mary Dageforde,Joshua Engel和Elliott Hughes那里收到了许多有价值的意见,这些意见写在本书的草稿上。
LisaFriendly,The Java Series的编辑,促成了这本书成书印刷发行。Ken Arnold,Java编程语言(The JavaProgramming Language)的作者,首先向我建议写一本JNI的书。我向Addision-Wesley的MikeHendrikson和Marina Lang表示感谢,感谢他们的帮助和他们在整个过程中的耐心。从交给编辑到最终印刷,Diane Freed 监督完成了本书。
在过去的几年里,我很高兴能和Sun Microsystems的Java Software部门中的一群才华横溢无比专注的人一块工作,特别是最初的成员,HotSpot和Sun Labs的虚拟机团队。这本书献给他们。