|
|
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Нужно написать приложение на Java c GUI и возможностью подключать плагины. Причём при подключении все изменения должны применяться сразу, без перезапуска программы (то есть надо, чтобы можно было сразу работать с этим плагином). И пока я даже не знаю, как это делать, в какую-то сторону копать. И ещё одно. При подключении плагина будет меняться главная форма программы (там кнопки новые будут появляться, поля, и прочее). Можете подсказать, как лучше всего это сделать. Вроде слышал о методе repaint(), он подойдёт? ЗЫ Сторонние библиотеки использовать нельзя, только базовые, что есть в Джаве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:03 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichв какую-то сторону копать. Рядом тема про вьювер таблиц в бд. С неё начните. Потом кнопку в файл и из файла. А потом заказчик откажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:10 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichЗЫ Сторонние библиотеки использовать нельзя, только базовые, что есть в Джаве. лолшто? Вообще Eclipse RPC вполне подходит. Но что вы там сами собирались за велосипед изобретать - сказать сложно. Можно скрипты применить. Можно и самому плагины напедалировать, но если вы не знаете как, то и сделать просто у вас не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:12 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichВроде слышал о методе repaint(), он подойдёт? Требования к вашей задаче слегка не кореллируют с вашими знаниями Java. Метод repaint() не подойдёт и к вашей проблеме вообще никакого отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:13 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMaxLichЗЫ Сторонние библиотеки использовать нельзя, только базовые, что есть в Джаве. лолшто? Вообще Eclipse RPC вполне подходит. Но что вы там сами собирались за велосипед изобретать - сказать сложно. Можно скрипты применить. Можно и самому плагины напедалировать, но если вы не знаете как, то и сделать просто у вас не выйдет. Вроде бы есть еще OSGI, но не уверен, что оно еще живое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:24 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Точно. В иклипсе из коробки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:29 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Это тестовое задание. На джава джуниора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:39 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichЭто тестовое задание. На джава джуниора. Ну, либо вы что-то не так поняли в деталях, либо не выяснили нюансов. Но на джуниора не похоже. Какая функциональность плагинов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:44 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLich, Возможно, есть смысл на SPI посмотреть https://docs.oracle.com/javase/tutorial/ext/basics/spi.html#limitations-of-the-service-loader-api Пример, но он не красивый в методе extendClasspath() - так не делают. https://stackoverflow.com/questions/16102010/dynamically-loading-plugin-jars-using-serviceloader Можно на каждый плагин заводить загрузчик https://stackoverflow.com/questions/15204913/how-to-add-an-external-jar-file-to-the-classpath-dynamically-at-runtime Можно написать свой загрузчик, в который можно добавлять плагины https://docs.oracle.com/javase/tutorial/deployment/jar/jarclassloader.html Стоит упомянуть, что добавление плагинов, это не единственная проблема. Их корректное удаление на горячую тоже ещё то веселье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:52 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLich, Если функциональность у плагинов примитивная, возможно, есть смысл их писать на JavaScript http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 14:55 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichЭто тестовое задание. На джава джуниора. Тогда я бы смотрел на наличие Моска. Т.е. сохранил кнопку в файл плагин и прочитал. Без библиотек. Сериализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:37 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Еще есть beanshell можно на ходу закидывать код из файла в интерпретатор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:23 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Это простейший калькулятор. Плагины должны реализовывать разные операции над числами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:39 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichBlazkowicz, Это простейший калькулятор. Плагины должны реализовывать разные операции над числами. Тогда JavaScript - очевидное и простейшее решение. Заводишь каталог с плагинами. Мониторишь его https://docs.oracle.com/javase/tutorial/essential/io/notification.html новые скрипты - запускаешь результат запуска обрабатываешь в нужные тебе данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:42 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Уточнил про удаление плагинов - такое не требуется реализовывать (то есть по желанию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:43 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну загружать плагины можно по нажатию кнопки. Как бы это не проблема. Но по поводу ДжаваСкрипта - не знаю, в задании говорилось о чистом Java SE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:45 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
MaxLichНу загружать плагины можно по нажатию кнопки. Как бы это не проблема. :) MaxLichНо по поводу ДжаваСкрипта - не знаю, в задании говорилось о чистом Java SE. https://docs.oracle.com/javase/7/docs/api/javax/script/ScriptEngine.html Такое ощущение что я вас должен уговаривать. Делайте как хотите. Самые простые варианты я уже привел. https://www.javaworld.com/article/2071777/design-patterns/add-dynamic-java-code-to-your-application.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:52 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
В свою бытность студентом я в одном из курсачей делал подключение кастомной математической логики к свинговому приложению через обычные классы скомпиленные и реализующие определенный интерфейс: в нужный момент открывалось диалоговое окно, человек руками выбирал нужный ему .class (автоматизировать нельзя было, ибо не все модули всегда были нужны и важен порядок, определяемый оператором). Помнится, веб версию я тогда не довел до конца из-за геммороя с класслоадером (в версии под j2ee я тогда с томкатом помучался и не победил его), но в j2se с гуем на свинге все прошло гладко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 20:08 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
кстати, вот этот "калькулятор" для нечеткой логики - весело и грустно одновременно на это смотреть сейчас, но "плагины" работают https://habrahabr.ru/post/136227/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 20:13 |
|
||
|
Как подключать плагины к Java-приложению
|
|||
|---|---|---|---|
|
#18+
mars478кстати, вот этот "калькулятор" для нечеткой логики - весело и грустно одновременно на это смотреть сейчас, но "плагины" работают https://habrahabr.ru/post/136227/ Там по сути - динамической загрузке в рантайме ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 20:30 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39538721&tid=2122521]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 375ms |

| 0 / 0 |
