Топ контрибуторов
loading
loading
Знаете ли Вы, что

Свои вопросы для тестов можно добавлять на странице с информацией о тесте. При этом для некоторых тестов добавление вопросов закрыто

Лента обновлений
ссылка May 29 19:12
Комментарий от GeorgeMayoh:
Согласен. Я на сеньорские вопросы 10/13 ответил без ...
ссылка May 29 11:20
Добавлен вопрос в тест ООП в C++
ссылка May 29 02:05
Комментарий от yaroslav1112:
Ну попробуйте этот код вставить в VS и посмотрим ка...
ссылка May 29 01:55
Комментарий от yaroslav1112:
Вопрос конечно отличный, но если бы я увидел, что к...
ссылка May 28 01:42
Добавлен вопрос в тест C++ - Основы
Статистика

Тестов: 153, вопросов: 8597. Пройдено: 460403 / 2252890.

Полезные советы начинающему разработчику на Java ME

head tail Статья
категория
Мобильные технологии
дата11.02.2010
авторris
голосов11

Вступление

Несмотря на широкую гамму существующих ныне и устоявшихся платформ разработки для мобильных устройств (Symbian, Android, BREW, iPhone и т.п. ) и недавно появившихся новых (например, Bada) Java Me остается доминирующей платформой разработки (как на нативном уровне так и с использованием эмуляторов под иные платформы).


В данной статье я абстрагируюсь от кода (я уверен, что найдутся люди, которые это могут до вас донести лучше меня), а хочу перейти напрямую к практической части начала разработки Java Me приложений и трудностям, которые могут возникнуть на этом пути.


Немного о Java Me

Библиотека классов, используемых в Java Me, является сильно урезанным вариантом стандартной библиотеки Java SE, плюс несколько классов ориентированных на работу под устройства с ограниченными ресурсами.


Несмотря на то, что сама платформа постоянно совершенствуется за счет расширения списка спецификаций (JSR), а, следовательно, и функциональных возможностей программных продуктов, основанных на данной платформе, классикой является поддержка конфигурации CLDC 1.0 и профиля MIDP 2.0. Ориентируясь в своей разработке на эту конфигурацию, вы гарантируете, что ваше приложение будет работать на подавляющем большинстве современных мобильных устройств с поддержкой Java Me.


Использование расширенных спецификаций (например, JSR-75) может привести к невозможности запуска вашего мобильного приложения (далее мидлета) на некоторых устройствах. Подробный список всех сертифицированных для работы с платформой Java Me устройств и поддерживаемых ими конфигураций, спецификаций и профилей можно ознакомится в данной таблице http://javaverified.com/files/Table_of_Supported_Devices_1.26.3.pdf (данные на февраль 2010 года)


Обратите внимание, что каждый из производителей (Nokia, Sony Ericsson и т.д.), как правило, имеет свое SDK для разработки под платформу Java Me. Использование специфических библиотек и классов из SDK производителей, конечно, даст вам некоторые новые возможности при программировании под аппараты этого производителя, но может привести к полной неработоспособности на остальных устройствах.


Среда разработки

ПО для разработки под платформу Java Me можно условно разделить на 2 класса: общее и специфические среды разработки под конкретного производителя (Motorola, LG и т.д.).


