I/O & Midlet
Esempio di Midlet che fà uso di I/O
Dopo aver iniziato a capire come funziona il mondo J2ME è interessante prendere confidenza con le risorse di cui disponiamo. Prima di tutto dobbiamo renderci conto di non avere a disposizione il linguaggio JAVA, ma un suo piccolo dialetto.
Quindi per iniziare a meglio addentrarci in questo intrigante mondo vediamo come sia possibile reperire informazioni tramite Network (package di interesse javax.microedition.io).
Immaginiamo di avere a disposizione un nostro applicativo server-side (magari un webservice) che quando lo richiamiamo tramite web ci restituisce le 5 ultime notizie del giorno. Per accedere a delle risorse in J2ME abbiamo la classe Connector, che viene instanziata con l’url di interesse della risorsa.L’url può anche non incominciare con essere necessariamente http, esiste ad esempio file:// se ci troviamo a programmare su Siemens, socket://, location:// etc etc.
Ma vediamo subito un pezzo di codice per capire meglio di cosa stiamo parlando:
1 2 3 4 5 6 7 8 9 10 11 12 |
HttpConnection hc=null; InputStream is=null; StringBuffer b ; String GET_URL = "http://quelsito.it/notizie.php"; hc = (HttpConnection)Connector.open(GET_URL); is = hc.openInputStream(); while ((char)(ch = is.read()) != -1) { b.append((char)ch); System.out.println((char)ch); } s = new String(b.toString()); |
Vediamo in questo pezzo di codice come viene inizializzata la HttpConnection e viene costruito su di essa un InputStream dal quale si estraggono le informazioni che cercavamo.
In questo modo sia riusciti a connetterci al web, questo chiaramente su dispositivo reale è vincolato dall’effettiva connessione GPRS, che in una certa zona può esserci o meno. Provando questo codice sull’emulatore della SUN, se siamo connessi ad Internet, l’emulatore ci permetterà di vedere come davvero la nostra applicazione si comporterebbe.
Il fatto che esista il costrutto socket:// vi fà intuire che sia possibile crearsi un proprio client per una qualsivoglia applicazione. Un esempio di ciò è una famosa midlet freeware, muTelnet, implementazione J2ME di un client telnet. Per un completo elenco delle classi e delle funzionalità consiglio di andarvi a vedere le API riguardanti il package javax.microedition.io.
In questo package troviamo le interfacce disponibili per l’I/O in J2ME, interfacce che devono essere usate prima di tutto per fare il casting del Connector iniziale che crea la vera e propria connessione alla risorsa a cui vogliamo accedere. Le informazioni che abbiamo ricavato dal precedente codice possono essere semplicemente visualizzate a schermo nel seguente modo
1 2 3 4 |
Form aForm=new Form("Ultime 5 notizie"); aForm.append(s); //Appendo la stringa ottenuta prima Display d = Display.getDisplay(this); d.setCurrent(aForm); |