Re[3]: Контейнер для модуляризации
От: abch-98-ru Россия  
Дата: 14.07.09 09:09
Оценка: 3 (2)
ДП>>2) Поддерживает ли Apache Felix фрагменты?

uhh>Насколько помню — да, с этим проблем нет.


afaik, felix поддерживает пока только простые фрагменты без export/import-ов и нативного кода("Fragments with ...")
Re[3]: Контейнер для модуляризации
От: abch-98-ru Россия  
Дата: 14.07.09 09:31
Оценка: 14 (1)
N>>OSGi по любому. Скоро он станет стандартом дефакто.
B>Как там продвигается война с альтернативным Сановским стандартом?
"с_водки с полей" — sun
"с_водки с полей" — not sun

т.е. альтернативного(по отношению к osgi) стандарта у сана нет, есть просто небольшой jdk refactoring, на который не стоит заводить jsr.
а вот после него(рефакторинга) уже можно поговорить о том, какой стандарт для модуляризации имеет смысл поддерживать. clear ?
Re: Контейнер для модуляризации
От: unix_hater  
Дата: 09.07.09 13:10
Оценка: 2 (1)
ДП>2) Микро-ядро JBoss — взять JBoss и выдрать из него всё, кроме механизмов работы с модулями.


JBoss вроде сами решили с OSGI подружиться, даже начали свою реализацию делать.

"JBoss Microcontainer meets OSGI"

http://www.jbossworld.com/2008/downloads/pdf/wednesday/JBOSS_8-10pm_AS5MC_Dimitris_Andreadis_etc.pdf
Re: Контейнер для модуляризации
От: Nicht Россия  
Дата: 09.07.09 15:28
Оценка: 2 (1)
Здравствуйте, Дмитрий Писаренко, Вы писали:

OSGi по любому. Скоро он станет стандартом дефакто.
Re: Контейнер для модуляризации
От: Blazkowicz Россия  
Дата: 09.07.09 16:00
Оценка: 2 (1)
Здравствуйте, Дмитрий Писаренко, Вы писали:

OSGi Equinox, конечно, рулит но в Java 7 тоже обещает какую-то родную модульность. Имеет смысл присмотреться.
Re: Контейнер для модуляризации
От: ddimon Россия  
Дата: 10.07.09 05:32
Оценка: 2 (1)
На мой взгляд, реальных, "готовых к употреблению" возможностей действительно две, но несколько иные:

1. Упомянутый вами OSGi
2. Библиотека Java Plug-in Framework — нестандартная, но простая в использовании и легковесная альтернатива OSGi.

Всё остальное будет скорее всего либо заброшенными, не доведёнными до ума проектом, либо будет нуждаться в "доработке топором и напильником" (как в случае с JBoss).

//Дмитрий Ольшанский

Здравствуйте, Дмитрий Писаренко, Вы писали:

ДП>Здравствуйте!


ДП>Я хочу сделать одну программу, и изначально разбить её на несколько модулей так, чтобы можно было


ДП>а) включать/отключать некоторые модули во время выполнения (run-time) для того, чтобы сэкономить ресурсы,


ДП>б) заменять модуль версии X на модуль версии Y во время выполнения, не трогая (не компилируя,

ДП>не останавливая) другие модули, если они не связаны с заменяемым модулем,

ДП>в) добавлять функционал во время выполнения, добавляя новые модули (опять-таки, не трогая уже установленные).


ДП>Контейнер, который будет обеспечивать эти 3 функции, должен соответствовать следующим критериям:


ДП>1) Легковесность — контейнер не должен требовать слишком много ресурсов (пустой контейнер без

ДП>дополнительных функций должен весить не более 10 МБ).

ДП>2) Универсальность — важно, чтобы можно было устанавливать любые модули, от окошка на базе Swing,

ДП>модуля для связи с базой данных до веб-сервера.

ДП>3) Желательно, но не обязательно: В конфигурации модуля можно прописать, что он (модуль) будет работать

ДП>только, если установлен другой модуль. Если при инсталляции во время выполнения требуемый модуль отстутствует в
ДП>контейнере, то контейнер сообщает об этом пользователю и не запускает инсталлируемый модуль.

ДП>4) Обязательно: Контейнер должен быть с открытым исходником, разрешающим применение в коммерческих приложениях.


ДП>Я нашёл 2 принципиальные возможности сделать такой контейнер:


ДП>1) Каркас на базе OSGi, например, Apache Felix, Equinox или Knopflerfish


ДП>2) Микро-ядро JBoss — взять JBoss и выдрать из него всё, кроме механизмов работы с модулями.


ДП>Вопрос: Какие ещё варианты есть и какие из них кажутся Вам оптимальными?


ДП>Заранее благодарен


