J2ME. Java 2 Micro Edition. David Stach Ondřej Dušek



Podobné dokumenty
JAVA. Java Micro Edition

(JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš

JAVA. Java Micro Edition

Vysoká škola ekonomická v Praze

Knihovna pro tvorbu GUI v mobilních zařízeních

JSR tutorial 1 Úvod do JSR-184

Programování v Javě I. Leden 2008

Mobilní správce hesel

Programování v Javě I. Únor 2009

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

1. ÚVOD 2. ARCHITEKTURA MOBILNÍHO TERMINÁLU 2.1. HARDWARE TERMINÁLU PRO SYMBIAN OS S OS SYMBIAN 2009/

Technologie Java. Jaroslav Žáček

MOBILNÍHO TELEFONU S BLUETOOTH


}w!"#$%&'()+,-./012345<ya

TELEFONU HANDSET BASED COMPUTER CONTROL

SCADA systémy na platformě mobilních zařízení

3 h 5 min Paměť: 64 MB ROM + 32 MB RAM + Mini SD Funkce adresáře:

Algoritmizace a programování

JSR tutorial 2 Transformace v JSR-184

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Využití J2ME při vývoji telemedicínských aplikací pro klasické mobilní telefony

Úvod do programování v jazyce Java

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Úvod do programovacích jazyků (Java)

20. Projekt Domácí mediotéka

PŘÍJEM A POSÍLÁNÍ SMS ZPRÁV POMOCÍ APLIKACE URČENÉ PRO PLATFORMU JAVA ME SMS APPLICATION FOR JAVA ME PLATFORM

Rozdělení operačních systémů

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Programování Java aplikací pro mobilní telefony - hra Piškvorky

Teoretické minimum z PJV

Java aplety. Předávání parametrů z HTML

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

PREPROCESOR POKRAČOVÁNÍ

Aplikace pro mobilní zařízení Semestrálná práce z Y36MM1

RMI Remote Method Invocation

Android 100% Java telefon. Petr Musil

1 CLDC, MIDP verze a současnost

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Čipové karty úvod, Ing. Jiří Buček. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze

České vysoké učení technické v Praze Fakulta Elektrotechnická

Java a Caché IV: Manipulace s objekty

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Max. v pohotovosti: 220 h Max. doba hovoru: 4 h

JAVA Unit testing Java, zimní semestr

UJO Framework. revoluční architektura beans. verze

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Acer MP150. Uživatelská příručka. Verze 1.0

Java a XML. 10/26/09 1/7 Java a XML

Úvod do Javy, JDBC a multimediální databáze

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Abstraktní datové typy: zásobník

DIGITALIC MP4 pøehrávaè s DVB-T Uživatelská pøíruèka

Ten nejlepší zážitek z vysokého rozlišení. Vlajková loď mezi zábavními notebooky s Full HD a jednotkou Bluray Disc Combo

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Pociťte vibrace senzačního zvuku

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Úvod do Javy, JDBC a multimediální databáze

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Pokročilé programování na platformě Java. Úvod

Techanxx USB 2.0 Digital Video Scart Grabber Audio & Video / SCART Převodník Digitalizujte si své staré videokazety VHS! Uživatelský Manuál

Stylový společník, který nabízí pokročilou grafiku i zabezpečení. Oficiální webové stránky VAIO Europe

Váš stylový multimediální společník v karamelově smetanovém provedení. Oficiální webové stránky VAIO Europe

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Úvod do programovacích jazyků (Java)

GOCLEVER FONE 500 NÁVOD K OBSLUZE

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Chytrý osobní laptop s rychlým procesorem Intel, 4GB pamětí RAM a grafikou ATI. Oficiální webové stránky VAIO Europe

typová konverze typová inference

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

UŽIVATELSKÁ PŘÍRUČKA K SADĚ. Nokia PC Suite 6.81

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Tvorba informačních systémů

Distribuované systémy a výpočty

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Uspořádaný seznam nula nebo více elementů, každý je typem ASN.1 (heterogenní seznam) uspořádaný seznam stejných elementů

