Загрузка ресурсов один раз в Java - PullRequest
2 голосов
/ 27 января 2010

У меня есть проект на Java, требующий загрузки больших файлов (корпус для NLP) для каждого выполнения. Давайте назовем его методом load (), и он вызывается только один раз, и метод process (текст String) может вызываться несколько раз, если они принадлежат классу Tagger.

Моя проблема в том, что всякий раз, когда мне нужно настроить некоторый код, кроме класса Tagger, и перекомпилировать / запустить проект, где проект вызывает метод process (), мне приходится ждать около 10 или более секунд, чтобы получить эти ресурсы загружен. Могу ли я сохранить эти ресурсы или сам класс Tagger, чтобы я мог редактировать любой код и перекомпилировать их, не выгружая класс Tagger и не выгружая ресурсы?

Мой вариант - использовать веб-сервисы или некоторые сервлеты, но есть ли альтернативные решения? Или библиотекам проще создавать эти сервисы? Поскольку решение требуется только на этапе разработки, но не требуется после развертывания, когда пользователи действительно загружают ресурсы один раз во время выполнения программы и завершают работу при закрытии.

Спасибо

Ответы [ 5 ]

2 голосов
/ 27 января 2010

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

http://java.sun.com/j2se/1.4.2/docs/guide/jpda/enhancements.html#hotswap

1 голос
/ 02 февраля 2010

Вот руководство по перезагрузке классов с помощью динамического загрузчика классов, что, вероятно, является лучшим выбором: http://www.zeroturnaround.com/blog/reloading-objects-classes-classloaders/

0 голосов
/ 31 января 2010

Я думаю, что JRebel может сделать работу за меня легко. Но вышеприведенные подходы могут заменить этот коммерческий инструмент. Спасибо.

0 голосов
/ 27 января 2010

Что ж, если вы используете динамический язык, такой как Groovy , вы можете выдавать операторы для компиляции во время выполнения, пока эти ресурсы уже загружены.

Также, если вы редактируете JSP, я знаю, что контейнер сервлетов обычно прислушивается к изменениям файла и перекомпилирует страницу, если найдет какие-либо.

0 голосов
/ 27 января 2010

Если замедление связано с обработкой данных, возможно, попробуйте сериализовать класс tagger и сохранить его на диск. Загрузка класса при запуске программы.

...