ДП>Дмитрий Писаренко
Re[2]: Контейнер для модуляризации
От: uhh  
Дата: 14.07.09 05:46
Оценка: 2 (1)
Здравствуйте, Дмитрий Писаренко, Вы писали:

ДП>Здравствуйте!


ДП>Всем спасибо за ответы!


ДП>Я немного ознакомился с OSGi и возникли такие вопросы:


ДП>1) Какие есть существенные отличия между Equinox и Apache Felix?


Если пользоваться исключительно стандартными сервисами, то по сути никаких. А так — у Equinox есть достаточно немалое количество расширений, которыми иногда удобно воспользоваться.

При использовании OSGI, пожалуй, наибольшее количество неприятностей связано с ClassLoader-ом. Использование OSGI делает сложным работу, например, с ORM-ами без доработки напильниками (ORM не видит пользовательских классов). С одной стороны, можно расширять classpath hibernate-а при помощи fragment bundles, но в этом случае количество фрагментов катастрофически растет. Для борьбы с этим в eclipse сделали свои расширения: http://wiki.eclipse.org/Context_Class_Loader_Enhancements

Проблема такого рода специфична не только относительно к ORM, но и для всех библиотек, так или иначе использующих reflection при работе с пользовательскими классами. Танцы с бубном вокруг GWT

Пользоваться ими, или нет — решать каждому, но все-таки они добавляют удобства.

ДП>2) Поддерживает ли Apache Felix фрагменты?


Насколько помню — да, с этим проблем нет.
Контейнер для модуляризации
От: Дмитрий Писаренко Россия http://dmitripisarenko.me
Дата: 09.07.09 09:30
Оценка:
Здравствуйте!

Я хочу сделать одну программу, и изначально разбить её на несколько модулей так, чтобы можно было

а) включать/отключать некоторые модули во время выполнения (run-time) для того, чтобы сэкономить ресурсы,

б) заменять модуль версии X на модуль версии Y во время выполнения, не трогая (не компилируя,
не останавливая) другие модули, если они не связаны с заменяемым модулем,

в) добавлять функционал во время выполнения, добавляя новые модули (опять-таки, не трогая уже установленные).

Контейнер, который будет обеспечивать эти 3 функции, должен соответствовать следующим критериям:

1) Легковесность — контейнер не должен требовать слишком много ресурсов (пустой контейнер без
дополнительных функций должен весить не более 10 МБ).

2) Универсальность — важно, чтобы можно было устанавливать любые модули, от окошка на базе Swing,
модуля для связи с базой данных до веб-сервера.

3) Желательно, но не обязательно: В конфигурации модуля можно прописать, что он (модуль) будет работать
только, если установлен другой модуль. Если при инсталляции во время выполнения требуемый модуль отстутствует в
контейнере, то контейнер сообщает об этом пользователю и не запускает инсталлируемый модуль.

4) Обязательно: Контейнер должен быть с открытым исходником, разрешающим применение в коммерческих приложениях.

Я нашёл 2 принципиальные возможности сделать такой контейнер:

1) Каркас на базе OSGi, например, Apache Felix, Equinox или Knopflerfish

2) Микро-ядро JBoss — взять JBoss и выдрать из него всё, кроме механизмов работы с модулями.

Вопрос: Какие ещё варианты есть и какие из них кажутся Вам оптимальными?

Заранее благодарен

Дмитрий Писаренко
Дмитрий Писаренко

http://dmitripisarenko.me
Re[2]: Контейнер для модуляризации
От: Blazkowicz Россия  
Дата: 09.07.09 15:55
Оценка:
Здравствуйте, Nicht, Вы писали:

N>OSGi по любому. Скоро он станет стандартом дефакто.

Как там продвигается война с альтернативным Сановским стандартом?
Re[3]: Контейнер для модуляризации
От: Nicht Россия  
Дата: 10.07.09 06:44
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Nicht, Вы писали:


N>>OSGi по любому. Скоро он станет стандартом дефакто.

B>Как там продвигается война с альтернативным Сановским стандартом?

Сильно не слежу. Но были слухи что они от него откажутся в пользу OSGi. Судя по странице JSR-277 они с 2006 года там залипли. Так что войны то никакой и нет.
Re: Контейнер для модуляризации
От: Дмитрий Писаренко Россия http://dmitripisarenko.me
Дата: 13.07.09 11:19
Оценка:
Здравствуйте!

Всем спасибо за ответы!

Я немного ознакомился с OSGi и возникли такие вопросы:

1) Какие есть существенные отличия между Equinox и Apache Felix?

2) Поддерживает ли Apache Felix фрагменты?

Заранее благодарен

Дмитрий
Дмитрий Писаренко

http://dmitripisarenko.me
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.