初次使用JNI做项目

howesen 2010-02-06 11:11:28
初次使用JNI做JAVA的正规项目,在经历了两个星期的痛苦之后,先后遇到了几十类问题,今天终于都解决了。
主要有几下问题:
1、C++的组件封装问题;对于未知源码,只知接口的DLL进行调用,需要自己写一个C++的程序来调用。
2、第三方平台非常复杂,由于是基于C++写的,可能存在内存泄漏的问题,怎么找出来?
3、怎么测试自己写的C++程序与JAVA互调没有问题?
4、这些DLL和相关资源文件在JAVA项目实际布署中怎么放置?我使用的第三方平台可达100M,含加密狗;系统结构比较复杂;
5、多线程情况下第三方组件的承压能力、自己写的C++承压能力以及JAVA的承压能力测试。
6、优化JVM,通过调整JVM的参数调优;此间遇到了C++里使用栈过深(约使用到近1M),导至启动不了的问题,后给JVM添加-Xss400k,才启动。
7、自己封装的C++里面怎么处理JAVA传入的字符?哪些内存是java需要释放的,哪些是C++需要释放的。
8、JAVA类型与C++类型互换的问题,以及合理地设置缓存字段来处理大量的findClass等C++操作JVM的情况。
9、由于我不会C++,才开发了这么久。回过头来看看,两个工作日也许就能完成,这也是一教训。
...全文
222 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianhaozh 2011-12-07
  • 打赏
  • 举报
回复
我也在学JNI,做项目要用啊。。。。
txzsp 2011-11-11
  • 打赏
  • 举报
回复
给LZ推荐一个JNI的使用,有源码和大量注释,LZ一定要试下:
http://download.csdn.net/detail/txzsp/2285294
zfq642773391 2010-05-18
  • 打赏
  • 举报
回复
学习当中
lizhongyi188 2010-05-18
  • 打赏
  • 举报
回复
正想学习中,没遇到过这样的项目!
jiashoudong1120 2010-05-18
  • 打赏
  • 举报
回复
能不能把你的用JNI做的项目给我 看看 作个参考啊 老兄我也正在发愁呢!!!
宁静-夏天 2010-05-18
  • 打赏
  • 举报
回复
COM组件 有操作系统的局限

一般都是通过corba 或者 webservice 来玩。

corba比webservice要灵活点,就是玩起来不方便。

楼主的你这些问题已经不是很容易回答了。毕竟你已经钻进去了,很多知道的人也只是随便玩了下。不一样啊。
Defonds 版主 2010-02-09
  • 打赏
  • 举报
回复
引用楼主 howesen 的回复:
初次使用JNI做JAVA的正规项目,在经历了两个星期的痛苦之后,先后遇到了几十类问题,今天终于都解决了。
主要有几下问题:
1、C++的组件封装问题;对于未知源码,只知接口的DLL进行调用,需要自己写一个C++的程序来调用。
2、第三方平台非常复杂,由于是基于C++写的,可能存在内存泄漏的问题,怎么找出来?
3、怎么测试自己写的C++程序与JAVA互调没有问题?
4、这些DLL和相关资源文件在JAVA项目实际布署中怎么放置?我使用的第三方平台可达100M,含加密狗;系统结构比较复杂;
5、多线程情况下第三方组件的承压能力、自己写的C++承压能力以及JAVA的承压能力测试。
6、优化JVM,通过调整JVM的参数调优;此间遇到了C++里使用栈过深(约使用到近1M),导至启动不了的问题,后给JVM添加-Xss400k,才启动。
7、自己封装的C++里面怎么处理JAVA传入的字符?哪些内存是java需要释放的,哪些是C++需要释放的。
8、JAVA类型与C++类型互换的问题,以及合理地设置缓存字段来处理大量的findClass等C++操作JVM的情况。
9、由于我不会C++,才开发了这么久。回过头来看看,两个工作日也许就能完成,这也是一教训。
多谢共享。C++ 与 Java 混合编程
tangwei070 2010-02-08
  • 打赏
  • 举报
回复
Nx
yueguangkai001 2010-02-08
  • 打赏
  • 举报
回复
只有顶了,我也要搞JNI拉
focusforce 2010-02-08
  • 打赏
  • 举报
回复
曾经有一个IBM Rational工具叫做dtjcb(Development Tool for Java-COM Bridge),可以搭建JAVA和COM组件的桥梁,实现互调,使用前绑定,比后绑定效率高。它以eclipse的插件形式开放的,不过貌似现在不更新了。
看了下你碰到的问题,感觉第三方产品的问题多了点,这样子太费精力啊,还是搞个性能好点的吧。
nicai00 2010-02-08
  • 打赏
  • 举报
回复
引用 2 楼 bleibo 的回复:
那就顶吧


头像不错啊
Bleibo 2010-02-06
  • 打赏
  • 举报
回复
那就顶吧
sotom 2010-02-06
  • 打赏
  • 举报
回复
好多,看着晕。
这四种情况下你会用到本书: 1、 在Java程序中复用以前写过的C/C++代码。 2、 自己实现一个java虚拟机 3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。 4、 把一个虚拟机实现整合到用C/C++写的程序中。 本书是写给开发者的。JNI在1997年第一次发布,本书总结了SUN工程师和大量开发者两年来积累的经验。 本书介绍了JNI的设计思想,对这种思想的理解是使用JNI的各种特性的基础。 本书有一部分是JAVA2平台上面的JNI特征的规范说明。JNI程序员可以把这部分用作一个手册。JVM开发者在实现虚拟机的时候必须遵守这些规范。 JNI的部分设计思想来源于Netscape的Java Runtime Interface(JRI)。 第一章 简介 JNI是JAVA平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分: 1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。 2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。 3、 11~13章是关于JNI的技术规范。可以把这两章当作一个手册。 本书尽量去满足各类读者的需要。指南面向初学者,手册面向有经验的人和自己实现JNI规范的人。大部分读者可能是用JNI来写程序的开发者。本书会假设你有JAVA,C/C++基础。 本章的剩余部分介绍了JNI的背景,扮演的角色和JNI的演化。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