SLEDOVÁNÍ POLOHY POMOCÍ GPS

Hudební přehrávač. mivvy record M5 UŽIVATELSKÝ MANUÁL

Generické programování

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

7. Datové typy v Javě

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Čipové karty Lekařská informatika

Remoting na platformě mobilní Javy

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Instalační manuál pro digitální videorekordér

Seminář Java IV p.1/38

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Váš stylový multimediální společník v korálově růžovém provedení. Oficiální webové stránky VAIO Europe

Principy objektově orientovaného programování

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Obrázek 6.14: Prohlížec nápovedy

KMI / TMA Tvorba mobilních aplikací

Transkript:

J2ME Java 2 Micro Edition David Stach Ondřej Dušek

Historie počátky Java ME a Javy vůbec 1990 v Sun Microsystem návrh na vytvoření jazyka, použitelného pro domácí spotřebiče 1992 jazyk Oak (dub) 1995 zjištění, že název Oak již používá jiný jazyk název Java 1996 vydán JDK 1.0 2000 Java ME Java se vrátila k původnímu záměru 2

Výskyt a využitíj2me Mobilní telefony (největší skupina) PDA Pagery Výherní a prodejní automaty Set-Top box 3

Pročzrovna Java Bezpečnost Kontrolovatelnost Nezávislost (JVM, KVM) Mezinárodní znaková sada (Unicode) Vlákna Konkurenti, kteří neuspěli Mophun, ExEn(In- Fusio) 4

Vlastnosti a neúspěch platformy Mophun Programování pomocí C/C++ s využitím SDK, které je na žádost zdarma Aplikaci je potřeba certifikovat neexistence freeware her Vlastnosti a neúspěch platformy ExEn Programování pomocí Java standardizace Podpora malého množství výrobců, malá podpora od operátorů Standardizace Javy 5

Konfigurace J2ME Definice programového vybavení pro určité skupiny zařízení. Rozlišení podle typu a velikosti paměti, typu a rychlosti procesoru a síťového připojení Konfigurace zahrnuje virtuální stroj, knihovny, třídy a API funkce. Rozlišují se dvě J2ME konfigurace: CDC (Connected Device Configuration ) CDC 1.0, CDC 1.1.2 CLDC (Connected Limited Device Configuration ) CLDC 1.0, CLDC 1.1 6

CDC Plná podpora Java Virtual Machine API odvozeno z J2SE 1.3 zahrnuje celou CLDC 1.0 Zařízení s větším paměťovým prostrem (více než 2MB) 32 bitový procesor Síťové připojení Java Native Interface, serializace Využití v TV s internetem, Set-top box, herní konzole 7

Profily konfigurace CDC Foundation Profile Personal Basis Profile Personal Profile 8

CLDC (Connected Limited Device Configuration) Nejmenší definovaná konfigurace Javy Využití zejména v mobilních zařízeních s omezenými zdroji (mobilní telefony, komunikátory, PDA, pagery ) Zařízení s paměťovým prostorem 160-512 kb, 16 bitový procesor s minimální frekvencí 16 MHz Obsahuje jen ořezanou JVM tzv. KVM Požadavky: 128kB ROM pro JVM, 32kB paměti nezávisle na jiných aplikacích 9

CLDC implementace Dvě rozdílné implementace CLDC reference implementation (RI) Ukázka jak může být CLDC specifikace implementována (vzor od SUNu) CLDC HotSpot Implementation Implementace přímo od SUNu, efektivní, patentovaná vylepšení komerční 10

Profily CLDC PDAP speciálně pro požadavky zařízení PDA MIDP profil pro mobilní telefony, je nejrozšířenější a nejpoužívanější IMP - Information Module Profile pro prodejní automaty apod., odstraněno grafické rozhraní(lcdui ) z MIDP1.0 11

