MokaByte 102 - Dicembre 2005
 
MokaByte 102 - Dicembre 2005 Prima pagina Cerca Home Page

 

 

 

J2ME vs Symbian

Questo articolo descrive le funzionalità offerte dalla piattaforma J2ME e dal sistema operativo Symbian. In particolare saranno analizzati i vantaggi nell’utilizzo di una o dell’altra tecnologia, con uno sguardo alla loro evoluzione

Introduzione
Lo sviluppo di applicazioni su dispositivi wireless può essere effettuato utilizzando diverse tecnologie. Per fornitori e programmatori è costante il confronto con le applicazioni Symbian based e quelle J2ME.
A grandi linee possiamo dire che Symbian è un potente sistema operativo utilizzato da diversi telefonini dell’ultima generazione, mentre J2ME (Java 2 Micro Edition) non è altro che una versione ridotta del Java 2 Standard Edition.
Sviluppare applicazioni Symbian equivale a produrre software dall’elevata potenzialità ma solo per dispositivi con sistemi operativi Symbian, mentre, sviluppare applicazioni J2ME, equivale a produrre software certamente meno potente ma in grado di funzionare su tutti i dispositivi dove risiede una particolare Java Virtual Machine.
Senza entrare troppo nel dettaglio osserviamo che con Symbian puntiamo molto su potenza e flessibilità, mentre con J2ME puntiamo su portabilità e compatibilità.
Generalmente su tutti i telefonini Symbian è presente una particolare Java Virtual Machine, ma non tutti i dispositivi che presentano al loro interno una Java Virtual Machine sono dotati di sistema operativo Symbian.
Prima di entrare nell’analisi delle differenze tra le due tecnologie, descriviamo più nello specifico il Symbian. Per quanto riguarda J2ME affronteremo in particolar modo la sua evoluzione, durante la quale si è avvicinato molto alle potenzialità del Symbian.

 

Panoramica su SYMBIAN OS
Symbian OS è un sistema operativo aperto, adottato come standard dalle principali aziende mondiali produttrici di dispositivi per la telefonia mobile (cellulari, smartphone, PDA).
Il sistema operativo è stato progettato per supportare i requisiti specifici del trasporto dati per i dispositivi mobili di nuova generazione 2G, 2,5G e 3G.
L’idea di realizzare una piattaforma leggera e flessibile che potesse stare in un cellulare nasce nel 1998 dai leader dell’industria della telefonia mobile Ericsson, Motorola, Nokia e dal 1999 Panasonic. Il punto di partenza fu la creazione di un sistema operativo, chiamato EPOC, sviluppato dalla Psion Software. Più tardi EPOC diventò Symbian OS e la Psion Software diventò Symbian.
Il primo vero cellulare basato su Tecnologia Symbian era il modello di Ericsson R380 basato su Symbian Quartz versione 5.x, un sistema chiuso (cioè non programmabile al di fuori della casa madre).
Attualmente la piattaforma Symbian vanta una serie di terminali sempre più vasta, per citarne solo alcuni si va dagli ultimissimi Nokia (N70, N71, N80, N91, N92) al Samsung SGH-D720, al Sony Ericsson P990, ma comprende dispositivi di molte altre case: BenQ, Motorola, Sendo, Jujitsu, Panasonic, Foma, Siemens, Arima, Lenovo. Nella prima metà del 2005 i telefoni Symbian nel mondo sono arrivati a 39 milioni!
L’ultima versione del Symbian OS è la 9.2. Vediamo quali sono le sue principali caratteristiche (vedi Fig.1):
Gestione della sicurezza: presenza di un meccanismo di difesa basato sul monitoraggio delle risorse allocate; infrastruttura che permette alle applicazioni di memorizzare dati in maniera protetta; possibilità di crittografia completa e gestione dei certificati, protocolli sicuri (HTTPS, SSL e TLS) e WIM framework.
Una ricca suite di applicazioni di base con programmi per la gestione di contatti, appuntamenti, messaggistica, OBEX per lo scambio di appuntamenti (vCalendar) e business cards (vCard), API integrate per la gestione di dati, testo, tastiera e grafica.
Supporto Java esaustivo: sono supportati gli ultimi Java standard, inclusi CLDC 1.1, MIDP 2.0, JTWI (JSR185), Mobile Media API (JSR135), Bluetooth (JSR082), Wireless Messaging (JSR120), Mobile 3D Graphics API (JSR184), Personal Information Management e FileGCF API (JSR075), Content Handling API (JSR 211) .
Avanzate funzionalità real time.
Supporto per l’hardware più recente: supporta le più nuove architetture di CPU, periferiche, memorie interne ed esterne.
Gestione completa dei messaggi: Internet email basate su POP3, IMAP4 e SMTP, incluso il supporto degli allegati. Supporto anche per IMAP4 IDLE command. Il formato email è basato su MIME. Supporto per SMS, EMS, MMS.
Avanzate funzionalità multimediali: supporto per la registrazione video, playback, streaming e conversione delle immagini.
Grafica avanzata: accesso diretto a schermo e tastiera, API per l'accelerazione grafica, aumentata flessibilità della UI (user interface) con supporto per visualizzazioni multiple e simultanee.
Protocolli di comunicazione che includono gli standard TCP/IP (IPv4/IPv6), WAP, IrDA, USB Bluetooth.
Supporto esteso per i protocolli di comunicazione: TCP/IP (IPv4/v6), RTP, RTCP, SIP, WAP 2.0 (Connectionless WSP e WAP Push); IrDA, Bluetooth e USB; supporto per multi-homing e link layer Quality-of-Service (QoS) su reti GPRS e UMTS.
Ottimizzato per telefoni cellulari: Symbian OS v9.2 è ottimizzato per il mercato 3G con supporto per WCDMA (3GPP R5), CSD, EDGE CSD, GPRS, EDGE GPRS, IS-95, 1xRTT, SIM, RUIM, UICC Toolkit, 3GPP R5 IMS, Smart Card API.
Specifiche funzionalità CDMA, incluso roaming su rete CDMA, third party OTA API, NAM programming mode, CDMA SMS stack, NAI handset identification, interfacce per abilitare Mobile IP, bridge e router gateway.
Supporto internazionale conforme allo standard Unicode 3.0
Sincronizzazione dati user-friendly: sincronizzazione over-the-air (OTA), sincronizzazione PC-based (su Bluetooth, infrarossi e USB) grazie all’uso di OMA Data Sync 1.2; PC Connectivity framework che consente di trasferire file e sincronizzare dati PIM.


