- 浏览: 130116 次
- 性别:
- 来自: 苏州
文章分类
最新评论
在java中创建jni,都是通过一些命令,创建一些基本文件,然后在VS C++中,创建工程,导入那些文件,比较繁琐,不容易管理,而且c++中出了异常的话,java也不好处理。基于以上原因,我们可以使用JunC++ ion来使得整个过程自动化。
JunC++ion 创建JNI过程
首先将所有的native方法的class放入一个单独的java工程里,在ANT文件中,配置好,运行后,可以生成一个c++工程。接下来只需在xxxuserImpl文件中,做参数转换和调用native方法实现,最后编译,链接生成dll。在Java中,这些参数不使用java基本类型而使用包装类型为好。在参数转换时,就完全可以采用标准c++类型来处理了。JunC++ion对java的基本类型,采用c++做了重写。如:java.lang.String,重写为:Java::lang::string.
总结:快速创建C++工程,便于管理,可以异常控制等等。
Here's what you would do in Java:
- design a Java type that exposes the desired API to Java applications and internally uses native methods to delegate to the C++ side.
- run the
javah
tool to generate C declarations for for the required native methods. - implement all the native methods in a combination of C, JNI, and your own C++ code.
Here's what the same development process looks like when you're using JunC++ion:
- design a Java type that exposes the desired API to Java applications and internally uses native methods to delegate to the C++ side.
- run the code generator to generate delegating implementations for the required native methods.
- implement all the native methods in a combination of generated C++ proxy classes and your own C++ code.
The obviousness of the answer depends on your familiarity with JNI and on the scale of your integration problem. JNI is typically considered a rather unattractive integration technology because it's so error-prone and hard to use. When you're implementing native methods using JNI, you rarely have the luxury of only using your own code in the implementation. Much more frequently, you need to access elements on the Java side or create Java instances as return values, forcing you to call back into Java via JNI. Coding JNI by hand is a shortcut to an unstable appliation because it's trivially easy (even for an experienced JNI developer) to leak references or make other mistakes that will eventually lead to a hard-to-debug application failure. If you add C++ with its ability to throw exceptions to the mix, you almost certainly have a catastrophe that's just waiting to happen because your Java process will not tolerate a C++ exception thrown from within a native method.
发表评论
-
几种任务调度的 Java 实现方法与比较
2014-12-05 16:16 598几种任务调度的 Java 实现方法与比较 http:// ... -
Jibx
2013-03-11 10:25 1271A. Java To Xml 1. Generate ... -
常用的正则表达式(转)
2013-02-06 11:16 1233“^d+$” //非负整 ... -
solr 开发文档
2013-01-04 13:12 0http://www.cnblogs.com/hoojo/ar ... -
Java如何调用script
2012-05-16 16:25 1829在Java 中如何调用各种脚本(shell,perl,pyth ... -
理解ThreadLocal(转)
2011-09-02 15:03 908ThreadLocal是什么 早在JD ... -
Java关键字transient和volatile小结(转)
2011-08-29 17:26 20188transient和volatile两个关 ... -
REST与SOAP样式Web 服务的区别(转)
2011-07-25 11:25 1097基本原理层次上说,REST 样式和 SOAP ... -
Java自带的线程池ThreadPoolExecutor详细介绍说明和实例应用(转)
2011-04-11 10:51 1961从 Java 5 开始,Java 提供了自己的线程池。线程 ... -
HttpURLConnection使用
2009-06-22 17:15 3358HttpURLConnection是基于HTTP协议的,其底层 ... -
利用httpclient访问受保护的资源地址
2009-06-22 17:00 1345模拟登录 1、session方式 import java.io ... -
常见算法程序实现集合(C,Java)
2008-12-22 15:16 1062常見程式演算」主要收集一些常見的程式練習題目,您可以藉這些題目 ... -
在 Windows 中实现 Java 本地方法
2008-12-10 14:26 1514WebSphere Development Research ... -
N!的全排列算法(Java实现)
2008-09-16 16:20 2575public class TestSort { Str ... -
JDK1.5新特性(转载)
2008-02-27 14:13 2842"JDK1.5"的一个重要主题就是通过新增 ... -
采用ASM动态生成set和get方法
2007-12-18 16:13 4072ASM 功能强大,采用指令操纵class文件,可以生成你所需的 ... -
Java的ClassLoader与Package机制(转载)
2007-07-01 21:41 1251为了深入了解Java的ClassLoader机制,我们先来做以 ...
相关推荐
很多时候,在JAVA中有不错的实现,比如一个LIB,一个CLASS。很想把它转换为C++实现。在网上找了很久,需望能找到一个工具,自动化一下。可惜,我一直没有找到,今天顺手写了一个,给大家分享。。...
junc-功能性Java ##背景在函数式编程中,开发人员通常坚持不变性的做法。 这些语言往往表现力很强,甚至语言的流控制元素也像函数一样返回值。 通常,只要您的程序停止按顺序处理代码,函数式编程和命令式编程就会...
基于道路网的最短路径算法的研究与实现 很好的毕业设计资料哦
基本上,这是我们正在开发的教育性Java编译器-只是为了深入了解编译器的工作原理。 它不打算用于商业用途!! 它是用Java编写的,并使用ANTLR解析器生成器和扩展的字节码工程库
君克利 JuncDT的脚手架工具
对被动法T型(T-junc tion)、流动聚焦型(flow-focusing)和同轴环管型(co-flowing)3种微通道结构进行了说明,阐述了近年来这3种通道内两相动力学的研究进展,并对可大批量生成液滴的微流体芯片进行了介绍。同时对几种...
就高功率激光对PIN结光电二极管因热效应引起的硬破坏过程进行了理论和实验研究.提出激光的热效应与伴随等离子体扩展时向外喷溅形成的冲刷效应是导致硅光二极管被破坏的主要原因。得到了Q开关YAG激光与PIN结光电...
硬盘安装助手 Leopard hd install helper v0.3 可以吧镜像文件(dmg, iso都可以,其它的没试过)刻录到硬盘的分区上,配上变色龙,就可以实现从硬盘安装系统(一般都能)。
window环境下的,系统引导工具,第一启动项要设为光驱才可以进入,可引导系统安装。
这是mac系统修改键盘映射的一款工具软件,解压安装后在系统偏好设置那里找到。可以自己建立不同的映射关系。可以充当魔兽等游戏的改键工具,不过大部分都要自己去实现,网上有说明,所以这里只是提供工具的下载。...