MIDP 1.0 (Mobile Information Device Profile) Charakteristika zařízení s podporou MIDP: paměť použitelná pro prostředky Javy přibližně 512K (ROM + RAM), omezený výkon procesoru, omezený zdroj energie, typicky baterie, omezený prostor pro ukládání dat, připojení k bezdrátové síti (většinou s omezenou šířkou pásma), různorodost uživatelského interface, omezené ovládání (vstupní zařízení), malý display s nízkou hloubkou barev. 12

Zpětná kompatibilita s 1.0, přidává nové třídy Novinky: Podpora HTTPS (Generic Connection Framework) Multimédia - vlastní Media API pro práci s multimedii, podmnožina Mobile Media API(MMAPI), zahrnuje jen audio Rozšíření javax.microedition.lcdui lepší práce s Form a Item Game API - javax.microedition.lcdui.game možnot vykreslit hru přes celý display, snížení kódu aplikace Práce s RGB obrázky MIDP 2.0 Ověřování důvěryhodnosti MIDletu Sdílené úložiště dat mezi MIDlety na rozdíl od MIDP 1.0 může jedna aplikace číst RMS jiné 13

Nyní ještě ve vývoji MIDP 3.0 Měl by přinést především věci, co chybí v MIDP 2.0 ale jsou hojně využívány buď pomocí API výrobců, nebo pomocí balíčků podpora více spuštěných midletů současně běh midletu na pozadí (s MIDP 2.0 je midlet možné pouze zapauzovat) možnost automatického spuštění (například po zapnutí telefonu) vylepšena podpora velkých displejů, možnost využívat i druhý displej zlepšena přímá podpora mobilních her spolupráce mobilní javy s jinými funkcemi telefonu jako například MMS, paměťová média... 14

Volitelnébalíčky (packages) Jak pro CDC tak pro CLDC Rozšiřují základní nabídku funkcí Výrobci je nejsou povinni implementovat Používají se pro specifické účely (hry, webové služby, multimedia ) 15

Volitelnébalíčky APIs for Bluetooth Wireless Messaging API (WMA) Short Message Service (SMS) Cell Broadcast Service (CBS) Mobile Media API (MMAPI) Audio, video, přístup k multimediálním zařízením (foťák, mikrofon) 16

Volitelnébalíčky PDA Optional Packages Personal Information Management (PIM) přístup k vestavěným aplikacím (kalendář, adresář, telefonní seznam ) FileConnection (FC) přístup k FileSystemu především kvůli paměťovým kartám Mobile 3D Graphics především pro 3D hry, animované zprávy, screen savery 17

Volitelnébalíčky 18

IMP Využíváno pro zařízení bez displeje (prodejní automaty, výherní automaty ) IMP 1.0 základem je MIDP1.0 ořezaný o grafické rozhraní LCDUI IMP-NG IMP next generation, odvozena od MIDP2.0 Zahrnuje bezpečnostní a síťová rozšíření, ale opět bez UI API a game API 19

VlastníAPI výrobců Především v době MIDP 1.0 Implementace zvuků grafické rozhraní pro hry Ani MIDP 2.0 však nemá vše Podpora přístupu do filesystemu Přístup k telefonnímu seznamu Odesílání SMS zpráv Přístup k fotoaparátu Ač by měla být Java přenositelná a vylepšení od výrobců toto kazí, API jsou často nezbytná 20

Siemens API com.siemens.mp.game vibrace, podsvícení, pokročilá grafika, práce se zvuky com.siemens.mp.gsm čtení SMS, volání, prohlížení seznamu telefonu com.siemens.mp.io přístup aplikace do vlastního adresáře a v něm využití filesystemu, posílání dat pomocí IrDA com.siemens.mp.media umožňuje přehrát multimediálnií soubory (WMA, MPG) com.siemens.mp.media.control nastavení hlasitosti com.siemens.mp.ui pokročilá práce s obrázky 21

Nokia API com.nokia.mid.ui Vibrace, podsvětlení, Full Canvas, rozšíření práce s obrázky com.nokia.mid.sound Přehrává více zvuků najednou Podpora WAV a RTPL (ringing tone programming language) 22