F
igura 1 – Architettura Symbian OS v9.2

Il linguaggio di programmazione nativo per applicazioni Symbian è il C++. Symbian utilizza una propria implementazione del C++, ottimizzata per dispositivi dalla memoria limitata, ad esempio non è supportata la STL (Standard Template Library). Le API pubbliche C++ permettono agli sviluppatori l’accesso completo alle funzionalità del dispositivo di basso livello, sopra descritte.
La maggior parte dei fornitori fornisce agli sviluppatori degli SDK, mentre come ambienti di sviluppo si possono utilizzare Metrowerks CodeWarrior, Borland C++ Mobile Edition oppure Microsoft Visual C++ 6.0.

 

J2ME rincorre SYMBIAN
Spenderemo poche parole sulle origini e sulle caratteristiche della piattaforma J2ME, in quanto altri articoli pubblicati su questo sito vi illustrano nello specifico la tecnologia in questione.
In questo ambito vogliamo invece descrivere l’evoluzione di J2ME negli anni, dimostrando come essa sia andata spesso di pari passo con quella del Symbian OS a cui asintoticamente va avvicinandosi.
Dopo i primi tentativi di offrire agli sviluppatori un set di API Java per dispositivi mobili (si ricordino PersonalJava e JavaPhone API), nel 1999 Sun annuncia la nascita della Micro Edition.
Da subito l’idea di un Java “light”, strumento con il quale diffondere applicazioni sul mercato di massa, risulta molto appetibile per i costruttori.
Lo stesso consorzio Symbian si accorge della forza di J2ME e include il MIDP 1.0 nel Symbian OS v6.0 realizzato nel 2002. Ma, sebbene MIDP 1.0 avesse entusiasmato non poco la Wireless Java Community, fu subito evidente il collo di bottiglia di non poter accedere da una MIDlet alle funzionalità tipiche degli smartphone, cosa che era possibile utilizzando le API Symbian. Inoltre la tanto sventolata portabilità, soprattutto con MIDP 1.0, fu un vantaggio solo teorico, in quanto gli sviluppatori sanno bene che passando da un modello ad un altro di terminale mobile, non solo si dovevano apportare modifiche a livello di UI, ma spesso una semplice connessione http non funzionava più.
Di conseguenza si cominciò a lavorare al MIDP 2.0 e ad una serie di API aggiuntive.
Il MIDP 2.0 comincia ad essere uno strumento sufficientemente completo, in quanto offre un meccanismo di sicurezza, nuove UI API, Game e Audio API, Push Registry.
Accanto al MIDP 2.0 package opzionali quali MMAPI (Mobile Media API), WMA (Wireless Messaging API), JABWT (Java API for Bluetooth Wireless Technology), offrono nuove funzionalità per il supporto di video e immagini e la gestione della videocamera, per inviare e ricevere SMS, per accedere allo stack Bluetooth. Tutte queste API opzionali insieme al MIDP 2.0 vengono offerte da Symbian OS v7.0.
Da questo momento in poi lo sviluppo di nuove funzionalità su J2ME subisce un’accelerazione, nascono di continuo nuove JSR che mirano non solo a colmare il gap con le applicazioni native ma anche a rendere più facilmente programmabili alcune funzionalità.
Nascono così Mobile 3D Graphics per la grafica tridimensionale, File Connection API per l’accesso al file system, Personal Information Management per l’accesso alle informazioni personali come la rubrica, Content Handler API, Web Services API (parsing XML, RPC messaging, SOAP), Security and Trust Services API (sicurezza, crittografia, firma digitale, accesso a Smart Card), SIP API (instant messaging, presence, chatting, gaming), WMA 2.0 (oltre agli SMS supporto anche per MMS), Location API, ecc.
Le versioni 8.0 prima e 9.0 dopo del Symbian OS offrono man mano tutte queste API, funzionanti sopra la CLDC 1.1 VM. Del resto all’interno dei gruppi di esperti che si occupano delle JSR J2ME, la maggioranza sono ormai rappresentanti del consorzio Symbian, Nokia in primis.
Nel grafico in Fig. 2 possiamo vedere come le funzionalità di J2ME siano sempre maggiori col passare degli anni e con il progredire del Symbian OS, che risulta essere ormai il maggior aggregatore di risorse Java.


