Охота за J2ME-дружественным IoC-контейнером началась!

Я нахожусь на начальных этапах проекта Blackberry/J2ME, и наряду с другими ограничениями, присущими этой замечательной платформе, отсутствие поддержки отражения и языковой уровень 1.3 означают, что подавляющее большинство существующих контейнеров IoC непригодно для использования. (У Google есть Guice для Android без AOP, но даже для этого требуется поддержка аннотаций).

Таким образом, пространство контейнеров IoC в J2ME довольно ограничено. Одна структура, которая привлекла мое внимание, называется Signal Framework, и она выглядит довольно многообещающе. Он пытается оставаться концептуально близким к IoC Spring Framework, реализуя небольшое подмножество его функций, и делает это, не полагаясь на модификацию байт-кода или вызывая синтаксический анализ xml во время выполнения. Вместо этого он обрабатывает XML-файлы конфигурации во время сборки для создания Java-кода, реализующего эту функциональность IoC.

Вообще говоря, генерация кода во время сборки кажется очень мудрым подходом к мобильным приложениям — и если моему приложению приходится меньше анализировать XML на устройстве пользователя, это тоже здорово!

Итак, каков ваш опыт реализации IoC на J2ME/CLDC и как вам удалось избавиться от горького привкуса во рту?


person Paul Milovanov    schedule 22.06.2009    source источник


Ответы (5)


Мы использовали Spring ME в TomTom. Это сработало очень хорошо.

person Wilfred Springer    schedule 13.08.2009

В J2ME вам необходимо максимально сократить количество используемых классов, чтобы уменьшить размер файлов jar. Это приводит ко многим конструктивным компромиссам, не последним из которых является гибкость.

Нелегко приспособиться к J2ME-разработке, когда вам приходится выбрасывать в окно то, что вы узнали (и высоко оценили) в отношении объектно-ориентированного программирования. Правда в том, что если вы хотите, чтобы приложения могли работать на большом количестве телефонов, вам нужно быть очень чувствительным к ограничениям устройств.

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

person Grouchal    schedule 24.06.2009
comment
Danke shön за вашу проницательность, Grouchal :) Я согласен с вашими мыслями о необходимости отказаться от некоторых предпочтений в дизайне приложений на J2ME. Однако причина, по которой я думаю, что могу позволить себе использовать инфраструктуру IoC, заключается в том, что приложение, которое я разрабатываю, будет нацелено на более мощные устройства на базе CLDC, такие как недавние Blackberry и J2ME на S60 (а также Android, с некоторыми моды). - person Paul Milovanov; 26.06.2009
comment
Идея ограничений, налагаемых CLDC 1.0, была фантастической в ​​то время, когда CLDC 1.0 задумывался; Однако сегодня кажется, что большинство интересующих устройств намного мощнее и имеют больше памяти. Таким образом, вопрос о том, можем ли мы перенести хорошие методы разработки, такие как использование IoC, в разработку Java для мобильных устройств, вполне закономерен. И, как я уже сказал, если это можно сделать с помощью генерации кода во время сборки, а не во время выполнения, и это обеспечивает значительное улучшение ясности организации кода — почему бы не использовать это? - person Paul Milovanov; 26.06.2009

Возможно, вам будет интересно ознакомиться с FallME. Несмотря на то, что я не использовал его лично, он выглядит как бессмысленная структура, созданная специально для платформы J2ME.

person paracycle    schedule 27.07.2009

Я наткнулся на Spring ME во время конференции JUG в Нидерландах (у меня не было вообще никакого опыта).

person Richard Kettelerij    schedule 27.07.2009

Signal Framework.

Обновление: к сожалению, Signal сейчас очень недоработан, поэтому я использую Israfil IOC с пользовательскими дополнениями.

person Paul Milovanov    schedule 14.07.2009