我的目标是让两个独立的应用程序(一个在 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 是不是有点矫枉过正?
我可以在这里实施什么其他解决方案?