![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| VSergeyV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 9.5.2006 Где: Новосибирск Репутация: нет Всего: 3 |
Как реализуется модульность приложения?
Необходимо сделать приложение, в последствие часть функций должны быть оформлены в виде модулей, причем при поставке не используемые заказчиком модули ему не поставляются |
|||
|
||||
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 1 Всего: 8 |
1. При чем здесь GUI ?
2. Ну, например, возможно поставлять индивидуальный файл - описание (тот же xml подойдет) и использовать динамическую загрузку классов. Можно почитать про механизмы разработки plug-ins. Можно использовать индивидуальный класс-диспетчер, "знающий", что именно доступно, а что нет, и как себя вести при недоступности той или иной возможности. Ну, вот здесь еще как-то можно притянуть GUI на предмет делания серыми недоступных пунктов меню. При разработке таковых модулей придется обратить особое внимание на их полную независимость от других, или обеспечивать механизм реакции на недоступность того или иного модуля, полностью прозрачный для пользователя. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Обычно для этого задействуются такие вещи, как:
1) Интерфейсы (имею в виду концепцию языка). Например, каждый модуль должен реализовывать интерфейс Plugin с методами getName(), init(), paint()... 2) Reflection API для динамической загрузки главного класса плагина. 3) По возможности однотипные конфигурационные файлы. В принципе, всё то же самое уже высказал carper. Кроме того, есть ещё такая вещь, как Java Plug-in Technology, но в целесообразности её использования я не уверен. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
У меня возник тот же вопрос.
Мне бы хотелось реализовать систему с гарячей заменой классов. Те классы (.java фалы или если сложно то .class) сбрасывались бы в какую-то папку и подхватывались по мере их необходимости в работе приложения. Такое возможно или все таки надо реализовывать это через плагин систему? Второе не очень хорошо так как в приложении порядка 100-200 классов которые могут часто менятся. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Вроде, java и так уже "гарячо" отжигает - класслоадер подгружает и выгружает классы по мере необходимости. А плагинность ( она же модульность ) удобна, когда разные команды вносят свои лепты в успех. "С миру по нитке". P.S. Наверное, неплохо бы "необходимость" сначала конкретизировать. Это сообщение отредактировал(а) COVD - 18.1.2009, 21:00 |
|||
|
||||
| GirroKepasso |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Вот интересная статья на тему плагинов/расширений http://wiki.apidesign.org/wiki/CodeInjection
Еще можно посмотреть в сторону NetBeans Lookup там несколько jar'ов надо взять из NetBeas RCP Platform и в своем приложении можно будет использовать механизм Lookup |
|||
|
||||
| vdweller |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Сам сейчас интересуюсь подобной проблемой, пока смотрю в сторону OSGi сервисов. Общий смысл - есть сторонний OSGi фреймоворк внутри которого разворачиваются т.н. OSGi bundles. Т .е. сервис разбивается на эти самые бандлы и потом эти бандлы деплоятся внутри фреймворка c возможностью горячей замены и т.п. Из бесплатных фреймворков - Apache Felix - http://felix.apache.org/site/index.html и Knopflerfish - http://www.knopflerfish.org/documentation.html. Если у кого то есть подобный опыт, хотелось бы задать пару вопросов. Это сообщение отредактировал(а) vdweller - 19.1.2009, 12:10 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |