JAJA程序有类似exe+dll的机制么?

J2EE 码拜 10年前 (2015-05-10) 931次浏览 0个评论
 

VC可以将一些基础的功能封装在dll中,供不同的程序调用。

pak+jni不是,因为jni大部分是用C++开发的。
.so是不?

12分
Java程序可以通过工具打包成独立运行的EXE
JNI和JNA可以调用其他语言制作的DLL
.so是linux下的“dll”,一般是用C/C++的编译器制作的

用Java配合COM,可以实现EXE和DLL反调用Java制作的JAR包里的功能
实际运用时有各种各样的问题,建议不要这么做

不担心运行速度的话,可以考虑WebService
参考:http://nopainnogain.iteye.com/blog/791525/

个人认为,Java天生就是相对上层的语言,很多底层的功能都是靠JNI调用本地的C语言的库函数实现的
反过来的需求应该是相对的比较少的

3分
具体应用场景是什么?
具体应用场景是什么? 
——-
理论研究。
我是C++程序员
混合编程是未来的发展方向,所以想了解JAVA的优劣。
JNI可以调用C++类的成员函数不?
如果可以,
JNI的C类可以被JAVA的类继承不?
11分
引用 楼主 he_zhidan 的回复:

VC可以将一些基础的功能封装在dll中,供不同的程序调用。

pak+jni不是,因为jni大部分是用C++开发的。
.so是不?

Java 可以将一些基础的功能封装在jar中,供不同的程序调用。

Java程序有类似exe+dll的机制,就是jar+jar

3分
引用 1 楼 Android_iPhone 的回复:

Java程序可以通过工具打包成独立运行的EXE
JNI和JNA可以调用其他语言制作的DLL
.so是linux下的“dll”,一般是用C/C++的编译器制作的

用Java配合COM,可以实现EXE和DLL反调用Java制作的JAR包里的功能
实际运用时有各种各样的问题,建议不要这么做

不担心运行速度的话,可以考虑WebService
参考:http://nopainnogain.iteye.com/blog/791525/

个人认为,Java天生就是相对上层的语言,很多底层的功能都是靠JNI调用本地的C语言的库函数实现的
反过来的需求应该是相对的比较少的

大赞

11分
引用 5 楼 he_zhidan 的回复:

JNI可以调用C++类的成员函数不?
如果可以,
JNI的C类可以被JAVA的类继承不?

Q:JNI可以调用C++类的成员函数不?
A:一般不是直接去调用的,而是Java调用自己做的JNI DLL,JNI DLL再调用C++的成员函数
JNI DLL很像一个Wrapper,起着承上启下的作用

Q:JNI的C类可以被JAVA的类继承不?
A:站在Java语法的层面应该是可以,但是大多数情况下都没有必要,或者说不建议这么做
为了程序条理清晰,便于维护,JNI的C类一般都是和DLL一一对应的
既然一一对应了,再引入继承,会导致DLL那边修改的时候,不好判断对Java这边的影响,引入不必要的麻烦

参考:
http://bbs.bccn.net/thread-437689-1-1.html
2楼是JNI版的示例程序

Java里大约就是这么一个调用的声明,继承或者不继承都没啥大意义,知道它对应着JNI DLL里面的一个函数就足够了
private static native void shutdownMonitor();

Windows下:
Java程序调用VC7的dll
安卓下
安卓程序调用so都实现了。

安卓下,4个工程1个apk调用3个jar也成功了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JAJA程序有类似exe+dll的机制么?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!