Java-приложение с JNI - PullRequest
       1

Java-приложение с JNI

0 голосов
/ 14 февраля 2011

Я новичок в Java и хочу разработать Java-приложение, которое будет работать непрерывно, как сервер.

Возможно ли в Java разработать приложение без интерфейса пользователя, которое будет работать непрерывно?Это приложение также должно иметь поддержку JNI, поэтому функции, экспортируемые с использованием JNI, должны вызываться из приложения C ++.

Кто-нибудь может подсказать мне указатели для запуска?

Помощь приветствуется, спасибо.

Вишал Н

Ответы [ 5 ]

1 голос
/ 14 февраля 2011

Конечно, можно работать без интерфейса. Судя по всему, вы хотели бы создать свое приложение Java в виде консольного приложения, а затем запустить его как демон службы Windows / Linux (вы не упомянули ОС). Существуют java-сервисы-обертки, которые позволяют вам запускать свой java-код как сервис (например, этот ) или вы можете написать свой собственный.

Я рекомендую эту книгу , чтобы выучить JNI. Хотя это звучит как то, что вам нужно, на самом деле это не JNI, а интерфейс, предоставляемый через TCP или нечто подобное, что другое приложение C ++ может использовать для общения с вашим приложением. JNI не позволяет другому процессу общаться с вашим приложением, он расширяет ваш Java-код функциональностью, которая не может быть реализована в самой Java, например. вызов некоторой функции Windows API.

Edit:

Кстати, простое Java-приложение Hello World, подобное этому, является консольным приложением:

public class HelloWorld { 
   public static void main(String[] args) { 
      System.out.println("Hello, World");
   }
}
1 голос
/ 14 февраля 2011

Да, вы можете разрабатывать приложения без интерфейса в Java.

Я ожидаю, что сервер приложений будет обрабатывать несколько запросов, транзакций, безопасности, жизненного цикла, постоянства и т. Д.

Если ответ Да , тогда я выберу маршрут Java EE для реализации ваших требований.Я реализую свою бизнес-модель с использованием EJB3.0 и разверну на одном из серверов приложений, например Glassfish, JBoss и т. Д., Который будет поддерживать все функции, описанные выше, без повторного изобретения колеса.
Примечание: Решениетакже предоставит гибкость в раскрытии ваших удаленных методов с использованием WebService, CORBA или JMS.
Если ответ Нет , тогда я мог бы создать свое собственное автономное приложение серверного типа, которое будет прослушивать какой-либо порт и обмениваться данными по некоторому заказному протоколу.

Для поддержки JNI -Я ожидаю, что вам придется написать простую оболочку JavaBean или прокси.Этот прокси будет затем использоваться JNI.

0 голосов
/ 05 июня 2017

Да, вы можете запускать Java как службу (демон).Вы можете просто запустить свой код и «демонизировать» его.Таким образом, он будет отключен от сеансов терминала и будет работать в фоновом режиме.

Посмотрите здесь:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo022

, чтобы увидеть, как вы можете запустить службу внутриC.

А здесь, чтобы узнать, как запустить сервисную часть в Java:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo029

Веселитесь с JNI!

0 голосов
/ 14 февраля 2011

Вы, безусловно, можете разработать Java-приложение без пользовательского интерфейса;Я думаю, что большинство людей согласятся с тем, что это проще, чем разработать с пользовательским интерфейсом.

Что касается JNI, если я понимаю вопрос, вы получаете его задом наперед;используя C ++ в качестве примера, JNI позволяет вам вызывать код C ++ из Java, а не код Java из C ++.

0 голосов
/ 14 февраля 2011

Да.

Возможно ли в Java разработать приложение без интерфейса, которое будет работать непрерывно?

Создание основного потока потока или кода, который будет выполняться вечно.

Это приложение также должно иметь поддержку JNI, поэтому функции, экспортируемые с использованием JNI, должны вызываться из приложения C ++.

да, посмотрите на здесь

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