К общим можно отнести: Net Beans( http://netbeans.org/) и Eclipse (http://www.eclipse.org/) с установленными плагинами для разработки Java Me приложений.


К специфическим: MOTODEV SDK for Java ME (http://developer.motorola.com/docstools/motodevstudio/javame/) и подобные ей от других производителей.


Мой выбор пал на Net Beans, так как эта среда показалась мне наиболее простой в плане настройки для разработки на ней мобильных приложений.


Сопутствующее ПО

Помимо среды разработки вам так же понадобится установленная на вашем ПК Java SE SDK (версия, чем выше – тем лучше) и J2ME Wireless Toolkit (WTK) - набор утилит и эмуляторов для создания и отладки мидлетов.


Так же на специализированном сайте любого из крупных производителей мобильных устройств можно, как правило, найти свое SDK и набор эмуляторов.


Мне наиболее удобным представилось SDK от Sony Ericsson (http://developer.sonyericsson.com/cws/devworld/downloads/download/dw-99962-semcjavamecldcsdk2506?cc=gb&lc=en).


Чтиво

Как настроить SDK для работы в среде NetBeans, а так же ответы на другие вопросы, которые появляются у начинающих разработчиков в среде Net Beans под платформу Java Me можно почитать на сайте по ссылке http://netbeans.org/kb/trails/mobility.html.


В качестве базовой литературы могу посоветовать книгу Beginning Java™ME Platform Ray Rischpater


Так же, хоть и слегка устаревшем, но полезным для начинающего Java Me разработчика может оказаться сайт http://www.mobilab.ru на котором много статьей соответствующей тематики.


Подводные камни

Основным недостатком Java Me как платформы, является ее полная не стандартизированность на уровне аппаратной поддержки. То что отлично работает на одних аппаратах, далеко не факт, что будет работать на других. Эмулятор – лишь средство для удобной отладки, любое приложение следует проверять в работе на реальных устройствах и чем их будет больше - тем лучше (ну если вы, конечно, не пишите под конкретное устройство).


Кроме того, готовьтесь к тому что если, вы поставите свое Java Me приложение на другую платформу через эмулятор (Symbian или Windows Mobile) то будет достаточно трудно обеспечить её 100% работоспособность. Могут проявится ошибки, которых не было при работе на обычных телефонах, например, на КПК под управлением Window Mobile может неправильно обрабатываться CheckBox или вообще не запускаться приложение, а под Symbian – происходить самопроизвольный выход из приложение при переходе с формы на форму и т.п. Как правило, такие ошибки не отлавливаются и связаны с конкретной реализацией эмулятора на данной платформе. Кроме того, работа через эмулятор может не позволить использовать некоторые системные функции, например на КПК под Windows Mobile, не всегда получится программно управлять камерой с помощью MMAPI (мультимедийная API на Java ME).


Следующим важным моментом при написании приложения является тот факт что программно нельзя узнать размер экрана (если, конечно, этого не позволяет SDK конкретного производителя), на уровне стандарта эту функцию планируют ввести лишь в Midp 3.0, дата выхода которого доселе неизвестна. Поэтому остается либо писать приложение под конкретный размер экрана, либо добавлять возможность настройки экрана из приложения либо делать интерфейс на стандартных компонентах среды Java Me.


Для бизнес приложений, где не требуется особой графики, последнее решение является наиболее предпочтительным. Одинаковой картинки на всех типах и размерах экранов вы, конечно, все равно не добьетесь, но по крайней мере все элементы экрана будут доступны (использование стандартных компонентов подразумевает и использование стандартной системы слоев и автоматически будет скалировать картинку под размер вашего экрана).


Для игровых приложений, как правило, используется класс GameCanvas, который дает несколько более удобные методы для рисования и работы с картинкой на экране, но это все равно вам не даст возможность создать универсальное приложение под любой девайс.


Теперь о спецификациях. Чем более новое устройство, тем, как правило, больший набор спецификаций оно поддерживает. Но учтите, что чем меньший набор спецификаций требуется для вашего приложения – тем для большего спектра устройств оно окажется работоспособным. Список спецификаций и устройств можно просмотреть по ссылке предоставленной выше.


Одним из неприятных моментов при разработке сетевых приложений является необходимость поддержки ими сертификатов. Так например, старые модели Sony Ericsson имеют проблемы при получении информации по https протоколу, с использованием программных методов (работа через браузер телефона не в счет, потому что браузер “ходит” в сеть через корпоративный шлюз). Данную проблему можно решить “зашив” в телефон соответствующие сертификаты, но оно вам надо??? ;-)


Многие особенности реализации Java Me на конкретном аппарате, конкретного производителя могут иметь недокументированные особенности (особенно этим, как ни странно, страдает Nokia). Так например, не подписанный мидлет (об этом немного позже) не сможет быть запущен на данном аппарате, в следствии того что он требует использование запрещенного для неподписанных мидлетов аппаратного API (камера, отправка sms и т.п.). Выхода тут два… или “гуглим” и ищем решение или подписываем мидлет.


Также следует обратить внимание на тот факт, что вы имеет дело с устройством у которого ограничены системны ресурсы. Так, некоторые мобильные телефоны, не могут открывать приложения объемом более 128 кБ. И достаточно трудно просчитать, сколько на самом деле вашему мидлету понадобится памяти для работы (обычно калькуляция идет по следующей схеме: память требуемая для запуска JVM + память для разворачивая приложения + память динамически выделяемая при необходимости в процессе работы приложения). Поэтому, следует как можно экономней расходовать и без того малые системные ресурсы.


Ну и на последок, хотелось бы рассказать о “подписи" Java Me приложений.


Любое Java Me приложение не имеющее подписи, считается не сертифицированным и требует наличия подписи. При установке такого приложения на аппарат возникнет сообщение о потенциальной его опасности (не верьте, Java Me приложения в принципе не могут быть опасны, так как не имеют доступа напрямую не к одним из системных функций аппарата), а то и вообще запрет на его инсталлирование. Так же, при вызове функций связанных с системным API – возникнет сообщение о необходимости подтверждения полномочий от пользователя этих действий, некоторые аппараты позволяют в настройках указать в каких случаях эти сообщения должны появляться, а в каких нет.


Итак, вы создаете серьезный коммерческий продукт или просто не хотите, чтобы подобные сообщения огорчали вам жизнь??? Тогда вам необходимо пройти процесс “подписания” мидлета. Процесс этот не бесплатный. Более подробно о процессе, его этапах и расценках можно почитать на ресурсе http://javaverified.com/. Следует заметить, что более универсальное приложение – требует большего количества тестов (а значит и больших растрат) при подписании мидлета.


Послесловие

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


Любое приложение должно создаваться если не под конкретную модель или группу моделей аппаратов, то под определенный профиль, конфигурацию и список поддерживаемых спецификаций.


И тестироваться, тестироваться и еще раз тестироваться на реальных аппаратах. Эмулятор – хороший помощник в разработке, но плохой помощник в тестировании.


В статье я не углублялся в код и рассмотрении таких “тонкостей” как инструменты для модульного тестирования или отладки на девайсе приложения, а просто, постарался сократить для начинающего разработчика время, которое он проведет в сети при поиске необходимого для старта материала. Так же поделился проблемами и способами их решения возникшими в процессе моей трудовой деятельности как начинающего Java Me разработчика. Надеюсь, что кому-то эта информация окажется полезной.


Будьте крепки и настойчивы в своем намерении освоить далеко не самую простою платформу Java Me

Если Вам понравилась статья, проголосуйте за нее

Голосов: 11  loading...
art   TexasRanger   AlanTi   generator   c0nst   night_amir   BSOD   bu_ma_ga   sheff4ik   krazh   sergiom