我在Cocoa上有一个用objective-c编写的应用程序,有一些UI。我打算编写另一个可以在后台运行并自动启动的Java应用程序(基本上是一个dameon)。然后Cocoa应用程序将与Java应用程序“通信”,以定期或按需开始执行某些任务。那可行吗?如果是这样,在编程复杂性方面,两者之间最好的沟通方式是什么?插座?通过档案?命名管道?
答案 0 :(得分:2)
这当然可行。有许多潜在的机制,但它们都归结为选择一些进程间通信机制。但是你为什么要将java应用程序作为守护进程呢?显而易见的是,您的Cocoa应用程序只需运行Java应用程序。
如果事实证明由于某种原因 - 比如java应用程序有很多持久状态,或者需要很长时间才能启动 - 那么最简单的方法可能是使用命名管道,/ k /一个FIFO。创建FIFO后,您只需从UI进程写入它,然后从Java中读取它作为文件。这具有额外的优势,它提供了一个自然的事件队列(这就是它的用途,这就是它被称为FIFO的原因。)
答案 1 :(得分:0)
你如何定义“最佳”?最快的?最简单的设置?交易安全吗?
也许最简单的方法是让您的java应用程序在单独的线程上启动http或xmlrpc服务器。有很多客户端和服务器库可以提供帮助。作为附带好处,它使java应用程序更容易测试,因为您可以使用curl等命令行工具在开发过程中模拟cocoa应用程序。