F
igura 2 – Evoluzione delle funzionalità di J2ME in funzione del Symbian OS

Intanto le implementazioni Java risultano ora totalmente compatibili con le specifiche “Java Technology for the Wireless Industry “ (JTWI, JSR 185). JTWI è un’iniziativa del JCP per definire un set minimo di API e di funzionalità di cui ogni telefono deve disporre. La release 1 di questa specifica prevede che il set minimo comprenda MIDP 2.0, CLDC 1.0, WMA e MMA
Anche le performance delle applicazioni Java sono andate migliorando nel tempo, grazie alla compilazione adattativa dinamica, all’accelerazione hardware degli interpreti di byte code, all’ottimizzazione della grafica e dell’interfaccia nativa. Allo stesso tempo anche le velocità di clock sono aumentate. In poche parole le performance di J2ME sono migliorate con l’evoluzione del sistema operativo Symbian OS (vedi Fig. 3), di 40 volte rispetto a quelle originali!


F
igura 3 – Evoluzione delle performance di J2ME in funzione del Symbian OS

Recentemente Sun Microsystems ha annunciato che sono 250 milioni i telefoni nel mondo che supportano la tecnologia Java!
Dopo quello che abbiamo detto possiamo riassumere quella che è la storia delle differenze, se vogliamo di vantaggi e svantaggi, nello sviluppo di applicazioni J2ME e Symbian: inizialmente Symbian accanto alla flessibilità e alla potenza caratteristiche di un sistema operativo presenta il punto debole di una scarsa diffusione sul mercato di massa; d’altro canto Java, grazie alla sua peculiare portabilità, si pone come veicolo di diffusione delle applicazioni mobili su moltissimi dispositivi. A creare difficoltà allo sviluppo di Java interviene da una parte l’impossibilità di poter creare applicazioni che utilizzino le funzioni native del telefono e dall’altra il fatto che la portabilità è solo virtuale, a livello di UI i telefoni sono diversi tra di loro e le implementazioni proprietarie del MIDP risultano spesso differenti.
Nel corso degli anni J2ME tende a realizzare ciò che per Symbian è già realtà e, anzi, laddove J2ME è offerto dal Symbian OS, si può notare come J2ME si avvantaggi dei progressi del sistema operativo.
Possiamo così sintetizzare i benefici che Symbian OS ha apportato a J2ME:
Robustezza: Symbian OS è pensato per essere attivo 24 ore al giorno, 7 giorni su 7. L’integrità dei dati è il vantaggio maggiore dei telefoni Symbian. Java si poggia su queste solide basi!
Funzionalità: come detto prima molte delle funzionalità offerte da J2ME e implementate in diversi package sono incluse nel sistema operativo Symbian.
“Firsr class citizens”: le applicazioni Java e le MIDlet sono “first class citizens” su Symbian OS. Esse sono installate e caricate come applicazioni native, possono utilizzare componenti UI native che ne facilitano la portabilità.
Performance: Symbian “precarica” le classi Java di sistema permettendo una diminuzione dei tempi di start-up delle applicazioni e rendendo disponibile alle applicazioni più memoria.

 

Conclusioni
Dall’analisi che abbiamo fatto possiamo concludere come, allo stato attuale, J2ME sia diventato uno strumento di sviluppo completo, che offre moltissime delle funzionalità messe a disposizione dal Symbian OS.
E’ anche da evidenziare che J2ME si è appoggiato a Symbian traendone miglioramenti in termini di performance e robustezza. Symbian invece trae vantaggio dal fatto che includere J2ME nel suo core rende il sistema operativo più “vendibile”. Non dimentichiamo infatti che, ad esempio, per i leader del mobile gaming conviene, per diffondere i propri prodotti, realizzarli utilizzando una tecnologia indipendente dal sistema operativo, e cioè Java. Del resto attualmente i telefoni con supporto Java nel mondo sono 250 milioni contro i 39 milioni che montano Symbian OS.
Il futuro prevedibilmente porterà Java su tutti i terminali, d’altro canto Symbian OS dovrà lottare con un gigante che si sta affacciando sul mondo del mobile: Windows!

 

Bibliografia
[1] http://java.sun.com/j2me/index.jsp
[2] http://www.symbian.com


Vincenzo Viola è nato a Formia (LT) il 03/11/1977, laureato in Ingegneria delle Telecomunicazioni presso l’Università Federico II di Napoli. Lavora a Roma, come progettista software per una Mobile Company che offre la sua consulenza ai gestori di telefonia e alle major del settore ICT.