2010-06-21 54 views
3

在delphi中,我試圖從外部Java程序中調用一個函數。有什麼辦法可以做到嗎?使用Delphi的Java函數/類

+0

請檢查http://stackoverflow.com/questions/2997495/using-a-java- 您可能會發現一些幫助 – Bharat 2010-06-21 11:53:19

回答

2

如果它是一個正在運行的Java應用程序,則需要公開對該函數的訪問。有無數的解決方案可能。

如果它只有1個功能或功能非常有限,那麼在謙虛的套接字或命名管道上監聽是一種解決方案,目前它被低估並被遺忘。

在下一步的整合中,我會看看異步消息傳遞。嵌入activemq服務器或類似工具很容易,或者在單獨的進程中啓動它。這具有許多優點,例如通過簡單地使用一個監聽線程就可以輕鬆地在Java進程中同步請求,在Java程序不可用或Delphi編譯時可以很好地定義該行爲。這很容易管理,你可以免費獲得儀器。

嵌入式Jetty網絡服務器是一個簡單可靠的解決方案,並實施一個servlet來完成您的出價。現在通過使用無處不在的和標準協議來處理很多複雜問題。

然後有像COM,Corba,SOAP這樣的同步RPC方法,我個人發現這個方法太複雜,容易出錯並且維護不友好,不適用於進程之間的臨時通信。如果你想建立一個完整的基礎設施,彼此交談可能是值得的,但不要讓2個節目交談。

+1

SOAP服務器可以使用幾行代碼在標準Java 6中實現,請參閱「使用Web服務實現Delphi和Java集成」 - https://mikejustin.fogbugz.com /default.asp?W5 – mjn 2010-06-21 13:12:45

3

調用本機代碼的標準過程是通過JNI。在JNI和Delphi的搜索將揭示細節如何做到這一點的多個頁面,像thisthis

什麼是更可取的(設立一些列程序服務器(如彼得已經詳細,所以我跳過的),或者使用JNI調用庫取決於你需要這樣做的頻率(以及如何實時)以及允許的安裝/配置複雜度