Meraviglioso! Grazie Dada!
Meraviglioso! Grazie Dada!
Nel maggio dello scorso anno, in occasione della JavaOne 2007, Sun annunciò JavaFX e JavaFX Mobile. Di JavaFX apparvero subito esempi di codice e moduli per Netbeans, mentre di JavaFX Mobile fu pubblicata solo qualche informazione frammentaria e piuttosto varia.
Dopo il tam tam su blog e newsletter, l’interesse per JavaFX Mobile è andato pian piano scemando. In effetti, non essendoci nulla con cui "giocare", era inevitabile che gli sviluppatori indirizzassero la loro attenzione altrove (Android?).
Dalla Mobile & Embedded Developer Days conference che si svolge in questi giorni arrivano finalmente nuove notizie su JavaFX Mobile! È confermato lo "stato di salute" del progetto, nato dalle ceneri di Savaje e basato su Linux e Java Standard Edition. Segnalo la presentazione Developing JavaFX Mobile Applications fatta da Noel Poore, che chiarisce alcuni aspetti dell’architettura di questa piattaforma, in particolare la coesistenza di CLDC/MIDP e Java SE (piuttosto, dov’è finita CDC?).
Si attende a breve un apposito modulo per Netbeans, con emulatore dedicato.
Segnalo a tutti coloro che lavorano con Java Micro Edition su Windows Mobile che è disponibile il porting della Bluetooth API JSR 82 per le virtual machine Mysaifu e IBM J9 (sia CLDC che CDC!):
http://code.google.com/p/bluecove/wiki/WindowsMobile
Purtroppo l’API non è supportata totalmente (ad esempio, manca il supporto L2CAP), ma è più che sufficiente per effettuare il discovery di dispositivi e servizi e gestire connessioni RFCOMM.
No, tu no! Iannacci aveva ragione…
Ma dov’è la globalizzazione quando serve?
… in direzione Villasimius:
È evidente che chi ha preparato questa presentazione non ha mai configurato le impostazioni di rete di un Series 40! 😀 😀 😀 "The uncomplicated desire to connect", infatti, trova qualche ostacolo su certi telefoni. Battute a parte, è fuor di dubbio che Nokia faccia i migliori telefoni in assoluto:
Buon weekend.
Le vacanze natalizie sono l’occasione per trascorrere serate piacevoli con i parenti, scambiarsi doni e consumare assieme i tipici piatti invernali della cucina locale. Il mese di dicembre, oltre che portare panettoni e zamponi, è il mese giusto per gustare un prelibatezza di mare: i ricci. Così, prima di essere sommersi da cenoni interminabili (e dunque perdere qualsiasi desiderio di andare a mangiare fuori casa!) e avere almeno una mezza giornata per noi, ci siamo regalati un pranzo sul lungomare Poetto di Cagliari. Quel che segue è la cronaca di un pranzo da oscar.
La “Casa del Pescatore” e’ uno dei tanti ristorantini che offrono cucina tipica cagliaritana a base di pesce fresco, a pochi metri dal mare .
Il pranzo e’ iniziato con due dozzine di ricci:
a cui abbiamo fatto festa su piccoli pezzetti di pane:
Il primo e’ stato uno spettacolare piatto di spaghetti con ricci, arselle e bottarga:
È la terza volta quest’anno che mangio pasta ai ricci, ma sicuramente quella preparata alla Casa del Pescatore le batte tutte! Molto condita, molto saporita, sapiantemente cucinata. La cosa sorprendente è la quantità di condimento: anche a fine piatto, dopo parecchie forchettate, la pasta restava sempre molto condita, segno che il cuoco non è andato al risparmio:
Come secondo abbiamo gustato le orziadas, anenomi semolati e fritti:
Qui i commenti non bastano: occorre assaggiarle per scoprirne il gusto! Vista la qualità del primo e delle orziadas, abbiamo chiesto dei calamti fritti. Ovviamente niente prodotti surgelati, ma solo calamari freschi, affettati e fritti sapientemente:
Difficile stabilire se siano stati migliori della frittura mangiata a Silvi Marina, molto particolare per il tipo di pescato offerto. Un caffè ha chiuso il pranzo e la bella sorpresa è arrivata con il conto, quando abbiamo scoperto di aver speso davvero poco in proporzione alla qualità e ai sapori che questo pranzo ci ha regalato.
Visto tutto il pesce di cui ho parlato finora, credo sia arrivato il momento di parlare di carne 😉 Alla prossima!
Il ChoiceGroup
è un componente della libreria LCDUI di MIDP che consente di visualizzare liste di elementi a scelta multipla o esclusiva all’interno di un Form
. Il ChoiceGroup
dispone della modalità POPUP
, che consente la selezione di un singolo elemento attraverso una piccola finestra di popup, riducendo lo spazio occupato sul Form
e migliorandone di conseguenza la leggibilità.
A differenza di altre librerie di componenti, LCDUI non consente di filtrare la lista digitando le prime lettere della parola cercata. Su Python per Series 60, ad esempio, il componente selection_list
dispone di questa funzionalità facilmente attivabile in fase di visualizzazione. Si consideri il seguente frammento di codice, che visualizza una lista di paesi della Sardegna:
import appuifw
cities = [u"Abbasanta",
u"Budduso'",
u"Cagliari",
u"San Gavino",
u"Sassari",
u"Serri",
u"Sestu"]
index = appuifw.selection_list(cities , 1)
Come visibile in questo snapshot di un Nokia 6630, alla pressione di una lettera sul keypad, la lista viene automaticamente filtrata e, dunque, ridotta:
In ambiente MIDP è possibile implementare questa funzionalità utilizzando un TextField
e registrando un ItemStateListener
che aggiorna il ChoiceGroup
in base al testo digitato dall’utente. Il codice sorgente è semplice (ma, ahime’, non estremamente sintetico come in Python):
public class SearchForm
extends Form
implements ItemStateListener {
private String CITIES[] = new String[] {
"Abbasanta",
"Budduso'",
"Cagliari",
"San Gavino",
"Sassari",
"Serri",
"Sestu"};
private ChoiceGroup citiesList;
private TextField searchField;
public SearchForm() {
super("Seleziona citta'");
init();
}
private void init() {
citiesList = new ChoiceGroup("Citta' ("
+ CITIES.length + "): ", Choice.POPUP);
citiesList.setLayout(Item.LAYOUT_SHRINK);
for (int i = 0; i < CITIES.length; i++) {
citiesList.append(CITIES[i], null);
}
append(citiesList);
searchField = new TextField("Cerca: ", "", 40,
TextField.ANY);
searchField.setLayout(Item.LAYOUT_NEWLINE_AFTER);
setItemStateListener(this);
append(searchField);
}
public void itemStateChanged(Item item) {
if (item == searchField) {
updateList();
}
}
private void updateList() {
citiesList.deleteAll();
for (int i = 0; i < CITIES.length; i++) {
if (CITIES[i].startsWith(searchField.getString())) {
citiesList.append(CITIES[i], null);
}
}
citiesList.setLabel("Citta' (" + citiesList.size() + "): ");
}
}
Eccolo in esecuzione su Nokia 6120c:
Digitando sul TextField
si attiva il filtraggio della lista:
I telefoni sono veri e propri PC:
A volte non si avviano piu’!