Motorola API com.motorola.game FullCanvas, práce s obrázky, zvuk na pozadí (pouze jeden), ostatní zvuky com.mot.tcc.media ovládání media playeru, vibrací, podsvícení com.motorola.messaging správa a odesílání SMS 23

3D API pro J2ME Mascot Capsule Micro 3D version 3 Různá implementace od výrobců Velice omezená Používá jen celáčísla Vývoj již dále nepokračuje Mobile 3D Graphics (M3G) Standardizovaná - JSR-184(M3G API) Široký záběr Předběhla HW telefonů Očekává se masové nasazení 24

Podporovanéformáty souborů Norma vs. Praxe Obrázky PNG-8 / GIF, JPEG, BMP Zvuky MIDP 1.0 bez podpory Wav(8-bit, 8 KHz)/ MIDI, generátor tónů, AMR, MP3, MMF, imelody různé pro různé výrobce a modely Textové soubory UTF-8 25

Soubory JAD a JAR JAR (Java Archive) uloženy všechny třídy, obrázky a další soubory pro běh aplikace potřebné informace (název aplikace, jméno autora, číslo verze, atributy ) JAD (Java Application Descriptor) Textový soubor Obsahuje informace o aplikaci (obvykle stejné) Formát: atribut: hodnota 26

MIDlet 1 mobilní aplikace (v 1 JARu může být víc 'Midlet Suite') hl. třída spustitelná odvozená od javax.microedition.midlet aplikační manažer stavy 'active', 'paused', 'destroyed' - zprostředkovává rozhraní mezi aplikací a runtime prostředím Fyzicky se skládá ze souborů JAD a JAR - nutný popis vlastností MIDletu v manifestu JARu a JAD Není možný běh více aplikací najednou Jedna aplikace nemůže spustit jinou 27

třída MIDlet public class MyMidlet extends MIDlet { public void startapp(){ } public void pauseapp(){ } } public void destroyapp( boolean unconditional ){ } 28

třída MIDlet startapp() volána kdykoliv při přechodu do 'active' pauseapp() přechod do 'paused' na pozadí destroyapp() před ukončením (skončit nemusí) pro úplné ukončení ('destroyed'): notifydestroyed() 29

třída Display manažer obrazovky/vstupních zařízení, singleton zobrazitelné věci: Displayable Displayable (potomci: Screen, Canvas - 'high/low level' UI) static Display getdisplay( MIDlet m ) získání instance Displayable getcurrent() aktuální 'obrazovka' void setcurrent( Displayable next ) void setcurrent( Alert a, Displayable next ) nastavení další obrazovky / výstrahy a obrazovky 30

třída Display void callserially( Runnable r ) zavolá runnable po překreslení obrazovky void setcurrentitem( Item item ) jako current nastaví obrazovku obsahující item a odscrolluje na něj int numcolors(), int numalphalevels() vrací počet barev / úrovní průhlednosti další vibrace, barevné schéma atd. (část. MIDP 2.0) 31

třída Displayable int getwidth(), int getheight(), String gettitle() rozměry, titulek boolean isshown() je právě na obrazovce? void addcommand( Command cmd ) void removecommand( Command cmd ) void setcommandlistener( CommandListener cl ) příkazy, vyvolané obvykle stisknutím softkeys telefonu 32

abstract třída Screen předek všech high-level UI-tříd: Alert, List, TextBox, Form nemážádné metody navíc proti Displayable zobrazování výstrah třída Alert Alert( String title, String text, Image alertimg, AlertType alerttype ) Alert( String title ) int gettimeout(), void settimeout( int to ) static int FOREVER static Command DISMISS_COMMAND 33

třída List select box List( String title, int type, String [] elems, Image [] imgelems ) type IMPLICIT, EXCLUSIVE, MULTIPLE... třída TextBox text box scrollující omezený max. velikostí TextBox( String title, String text, int maxsize, int constraints ) constraints ANY, EMAILADDR, NUMERIC... 34

