Software multipiattaforma. Una breve panoramica sulle tecnologie da usare
Sono un pò di anni che ormai programmo, ma non finisco mai di stupirmi su quello che scopro di nuovo!
Ho fatto diversi programmi per desktop, e cerco sempre di farli il più flessibili e aperti possibile, in modo da renderli usabili su più sistemi operativi (anche perchè io stesso uso sia Linux che Windows che Mac OS X).
Voglio fare una breve panoramica, riferendomi ovviamente alle mie esperienze (e sperando di non saprare troppe cavolate ).
Prima di tutto facciamo una breve lista:
- Java (o uno dei suoi derivati che necessitano di una JVM)
- Python
- Mono (C# e VB.NET)
- Qt / QML
Partiamo dal primo.
JAVA
Questo linguaggio nasce proprio con l'intento di creare programmi multi-piattaforma.
L'unica cosa richiesta è la presenza della JVM (Java Virtual Machine), e qualche aggiustamento grafico, soprattutto in ambito Mac.
I contro sono la maggior pesantezza del software (dovuto proprio alla JVM, anche se la situazione è sicuramente migliorata) e il peso degli anni che inizia a sentire il linguaggio, soprattutto verso il C# (considerando la somiglianza tra i due e sperando ovviamente in Java 8).
Rimane comunque un'ottima alternativa, se non la prima in certi casi, guardando però anche ai vari linguaggi nati su questo (vedi Scala ad esempio, con le dovute differenze).
PYTHON
L'unica cosa richiesta è la presenza dell'interprete (versione 2.x e / o 3.x).
Il linguaggio è ottimo, nuovo, moderno, e anche molto veloce da imparare.
L'aspetto negativo è che il toolkit grafico di default è orrendo; ci sono ottime alternative come wxPython e Qt Python, ma gli ambienti vanno installati sui vari pc dove deve girare il software.
Sicuramete da tenere in forte considerazione, visto anche il sempre maggior successo che sta avendo, la facilità di apprendimento e il supporto che sta avendo.
MONO / MONODEVELOP
Mono si prefigge di portare il .NET Framework su altri sistemi non Microsoft.
Il progetto è notevole e ammirevole, e amando il C# anche io ne sono rimasto "abbagliato".
Ma qua scatta la classica frase "non è tutto oro quel che luccica".
Vista la mole di lavoro, il progetto è sempre un passo indietro all'originale.
Inoltre molte classi e oggetti non sono comunque presenti.
Quindi, anche se l'IDE Monodevelop è ottimo, non è facile costruire e assemblare il tutto.
Soprattutto quando sviluppi per Linux / Mac e poi vuoi farne il porting su Windows.
Ci sono vari validi programmi sviluppati con Mono, sia chiaro, ma secondo me la fatica non vale la pena.
Speriamo che le cose migliorino ovviamente, e sicuramente da quando non lo uso più sono sicuramente migliorate.
Quindi direi che è da tenere d'occhio.
QT / QML
E qui arriviamo alla vera scoperta.
Qt è il toolkit grafico sui cui si basa KDE (non solo, ma soprattutto) e QML fa parte integrante del framework.
Questo da la possibilità di creare progetti multipiattaforma (e addirittura mobile) usando:
- funzioni C/C++ standard
- oggetti Qt basati sul C++ (tipo QString)
- QML che è molto simile a Javascript
- Javascript all'interno di QML
Si avete capito bene: Javascript.
Prorpio ieri ho scoperto di poter fare addirittura chiamate AJAX in puro Javascript all'interno di un progetto Qt Quick usando QML.
Sono rimasto a dir poco estasiato!
Soprattutto perchè io con il C++ non vado molto forte, e quindi Qt standard mi risultava un pò comlicato.
Invece così ho creato un mini programmino dimostrativo in poco tempo, usando QML e Javascript prendendo i dati da un web service (in formato JSON).
Se dovessi fare un riassunto, la metterei così (partendo dalle mi conoscienze ovviamente):
- se devo svilupparlo in fretta vado sicuro di Java
- se ho più tempo mi butto sul Qt / QML di sicuro
- subito dopo viene Python (probabilmente wxPython) e infine Mono (ma non penso che tranne casi particolari ci arriverei)
Detto ciò, sperando di non aver detto troppe inesattezze, spero che questo articolo possa servire soprattutto a chi si avvicina oggi alla programmazione (in questo caso desktop) e non sa bene dove dirigersi.
Ciao!!
linux mac os x windows microsoft news java python javascript qml ajax c# c++ json qt wxpython net fr
Commentami!