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语言的库函数实现的
反过来的需求应该是相对的比较少的

解决方案 »

  1.   

    我是C++程序员
    混合编程是未来的发展方向,所以想了解JAVA的优劣。
      

  2.   

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

  3.   

    Java 可以将一些基础的功能封装在jar中,供不同的程序调用。Java程序有类似exe+dll的机制,就是jar+jar
      

  4.   


    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();