J2ME v kostce – první midlet
Midlet je aplikace v Javě pro mobilní telefon. Některými vlastnostmi se podobá apletu. Musí rozšiřovat speciální třídu MIDlet a v telefonu běží z bezpečnostních důvodů v tzv. sandboxu, neboli na svém vlastním pískovišti, které nemůže opustit. Ukáži vám, co vše je potřeba k nápsání jednoduchého midletu.
Kde vzít vývojové prostředí?
- Jako základ budete potřebovat instalaci J2SDK, kterou si můžete stáhnout třeba ze stránek http://java.sun.com.
- Budete také potřebovat implementaci CLDC a MIDP. Dobré je stáhnout si J2MEWTK (J2ME wireless toolkit), kde jsou, kromě referenční implementace CLDC a MIDP, také pomocné programy. Toto prostředí neumožňuje editaci zdrojových kódů, ale jde integrovat do některých vývojových prostředí (např. Forte nebo JBuilder).
- Doporučuji aplikaci otestovat i v emulátoru telefonu, pro který ji vyvíjíte. Má-li být pro různé telefony, tak v co nejvíce emulátorech. Odkazy na stránky, kde se dají tyto emulátory stáhnout, najdete na konci článku.
Životní cyklus midletu
Základní třída musí rozšiřovat abstraktní třídu javax.microedition.midlet.MIDlet
. Při spouštění aplikace je tato třída vytvořena zavoláním svého veřejného konstruktoru bez parametrů. Stavy, ve kterých se může midlet nacházet, ukazuje následující obrázek. Běh aplikace a její přechod mezi stavy řídí aplikační manažer.
Stavy midletu
Po zavolání konstruktoru se aplikace nachází v pasivním stavu. V tomto stavu by neměla vlastnit či používat žádné sdílené zdroje. Pro přechod z pasivního stavu do aktivního stavu je zavolána metoda startApp()
. V této metodě aplikace inicializuje zdroje typu Thread, Connection
ap. Při volání metody pauseApp()
, kterou se aplikace vrací do pasivního stavu, by měla aplikace tyto zdroje opět uvolnit. Při ukončení aplikace zavolá aplikační manažer metodu destroyApp(boolean unconditional)
. Pokud je parametr true
, bude aplikace ukončena v každém případě, pokud je false
, může dát vyhozením výjimky MIDletStateChangeException
najevo, že ještě ukončena být nechce.
Konečně zdrojový kód
Následující kód si zkopírujte do souboru s názvem HelloWorld.java.
import javax.microedition.lcdui.*; import javax.microedition.midlet.*; /** * Základní (a jediná) třída aplikace, která vypíše na * displej telefonu nápis Hello World! */ public class HelloWorld extends MIDlet implements CommandListener { TextBox textBox; Command exit; /** * Konstruktor midletu – inicializuje základní proměnné, * které nezabírají systémové zdroje */ public HelloWorld() { /* * První parametr se zobrazí na horním řádku displeje * jako jeho název. * Druhý parametr je obsah TextBoxu * Třetí parametr je maximální počet znaků, které se * vejdou do textového boxu * Čtvrtý parametr obsahuje vstupní omezení. */ textBox = new TextBox( „1. midlet“, „Hello World!“, 50, TextField.ANY); /* * Aby se dala aplikace regulérně ukončit, je potřeba * přidat příkaz exit… */ exit = new Command(„Konec“, Command.BACK, 1); textBox.addCommand(exit); /* * …a nastavit vlastní implementaci rozhraní * CommandListener, která zpracuje volání příkazů. */ textBox.setCommandListener(this); } /** * Tuto metodu zavolá aplikační manažer při startu aplikace, * zde se nastavuje startovní obrazovka aplikace */ protected void startApp() throws MIDletStateChangeException { /* * Nastavení aktuální obrazovky */ Display.getDisplay(this).setCurrent(textBox); } /** * Tuto metodu zavolá aplikační manažer při přechodu do * pasivního stavu. Protože je u třídy MIDlet abstraktní, * musí tu být aspoň prázdná implementace */ protected void pauseApp() { } /** * Tuto metodu zavolá aplikační manažer, když chce * ukončit aplikaci. Pokud je parametr false, může midlet * ukončení odmítnout vyhozením výjimky * MIDletStateChangeException. */ protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } /** * Metoda rozhraní CommandListener */ public void commandAction(Command c, Displayable d) { /* * Kontrola, který příkaz byl zavolán */ if (c.equals(exit)) { try { /* * Tady to vypadá trochu komicky, volat metodu, * která nic nedělá, ale v složitější aplikaci * metoda destroyApp() provede uložení nastavení * nebo stavu aplikace. */ destroyApp(true); /* * Metoda notifyDestroyed() dá najevo aplikačnímu * manažerovi, že tato aplikace chce být ukončena. * Aplikační manažer poté už nevolá metodu * midletu destroyApp() */ notifyDestroyed(); } catch (Exception e) { /* * Tady můžete mít při testování v emulátorech * např. e.printStackTrace() * Při běhu aplikace v telefonu je lepší se všem * pokusům o výpis na konzoli vyhnout – zpomalují * běh aplikace. */ } } } }
Spuštění midletu v J2MEWTK
V následujícím textu J2MEWTK_HOME označuje domovský adresář aplikace J2MEWTK.
- Nainstalujte si J2MEWTK. Po instalaci spusťte ktoolbar, který se nachází v J2MEWTK_HOME/bin. Pokud pracujete pod operačním systémem Windows, přidá se vám spuštění této aplikace do startovacího menu.
- Vytvořte nový projekt se jménem HelloWorld a jménem midletu HelloWorld. Žádná další nastavení není třeba upravovat. (New project…)
- Do adresáře J2MEWTK_HOME/apps/HelloWorld/src uložte soubor HelloWorld.java se zdrojovým kódem midletu.
- V aplikaci ktoolbar otevřete projekt HelloWorld. (Open project…)
- Přeložte projekt. (Build)
- Spusťte projekt. (Run)
- Na telefonu, který se vám objeví, zmáčkněte myší tlačítko pod nápisem launch, nebo na klávesnici stiskněte tlačítko Enter a midlet se spustí (viz obrázek).
Emulátor od firmy Sun
Nástroje k tvorbě a testování midletů
J2MEWTK je k dispozici pro operační systémy Windows, Solaris a Linux. Snad každý výrobce zařízení podporujících Javu poskytuje vlastní nástroje pro usnadnění vývoje a testování aplikací. Bohužel tyto nástroje jsou obvykle pouze pro operační systém Windows.
- J2MEWTK
– základní nástroj od firmy Sun - Forum Nokia
– komunita vývojářů pro telefony nokia. Je zde možno stáhnout programy pro vývoj aplikací, zjistit specifikaci jednotlivých telefonů, nebo se zeptat na radu s nějakým problémem. - Siemens
– zdroje specifické pro telefony Siemens - Motorola
– zdroje specifické pro telefony Motorola
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Moderní trendy ve webdesignu: Top trendy pro rok 2024
12. ledna 2024 -
Členská sekce: 4 důvody proč ji mít na svém webu
12. března 2024
Nejnovější
-
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024 -
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024 -
AI a internetové podvody
29. října 2024 -
Užitečné nástroje pro bezpečnost na internetu
17. října 2024
martinvlorenc
Lis 29, 2009 v 15:38dobrý den, vše potřebné jsem si nainstaloval pro tvorbu midletů. když spustím J2MEWTK, vytvořím HelloWorld projekt, otevřu HelloWorld.java, stisknu built a zobrazí se mi hláška „Build failed“.
Co dělám prosím špatně :-)
Anonym
Zář 26, 2010 v 22:21Niektorí ľudia sú múdri, ale vysvetliť nevedia nič.
rado
Dub 7, 2011 v 16:28ako to vysvetlil ked neviem ani kde mam urobit HelloWorld.java ? aspon to vysvetli normalne nepochopil som z toho nic !
eee
Lis 17, 2011 v 11:11Skuste Oracle tutorialy
Phillips
Úno 17, 2012 v 16:17Nemáte náhodou někdo tušení, jak vložit na web odkaz pro stažení JAR aplikace z mobilu? Pokud vložím odkaz standardně, do mobilu (Nokia) se mi vloží soubor se změněnou příponou, který nelze spustit.
Hledal jsem řešení na internetu, bohužel bez úspěchu
– na stránkách Nokia (pro mobily) je po načtení stránky pro stažení hry (na PC), a po klepnutí na odkaz, stažen soubor „interface“ bez přípony – z toho tedy usuzuji, že se to prostě dělá „ňák jinak“.