LINUX.ORG.RU

java: Грамотная инициализация GUI приложения.

 ,


0

1

В общем в течение нескольких лет пришел к схеме:

- класслоадер ядра:
  - загрузка конфига
  - инициализация самописной реализации ServiceLocator и DI каркаса)
- класс лоадер для каждого плагина
  - инициализация плагина
= рассылка сообщения CoreLoaded
- загрузка служб плагинов и ядра
- класслоадер приложения
  - построение GUI
  - загрузка и построение главного меню по файлу описания
  - построение окна
= рассылка сообщения GuiLoaded

- плагины, модули приложения регистрируют свои javax.swing.Action в реестре, где их ждут подписчики меню кнопок и т.п. (таким образом у нас строится меню, а action в него вешается когда загрузится соотв. модуль, это будет уже после отображения главного окна)
сейчас сдул пыль с древнего проекта состоящего из OSM карты и редактора линий на ней, но согласно вышеозначенной схеме там сервисного кода будет раз в пять больше непосредственно полезного пользователю, как быть?

Может есть какиенибудь фреймворки для Java? (писать на .net не охота, что заработало на линуксе придется юзать G# и следовательно тащить на win mono)

Deleted

Возникает вопрос, а действительно ли там нужна функциональность этого сервисного кода?

Begemoth ★★★★★
()

Как вариант к выше изложенным Netbeans и Eclipse Platform - использовать OSGI. +OSGI хорошо потом может быть интегрировано как в Eclipse так и в Netbeans, а также развернуто на сервере приложений, если GUI на Swing отделено от логики и есть возможность развернуть Web-интерфейс.

Для упрощения работы рекомендую Maven - очень экономит время.

olegk ★★
()
Ответ на: комментарий от static_lab

адский оверхед, под нетбинс я писал там мало того что куча хлама, так еще и простейшие вещи делаются чрез гланды. Например для тойже регистрации пункта меню нельзя использовать простого наследника javax.swing.Action, а потом еще потребуется писать сочинение из аннотаций (до 7 версии из xml), и прится с их дурацкий lookup.

Deleted
()
Ответ на: комментарий от Begemoth

вот, но плагины нужны, с одной стороны, с другой инициализация приложения без DI (или аналогов) превращается в жуткие макароны кода, а вконце концов начинают возникать ситуации когда что-то еще не инициализированно, а оно уже нужно.

реестр action также нужен, без него будет меню и кнопочки на тулбаре придется настраивать в коде вручную.

Deleted
()
Ответ на: комментарий от Deleted

maven - убожество

Возможно, но лучше ничего нет)

olegk ★★
()
Ответ на: комментарий от Deleted

OSGI - также слишком монструозен для сабжевой задачи.

OSGI добавит не более 1 Мб к вашему дистрибутиву (Felix + SCR + ConfigAdmin). На мой взгляд - это очень не много для Java. Что касается платформ Eclipse, Netbeans, то тут уже от 10 Мб минимум.

Если 1 Мб много, то проект очень маленький и и тогда проще не в коде рисовать, а формочки в Netbeans, аля Delphi) И не искать фреймворки для Java, так как они все монструозны

olegk ★★
()
Ответ на: комментарий от olegk

формочки в Netbeans, аля Delphi

там уродство получается, да и формочек нет, есть окно с меню и картой, все остальное генеристя в рантайме или лезет из плагинов

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.