Встала задача разработать интерфейс к нашей платежной системе на сотовые телефоны. Опыт разработки приложений подобного класса у меня уже был и весьма отрицательный. Первое мое приложение было собрано с помощью волшебника Netbeans. Весь процесс разработки свелся к тасканию окошек и раставлению стрелок между ними. В итоге, по прошествии нескольких циклов разработки Netbeans отказывался грузить такую огромную схему, а разобраться в хитросплетениях самогенерированного кода было уже не судьба. Благо что проект успел закончиться, прежде чем он окончательно вышел бы из под контроля.
За новое приложение на платформе J2ME я уже взялся с колокольни своего опыта разработки на Java. Бодро нашлись удобные инструменты, вроде готового окошечного виджетового фреймворка Kuix, IOC контейнера israfil-micro-container и даже ORM фреймворк Floggy. Для связи воспользовался SOAP библиотека kSOAP 2.
Отдельно про плюсы и минусы каждой части приложения:
Kuix - большой виджетовый фреймворк с активным коммунити, которое задает одни и теже вопросы на форуме по 10 раз как минимум. Так что любая проблема встреченная вами при работе с этим фреймворком будет обсосана со всех сторон и часто не решена. Фреймворк преследует цель одинаково работать на максимальном количестве устройств. В нашем же случае можно было ограничиться изделиями фирмы Nokia и не тестировать приложение на зоопарке других девайсов. Больше всего меня впечатлила поддержка css данной библиотекой. Оказалось очень удобно сначала сформировать workflow приложения без оглядки на внешний вид, а потом обработать напильником. Работа с данным фреймворком очень похожа на веб разработку. К минусам можно отнести большой вес и необходимость большой вычислительной мощности. На бюджетных сотках за 1700 сом приложение неумолимо выбрасывает OutOfMemoryException.
Israfil - IOC контейнер. В принципе больше нечего о нем сказать. Рома однажды сказал: "нафиг он тебе нужен". Да Рома, он нафиг не нужен, куда удобней работать с singleton'ом ObjectCreator.
Floggy - ORM. Прикольная штука. Кормишь ей объект, кушает. Просишь обратно, отрыгивает. Работает именно так как должна. Мне понравилось. Тем более у меня был опыт работы с API RMS. Мне оно активно не понравилось ибо приходится много думать и много тестировать. Зачем лишний геморой?
kSOAP 2 - Поддержка данной библиотеки сдохла еще в 2006, но к моему удивлению они смогли написать что-то, что работает. Единственный минус - библиотека не умеет работать с cookie. Пришлось ее научить, это оказалось не сложным, просто переписал пару классов. Но тот факт, что можно работать с RPC SOAP радует. Можно целиком избавиться от слоя сервлетов, которые мне честно говоря уже очень надоели. Я уже нашел библиотеку работы с SOAP на JS. Как показала практика бизнес логику удобно держать в виде web сервисов, тогда можно писать различные интерфейсы: веб, для мобильников, десктопные и с легкостью объединять с другими системами, что в бизнес приложениях не редкость.
Как было уже упомянуто, большая часть наших клиентов ходит с сотками очень бюджетного класса, на которых приложение отказалось работать. Я был огорчен неверным построением требований. Но благо это обернулось малой кровью. Благодаря слоистой структуре изменениям подвергся только слой представления. Всего 2 дня работы и интерфейс был переписан на привычный lcdui. Пришла мысль чего я парился? На lcdui разработка куда легче, работает быстрее и весит меньше... разве что интерфейсы получаются однообразные. Но для бизнес приложения это невеликий недостаток.
Когда я рассказывал Роме о приложении примерно в тех же словах, что и вам, он спросил: "а как тестируешь?". Я не тестирую, вернее тестирую, но вручную, у меня нет автоматических тестов на данное приложение. Почему? Сначала я попробовал их писать на привычном jUnit, но столкнулся с проблемой, что приложение запускается на J2ME, а тесты на J2SE. А между этими платформами параллелей не много... Существует тестовый фреймворк для J2ME, но мне показалось излишним париться с тестами, когда фактического функционала немного и проще перед релизом просто проверить все тестовые случаи вручную.
Пару лет назад я читал статью, где утверждалось, что J2ME умер, так как появились сотки достаточно мощные, чтобы запускать J2SE. Но вот, 2 года прошло, а нам экономически выгодно писать приложения на J2ME. Пользователей и сейчас очень много. Среди кассиров почти не встретишь людей, грузящих еды через iPhone или GAndroid...
PS: Никита привет, ты единственный, кто подписан на RSS моего блога, сделай в google reader общей статьей :)
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий