我一直在阅读Skype4Java (java api for skype),并注意到他们使用jni来访问skype客户端。
直观地说,我假设java中已经有一个标准库,它有一个操作系统敏感的jni实现来访问其他进程。我想找一个,但是找不到。
有这样的库吗?如果没有,有没有在操作系统中访问另一个进程的最佳实践,而不一定是skype客户端?
发布于 2008-10-03 03:49:36
我认为也许你需要定义一下“访问”对你来说意味着什么。如果您正在谈论普通的进程间通信,那么套接字或JNI确实是您最好的选择。
Garth关于使用内存映射文件的评论很有趣-我曾多次将MMF和虚拟文件用于C应用程序之间的IPC,但我从未想到Java的MMF实现可能与本机OS虚拟文件系统兼容。这些类型的虚拟文件通常需要非常重要的设置,所以如果它能正常工作,我会很惊讶……
总而言之,除非你在应用程序之间传输大量数据,否则使用套接字可能是最通用和最有效的方式。请确保考虑到主机操作系统和Java VM之间的字节顺序:-)
发布于 2008-10-02 09:51:00
从Java1.4开始,您可以使用内存映射文件与另一个进程交换任意信息。详情请参见java.nio.MappedByteBuffer。
发布于 2008-10-02 09:56:16
这并不完全是您想要的,但可能会有很大帮助: java.net上的Java Native Access项目。
https://stackoverflow.com/questions/161529
复制相似问题