мне нравится JSON главным образом, потому что это настолько кратко . Для веб-контента, который может быть gzipped, это - не обязательно грандиозное предприятие (следовательно, почему x HTML так популярен). Но существуют случаи, где это может быть выгодно.
, Например, для одного проекта я передавал информацию, которая должна была быть сериализирована и передана через XMPP. Так как большинство серверов ограничит объем данных, который можно передать в единственном сообщении, я нашел полезным использовать JSON по очевидной альтернативе, XML.
, Поскольку добавленная премия, если Вы знакомы с Python или JavaScript, Вы уже в значительной степени, знает JSON и может интерпретировать его без большого обучения вообще.
Я рискну НЕТ , хотя я большой поклонник OSGi. Если вы не работаете с другими пакетами OSGi или у вас есть конкретная проблема, которую вы не можете легко решить без этой кувалды.
Преимущество заключается в элегантном разделении путей к классам (IMHO). Если вам нужны разные версии одного и того же JAR / класса, например, из-за того, что вы обновляете определенные части приложения во время его работы, или из-за того, что вы комбинируете множество сторонних модулей, тогда OSGi отлично подойдет.
Это не легко достичь, а с OSGi сделать это непросто. Он сделан чистым, но за счет другого слоя в стеке среды. И много работы по изучению и поддержке.
Не говоря уже о документации, не особенно удобной для новичков.
Я бы сказал, как всегда, "это зависит от".
Ваша среда
Рассмотрим существующую команду без опыта работы с OSGI ( которые с гордостью считают себя опытными разработчиками, которые "добиваются цели". Есть вероятность, что они испытают серьезную боль или медленный старт.
МНОГИЕ (больше, чем вы думаете) разработчики не знакомы с такими инструментами сборки, как Ant или Maven , и когда они есть, они используют только ограниченные функции этих инструментов сборки.
Создание пакетов OSGI лучше всего выполнять с Eclipse , ] Задачи Ant или Подключаемый модуль Maven BND VS сценарий или написанный вручную манифест для архива jar.
Небольшие приложения
Для небольших приложений OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую как JPF или SPI . Вы также можете использовать отражение и простой пользовательский загрузчик классов.
Большие приложения
Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.
По моему опыту, после переписывания многих приложений, лучше подумать о модульности на ранних этапах проекта.
Другое проблемы
Развертывание : OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую как JPF или SPI . Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.
Большие приложения
Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.
По моему опыту, после переписывания многих приложений, лучше подумать о модульности на ранних этапах проекта.
Другое проблемы
Развертывание : OSGI вносит ненужную сложность, в то время как вы можете использовать динамические языки, такие как Jython и т. Д., Или инфраструктуру плагинов, такую как JPF или SPI . Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.
Большие приложения
Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.
По моему опыту, после переписывания многих приложений, лучше подумать о модульности на ранних этапах проекта.
Другое проблемы
Развертывание : Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.
Большие приложения
Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.
По моему опыту, после переписывания многих приложений, лучше подумать о модульности на ранних этапах проекта.
Другое проблемы
Развертывание : Вы также можете напрямую использовать отражение и простой пользовательский загрузчик классов.
Большие приложения
Большие приложения могут выиграть от OSGI, особенно когда они написаны с нуля. ИМХО, интеграция OSGI в существующее приложение больше похоже на введение патча для обеспечения модульной архитектуры.
По моему опыту, после переписывания многих приложений, лучше подумать о модульности на ранних этапах проекта.
Другое проблемы
Развертывание : Так и в любых приложениях. Если вы привыкли развертывать приложения Java Web Start, развертывание не является проблемой. Если вы привыкли к OSGI, развертывание не должно вызывать беспокойства.
Когда дело доходит до развертывания в производственной среде, в любом приложении время от времени возникают проблемы, что естественно.
Управление версиями : Есть много способов обеспечить управление версиями в приложении. Но если вы используете управление версиями только как «информацию», а не как инструмент (требование управления зависимостями), управление версиями не имеет значения.
Повторное использование : При использовании OSGI вы склонны писать свой код для повторного использования, но любой хорошо написанный API разработан с учетом повторного использования кода.
Eclipse - это пример номер один успешного большого приложения, написанного с использованием OSGI. Есть и другие большие / хорошие инструменты, которые не используют OSGI и являются модульными.
Заключение
Во многих модульных фреймворках сложно обрабатывать зависимости, останавливать / запускать / удалять / устанавливать функции во время выполнения, без перезапуска приложения . Вы играете с настраиваемым загрузчиком классов, хуками выключения и запуска и т. Д.
OSGI дает вам такую гибкость за небольшие деньги, IMHO.