欢迎来到天天文库
浏览记录
ID:46865269
大小:544.26 KB
页数:60页
时间:2019-11-28
《Android开发书籍 - JNI详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、前言翻译初衷,记录JNI编程经验以备后查,并奢望以JNI为蓝本,写一本更深入的关于虚拟机的书。真做起来,才发现以现有水平只能仰望这个目标,要达到它,还需要几年积累。本书没有采用逐字逐句的翻译,更多采用意译,请大家在阅读时多参考原著;对于书中夹杂的评论,如有伤观感,请大家见谅。现在有无数优秀的开源项目,以前高深莫测的技术(虚拟机、编译器、操作系统、协议栈和IDE...),我们终于有机会一探究竟了,真令人兴奋。我们学习,我们参与,希望有一天我们中国人也能创一门牛技术。感谢Die...ken的审稿,他严谨和认真的态度,深感敬佩;哥们儿祝你:天天开心,早结连理。感谢老婆。
2、老婆读书时,看见别人写的书总会感谢太太云云,煞是羡慕,总追问:你什么时候写书感谢我?难!翻译都这么费劲,写书就不知猴年马月了,在这儿感谢一下,糊弄糊弄得了。do.chuan@gmail.comPreface本书涵盖了JavaNativeInterface(JNI)的内容,将探讨以下问题:•在一个Java项目中集成一个C/C++库•在一个用C/C++开发的项目中,嵌入JavaVM•实现JavaVM•语言互操作性问题,特别是互操作过程中的垃圾回收(GC,garbagecollection)和并发编程(multithreading)译注:JNI(JavaNativeIn
3、terface)是SUN定义的一套标准接口,如Dalvik,ApacheHarmony项目...等Java虚拟机,都会实现JNI接口,供本地(C/C++)应用与JavaVM互调。JNI:可以供Java代码调用本地代码,本地代码也可以调用Java代码,即上文列出的第4条内容:语言互操作;所以,这是一套完善而功能强大的接口。可能有朋友听说过KNI,那是J2MEVM(CLDC)中定义的一套东西,不如JNI强大。此外,因为C/C++在系统编程领域的地位,只要打通了与C/C++的接口,就等于是天堑变通途。首先,通过本书,你会很容易的掌握JNI开发,并能了解到方方面面的关于J
4、NI的知识。本书详尽的叙述,会带给你你很多如何高效使用JNI的启示。JNI自1997年初发布以来,Sun的工程师们和Java社区使用JNI的经验造就了本书。第二,本书介绍了JNI的设计原理。这些原理,不仅会使学术界感兴趣,也是高效使用JNI的前提。第三,本书的某些部分是Java2平台规范的最终版本。JNI程序员可以此书作为规范的参考手册,Java虚拟机实现者必须遵循规范,以保证各平台实现的一致性。(...几段不重要,未翻译...)CHAPTER1IntroductionJNI是Java平台中的一个强大特性。应用程序可以通过JNI把C/C++代码集成进Java程序中
5、。通过JNI,开发者在利用Java平台强大功能的同时,又不必放弃对原有代码的投资;因为JNI是Java平台定义的规范接口,当程序员向Java代码集成本地库时,只要在一个平台中解决了语言互操作问题,就可以把该解决方案比较容易的移植到其他Java平台中。译注:比如为Dalvik添加了一个本地库,也可以把这个本地库很容易的移植到J2SE和ApacheHarmony中,因为在Java与C/C++互操作方面,大家都遵循一套API接口,即JNI。本书由下列三个部分组成:•Chapter2通过简单示例介绍了JNI编程•Chapter3-10,对JNI各方面特性和功能做介绍,并给
6、出示例(译者:重要)•Chapters11-13,罗列JNI所有的数据类型的定义(...几段不重要,未翻译...)1.1TheJavaPlatformandHostEnvironment因本书覆盖了Java和本地(C,C++,etc...)编程语言,让我们首先理一理这些编程语言的适用领域。Java平台(JavaPlatform)的组成:JavaVM和JavaAPI.Java应用程序使用Java语言开发,然后编译成与平台无关的字节码(.class文件)。JavaAPI由一组预定义的类组成。任何组织实现的Java平台都要支持:Java编程语言,虚拟机,和API(译者:
7、Sun对Java语言、虚拟机和API有明确规范)。平台环境:操作系统,一组本机库,和CPU指令集。本地应用程序,通常依赖于一个特定的平台环境,用C、C++等语言开发,并被编译成平台相关的二进制指令,目标二进制代码在不同OS间一般不具有可移植性。Java平台(JavaVM和JavaAPI)一般在某个平台下开发。比如,Sun的JavaRuntimeEnvironment(JRE)支持类Unix和Windows平台.Java平台做的所有努力,都为了使程序更具可移植性。1.2RoleoftheJNI当Java平台部署到本地系统中,有必要做到让Java程序与本地代码协同工作
8、。部分是由
此文档下载收益归作者所有