Лучший способ построить систему плагинов с Java

Или вы просто используете Date.parse "some random date". Вы получите исключение ArgumentException, если он не выполнит разбор (=> Дата недействительна).

См., Например, http://santoro.tk/mirror/ruby-core/classes/Date.html#M000644

141
задан Marcus Leon 23 October 2009 в 13:31
поделиться

6 ответов

Сначала Вам нужен интерфейс, который все плагины должны реализовать, например,

public interface Plugin {
    public void load(PluginConfiguration pluginConfiguration);
    public void run();
    public void unload();
    public JComponent getConfigurationPage();
}

, Сменные авторы должны тогда связать свои плагины в файлы JAR. Ваши приложения открывают файл JAR и могли тогда использовать атрибут из декларации JAR или списка всех файлов в файле JAR для нахождения класса, который реализует интерфейс Plugin. Инстанцируйте того класса, плагин готов пойти.

, Конечно, можно также хотеть реализовать некоторую игру в песочнице так, чтобы плагин был ограничен в том, что это может и не может сделать. Я создал маленькое тестовое приложение занесенный в блог об этом ), который состоит из двух плагинов, один из которых запрещен доступа к локальным ресурсам.

101
ответ дан Bombe 23 October 2009 в 13:31
поделиться
  • 1
    Это позволит пользователю выполнять произвольные команды с административными привилегиями, таким образом, Вы могли точно также сделать его членом группы локальных администраторов. – Ansgar Wiechers 12 September 2013 в 07:13

Используйте OSGi.

Это - основа системы плагина Eclipse. Равноденствие является реализацией Eclipse (лицензировал EPL), и , Felix является реализацией Проекта Apache (лицензируемая Лицензия Общественности Apache).

Eclipse обеспечивает конкретный пример, что OSGi может ответить на моменты, которые Вы упомянули (или Вы могли просто создать свое приложение сверху Eclipse RCP, если Вы хотите полный стек Eclipse/SWT/JFace).

40
ответ дан chatellier 23 October 2009 в 13:31
поделиться
  • 1
    @AnsgarWiechers - в его собственных словах, I am searching for an alternative for running a batch file by right clicking on it and running as an administrator. i want to automate it from another batch file. - если он в состоянии выполнить его путем щелчка правой кнопкой и работать как администратор, тогда он уже, знает пароль администратора - это похоже на sudo на Linux. Другая вещь состоит в том, что это не может использоваться без пароля администратора. – user93353 12 September 2013 в 07:22

С тех пор 1.6, был java.util. ServiceLoader, который может использоваться, если Вы хотите кодировать свою собственную простую систему.

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

29
ответ дан Steen 23 October 2009 в 13:31
поделиться
  • 1
    Правда, но не важный. sudo может быть ограничен конкретными командами, runas /savecred can' t. При удалении подсказки пароля, Вы эффективно снимаете барьер между администратором и обычным пользователем. Лучший подход мог бы создавать запланированную задачу. – Ansgar Wiechers 12 September 2013 в 08:15

Существует также JPF (Платформа Плагина Java) .

16
ответ дан рüффп 23 October 2009 в 13:31
поделиться
  • 1
    @AnsgarWiechers - в этом случае у пользователя есть доступ к корню/паролю администратора. В Linux, если у него есть пароль root, он может изменить sudoers файл для удаления любого ограничения на sudo. – user93353 12 September 2013 в 08:20

Я думаю, что рекомендация OSGi для решения вышеупомянутой установленной проблемы является чрезвычайно плохим советом. OSGi является "правильным выбором", но для сценария как тот выше, я думаю или JPF или некоторая минималистическая платформа собственной разработки достаточны.

9
ответ дан Steen 24 October 2009 в 00:31
поделиться

Несколько лет назад я начал подобный проект и надеюсь, что скоро он будет готов. Меня вдохновили такие проекты, как NetBeans и Eclipse, но тем временем он изменился на что-то немного другое. OSGi сейчас выглядит неплохим выбором, но у меня не было возможности сравнить его с моим проектом. Он похож на упомянутый выше JPF, но в то же время отличается во многих отношениях.

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

Я построил проект, имея в виду несколько целей:

  • это не так ' Вам нравится идея получать уведомление от вашего веб-приложения о том, что есть более новая версия, она была загружена, и для ее установки требуется ваше разрешение? Я знаю, что мне это нравится).
  • базовый мониторинг приложений о состоянии системы, уведомления по электронной почте в случае сбоев
3
ответ дан 23 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: