Java ME

Z FI WIKI
Přejít na: navigace, hledání
Java Technologies Schema
Java ME Technology Schema

Java ME je kolekce technologií a specifikací, optimalizovaných pro mobilní zařízení. Jelikož jsou mobilní zařízení značně různorodá, je programové prostředí daného zařízení definováno profily, rozšiřujícími základní konfigurace.

Konfigurace

Konfigurace je specifikace, která definuje softwarové prostředí pro skupinu zařízení. Skupina je většinou definována vlastnostmi jako:

  • Typ a množství paměti
  • Typ a rychlost procesoru
  • Typ a možnosti síťové komunikace

Konfigurace je navržena tak, aby představovala základní platformu pro dané zařízení a není povoleno ji dále rozšiřovat. Výrobci jednotlivých zařízení ji implementují do svých výrobků. Java ME definuje v současné době dvě konfigurace - CLDC a CDC.

Specifikace konfigurace nevyžaduje po implementaci použití žadného konkrétního virtuálního stroje (VM). Výrobci si mohou vytvořit své vlastní VM splňující specifikaci. Sun poskytuje referenční implementaci pro oba typy konfigurací.

  • Referenční implementace CLDC obsahuje tzv. Kilobyte Virtual Machine (KVM), redukovaný VM s velmi malými paměťovými nároky.
  • CLDC HotSpot [1]

Connected Limited Device Configuration (CLDC)

CLDC

CLDC se zaměřuje na low-end mobilní zařízení. Typicky mobilní telefony či PDA s malou pamětí. Z těchto důvodů je CLDC silně spjato s wireless Java, která umožňuje uživatelům mobilních telefonů do svých zařízení stahovat malé Java aplikace (tzv. MIDlety). V současné době drtivé množstí výrobců mobilních telefonů implementuje CLDC ve svých výrobcích.

CLDC nikterak nezasahuje do průběhu aplikací, do uživatelských rozhraní, ani do správy událostí či do interakce mezi uživatelem a aplikací. To spadá do sféry výše zmiňovaných profilů, jako je např. MIDP, které rozšiřují CLDC a přispívají k jeho funkčnosti.

CLDC zařízení musí podporovat:

  • Soubor základních rysů Javy a virtuálního stroje
  • Soubor základních knihoven Javy (java.lang a java.util)
  • Základní výstup/vstup (java.io)
  • Základní podporu sítí (javax.microedition.io)
  • Zabezpečení

Základní syntaxe jazyka je stejná, jako ve všech ostatních edicích. Knihovny obsahují velmi omezenou podmnožinu standardní edice, a to vybrané a trochu upravené třídy z následujících knihoven:

  • java.io upravená verze java.io z Java SE pro Input/Output operace.
  • java.lang balík obsahující standardní javové typy jako Integer a String a také základní výjimky, matematické funkce, systémové funkce, vlákna a funkce pro zabezpečení.
  • java.util upravená verze java.util z Java SE. Tento balík obasahuje kolekce jako Vector a Hashtable. Dále obsahuje třídy Calendar a Date.
  • javax.microedition.io a navíc novou knihovnu pro I/O operace, s třídami u nichž nebylo možno zachovat podobnost se standardní edicí.

Spefifikace CLDC:

  • CLDC 1.0 [2] JSR 030 (květen 2000)
  • CLDC 1.1 [3] JSR 139 (březen 2003)
    • větší podpora zařízení s většími zdroji
    • větší podpora hardwaru pro prácí s artimetikou plovoucí desetinné čárky
  • CLDC 1.1.1 JSR 139 (Maintenance Release) (říjen 2007)

Connected Device Configuration (CDC)

CDC je zaměřeno na potřeby zařízení, která spadají mezi ty, pro než je určeno CLDC, a desktopová zařizení použivající Java SE. Tato zařízení mohou díky větší paměti a procesorovému výkonu využívat z javového prostředí daleko více. CDC se objevuje u high-end PDA, smartphonů, set-top boxů atd.

Specifikace CDC:

Java ME Structure

Profily

Profily doplňují konfigurace o další třídy, které poskytují specifické vlastnosti pro dané typy zařízení. Oba typy konfigurací mají své profily.

