- Share
- Favorite
- Request download ?Message the author to enable downloading file.
-
Also on LinkedIn
- More...
Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Slideshow Transcript
- Slide 1: CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end Stefano Sanna JUG Sardegna
- Slide 2: CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end Abstract: Java ME non è solo CLDC e MIDP: i dispositivi mobili ad alte prestazioni possono avvalersi di una piattaforma Java completa, modulare ed estremamente potente. CDC e Personal Profile sono i componenti più importanti di questa piattaforma Requisiti: conoscenza base di Java SE e Java ME (CLDC/MIDP) Agenda: ✔ CDC e i suoi profili: la nuova frontiera di Java ME ✔ CDC Platform: ✔ Microsoft Windows Mobile ✔ Nokia Series 80 (9300 e 9500) ✔ Sony-Ericsson CDC Platform 1 (P990 e M600) ✔ Savaje OS (GSPDA Jasper S20) ✔ Conclusioni e riferimenti
- Slide 3: Java ME... ieri...
- Slide 4: Java ME... oggi!
- Slide 5: CDC, FP, PBP, PP: ecco la squadra! ✔ Parliamo della piattaforma Java ME rivolta a dispositivi con queste caratteristiche hardware minime: ✔ ROM: minimo 512K ✔ RAM: minimo 256K ✔ Supporto connettività ✔ Implementazione completa di una Java Virtual Machine standard (così come definita su “Java Virtual Machine Specification, 2nd Edition”) ✔ Rispetto al mondo MIDP, CDC e i relativi profili Personal costituiscono un ecosistema complesso e modulare: Profile ✔ CDC: Connected Device Configuration Personal Basis Profile ✔ FP: Foundation Profile Foundation ✔ PBP: Personal Basis Profile Profile CDC ✔ PP: Personal Profile
- Slide 6: Chi fa cosa ✔ CDC (JSR 36, JSR 218): ✔ Fornisce una VM compatibile J2SE, con un subset della libreria standard: ✔ java.lang, java.lang.ref, java.lang.reflect, java.math ✔ java.io, java.net, javax.microedition.io ✔ java.security, java.security.cert, java.text, java.util, java.util.jar, java.util.zip ✔ Foundation Profile (JSR 46, JSR 219): ✔ Completa i package forniti da CDC, per avere piena copertura della libreria standard ✔ Personal Basis Profile (JSR 129, JSR 217): ✔ Aggiunge il supporto base AWT per componenti lightweight e introduce il modello di applicazioni basato su Xlet: ✔ java.awt, java.awt.event, java.awt.color, java.awt.image ✔ java.beans, java.rmi, java.rmi.registry (per Xlet) ✔ javax.microedition.xlet, javax.microedition.xlet.ixc ✔ Personal Profile (JSR 62, JSR 216): ✔ Completa il supporto AWT con i componenti nativi: ✔ java.applet, java.awt.datatransfer
- Slide 7: CDC e PP ✔ Libreria standard molto ricca, sottoinsieme della Standard Edition (JSE 1.3 per CDC/FP/PBP/PP 1.0 e JSE 1.4 per CDC/FP/PBP/PP 1.1, con l'esclusione delle estensioni del linguaggio) ✔ Sfruttano le prestazioni dei palmari e degli smartphone di fascia alta (memoria, file system, risorse native...) ✔ Supporto JNI: ciò che il runtime non offre può essere sviluppato ad hoc se necessario ✔ Possibilità di usare componenti nativi e di utilizzare librerie grafiche diverse da quella standard (HAVi, DVB, SWT, LWVCL...) ✔ GUI AWT, con qualche eccezione: ✔ La specifica precisa che alcune funzionalità sono dipendenti dalla piattaforma. In alcuni casi l'invocazione di una certa funzionalità non produce alcun effetto, in altri casi la VM solleva una eccezione. ✔ java.awt.Frame potrebbe non essere ridimensionabile né collocabile a piacere sul display ✔ gestione eventi e colori possono avere limitazioni ✔ non tutte le restrizioni sono esplicite (getButton() su MouseEvent...)
- Slide 8: Tre modelli applicativi ✔ Il top della gamma Java ME lascia ampia libertà allo sviluppatore, che può scegliere il modello applicativo più opportuno: ✔ Stand-alone: il metodo main() costituisce l'entry point dell'applicazione ✔ Managed: le applicazioni implementano l'interfaccia Xlet, gestita a sua volta da un XletManager, che riprende alcuni dei concetti delle MIDlet e, soprattutto, delle Xlet inizialmente introdotte con Java TV ✔ Embedded: le applicazioni (Applet) sono eseguite all'interno dell'AppletViewer o di browser opportunamente esteso ✔ Il modello applicativo scelto dipende dal dispositivo in uso!!!
- Slide 9: Xlet e XletContext ✔ La Xlet è una managed application che interagisce con il runtime del dispositivo attraverso un XletContext ✔ In particolare l'interazione si basa su: ✔ 4 callback per inizializzazione, avvio, sospensione e disattivazione definite dall'interfaccia Xlet ✔ 6 metodi della classe XletContext per l'accesso al ClassLoader, al Container per la gestione della GUI, la lettura delle property dell'applicazione e la notifica, da parte della Xlet, del cambio di stato (paused/destroyed) ✔ Il modello Xlet è molto simile a quello incontrato in ambito MIDP, con alcune importanti differenze: ✔ Xlet è una interfaccia da implementare, non una classe da estendere ✔ l'inizializzazione deve avvenire nel corpo del metodo initXlet e non nel costruttore ✔ i metodi per interagire con il runtime environment Java ME non fanno parte di Xlet ma sono esposti dall'XletContext
- Slide 10: Struttura di una Xlet import javax.microedition.xlet.Xlet; import javax.microedition.xlet.XletContext; L'interfaccia grafica deve essere creata qui import javax.microedition.xlet.ixc.IxcRegistry; public class HelloCDC implements Xlet { private XletContext context; public void initXlet(XletContext context) { this.context = context; } public void startXlet() { ... } public void pauseXlet() { ... } public void destroyXlet(boolean unconditional) { ... } }
- Slide 11: Quattro interpretazioni di CDC e Personal Profile Windows Mobile Symbian OS (Qtek 9090) (UIQ, Sony-Ericsson M600) Symbian OS Savaje OS (Series 80, Nokia 9300) (GSPDA Jasper S20)
- Slide 12: Ambienti di sviluppo Generic (Windows Mobile) Netbeans 5.0 Nokia Series 80 Nokia Series 80 Platform SDK (PP) Mobility Pack 5.0 for CDC Sony-Ericsson P990 P990 Ext Pkg Sony Ericsson CDC Platform 1 Ext Pkg Sony-Ericsson M600 M600 Ext Pkg Mobility Pack 5.5 Java Toolkit Savaje OS Netbeans 5.5 for CDC for CDC
- Slide 13: Microsoft Windows Mobile ✔ E' il sistema operativo più diffuso su dispositivi PDA: handhelds, PDA-phone, navigatori satellitari, car-pc... ✔ Sono disponibili runtime environment compatibili CDC/PP: ✔ IBM WebSphere Everyplace Micro Environment ✔ http://www.ibm.com/developerworks/websphere/zones/wireless/weme_eval_runti mes.html ✔ Esmertec JBed ✔ http://www.esmertec.com/ ✔ NSICom CrE-ME 4.1 ✔ http://www.nsicom.com/ ✔ Mysaifu JVM (progetto open source!) ✔ http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html ✔ Alcuni runtime non sono ben armonizzati con il sistema operativo: ✔ procedura di installazione macchinosa ✔ interfaccia utente incoerente rispetto al look& feel del dispositivo (due menù bar, tre stili di pulsanti...)
- Slide 14: IBM WebSphere Everyplace Micro Environment ✔ Supporta CDC 1.1 e Personal Profile 1.1, con modello applicativo stand-alone ✔ Offre un'ottima integrazione con la GUI del sistema operativo: ✔ solo Frame full-screen ✔ menù sulla status-bar ✔ supporto per il touchscreen ✔ Sviluppo: ✔ E' possibile utilizzare gli strumenti JSE, facendo attenzione ad utilizzare esclusivamente librerie e funzionalità supportate ✔ Deployment: ✔ file JAR contenente le classi e le eventuali risorse ✔ script NOME_APP.lnk per l'avvio: 255#"J9PPRO11inj9.exe" "-jcl:ppro11" "-cp" "MyApp.jar" org.myself.MyApp ✔ Buon supporto JNI, che permette di estendere le funzionalità del runtime Java
- Slide 15: JNI: oltre il runtime Java ✔ JNI permette di sfruttare le funzionalità native del dispositivo: ✔ accesso alle porte seriali ✔ accesso alle estensioni telefoniche ✔ integrazione con le applicazioni PIM ✔ Un caso comune: GPS Bluetooth ✔ è possibile delegare al sistema operativo il discovery dei dispositivi Bluetooth e la creazione del device seriale ✔ attraverso JNI si accede a JavaComm e si legge lo stream NMEA contenente le informazioni di localizzazione ✔ Implementazioni JavaComm per Windows Mobile: ✔ http://www.teilo.net/software/CEJavaComm/download.jsp ✔ http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html ✔ http://www.rxtx.org
- Slide 16: Java Comm e accesso a GPS Bluetooth ✔ Utilizzando l'implementazione Telio/CESerial, la procedura di installazione è: ✔ comm.jar + CESerial.jar: contengono le classi Java. Devono essere inclusi nel classpath dell'applicazione ✔ commapi.dll: è la libreria a caricamento dinamico nativa. Deve essere copiata nella directory Windows ✔ javax.comm.properties: è il file contenente le property. Deve essere copiato nella directory contentente i file JAR ✔ L'applicazione può ottenere una enumerazione delle porte disponibili: Enumeration ports = CommPortIdentifier.getPortIdentifiers(); while (ports.hasMoreElements()) { CommPortIdentifier id = (CommPortIdentifier) ports.nextElement(); System.out.println("Port found: " + id.getName()); }
- Slide 17: Windows Mobile: impostazioni della porta seriale Bluetooth
- Slide 18: Windows Mobile: binding della porta seriale sul GPS Bluetooth
- Slide 19: Windows Mobile: lo stream NMEA è nostro! SerialPort port = (SerialPort) CommPortIdentifier.getPortIdentifier("COM6:").open("WM5", 5000); port.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); // 8N1@4800bps BufferedReader buffer = new BufferedReader(new InputStreamReader(port.getInputStream())); String sentence; while((sentence = buffer.readLine()) != null) { System.out.println(sentence); }
- Slide 20: Nokia Series 80 ✔ Lo sviluppo è pressoché analogo a quello per Windows Mobile: il runtime Java è infatti una versione custom di J9 per la serie Communicator ✔ Il modello applicativo è di tipo stand-alone ma affinché l'applicazione sia riconosciuta dalla Java Virtual Machine è necessario che il Manifest del JAR file contenga alcune informazioni accessorie: Main-class: org.mycompany.MyApplicationMainClass PproApp-Name: MyApplication PproApp-Vendor: MyCompany PproApp-Version: 0.0.1 ✔ Senza queste informazioni l'applicazione non viene installata! ✔ Il processo di sviluppo può essere semplificato utilizzando: ✔ Netbeans 5.0 ✔ Mobility Pack for CDC 5.0 ✔ Nokia Series 80 Platform SDK for Symbian OS, for Java, Personal Profile (http://www.forum.nokia.com/main/0,6566,034-367,00.html)
- Slide 21: Il futuro: Netbeans 5.5, CDC Mobility Pack 5.5, Java Toolkit for CDC ✔ La nuova versione di Netbeans offre un miglior supporto allo sviluppo CDC: ✔ CDC Mobility Pack, per l'integrazione con custom developer platform (Series 80, UIQ...) ✔ Integrazione con il Java Toolkit for CDC ✔ Uso di Matisse per lo sviluppo visuale delle interfacce grafiche basate sulla JSR 209 ✔ Deployment su device Jasper S20
- Slide 22: Sun Java Toolkit 1.0 for CDC ✔ E' il nuovo strumento base per lo sviluppo di applicazioni, Xlet e Applet per CDC e i profili superiori ✔ E' basato sulla Netbeans Platform e, rispetto al Java Wireless Toolkit, offre una migliore gestione dei progetti e un editor di testi base ✔ API supportate: ✔ Connected Device Configuration (CDC) 1.1 (JSR 218) ✔ Foundation Profile (FP) 1.1 (JSR 219) with Security Optional Package 1.0 ✔ Personal Basis Profile (PBP) 1.1 (JSR 217) ✔ Personal Profile (PP) 1.1 (JSR 216) ✔ Advanced Graphic and User Interface Optional Package for the J2ME Platforn (AGUI) 1.0 (JSR 209) (si tratta di una implementazione beta) ✔ L'Early Access version è disponibile presso: http://java.sun.com/products/cdctoolkit/download-1_0-ea.html
- Slide 23: Sun Java Toolkit 1.0 for CDC
- Slide 24: Savaje OS ✔ Savaje OS porta una piccola grande rivoluzione nel mondo dei dispositivi mobili: finalmente un terminale con sistema operativo interamente in Java e con una ridottissima componente nativa (indispensabile per le funzionalità telefoniche, i codec multimedia...) http://www.savaje.com ✔ Lo sviluppo su Savaje si basa sugli strumenti più recenti (attualmente in beta o preview) e supporta il modello applicativo Xlet
- Slide 25: GSPDA Jasper S20 ✔ E' il primo dispositivo equipaggiato con Savaje OS e rilasciato in una “Developer Version 2006” all'ultima JavaOne ✔ Impressionante dotazione del runtime Java: ✔ CLDC 1.1, MIDP 2.0, JTWI, PIM/FileConnection API (JSR 75), Mobile Media API (JSR 135), Mobile 3D Graphics (JSR 183), Wireless Messaging API 1.1 e 2.0 (JSR 120 e JSR 205), Bluetooth API (JSR 82), XML Parsing (JSR 172, senza il subset JAX-RPC) ✔ CDC 1.1, Foundation Profile, Personal Basis Profile, Advanced Multimedia Supplements (JSR 234), JAIN Presence e Instant Messaging (JSR 186-187), Security and Trust Services API (JSR 177) e Advanced Graphics and User Interface Optional Package (JSR 209) ✔ CLDC e CDC condividono lo stesso runtime e la configurazione hi-end può avvantaggiarsi delle API opzionali normalmente riservate alla configurazione consumer (BT, WMA, WSA...)!
- Slide 26: Sviluppo per Savaje OS ✔ Per sviluppare applicazioni per Jasper S20 occorre: ✔ Netbeans 5.5 + Mobility Pack for CDC 5.5 ✔ per il supporto ai progetti CDC e la gestione dei toolkit e SDK ✔ Java Toolkit for CDC ✔ per il supporto JSR 209 indispensabile per lo sviluppo della GUI ✔ per l'emulatore CDC/PP ✔ Class Library Savaje (SavajeDeveloper.jar) ✔ necessaria per compilare le applicazioni che utilizzano funzionalità native del dispositivo o API opzionali del profilo MIDP ✔ Netbeans 5.5 supporta il deployment completo sul dispositivo: ✔ l'applicazione è distribuita in bundle, contentente il bytecode e il file JNLP per l'avvio della main class ✔ il bundle è copiato via USB-storage sul dispositivo ✔ Documentazione e risorse: http://www.savaje.com
- Slide 27: Alcune cose da ricordare... ✔ Prima di intraprendere lo sviluppo di una applicazione basata su CDC è importante tenere in considerazioni alcuni aspetti critici: ✔ Modello applicativo ✔ i tre modelli (stand-alone, Xlet e Applet) non sono contemporaneamente supportati da tutti i dispositivi ✔ Deployment ✔ dispositivi diversi supportano modalità di deployment diverse e incompatibili tra loro (si pensi alla differenza tra Windows Mobile e Savaje) ✔ Interfaccia utente ✔ è raccomandato l'uso di layout dinamici (BorderLayout, GridLayout...) perché dimensioni e orientamento dei display possono variare notevolmente (si pensi alla differenza tra Nokia 9300 e Qtek 9090) ✔ l'interfaccia potrebbe prevedere l'uso di un touchscreen ✔ la presenza della JSR 209 non implica la presenza di AWT!!! Ad esempio, Jasper S20 include il supporto (parziale) a Swing ma non dispone dei componenti nativi AWT inclusi nel Personal Profile: una applicazione scritta per Windows Mobile non può funzionare su Savaje OS senza la riscrittura della GUI
- Slide 28: Conclusioni ✔ Il mercato dei dispositivi hi-end è ricco e in crescita: ✔ hardware potente, flessibile, con grandi display, connettività completa ✔ sistemi operativi più robusti e completi nelle funzionalità di connettività e gestione dati ✔ si diffonde la “cultura della connettività in movimento” e gli utenti cominciano ad apprezzare la possibilità di poter consultare la posta, chattare con gli amici, accedere al web e ad altre risorse personali in qualunque luogo e in qualunque momento ✔ Java ME è una tecnologia matura per sfruttare appieno questo mercato: ✔ CDC, profili correlati ed API opzionali formano una piattaforma potente e modulare per la realizzazione di applicazioni complesse e scalabili: le limitazioni di CLDC ed MIDP sono un ricordo! ✔ Gli ambienti di sviluppo si integrano perfettamente con gli SDK forniti dai produttori dei dispositivi e permettono di migliorare notevolmente la qualità del lavoro svolto ✔ Manca una base di conoscenza ampia e collaudata come quella di CLDC/MIDP: a noi sviluppatori è richiesto di condividere la nostra esperienza, proporre best practice e pattern per trarre massimo vantaggio da questa potente piattaforma e attirare nuovi sviluppatori e nuove idee
- Slide 29: Riferimenti ✔ Specifiche e documentazione: ✔ CDC e profili superiori: http://java.sun.com/javame/overview.html ✔ Netbeans + Mobility Pack: http://www.netbeans.org/kb/50/mobilitycdc.html ✔ Strumenti: ✔ Netbeans: http://www.netbeans.org ✔ IBM WEME: http://www.ibm.com/developerworks/websphere/zones/wireless ✔ Nokia: http://www.forum.nokia.com ✔ Sony-Ericsson: http://developer.sonyericsson.com ✔ UIQ: http://www.uiq.com ✔ Savaje: http://www.savaje.com ✔ La community italiana: Java Mobile Developers Forum ✔ http://jmdf.java2me.org ✔ Chi vi parla... :-) ✔ email: gerdavax@gerdavax.it - web: http://www.gerdavax.it
- Slide 30: GRAZIE CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end Stefano Sanna JUG Sardegna




