Quando il MIDP ti sta stretto
La piattaforma J2ME è composta principalmente da configurazioni e profili.
Ciascuna di queste suddivisioni prevede la fornitura di specifiche API di sviluppo (sostanzialmente si tratta di package Java) che permettono di accedere ad alto livello alle caratteristiche della fascia di dispositivi che ci interessa.
I telefoni cellulari, per esempio, sono compresi nel profilo MIDP (Mobile Information Device Profile) che a sua volta fa parte della configurazione CLDC (Connected Limited Device Configuration).
Per essere il più possibile flessibile e compatibile con i dispositivi cui si indirizza, questo profilo deve essere, per forza di cose, limitato ad un set minimale di funzionalità. Questo set è sufficiente nella maggior parte dei casi, ma, poiché l’appetito vien mangiando, ecco emergere la necessità di nuove funzionalità non presenti del profilo originale.
Le soluzioni possibili per saziare la “fame” da funzionalità sono almeno due:
– API specifiche di una certa marca di dispositivi (che saranno tendenzialmente incompatibili con le altre marche e quindi l’applicazione non sarà più portabile)
– nuovi package standard in grado di fornire funzionalità aggiuntive
La scelta più intelligente, a parte casi particolari, sembra essere certamente la seconda, vediamo quindi quali sono i package opzionali più interessanti.
JSR 66: RMI Optional Package
RMI (Remote Method Invocation) è la possibilità offerta dal J2SE di utilizzare, dall’interno di oggetti in esecuzione dentro una virtual machine, metodi di oggetti in esecuzione all’interno di un’altra.
RMIOP è quindi un sottoinsieme di RMI come definito all’interno del J2SE 1.3 ed è un’estensione applicabile alla configurazione CDC. Non è quindi utilizzabile come estensione del profilo MIDP né di altri profili interni alla CLDC.
Le specifiche complete della RMIOP sono disponibili qui.
JSR 120: Wireless Messaging API
Gli SMS hanno cambiato in breve tempo il modo di comunicare di.
Una piattaforma di sviluppo per applicazioni che devono essere eseguite sui telefoni cellulari non poteva non avere le API per poter utilizzare il protocollo SMS.
Il WMA estende il CLDC Generic Connection Framework definendo una nuova interfaccia di connessione.
Per verificare la presenza dell’interfaccia sul proprio dispositivo è necessario eseguire un test di questo genere:
public static boolean isWMAPresent(){ try { Class.forName(“javax.wireless.messaging.MessageConnection”); return true; } catch(Exception e){ return false; } }
Se il test ha esito positivo è possibile utilizzare le API in questo modo:
import javax.microedition.io.*; import javax.wireless.messaging.*; MessageConnection conn = null; String url = “sms://+417034967891”; try { conn = (MessageConnection) Connector.open(url); TextMessage msg = conn.newMessage(conn.TEXT_MESSAGE); msg.setPayloadText(“Please call me!”); conn.send(msg); } catch(Exception e){ // handle errors } finally { if(conn != null){ try { conn.close(); } catch(Exception e){} } }
Conclusioni
La lista completa dei package opzionali a disposizione della piattaforma J2ME è disponibile qui.
È molto probabile che l’aver definito un protocollo di estensioni renda la piattaforma ancora più flessibile di quanto non sia già adesso. In breve tempo ci saranno estensioni di tutti i tipi e soprattutto compatibili con metodi di comunicazione che ancora oggi non conosciamo.