JAVA
课程结业论文
旅游与地理科学地理信息同专业1011504郑安
[摘要]本文介绍如何利用JAVA提供的C语言接口在JAVA中调用C函数,解决了在实际调用过程中可能碰到的技术
问题,并通过实例给出了具体编程方法。[关键词]JAVAJNTCDLL在现今的
软件开发领域中,JAVA以其跨平台的优势得到大量的应用,其代码可以一次编译多处执行。但这种特性给JAVA带来了一定的局限性,幸好JAVA提供了完备的C/C++语言接口,这样我们可以利用C语言的强大功能实现JAVA难以实现的功能,在一定
程序上消除JAVA的局限性和低效率。一、创建DLL文件使用某一种C/C++开发工具创建Dll文件,实现某一功能,供JAVA调用,例如本文在此使用Visualstudio2005创建一个名为testdll的动态库文件。二、使用JNIJNI是JAVANativeInterface的缩写,中文为JAVA本地调用。它允许JAVA代码和其他语言写的代码进行交互。1.JAVA类在JAVA程序中,首先需要在类中声明所调用的库名称,如下:static{System.l
oadLib
rary(“testdll”);//加载动态库,testdll为DLL文件名称}还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下:publicnativestaticvoidset(inti);publicnativestaticintget();然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。例如程序testdll.JAVA,内容为:publicclasstestdll{static{System.loadLibrary(“testdll”);}publicnativestaticintget();publicnativestaticvoidset(inti);publicstaticvoidmain(String[]args){testdlltest=newtestdll();test.set(10);System.out.println(test.get());}}用JAVActestdll.JAVA编译它,会生成testdll.class。再用JAVAhtestdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。2.C/C++创建C/C++项目需要增加的头文件有jni.h、jni_md.h这两个文件是JNI中必须的;还有就是增加testdll.h。对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。我们先看一下testdll.h文件的内容:#include#ifndef_Included_testdll#define_Included_testdll#ifdef__cplusplusextern"C"{#endifJNIEXPORTjintJNICALLJAVA_testdll_get(JNIEnv*,jclass);JNIEXPORTvoid
JNICALLJAVA_testdll_set(JNIEnv*,jclass,jint);#ifdef__cplusplus}#endif#endif在具体实现的时候,我们只关心两个函数原型JNIEXPORTjintJNICALLJAVA_testdll_get(JNIEnv*,jclass);和JNIEXPORTvoidJNICALLJAVA_testdll_set(JNIEnv*,jclass,jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上JAVA程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。下面我们用testdll.cpp文件具体实现这两个函数:#include"testdll.h"inti=0;JNIEXPORTjintJNICALLJAVA_testdll_get(JNIEnv*,jclass){returni;}JNIEXPORTvoidJNICALLJAVA_testdll_set(JNIEnv*,jclass,jintj){i=j+5;}编译连接成库文件,这里就是testdll.dll。把testdll.dll拷贝到testdll.class的目录下,JAVAtestdll运行它,就可以观察到结果了。三、总结使用JNI可以在JAVA中调用其它语言编写的代码,在一定程度上消除JAVA的局限性和低效率。四、体悟JAVA语言已经成为当今世界的一种比较普遍的编程语言,我觉得掌握JAVA对未来走向社会有很大帮助,而这个大
作业的编写,正好锻炼了我得JAVA编程能力,对JAVA有了很深的认识,只是不是会瞬间获得的,是靠平时一点一滴的积累,和吸收每次的经验而得来的。随着JAVA技术的发展以及对JAVA认识的不断深入,BruceEckel推出了《JAVA编程思想》第三版,在这里我们应该向他致敬,我看了这本书,学到了很多东西,最重要的就是一种思想,他不断精益求精、锐意进取的精神正是我们应该努力
学习的榜样。随着软件开发技术,尤其是Web应用的开发技术的发展,JAVA越来越受到人们的青睐,越来越多的企业都选择使用JAVA及其相关技术,例如J2EE技术来构建它们的应用
系统。但是,掌握好JAVA语言并不是一件可以轻松完成的任务,如何真正掌握JAVA语言,从而编写出健壮的、高效的、灵活的程序是JAVA程序员们面临的重大挑战.JAVA编程思想就是一本能够让JAVA程序员轻松面对这一挑战,并最终取得胜利的经典书籍。本书深入浅出、循序渐进地把我们领入JAVA的世界,让我们在不知不觉中就学会了用JAVA的思想去考虑问题、解决问题。然后再通过后面老师的课堂讲述,和编程方法的讲解,便知道了如何编程,通过刚开始编写一些简单的小程序,慢慢练习,便有了一点点编程能力,而且当自己变出自己的观点是,心情很高兴,便喜欢上了用JAVA进行编程,JAVA语言具有面向对象和
网络编程的优点,已成为当今的主流编程工具。Web浏览器的能力也因作为其扩充语言而变得无所不能。