分享

运城java程序员培训学校,2013年11月,达内荣膺新浪网“2013年度最具品牌知名度职业培训机构”,2013年12月,达内荣膺2013“腾讯网十年最具创新力IT教育品牌”,2014年7月,荣获中促会、北京大学联合颁发的“2014年首届中关村新品牌100强”...

1.达内教育
2.中公IT
3.火星时代
4.千锋教育
5.天琥教育
6.汇众教育
7.鹰空教育
8.博雅环球教育
9.新科教育
10.仑智教育

elasticsearch之Java调用本地代码(1)
尽管Java虚拟机为开发商提供了关于底层实现的细节,但开发商不必考虑底层操作系统的差异。但是,在一些应用程序中,与基础操作系统的当地代码直接交流是不可避免的。下一步是研究对本地调用的Java支持。
一、为什么会有本地调用
1、考虑性能
在很多方面,Java语言的运行比基础操作系统的原始C和C++语言慢。最主要的原因是Java虚拟机存在中间层。Java语言获得的性能如果不能满足程序的期待,可以使用c或C+来完成重要的耗时代码。
2、根据一定的特殊要求制定的
Java平台提供的标准库非常强大,包括开发中可能遇到的大部分功能。然而,仍有一些功能不能通过标准的应用接口实现,主要是与基础硬件平台直接交互的功能。Java虚拟机不会向上述程序公开这一部分功能。如果你需要这个特性,你只会使用本地代码。
3、整合用本地代码编写的现有程序
Java程序需要与C和C++语言开发的程序在基础操作系统中交互时,可以使用当地的调用。
一般来说,我们使用的elasticsearch是后两种,基本上是第二种。
二、使用JNI进行本地调用
基于上述,Java提供了JNI和JNA(JavaNativeInterface)两种方法,JNI的重要使用场景是提高程序性能。如果程序的重要部分有很高的性能要求,可以使用c和c++代码。
首先,让我们看看如何将JNI用于当地调用。
首先,我们需要Java类,负责声明当地方法的当地代码库。在Java界面,局部方法与抽象方法相同,只包括方法声明,不包括相关实现。一个程序的其他部分可以通过普通方法调用当地方法,如传输和返回有参数的值,与普通方法相同。当虚拟机执行本地方法时,试图在加载的本地代码库中找到相应的本地方法来实现。发现相应的实现方法后,该虚拟机会负责传递参数、调用实际方法和返回值。
public class HelloNative { static{ System.loadLibrary("greetLib"); } public static native void greeting(); }
其次是C/C++代码,实现的是局部方法。通过Java提供的命令行工具,根据Java源代码生成C/C++代码所需的Header文件。对于本地方法,Header文件将包含方法的相应声明。
F:\source\JNI\src>javac-h.\.\HelloNative.java

2014年8月,荣膺《创业邦》、普华永道“2014中国高成长连锁企业50强”奖项,2014年9月,荣膺商务部、教育部“2014优秀服务外包培训机构年度奖”奖,2014年10月,荣膺中国经济网2014年度“最具价值在线教育机构”奖...

www.aixuew.cn All rights reserved 豫ICP备2022021264号
该文章由用户自行上传发布,如有侵权内容请及时联系我们删除。