在delphi中,我试图从外部Java程序调用一个函数。有没有办法做到这一点?
答案 0 :(得分:3)
调用本机代码的标准流程是JNI。搜索JNI和Delphi将显示多个页面,详细说明如何完成此操作,如this和this
什么是更理想的(设置一些流程外的服务器(比如彼得已经详细,所以我跳过它)或使用JNI来调用库取决于你需要的频率(和实时),以及允许的安装/配置复杂性
答案 1 :(得分:2)
如果它是正在运行的Java应用程序,则需要公开对该函数的访问权限。有无数的解决方案可行。
如果只有1个功能或功能非常有限,那么收听简单的套接字或命名管道是一种目前被低估且有点遗忘的解决方案。
在集成的下一步中,我将看一下异步消息传递。嵌入activemq服务器或类似服务器或在单独的进程中启动它很容易。这有许多优点,例如通过简单地使用一个监听线程,在Java进程中很容易同步请求,当Java程序不可用或Delphi one时,行为很好地定义。它非常易于管理,您可以免费获得仪器。
嵌入式Jetty网络服务器是一种简单可靠的解决方案,可以实施servlet来进行出价。现在,通过使用无处不在的标准协议来处理很多复杂性。
然后有一些同步RPC方法,如COM,Corba,SOAP,我个人觉得这些方法过于复杂,容易出错并且维护不便于用于进程之间的临时通信。如果你想建立一个完整的基础设施,彼此交谈可能是值得的,但不要让2个程序说话。