CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end



Documenti analoghi
Java Mobile Developers Forum L o. Stefano Sanna


European Master on Critical Networked Systems Modulo su Mobile Systems

J2ME Platform. Symbian OS. Nokia property platform: Series 60. Microsoft Windows CE.NET Microsoft Windows Mobile Mobile client-server communication

European Master on Critical Networked Systems Modulo su Mobile Systems

JUG Sardegna Java Summer Meeting 16 Luglio

La piattaforma Java ME

Java per Sistemi Ubiqui

Prof. Pagani corrado JAVA

Java per Sistemi Mobili e Ubiqui

Java per Sistemi Mobili e Ubiqui

Java per Sistemi Mobili e Ubiqui

una Applet in una Xlet per applicazioni in ambito Televisione Digitale Terrestre Lorenzo Tani

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

Analisi e sviluppo di un client per l accesso a dati su server remoto da dispositivi embedded

Java per Sistemi Mobili e Ubiqui

Telemetria. Autore: Marco Mazzucchi

Java e i Tipi di dati primitivi. Parte 3

L o. Stefano Sanna

Sensoristica Avanzata per Dispositivi Mobili

Programmazione J2ME. Lezione 1. Le MIDlet. Di Blasi Gianpiero - D.M.I. - Università di Catania

Le applet Java. Esempio minimo

Architetture Applicative Altri Esempi

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Programmazione ad Oggetti. Java Parte I

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Java SE 7. Introduzione.

Corso sul linguaggio Java

Istallazione di Java - Uso delle librerie

Fondamenti di Informatica T2 Modulo 2

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Fondamenti di sviluppo mobile su Android

Java & Linux. Stefano Sanna Gruppo Utenti Linux Cagliari

Mobile Computing: Sviluppo Applicazione VoIP su Symbian OS

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

SVILUPPO DI UN COMPONENTE JAVABEAN CHE IMPLEMENTI FUNZIONALITA DI PARSING PER APPLICAZIONI MHP IN AMBITO TELEVISIONE DIGITALE TERRESTRE

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Informatica. Prof. A. Longheu. Introduzione a Java

Service discovery nella API Java Bluetooth JSR-82

con Reti Sociali di Impresa Pragma Management Systems Francesco Breda Le Soluzioni IBM Lotus per l' Impresa

Leggimi. Software di configurazione exlhoist V3.0.7

iseries Informazioni preliminari su Client Access Express

Corso sul linguaggio Java

DIREZIONE DIDATTICA DI SAN GIUSEPPE JATO Programma Operativo Nazionale Fondo Sociale Europeo - Competenze per lo sviluppo

Introduzione al corso. Obiettivo del corso

Panoramica: che cosa è necessario

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

Java: un linguaggio per applicazioni di rete

Programmazione in rete e laboratorio

Programmazione in rete e laboratorio

Scope e visibilità per classi

Aggiornamento del 20/04/2009: Tra Windows Mobile 6.1 e Windows Mobile 7 è stata prevista. Windows Phone Italy Cos'è Windows Mobile?

Introduzione alla programmazione Android. Emanuel Di Nardo

Applet. Applet: il termine identifica piccole applicazioni da eseguirsi all interno di un browser.

Programmazione Orientata agli Oggetti in Linguaggio Java

ArcGIS for Windows Mobile

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini

Programmazione Orientata agli Oggetti in Linguaggio Java

Paradigmi di programmazione (sperimentazioni)

Il Sistema Operativo

Esecuzioni client-side: le Applet

Java: loading dinamico e reflection

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

ADaMSoft. Procedure per l installazione del software in ambiente Microsoft Windows 3/6/2008. Powered by:

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

Progetto M.U.S.E. BT MUSic Everywhere over Bluetooth Parte client

Strumenti per la programmazione

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

SETA Selection Tool del Sistema ARTIST

Sistemi Di Elaborazione Dell informazione

L interfaccia grafica in Java

Ingegneria del Software 1: Eclipse

De Gaetano Andrea JAVA 4 EMBEDDED

Riassunto. GUI in Java con l AWT 1. Cos è una GUI. Oggi: GUI in Java, l AWT. GUI in Java. Un esempio. Stefano Mizzaro 1

Sistema operativo & file system 1

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II

CX-One: l'integrazione di tutti i dispositivi indipendentemente dalla rete di comunicazione. Tecnologia FDT/DTM

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

Lezione 2 Introduzione a Java (2)

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Open Database Connectivity (ODBC)

INFORMATICA NOVITÀ IL LINGUAGGIO JAVA. Massimiliano Bigatti. Guida alla programmazione di base IN ALLEGATO AL VOLUME

Ambienti di Sviluppo. Linguaggi compilati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Un architettura orientata ai servizi per la localizzazione di dispositivi mobili

Condividi in linea 3.1. Edizione 1

Le command line di Java

Guida di orientamento della documentazione di Business Objects BI Server

Marco Faella Elementi di programmazione di interfacce Grafiche. Il pattern OBSERVER.

Struttura dei Sistemi Operativi

Informatica. Terzo anno Prof. A. Longheu

Prof. Pagani corrado JAVA

Microsoft Windows. Introduzione al Sistema Operativo e Utilizzo del Calcolatore. Il Calcolatore. Il Calcolatore. Sistemi Operativi.

Transcript:

CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end Stefano Sanna JUG Sardegna

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

Java ME... ieri...

Java ME... oggi!

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 costituiscono un ecosistema complesso e modulare: CDC: Connected Device Configuration FP: Foundation Profile PBP: Personal Basis Profile PP: Personal Profile Personal Profile Personal Basis Profile Foundation Profile CDC

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

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...)

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!!!

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

Struttura di una Xlet import javax.microedition.xlet.xlet; import javax.microedition.xlet.xletcontext; 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) {... } } L'interfaccia grafica deve essere creata qui

Quattro interpretazioni di CDC e Personal Profile Windows Mobile (Qtek 9090) Symbian OS (UIQ, Sony-Ericsson M600) Symbian OS (Series 80, Nokia 9300) Savaje OS (GSPDA Jasper S20)

Ambienti di sviluppo Generic (Windows Mobile) Netbeans 5.0 Nokia Series 80 Platform SDK (PP) Mobility Pack 5.0 for CDC Nokia Series 80 P990 Ext Pkg Sony-Ericsson P990 M600 Ext Pkg Sony-Ericsson M600 Sony Ericsson CDC Platform 1 Ext Pkg Netbeans 5.5 Mobility Pack 5.5 for CDC Java Toolkit for CDC Savaje OS

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...)

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#"\J9\PPRO11\bin\j9.exe" "-jcl:ppro11" "-cp" "\MyApp.jar" org.myself.myapp Buon supporto JNI, che permette di estendere le funzionalità del runtime Java

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

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()); }

Windows Mobile: impostazioni della porta seriale Bluetooth

Windows Mobile: binding della porta seriale sul GPS Bluetooth

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); }

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)

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

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

Sun Java Toolkit 1.0 for CDC

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

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...)!

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

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

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

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

GRAZIE CDC e Personal Profile: la piattaforma Java ME per dispositivi hi-end Stefano Sanna JUG Sardegna