třída Form Item) obs. více elementů různých typů(potomků tř. Item Form-u v pořadí od 0, 1 element v max. 1 Form Item.setLayout() ) vertikálně scrollující (rozložení - Item.setLayout() Form( String title ) Form( String title, Item [] elemens ) append( Image i ), append( Item i ), append( String s ) insert( Item i, Item priorto ) Item get( int order ), void set( int order, Item i ) delete( int order ) 35

třída Form změna elementu formuláře ItemStateListener (1 metoda itemstatechanged ) Možné elementy: ChoiceGroup ( = List ) CustomItem (abstract abstract) DateField Gauge (ukazatel hodnoty) ImageItem Spacer (výplň s min. velikostí) StringItem TextField ( = TextBox ) ItemStateListener 36

třída Canvas low-level UI přímé kreslení na obrazovku public class MyCanvas extends Canvas { protected void paint( Graphics g ){... } protected void keypressed( int keycode ){... } } paint abstract keycode nadefinované konstanty; getgameaction keycode getgameaction 37

třída Canvas další 'notifikace': void keyrepeated( int keycode ) void keyreleased( int keycode ) void pointerpressed( int x, int y ) void pointerdragged( int x, int y ) void pointerreleased( int x, int y ) void shownotify() void hidenotify() void sizechanged() celá obrazovka: setfullscreenmode( boolean fs ) (default: false) -- jen MIDP 2.0 setfullscreenmode( boolean fs ) 38

třída Canvas -paint void paint( Graphics g ) dostanu grafický kontext obrazovky, volám jeho metody drawline, drawrect, fillrect, drawimage, setcolor drawstring, drawchar(s), setfont getdisplaycolor konstanty TOP, LEFT, VCENTER, BOTTOM... kreslení jen do části obrazovky: setclip, getclip, translate překreslení: void repaint() void repaint() vynucené překreslení: void servicerepaints() void servicerepaints() 39

třída Image obrázek z ext. souboru nebo prostor pro kreslení static Image.createImage() z Image, byte [], String 'mutable'/'immutable': boolean ismutable() boolean ismutable() kreslení Graphics getgraphics() - jen pro 'mutable' PNG povinně podporované Alpha jen 'immutable', Display.numAlphaLevels() Display.numAlphaLevels() 40

třída Command interface CommandListener příkazy pro soft-keys (přidávají se k Canvas nebo Screen ) Command( String label, int type, int priority ) type BACK, CANCEL, EXIT, OK, SCREEN... Displayable & potomci: addcommand( Command cmd ) removecommand( Command cmd ) setcommandlistener( CommandListener cl ) interface CommandListener 1 metoda: interface CommandListener void commandaction( Command cmd, Displayable d ) 41

interface Runnable 1 metoda: void run() void run() vytvoření threadu Thread t = new Thread( new Runnable(){ public void run(){ System.out.printLine( "Hello" ); } } ); t.start(); 42

RMS (Record Management System) import javax.microedition.rms.*; Databáze uchovávaná ve filesystému přístroje, jediná možnost uchování uživ. dat unikátní názvy v rámci Midlet Suite zajištěna atomicita operací, persistence dat při odstranění MIDletu se odstraní i databáze od MIDP 2.0 může MIDlet používat i cizí databáze databáze zůstává i po upgrade programu v databázi lze také třídit a filtrovat export z databáze a její zálohování není možné 43

otevření: třída RecordStore static RecordStore openrecordstore( String name, boolean createifnecessary ) operace: int addrecord( byte[] data, int off, int len ) byte [] getrecord( int id ) mazání: deleterecord(int id) mazání celé databáze: deleterecordstore(string name) informace o databázi: int getnumrecords() int getsize() int getsizeavailable() 44

ukázka vkládánído databáze String jmeno = "Jan Novák" k"; String cislo = "777111222"; ByteArrayOutputStream buffer = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(buffer); RecordStore store = null; try { store = RecordStore.openRecordStore("tel_seznam", true); // otevřen ení dos.writeutf(jmeno); //vložen ení jména do ostreamu dos.writeutf(cislo); //vložen ení čísla do ostreamu byte[] bytes = buffer.tobytearray(); // převod ByteArrayOutputStream // na pole bytů store.addrecord(bytes, 0, bytes.length); // vložen ení záznamu znamu do databáze } catch (Exception e) { e.printstacktrace(); } finally { try { store.closerecordstore(); //zavřen ení databáze i ostreamu dos.close(); } catch (Exception e2) { e2.printstacktrace(); } } byte[] bytes = store.getrecord(i); DataInputStream dis = new DataInputStream(new new ByteArrayInputStream(bytes)); String jmeno = dis.readutf(); String cislo = dis.readutf(); 45

třída Manager/Player import javax.microedition.media.*; přehrávání hudby/videa ( MMAPI, MIDP 2.0) podpora formátů různá, MIDI většinou ano Manager (static static): createplayer( InputStream s, String contenttype ) createplayer( String url ) String [] supportedcontenttypes(string protocols) String [] supportedprotocols(string contenttypes) void playtone(int note, int duration, int volume) Player (interface interface): start(), stop(), prefetch(), deallocate() PlayerListener, MediaException 46

interface HttpConnection import javax.microedition.io.*; MIDP 1.0 jediné síť. spojení, MIDP 2.0 - i HTTPS a další (sítě nemusí podporovat) spojení vytvářeno Connector.open( String url ) Connector.open( String url ) nastavení spojení: setrequestmethod( String key ), setrequestmethod( String key ), setrequestproperty( String key, String value ) po připojení: long getlength(), String gettype(), int getresponsecode() InputStream openinputstream(), InputStream openoutputstream() zavření: close() close() 47

JDK (javac) potřebnénástroje http://java.sun.com/javase/downloads/index.jsp Java Wireless Toolkit for CLDC http://java.sun.com/javame/downloads/index.jsp ktoolbar.exe jde i ručně (classpath k JAR-ům s API), nepohodlné IDE 'mobile plugins' NetBeans: http://www.netbeans.org/products/mobility/ Eclipse: http://eclipseme.org/ emulátory jednotl. výrobců (různě spolehlivé) 48

emulátory Nokia: http://forum.nokia.com 'prototype' SDK SDK pro jednotl. platformy (S40, S60, S80) v. 1-3, další pro specifické přístroje tech. specifikace všech přístrojů podporovaná API atd. SonyEricsson http://developer.sonyericsson.com/ SE SDK for Java ME pro většinu přístrojů (obs. 2 platformy podle podporovaných API), add-ony specifikace telefonů (PDF), návody 49

emulátory Samsung http://developer.samsungmobile.com/ emulátory pro některé přístroje, nepříliš spolehlivé popisy podporovaných API všech telefonů Benq/Siemens http://developer.benqmobile.com/ SDK, add-ony pro nové telefony Motorola http://developer.motorola.com/?path=1.2 SDK různé verze pro telefony bez/s OS popisy zařízení API většinou nutná bezplatná registrace 50

přeneseníaplikace do telefonu IR/Bluetooth přítomnost rozhraní rozhodně nezaručuje schopnost přijmout aplikaci kabel spec. software WAP nejpomalejší, nejpracnější, často jediná možnost on-device debugging 51

použití obfuskátoru poznámky ProGuard http://proguard.sourceforge.net/ zmenšení velikosti aplikace, ochrana komprese médií, komprese JARu zmenšení PNG pngcrush, pngout komprese zvuků ne-oop postupy méně tříd, co nejmíň vnitřních tříd, krátký classpath odstranění 'zbytečných' metod 52

odkazy http://java.sun.com/javame/ MIDP 2.0 specifikace http://java.sun.com/javame/reference/apis/jsr118/ články o J2ME http://interval.cz/vyvoj-aplikaci/j2me/ aplikaci/j2me/ diskuzní fóra http://www.j2meforums.com/forum/ http://www.j2meforum.com/ (německy) http://discussion.forum.nokia.com/forum/index.php (diskuzní fóra ostatních výrobců) 53