JAVA Мобилизација
Јava 2 Мobile Еdition (J2ME)
- - -
Ј2МЕ е наменета за развој на JAVA апликации за разни мобилни уреди со 16 и 32-битни процесори/контролери и минимум меморија од 128KB. Уредите треба да бидат CLDC (Connection Limited Device Configuration) компатибилни, што значи да имаат имплементација на KVM - K(kilo) Virtual Machine, поедноставена верзија на Java Virtual Machine.
Има и друга J2ME конфигурација, наречена CDC (Connected Device Configuration), карактеристична за smart PDA уреди, интерактивни телевизори и слични електронски чуда со 32-битен процесор/контролер и минимум меморија од 2MB.
J2ME платформата e поделена на фамилии и категории според класата на мобилните уреди за кои станува збор. Категории може да бидат мобилни телефони, пејџери, разни рачни компјутери, а фамилиите претставуваат групи од категории со слични хардверски перформанси и побарувања. Мобилните телефони, едноставните пејџери и едноставните лични организатори спаѓаат во фамилијата на помали (small-footprint) уреди и имплементираат CLDC/KVM конфигурации.
Архитектурата на J2ME се состои од 4 нивоа, од повисоко кон пониско според следниов редослед:
- MIDP профил е API во кое се наоѓаат класите за кориснички интерфејс, вмрежување, меморирање на податоци и други.
- Профил е минималното API подмножество заедничко за една фамилија.
- Конфигурација го претставува минималното API подмножество заедничко за една категорија
- JVM нивото ја претставува имплементацијата на JVM на конкретниот уред.
Последните 3 нивоа ja сочинуваат CLDC конфигурацијата, која заедно со MIDP ја претставува мобилната Java извршна околина.
MIDlet
Аплет како термин горе-долу е во ред, со сервлет малку повеќе се крши јазикот, ама колку тоа немило звучи и колку грдо изгледа кога на кирилица ќе напишеш мидлет... Мобилните JAVA апликации наследуваат од класата MIDlet, која обезбедува функции за стартување, паузирање, рестартирање и завршување на текот на една MIDlet апликација.
Изработката на Јава MIDlet во ништо не се разликува од изработката на било која друга Java апликација. Како за почеток, од мноштвото развојни околини и емулатори кои можат да се најдат на Интернет, доволно е да се изберат оние од Sun:
- JDK со верзија барем 1.2,
- Колекцијата од алатки Ј2МЕWTK (Ј2МЕ Wireless Toolkit) за полесен развој и тестирање на мобилните апликации, пред истите да се имплементираат на телефонот. Заедно со J2MEWTK доаѓаaт и MIDP API класите, неопходни за развој на апликации за мобилни платформи.
Откако успешно се инсталира J2MEWTK со кодирање може да се започне веднаш. Кодот за Java класите може да се напише и во Notepad, а со помош на алатката KТoolbar од пакетот J2MEWTK класите се компајлираат и се тестираат на емулатор, пред да се префрлат на мобилниот телефон.
Прво, со алатката KToolbar се дефинира нов проект. Не е задолжително, но вообичаена пракса е MIDlet апликациите да се испорачуваат во JAR архива, придружена со таканаречен дескриптор со екстензија .jad, каде со парови променлива-вредност се опишуваат параметрите на апликацијата: производител, верзија, големина, извршна JAR архива, класите во неа итн. Во JAR архивата може да се спакуваат и повеќе MIDlet апликации, кои со самото нивно дефинирање во дескрипторот се достапни за повикување преку мени на мобилниот телефон. Со креирањето на проектот KToolbar ќе ви помогне во составувањето на дескрипторот.
Потоа, датотеката со изворниот код се сместува во соодветниот фолдер на проектот и понатаму е јасно - компајлирање и стартување на апликацијата на емулаторот.
Пред да се стартува апликацијата се врши и проверка на интегритетот на класите (preverify). Верификуваните класи се разликуваат од оние штотуку компајлираните и само такви можат да бидат имплементирани на мобилниот уред. KToolbar тоа го прави автоматски, за да не се мачите од командна линија со следнава синтакса:
preverify -classpath c:\pateka\do\klasite -d . ImeNaMIDlet
Едноставниот пример што следува генерира случаен број од 1 до 100, кој се прикажува со секое стартување на апликацијата.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
public class Broj
extends MIDlet
implements CommandListener {
private Form f;
public Broj() {
Random rnd = new Random();
Integer num = new Integer(1+Math.abs(rnd.nextInt()%100));
String rnds = num.toString();
f = new Form("BROJ");
f.append(new StringItem(null,rnds));
f.addCommand(new Command("Izlez", Command.EXIT, 1));
f.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(f);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
}
Класата MIDlet е дел од пакетот javax.microedition.midlet и од неа наследуваат основните класи кај мобилните апликации, слично како што аплетите наследуваат од класата Applet. Меѓу другите, нејзини карактеристични функции се и startApp(), pauseApp() и destroyApp(), со кои се определува животниот тек на класата. Секоја мобилна апликација има точно една инстанца на класата Display, која содржи механизми за проверка на графичките можности на уредот и кореспондира со неговиот приказ.
При стартувањето на нашата апликација поставуваме активна во моментот да биде формата f, на која и е прикачен објект од типот StringItem, кој го содржи случајно генерираниот број. Кон формата е придодадена и команда за излез, со чие повикување се справува функцијата commandAction од имплементираниот интерфејс CommandListener. Во случајов имаме само една команда за излез и нема потреба од проверка која команда била повикана и пропратена кон функцијата commandAction. Другиот нејзин параметар се однесува на објект од било која класа што наследува од Displayable, како Canvas, Screen, Form, TextBox, Alert…, т.е. било кој интерфејс елемент што може да се прикаже на екран. Функцијата notifyDestroyed() и` припаѓа на класата MIDlet и со неа се известува извршната околина за завршувањето на апликацијата.
Покрај класата MIDlet, во мобилното MIDP API се наоѓаат и пакетите:
- javax.microedition.io, каде се наоѓаат класи и интерфејси за мрежно поврзување со надворешниот свет. За размената на податоци се одговорни објекти од класите на стандардниот java.io пакет.
- javax.microedition.rms, каде може да се најдат механизми за складирање на податоци на мобилниот уред и нивно чување помеѓу две стартувања на апликацијата.
- Гореспоменатиот javax.microedition.lcdui, кој се состои од класи за изградба на интерфејс, механизми за интеракција со корисникот и графика.
За програмирање на мобилни класи во игра се и пакетите java.lang, java.io и java.util од стандардната Java, редуцирани, соодветно на можностите на мобилните уреди.
Имплементација
По тестирањето, MIDlet апликацијата треба да се префрли на мобилниот уред со Java поддршка. Датотеките со екстензии .jar и .jad може да се преземат од Интернет (ако цената на мобилната минута ви e евтина), а може и да се префрлат со воспоставување на врска помеѓу компјутерот и мобилниот телефон. Со телефонот Siemens SL45i доаѓа и софтвер кој го додава мобилниот телефон како device во Windows Explorer, па можете да замислите колку ми беше тешко да ги префрлам датотеките преку сериска порта во еден од неговите Java директориуми.
Ресурси
Присутноста на Java кај се` поголем број на мобилни уреди, кои полека но сигурно се множат и кај нас, води кон поголем развој на мобилни Java апликации. На Интернет страниците кои нудат MIDlet апликации за download, најчесто ќе најдете игри и други „џиџи-миџи“, но присутни се и интересни алатки и апликации за комуникација, кои навистина може да му притребаат на корисникот на мобилниот уред. За download и помош при развојот на Java мобилни апликации, меѓу другите можете да ги посетите и адресите:
http://www.midlet.com
http://www.midlet.org
http://www.javamobile.com
http://www.microjava.com
http://wireless.java.sun.com
http://www.jguru.com/FAQ/j2me
http://www.zindell.com
Извор