Performance test con Appcelerator Titanium

Ci sono tante scelte che possono portare o non portare all’uso di un framework mobile come Appcelerator Titanium. Tra queste, sicuramente, le performance delle applicazioni realizzate.

Per fare alcuni test ho usato il progetto KitchenSink, fornito da Titanium stessa come “banco di prova” per dimostrare quello di cui e’ capace. Effettivamente la meraviglia c’e’ stata, vedere la stessa identica app (a livello di sorgente JavaScript) girare su un Android e su un iPhone riprendendo aspetto e comportamenti tipici del sistema applicativo.

Titanium infatti crea un progetto in codice nativo (Android o iPhone) dal file Javascript di origine e quel progetto viene poi compilato per il dispositivo. Non ci sono quindi librerie grafiche intermedie di supporto e, a meno di personalizzazioni grafiche, il look’nd feel dell’applicazione realizzata e’ quello del particolare dispositivo dove si andra’ ad eseguire. Quindi conta molto la bonta’ del codice generato nella valutazione delle performance. Ovvio che nessun codice generato automaticamente per uno scenario medio-complesso puo’ essere allo stesso livello di un codice scritto a manina e ottimizzato per quella specifica esigenza, ma a volte le differenze sono trascurabili.

Purtroppo non e’ successo cosi’ per una delle viste di Titanium, composta da una ListView per Android o da una UITableView per iPhone un po’ complessa. Come si puo’ vedere dal video, le performance sono bassine su Android, sotto l’usabile, mentre rimangono soddisfacenti su iPhone.

httpv://www.youtube.com/watch?v=X2KVO3H7u7Q

Continue reading

Che editor usare per Appcelerator Titanium?

Configurato l’ambiente di sviluppo, e’ ora di scrivere la prima applicazione con Appcelerator Titanium. Una volta creato il progetto, ci si accorge pero’ che non c’e’ modo di editarlo. Quindi niente autocompletamento del codice, niente reference dei metodi e documentazione inline mentre si scrive, niente refactoring e facilitazioni varie. A meno di qualche trucchetto.

In primis, si puo’ usare Notepad++ con un’apposito plugin che permettera’ l’autocompletamento del codice.

Se invece si cerca qualcosa di piu’ integrato, si puo’ passare ad Eclipse, utilizzando Aptana Studio ed alcune configurazioni aggiuntive. Aptana perche’ mette a disposizione un editor per file Javascript sia in versione standalone, sia come plugin per Eclipse, e perche’ di recente e’ stata acquistata proprio da Appcelerator, una mossa che fa presagire una futura forte integrazione tra i due.

Scaricato ed installato il plugin di Aptana per Eclipse, l’autocompletamento del codice piu’ essere ottenuto grazie a questo utile post in cui c’e’ un programma php per convertire le API doc di Appcelerator Titanium nell’header JavaScript. Per generare quello relativo al Mobile SDK 1.5.1 ecco cosa ho fatto:

wget http://jamesdlow.googlecode.com/svn/trunk/Eclipse/Aptana/Titanium/titanium.php
wget http://developer.appcelerator.com/apidoc/mobile/1.5.1/api.json
sudo apt-get install php-cli
php titanium.php > timobile.js

Il seguente video mostra invece come configurare Eclipse ed abilitare quindi l’autocompletamento:
httpv://www.youtube.com/watch?v=d10j2-tEgVY&feature=player_embedded

Continue reading

Appcelerator Titanium su Ubuntu 10.10 64bit

Incuriosito dalla possibilita’ di sviluppare applicazioni multipiattaforma per Android e iPhone, ho provato ad installare Appcelerator Titanium sulla mia Linuxbox, una Ubunto 10.10 a 64 bit. Di seguito i passi seguiti.

Ho scaricato il runtime di Titanium Developer per Linux 64 bit. La versione corrente e’ la 1.2.2. L’ho scompattato e l’ho lanciato. Alla richiesta del percorso di installazione, sotto la mia home oppure in /opt/titanium, ho scelto la seconda opzione, e il programma si e’ chiuso senza altri segni di vita. Per farlo funzionare, sono stato costretto a far partire l’installer con
sudo ./Titanium\ Developer
eseguendo poi a fine installazione un cambio di permessi delle cartelle create con il comando
sudo chown -R rainbowbreeze:rainbowbreeze /opt/titanium

Scaricati i due pacchetti necessari, l’installer si chiude di nuovo con l’errore
symbol lookup error: /usr/lib/libgdk-x11-2.0.so.0: undefined symbol: g_malloc_n
che sembra essere ben documentato e risolto:
cd /opt/titanium (oppure cd ~/.titanium se l’avete installato nella vostra home)
rm runtime/linux/1.0.0/libgobject-2.0.*
rm runtime/linux/1.0.0/libglib-2.0.*
rm runtime/linux/1.0.0/libgio-2.0.*
rm runtime/linux/1.0.0/libgthread-2.0.*

Superato anche questo ostacolo, ho rilanciato l’installazione, accettato le condizioni di contratto e mi trovo davanti un nuovo errore:
icedteanp plugin error: Failed to run /etc/alternatives/../../bin/java.  For more detail rerun “firefox -g” in a terminal window.
anche questo errore e’ documentato e risolto:
sudo aptitude remove openjdk-6-jre icedtea6-plugin
sudo aptitude install sun-java6-jre sun-java6-plugin sun-java6-fonts

Continue reading