Nano Hash - криптовалюты, майнинг, программирование

Расширение приложения Java с помощью пользовательских плагинов

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

Я делал это, используя файлы jar и URLClassLoaders. Проблема с этим подходом заключается в том, что загруженные классы имеют повышенные привилегии, когда они должны иметь разрешение только на чтение из URL-адреса.

Каков наилучший способ расширить Java-приложение с помощью подключаемых модулей?


Ответы:


1

OSGi может быть подходящим вариантом, но он также может быть слишком продвинутым/сложным для того, что вы хотите сделать. Я использовал JPF в небольшом проекте пару лет назад. Мне понравилось.

http://jpf.sourceforge.net/

07.05.2011
  • Правда, с OSGi может быть немного сложно разобраться. 07.05.2011
  • Я читал немного о JPF несколько дней назад, но я ничего не видел для управления разрешениями. Приложение будет загружать пользовательские ненадежные плагины. 07.05.2011
  • Что вы подразумеваете под доверенным/ненадежным пользователем? Как OSGI поможет вам в этом? От чего вы хотите защитить пользователей? 07.05.2011
  • Я имею в виду, что пользователи могут установить ненадежный плагин, и он может считывать данные с диска и отправлять их на удаленный сервер, потому что нет способа ограничить разрешения с помощью загрузчика классов. Я не знаю, сможет ли OSGi мне помочь. 08.05.2011

  • 2

    Проверьте OSGi, это то, что eclipse использует для управления плагинами. Существуют различные реализации на выбор — у eclipse есть своя собственная. OSGi будет управлять проблемами загрузчика классов, которые могут быть сложными.

    07.05.2011
  • Нужно ли использовать Eclipse для использования OSGI? Я предпочитаю NetBeans. 07.05.2011
  • Нет. OSGi — это спецификация API. Eclipse Foundation управляет реализацией библиотеки. Вы можете просто включить библиотеку и разрабатывать в другой среде. Ваша самая большая проблема будет заключаться в том, насколько легко вы сможете интегрироваться с существующей архитектурой. 07.05.2011
  • Это не проблема. 90% моего приложения нарисовано на бумаге. Я начал с механизма плагинов, потому что это основная часть. 07.05.2011
  • Ознакомьтесь также с предложением jpf от @Kaj. Я не использовал его, но, поскольку вы только начинаете разработку, лучше попробовать несколько вариантов. 07.05.2011
  • Конечно, но, как я уже сказал, я не видел ничего, что могло бы контролировать безопасность и разрешения плагинов с помощью JPF. Тоже без присмотра. Последняя модификация была в 2007 году. 07.05.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..