【发布时间】:2013-09-06 08:27:26
【问题描述】:
我的目标是让两个独立的应用程序(一个使用 Java,另一个使用 C++,都在同一台机器上)从同一个 SQLite 数据库中读取。 C++ 实现已经可以工作,并且具有我进行该通信所需的所有方法。它使用 sqlite3.h 库。
第一个合理的做法是在 Java 应用程序中使用 JDBC 或 SQLite 包装器。问题是我的嵌入式系统 (POSIX) 的资源非常有限,当我在其中包含必要的 *.jar 时,执行简单查询需要很长时间。我已经试用了 Christian Werner 的 Xerial JDBC、sqlite4java、sqljet 和 Javasqlite Wrapper/JDBC 驱动程序。 JavaVM 加载和执行所有内容的时间太长,性能是一个关键问题。
作为一种解决方法,我已经管理 Java 应用程序使用系统命令并运行 sqlite3 命令外壳来执行查询并获得答案。我正在寻找更“时尚”和安全的解决方案。
我实际上需要 Java 应用程序来使用 C++ 中的方法。它们只返回一个字符串,因为这些方法被实现为只返回一个值。经过大量的 IPC 阅读,我得出结论,我必须使用命名管道。问题是我必须使用 JNI,但我有一个初级 Java 级别,而此时,JNI 对我来说太复杂了。在这种情况下,JNI 是不是有点矫枉过正?
我可以在这里实施什么其他解决方案?
【问题讨论】:
-
也许你会在这里找到一些东西:stackoverflow.com/q/165945/2617699 和这里stackoverflow.com/q/5900887/2617699
-
JNI 是一种简单直接的方式,我更喜欢它。您也可以使用套接字(UDP/TCP)或共享内存来代替管道。