Корисні поради початківцю розробнику на Java ME

Вступ

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

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

Трохи про Java Me

Бібліотека класів, що використовуються в Java Me, є дуже урізаним варіантом стандартної бібліотеки Java SE плюс кілька класів орієнтованих на роботу під пристрої з обмеженими ресурсами.

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

Зверніть увагу, що кожен із виробників (Nokia, Sony Ericsson і т.д.), як правило, має своє SDK для розробки під платформу Java Me. Використання специфічних бібліотек та класів із SDK виробників, звичайно, дасть вам деякі нові можливості при програмуванні під апарати цього виробника, але може призвести до повної непрацездатності на інших пристроях.

Середовище розробки

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

До загальних можна віднести: Net Beans (http://netbeans.org/) та Eclipse (http://www.eclipse.org/) із встановленими плагінами для розробки Java Me додатків.

Мій вибір припав на Net Beans , оскільки це середовище здалося мені найпростішим у плані налаштування для розробки на ньому мобільних додатків.

Супутнє ПЗ

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

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

Як налаштувати 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 як платформи є її повна не стандартизованість на рівні апаратної підтримки. Те, що добре працює на одних апаратах, далеко не факт, що працюватиме на інших. Емулятор - лише засіб для зручного налагодження, будь-який додаток слід перевіряти в роботі на реальних пристроях і чим їх буде більше - тим краще (якщо ви, звичайно, не пишітьпід конкретний пристрій).

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

Для бізнес додатків, де не потрібно особливої ​​графіки, останнє рішення є найкращим. Одноманітної картинки на всіх типах і розмірах екранів ви, звичайно, все одно не досягнете, але принаймні всі елементи екрану будуть доступні (використання стандартних компонентів передбачає і використання стандартної системи шарів і автоматично скалюватиме картинку під розмір вашого екрану).

Для ігрових програм, як правило, використовується клас GameCanvas, який дає дещо зручніші методи для малювання та роботи з картинкою на екрані, але це все одно вам не дасть можливість створити універсальний додаток під будь-який девайс.

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

Ну і наостанок, хотілося б розповісти про "підпис" Java Me додатків.

Будь-яке Java Meдодаток, що не має підпису, вважається не сертифікованим та вимагає наявності підпису. При встановленні такої програми на апарат виникне повідомлення про потенційну його небезпеку (не вірте, Java Me додатки в принципі не можуть бути небезпечні, тому що не мають доступу безпосередньо не до одним із системних функцій апарату), а то й взагалі заборона на його встановлення. Так само, при виклику функцій пов'язаних із системним API – виникне повідомлення про необхідність підтвердження повноважень від користувача цих дій, деякі апарати дозволяють у налаштуваннях вказати, у яких випадках ці повідомлення повинні з'являтися, а в яких ні.

Отже, ви створюєте серйозний комерційний продукт або просто не хочете, щоб такі повідомлення засмучували вам життя. Тоді вам необхідно пройти процес підписання мідлета. Цей процес не безкоштовний. Докладніше про процес, його етапи та розцінки можна почитати на ресурсі http://javaverified.com/. Слід зазначити, що більш універсальний додаток – вимагає більшої кількості тестів (а отже, і великих витрат) під час підписання мідлета.

Післямова

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

Будь-яка програма повинна створюватися якщо не під конкретну модель або групу моделей апаратів, то під певний профіль, конфігурацію та список специфікацій, що підтримуються.

І тестуватись, тестуватись і ще раз тестуватись на реальних апаратах. Емулятор – хороший помічник у розробці, але поганий помічник у тестуванні.

У статті я не заглиблювався в код і розгляд таких "тонкостей" як інструменти для модульноготестування або налагодження на девайсі програми, а просто, постарався скоротити для розробника-початківця час, який він проведе в мережі при пошуку необхідного для старту матеріалу. Так само поділився проблемами та способами їх вирішення, що виникли в процесі моєї трудової діяльності як початківця Java Me розробника. Сподіваюся, що комусь ця інформація виявиться корисною.

Будьте міцні та наполегливі у своєму намірі освоїти далеко не найпростішу платформу Java Me...

Голосів: 11 Голосувати