M-biznes: Mobile Business Realizacja aplikacji mobilnych w języku Java E-business (Electronic Business): dostęp do komputerowych systemów sprzedaży towarów, usług i informacji za pomocą komputerów osobistych podłączonych do sieci Internet M-business: dostęp do komputerowych systemów sprzedaży towarów, usług i informacji za pomocą urządzeń przenośnych (np. telefon komórkowy, palmtop) Typy urządzeń przenośnych Przykłady zastosowań Wyszukiwanie połączeń kolejowych i lotniczych, Realizacja operacji bankowych (przelewy, lokaty), Gry zespołowe Opłacanie postoju samochodu w strefie parkowania Sprzedaż napojów z automatów Sprzedaż biletów do kina/teatru, komunikacji miejskiej Zastąpienie karty kredytowej Dystrybucja oprogramowania Telefon komórkowy, palmtop, interakcyjny pager, itp.
Charakterystyka techniczna urządzeń przenośnich (-) 160KB 512 KB pamięci operacyjnej dla programów użytkownika (-) Niewielka moc obliczeniowa procesora (-) Ograniczona energia zasilania (-) Ograniczone, nietrwałe i zawodne połączenia sieciowe (-) Ograniczony interfejs użytkownika: niewielki wyświetlacz, uproszczona klawiatura (czasami zastąpiona ekranem dotykowym lub urządzeniem głosowym) (+) Dostęp do informacji o aktualnej lokalizacji urządzenia (umożliwia np. powiązanie oferty dla klienta z miejscem, w którym przebywa) Technologie budowy oprogramowania Proste systemy wykorzystujące wiadomości SMS (użytkownik wysyła żądanie jako wiadomość SMS, zdalny system komputerowy przekazuje wyniki obsługi żądania również jako SMS) Telefony komórkowe/palmtopy potrafiące wyświetlać tekstowograficzne dokumenty WML/WAP (użytkownik wypełnia formularz wyświetlany na ekranie telefonu, następnie wprowadzone dane są przesyłane do zdalnego systemu komputerowego, który przekazuje wyniki obsługi żądania w postaci tekstowo-graficznego dokumentu) Telefony komórkowe/palmtopy zdolne do uruchamiania programów pisanych w języku programowania Java (użytkownik instaluje w swoim telefonie program komputerowy, który po uruchomieniu wygodnie obsługuje użytkownika) Architektura SMS Pierwsza generacja: SMS Program zewnętrzny Centrum SMS realizacja płatności (TVN24, MPK Poznań, RadioZet Powodzianom) serwisy informacyjne (PKP, informacje agencyjne) gry tekstowe dostęp do poczty elektronicznej
Dostęp do Internetu poprzez WAP Telefon komórkowy zgodny z WAP Druga generacja: WAP protokół WAP Brama WAP Brama WAP pobiera dokumenty WML, kompresuje je i wysyła do telefonu komórkowego Protokół HTTP Serwer WWW dokument WML WAP (Wireless Application Protocol) to standard dostępu telefonów komórkowych do Internetu; WAP pozwala urządzeniom mobilnym na korzystanie z rozmaitych źródeł informacyjnych (głównie WWW) Dokumenty przesyłane przez WAP są tworzone w języku WML (Wireless Markup Language); istnieje możliwość tworzenia funkcji interakcji w, podobnym do JavaScript, języku WMLScript. Język WML Język Wireless Markup Language (WML), podobny do HTML, służy do tworzenia dokumentów udostępnianych poprzez WAP Dokumenty WML składają się z tzw. kart (cards); w danej chwili tylko jedna karta może być wyświetlana na ekranie urządzenia Każdy dokument WML rozpoczyna się nagłówkiem, złożonym z dwóch części: nagłówka XML i znacznika DTD: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/dtd/wml_1.1.xml"> Znaczniki Card Do grupowania treści wewnątrz dokumentu WML służy znacznik <card>: <card id="id" title="title"> <p> content </p> </card> id - nazwa karty, używana do nawigacji title - tytuł karty, do wyświetlania na szczycie ekranu content - treść tekstowa lub kombinacja innych znaczników WML (znaczniki paragrafów <p>..</p> są obowiązkowe) Wszystkie karty muszą być zamknięte wewnątrz znaczników <wml>..</wml>
Przykładowe znaczniki WML Tekst wytłuszczony: <b></b> Tekst podkreślony: <u></u> Tekst pochylony: <i></i> Tekst powiększony: <big></big> Tekst pomniejszony: <small></small> Tekst wyróżniony: <em></em> Koniec wiersza: <br/> Obraz graficzny: <img src="file" alt="caption"/> Tabelki: <table columns="value"></table>, <tr></tr>,<td></td> Łączniki zewnętrzne: <a href="file">link text</a> Łączniki do innych kart: <a href="#card_id">link text</a> Przykład dokumentu WML <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/dtd/wml_1.1.xml"> <wml> <card id="home" title="my WAP Home"> <p> <img src="photo1.wbmp" alt="my photo"/> <b>this</b> is an example WML page.(<a href="#addr">contact</a>) </p> </card> <card id="addr" title="contact"> <p align="center"> <big>my address:</big> Maciej Zakrzewicz<br/> Piotrowo 3a<br/> Poznan<br/> POLAND </p> </card> </wml> Urządzenia mobilne zgodne z J2ME Trzecia generacja: Java Java2 Micro Edition to specyfikacja języka programowania niewielkich aplikacji, pracujących w ograniczonym środowisku (np. telefony komórkowe) Programy dla telefonów komórkowych tworzone w środowisku J2ME nazywane są MIDletami (Mobile Information Device Application) Do uruchamiania MIDletów konieczne jest środowisko uruchomieniowe Java Virtual Machine (JVM) lub Kilobyte VM (KVM - miniaturowa wersja JVM, <256KB)
Konfiguracja, profil Konfiguracja (configuration): definicja minimalnego środowiska uruchomieniowego dla programów: maszyna wirtualna Java i podstawowe API; obecnie sformułowano dwie konfiguracje: CLDC (dla urządzeń bardzo ograniczonych) i CDC (nadzbiór CLDC, zbliżony do J2SE) Profil (profile): zbiór API wzbogacających konfigurację o możliwości specyficznych zastosowań urządzenia mobilnego MIDP (Mobile Information Device Profile) wraz z CLDC stanowi kompletne środowisko J2ME dla takich urządzeń mobilnych jak telefony komórkowe Programowanie w środowisku Java2 Micro Edition import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class Demo extends MIDlet implements CommandListener { private Form mmainform; public Demo() { mmainform = new Form("HelloMIDlet"); mmainform.append(new StringItem(null, "Witaj!")); mmainform.addcommand(new Command("Koniec", 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();}} Instalowanie i uruchamianie programu Pliki JAD i JAR Brama WAP Zawartość pliku JAD MIDlet-1: TestProject, TestProject.png, Test2 MIDlet-Jar-Size: 100 MIDlet-Jar-URL: TestProject.jar Serwer WWW MIDlet-Name: TestProject MIDlet-Vendor: Sun Microsystems MIDlet-Version: 1.0 JAD JAR Telefon komórkowy Zawartość pliku JAR meta-inf\manifest.mf Demo.class Plik opisowy Skompilowany kod programu
Pakiety J2ME javax.microedition.lcdui klasy obsługi interfejsu użytkownika (formularze, grafika, interakcja) javax.microedition.rms klasy obsługi trwałości (Record Management System) javax.microedition.midlet klasy aplikacji MIDlet oraz interakcji ze środowiskiem uruchomieniowym javax.microedition.io klasy obsługi komunikacji sieciowej pakiety standardowe: java.io, java.lang, java.util pakiety opcjonalne: javax.sql, javax.wireless.messaging, javax.microedition.media, javax.microedition.location, javax.bluetooth, itd. Implementacja MIDletów Java (1/5) Wymagania systemowe: Java 2 Standard Edition SDK wybrane biblioteki standardowe kompilator i JVM J2ME Wireless Toolkit biblioteki J2ME definicja i kompilacja projektu generowanie plików JAD budowa archiwów JAR testowe uruchamianie aplikacji narzędzia instalacyjne dostarczane przez producenta urządzeń mobilnych Implementacja MIDletów Java (2/5) Uruchomienie J2ME Wireless Toolkit Toolbar Implementacja MIDletów Java (3/5) Tworzenie kodu źródłowego w katalogu SRC projektu Kompilacja kodu Utworzenie nowego projektu konstrukcja drzewa katalogów
Implementacja MIDletów Java (4/5) Testowe uruchomienie programu Implementacja MIDletów Java (5/5) Instalacja programu na urządzeniu przenośnym Przygotowanie archiwum JAR (Project->Package->Create Package) Uruchomienie programu na urządzeniu przenośnym Przykład komunikacja MIDletu z serwletem Java private void connect() { HttpConnection hc = null; InputStream in = null; String url = "http://miner/servlets/myservlet"; try { hc = (HttpConnection)Connector.open(url); in = hc.openinputstream(); int contentlength = (int)hc.getlength(); byte[] raw = new byte[contentlength]; int length = in.read(raw); in.close(); hc.close(); String s = new String(raw, 0, length); mmessageitem.settext(s); } catch (IOException ioe) { mmessageitem.settext(ioe.tostring()); } mdisplay.setcurrent(mmainform); } Referencje Wireless Development Tutorial Part I (http://developers.sun.com/techtopics/mobility/midp/articles/wtoolkit) Wireless Development Tutorial Part II (http://developers.sun.com/techtopics/mobility/midp/articles/tutorial2) Sun J2ME Wireless Toolkit (http://java.sun.com/products/j2mewtoolkit)