Использование функции / класса Java от Delphi - PullRequest
3 голосов
/ 21 июня 2010

В delphi я пытаюсь вызвать функцию из внешней Java-программы.Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

Стандартный процесс вызова нативного кода - JNI . Поиск в JNI и Delphi покажет несколько страниц, подробно описывающих, как это делается, например this и this

Что является более желательным (настройка некоторого сервера вне процесса (как Питер уже подробно описал, поэтому я пропустил это) или использование JNI для вызова библиотеки, зависит от того, как часто (и в реальном времени) вам это нужно, и от допустимая сложность установки / настройки

2 голосов
/ 21 июня 2010

Если это работающее приложение Java, вам необходимо предоставить доступ к этой функции. Существует множество возможных решений.

Если это всего лишь 1 функция или очень ограниченная функциональность, то прослушивание скромного сокета или именованного канала - это решение, которое в настоящее время недооценено и отчасти забыто.

На следующем шаге интеграции я бы посмотрел на асинхронную передачу сообщений. Легко встроить сервер activemq или аналогичный или запустить его в отдельном процессе. Это имеет ряд преимуществ, таких как то, что запрос легко синхронизируется в процессе Java, просто используя один поток прослушивания, что поведение хорошо определено, когда программа Java недоступна или Delphi. Им очень легко управлять, и вы получаете инструменты бесплатно.

Встроенный веб-сервер Jetty - это простое и надежное решение, в котором реализован сервлет для выполнения ваших задач. Опять же, большая часть сложности теперь решается с помощью вездесущих и стандартных протоколов.

Кроме того, существуют синхронные методы RPC, такие как COM, Corba, SOAP, которые я лично считаю слишком сложными, подверженными ошибкам и неприемлемым для обслуживания, чтобы использовать их для специальной связи между процессами. Если вы хотите создать полную инфраструктуру общения друг с другом, это может стоить того, но не говорить о двух программах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...