Mobile Information Device Profile (MIDP, pro CLDC)

MIDP

Tento profil přidavá k CLDC práci se sití, uživatelské rozhraní (UI) a lokalní uložistě. Profil je zaměřen na zařízení s omezenou funkcionalitou zobrazování a ukládání informací. Z toho důvodu poskytuje relativně jednoduché UI a základní síťovou komunikaci založenou na protokolu HTTP 1.1. MIDP patří mezi nejznámější Java ME profily a tvoří základ technologie Wireless Java.

Ke knihovnám specifikovaným v CLDC přidává MIDP 1.0 další:

  • javax.microedition.rms - správa persistence dat
  • javax.microedition.midlet - třída MIDlet, která je základní třídou MIDP profilu
  • javax.microedition.io - zejména třída HttpConnection
  • javax.microedition.lcdui - třídy pro tvorbu uživatelského rozhraní

MIDP 2.0 rozšiřuje dále funkcionalitu o následující balíky:

  • javax.microedition.media - přehrávání multimedií. Jedná se o podmnožinu JSR 135 Java Mobile Media API.
  • javax.microedition.lcdui.game - herní API zaměřené na jednoduché 2D hry
  • javax.microedition.pki - autentizační API pro zabezpečené přípojení

Specifikace MIDP:

  • MIDP 1.0 [6] JSR 37 (říjen 2000)
  • MIDP 2.0 [7] JSR 118 (listopad 2002)
    • bezpečnost sítové komunikace
    • podpora soketů a datagramů
    • push architektura
    • XML
    • podpora barev v GUI
    • podpora větších obrazovek
    • herní technologie
  • MIDP 2.1 JSR 118 (Maintenance Release) (červen 2006)
  • MIDP 3.0 JSR 271 (???)

Information Module Profile (pro CLDC)

  • Information Module Profile JSR 195
  • Information Module Profile - Next Generation JSR 228

This JSR will define a J2ME profile targeting embedded networked devices that wish to support a Java runtime environment similar to the Mobile Information Device Profile (MIDP) version 1.0, but that do not provide the graphical display capabilities required by MIDP 1.0.

The Information Module Profile (IMP) will be a strict subset of MIDP 1.0, where the APIs relating to GUI functionality (the LCDUI) are simply removed. Functionality not already present in MIDP 1.0 is not anticipated or desired.

Foundation Profile (FP, pro CDC)

Přidává většinu základních tříd, které CDC chybí oproti standardní edici. Neobsahuje žádné uživatelské rozhraní a také neobsahuje knihovny java.beans, java.rmi ani java.sql. Tvoří základ pro další rozšiřující profily. Vyžaduje 1 MB ROM a 512 kB RAM.

Personal Basis Profile (PBP, pro CDC)

Přidává základní uživatelské rozhraní, které je omezené na použití pouze jednoho okna.

Personal Profile (PP, pro CDC)

Sem se přesunuje edice Personal java, která je již rozšířená na spoustě zařízení, jako jsou PDA nebo komunikátory (Nokia 9210). Je skoro stejná, jako stará verze javy před vznikem grafické knihovny javax.swing, na kreslení uživatelského rozhraní se používá knihovna java.awt. Vyžaduje 2,5MB ROM a 1MB RAM.

Rozšiřující balíky

Optional packages extend the Java ME platform by adding functionality to the technology stack that includes either CLDC or CDC and an associated profile(s). Created to address very specific application requirements, optional packages offer standard APIs for using both existing and emerging technologies such as database connectivity, wireless messaging, multimedia, 3D graphics, and Web Services. Because optional packages are modular, device manufacturers can avoid carrying the overhead of unnecessary functionality by including only the packages an application actually needs. Optional packages can be implemented alongside virtually any combination of configurations and profiles.

