Подтвердить что ты не робот

Как оптимизировать время запуска небольших программ командной строки Java?

Возможный дубликат:
Как ускорить запуск Java VM (JVM)?

В течение дня я должен выполнить серию небольших и быстрых программных команд Java. В Windows для запуска простой Java-программы из командной строки (например, Hello World) иногда требуется около 5 секунд из-за накладных расходов на запуск процесса java.exe. Программы занимают второе место, но накладные расходы на запуск программ доминируют над общим временем выполнения. Есть ли способ оптимизировать это?

Есть ли что-то вроде оболочки Java, которую я могу использовать для выполнения исполняемых программ? Как и в оболочке Python?

4b9b3361

Ответ 1

Это может быть излишним, но вы можете настроить сервер приложений, такой как Tomcat или Glassfish, и запустить свои программы на сервере. Насколько я понимаю, одной из первоначальных целей Java Servlets было исключение функции запуска, связанной с традиционными программами CGI.

Я не очень разбираюсь в Java, поэтому я не знаю, доступны ли более простые решения. Но Tomcat и др. Уже доступны, поэтому вам не нужно будет писать свою собственную серверную программу.

Изменить: кто-то еще указал на аналогичный вопрос Как ускорить запуск Java VM (JVM)? Один из ответов на этот вопрос упоминает Nailgun, который выглядит как почти идеальное решение вашей проблемы.

Ответ 2

Один из альтернатив может заключаться в том, чтобы попробовать запустить оболочку Groovy для динамического вызова методов main в классах. Он хорошо работает с Java, а также с синтаксическим кодом Groovy.

Ответ 3

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

Ответ 4

Медленное время запуска - одна из давних проблем с java; но он улучшается. Одна вещь, которая выполнима (но сложна), поддерживает длительный Java-процесс для обработки команд. Используйте клиент с более легким весом (написанный, возможно, script), чтобы отправлять команды на длительный сервер.