Seznam několika rozšiřujících balíku (více na [8]):

  • PDA Optional Packages for the J2ME Platform JSR 75
    • javax.microedition.pim - personal information management API, přístup k telefonnímu seznamu
    • javax.microedition.io.file - file connection API, přístup k filesystemu mobilního zařízení
  • Java APIs for Bluetooth JSR 82
  • Wireless Messaging API 2.0 JSR 205
    • javax.microedition.messaging - posílání SMS a MMS
  • Mobile Media API JSR 135
  • JAIN SIMPLE Instant Messaging JSR 165
  • J2ME Web Services JSR 172
  • Security and Trust Services API for J2ME JSR 177
  • Location API for J2ME JSR 179
  • Mobile 3D Graphics API for J2ME JSR 184
  • Content Handling API JSR 211
  • Payment API JSR 229
  • Mobile Internationalization API JSR 238
  • Java Bindings for OpenGL ES JSR 239

MIDLets

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.

Životní cyklus midletu

MIDLet Lifecycle

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 obrázek. Běh aplikace a její přechody mezi stavy řídí aplikační manažer.

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.

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
 
public class HelloMIDlet extends MIDlet implements CommandListener {
  private Form mMainForm;
  
  public HelloMIDlet() {
    mMainForm = new Form("HelloMIDlet");
    mMainForm.append(new StringItem(null, "Hello, MIDP!"));
    mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));
    mMainForm.setCommandListener(this);
  }
  
  public void startApp() {
    Display.getDisplay(this).setCurrent(mMainForm);
  }
  
  public void pauseApp() {}
  
  public void destroyApp(boolean unconditional) {}
  
  public void commandAction(Command c, Displayable s) {
    notifyDestroyed();
  }
}

Vytvoření aplikace

Zabalení aplikace

Aplikace se skládá ze dvou základních souborů, které mají strukturu danou specifikací profilu MIDP. Jsou to deskriptor aplikace a JAR soubor. Této dvojici se říká sada midletů (midlet suite).

V JAR souboru je zabalen jeden či více midletů. Tento soubor obsahuje:

  • Manifest soubor
  • Java třídy pro midlety
  • Ostatní zdroje jako například obrázky

Manifest soubor se v JAR souboru nachází v adresáři META-INF (pozor na velikost písmen!) a jmenuje se manifest.mf. Má, stejně jako deskriptor aplikace, formát jméno_atributu: hodnota_atributu a musí obsahovat všechny povinné atributy. Pokud některý z nich nebude obsahovat, některé telefony tuto sadu midletů odmítnou nainstalovat.

Přehled všech předdefinovaných atributů sady midletů:

Název atributu Povinný Popis atributu
MIDlet-Name Ano Název sady midletů, kterým se identifikuje uživateli
MIDlet-Version Ano Číslo verze sady midletů používané manažerským softwarem v telefonu při aktualizaci
MIDlet-Vendor Ano poskytovatel sady midletů
MIDlet-Icon Ne Jméno png souboru uvnitř JAR souboru. Tento obrázek by měl být použit jako ikona identifikující tuto sadu midletů
MIDlet-Description Ne popis sady midletů
MIDlet-Info-URL Ne URL, kde je možné najít další informace o této sadě midletů.
MIDlet-<n> Ano jméno, ikona a název hlavní třídy n-tého midletu oddělené čárkami
MIDlet-Jar-URL Ne URL, odkud je možné stáhnout jar soubor této sady midletů.
MIDlet-Jar-Size Ne velikost JAR souboru
MIDlet-Data-Size Ne Minimální velikost paměti, kterou tato sada midletů potřebuje pro uložení trvalých dat. Výchozí hodnota je 0.
MicroEdition-Profile Ano požadovaný J2ME profil, např. MIDP-1.0
MicroEdition-Configuration Ano požadovaná J2ME konfigurace, např. CLDC-1.0

Deskriptor aplikace

Deskriptor aplikace je textový soubor, který má stejný formát jako manifest soubor. Jmenuje se jmeno_sady_midletu.jad. Při instalaci sady midletů se nejprve do telefonu přenese deskriptor aplikace a JAR soubor se nahrává podle atributů v něm obsažených. Následující atributy jsou povinné:

  • MIDlet-Name
  • MIDlet-Version
  • MIDlet-Vendor
  • MIDlet-Jar-URL
  • MIDlet-Jar-Size

Kromě povinných atributů může deskriptor obsahovat další libovolné atributy, které nezačínají řetězcem MIDlet. K těmto atributům má programátor přístup přes metodu getAppProperty (String key) třídy MIDlet.

Odkazy

JVM pro PDA