Qt Framework. Premessa. Scopo. Autore: P. Sereno. Argomenti trattati:



Documenti analoghi
Introduzione a Linux Lezione 1 Introduzione a Linux

Open Source::accenni. Definizioni: software proprietario

Sistemi Di Elaborazione Dell informazione

Linux e i software liberi. di Nardean Lorenzo e Redigolo Marco

Sistemi Operativi 11 ottobre 2017

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Corso di Sistemi Operativi I/II. Introduzione a Linux. Introduzione. Ruggero Donida Labati

Cosa è Linux? Gianluca Amato Dipartimento di Scienze tel

Panoramica sulle distribuzioni GNU/Linux

Solution Integrator 18/06/16.

Cosa è Linux? Gianluca Amato Dipartimento di Scienze tel

Le distribuzioni GNU/Linux

Nome e indirizzo del datore di lavoro

Prima lezione: Introduzione a Linux e al Software Libero

Editing Grafico & Linux: Si Può Fare

Sistemi distribuiti open source per reti di comunicazione

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Introduzione a Linux. Modulo 6: Genesi di Linux e confronto con altri sistemi. Alessandro Brunengo Mirko Corosu INFN - Sezione di Genova

Conferenza/incontro. Software di Produttività Personale. VELug - Venezia Free Software Users Group 1

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

KDE. "Experience Freedom" Daniele Costarella Ivan Grimaldi. Linux Day ottobre 2010 Università degli Studi di Salerno

Informatica e Software Libero. Il software. Categorie del software. Università Cattolica di Brescia 5 dicembre 2001

Corsi GNU/Linux 2016

OPEN SOURCE. Concetti chiave e implicazioni per le scelte aziendali (fornitori e utenti)

Nuovi metodi per distribuire software su Linux

Introduzione alla Programmazione. Giselda De Vita

Programmazione Orientata agli Oggetti in Linguaggio Java

Opensuse cenni storici

Dipartimento di Giurisprudenza Prof. Michele Perilli Conoscenze Informatiche

Solution Integrator 28/12/16.

D.E.I.S. Università di Bologna DEISNet IC3N 2000 N. 1

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

Sviluppo di applicazioni mobili su piattaforma Maemo

Sistema Operativo. Alma Mater Studiorum Università di Bologna - Fondamenti di Informatica T (a-k)

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Introduzione al Calcolo Scientifico

I Esercitazione: Istallazione Sistema Operativo

Linux, non solo Ubuntu! di Tamara Muscas & Paolo Cortis

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

VELug Free software users group

Introduzione a Linux. Storia di UNIX

Laboratorio di Reti Locali e Geografiche

Linux e Open Source: Libero! Non "gratis"...

Software di Produttività Personale

Il ciclo del software (e di tante altre cose)

Fondamenti di sviluppo mobile su Android

Il calcolatore. Architettura di un calcolatore (Hardware)

Informatica di base 6/ed

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

Introduzione al software libero

Gaming on Linux e Wine

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Usare Qt con Visual C++ Express Edition

APIO INTELLIGENZA AI TUOI OGGETTI.

DIREZIONE DIDATTICA DI SAN GIUSEPPE JATO Programma Operativo Nazionale Fondo Sociale Europeo - Competenze per lo sviluppo

Corso sul linguaggio Java

SETA Selection Tool del Sistema ARTIST

GNU/Linux e *BSD: filosofia del software libero ed open source

Requisiti di sistema per Qlik Sense. Qlik Sense 2.2 Copyright QlikTech International AB. Tutti i diritti riservati.

Introduzione ad Arduino Giuseppe Augiero

Linee Guida sul Software: Il Riuso

Istruzioni installazione

Xerox FreeFlow Print Server V 9.0 SP3

I numeri del network stampa

Novità in anteprima su GNOME 2.2

Cryptomator e unprogramma di crittografia gratuita lato client per i tuoi file cloud. Software open source: nessuna backdoor, nessuna registrazione.

Introduzione al Calcolo Scientifico

La Galassia del Software Libero. A scuola col pinguino

Ambienti di Sviluppo. Linguaggi compilati

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Il Sistema Operativo Linux

Prima Esercitazione. Unix e GNU/Linux. Fork. Stefano Monti Eugenio Magistretti

iseries Informazioni preliminari su Client Access Express

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

diritto e informatica A. Ferrari

CORSO DI PROGRAMMAZIONE ios BASE IN LINGUAGGIO NATIVO OBJECTIVE-C

Progettazione e realizzazione di una GUI multi-piattaforma per applicazioni mediche in 2D

L'Open Source NON e' il software gratis E' una tipologa di software NON e' una licenza E' una metodologia di sviluppo

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

+ = EVAET. Azienda speciale

2. Strutture dei Sistemi Operativi. 2.2 Interfaccia col Sistema Operativo Interprete dei comandi

Skolelinux: origini. Debian Edu incomincia con due progetti nel 2001:

La Filosofia ''Open Source'' ed il Sistema Operativo ''Linux''. Gabriele Turco e Tudor Trani.

Introduzione ai sistemi GNU/Linux

Le licenze. Il CopyRight e il CopyLeft. Stefano Floris

Pratiche di XP [Beck] Extreme Programming (XP) Story Card. Gioco di pianificazione

GUIDA ALL INSTALLAZIONE DI R CONTENUTO

Informatica. Prof. A. Longheu. Introduzione a Java

Il software libero: significato, caratteristiche, vantaggi Le ragioni. Le ragioni di una scelta

Dal sito web all applicazione mobile

Sorgenti, Binari e Pacchetti (Compilazione e pacchettizzazione per GNU/Linux)

I revisori tecnici...xi. Ringraziamenti...xv. Introduzione...xvii. Il software dall idea alla produzione...1

Corso ForTIC C2 LEZIONE n. 1

Evolving Mobile Ecosystem. Roberto Freato Freelance IT Consultant & Trainer MVP, MCT, MCPD

Ingegneria del Software 1: Eclipse

Corso di programmazione

Giuseppe Capizzi. Ambienti di sviluppo Open Source

Calligra. Un introduzione generale

XAMPP - Cos'è e installazione in locale

Transcript:

02. 2009 Open Source Qt Framework Autore: P. Sereno Argomenti trattati: - Cosa è Qt? - Storia di Qt - Perché usare Qt? - Cross-platform - KDE e Qt - Linguaggi supportati Premessa Questa presentazione è rilasciata sotto Licenza Creative Commons: Attribution-NonCommercial-NoDerivativeWorks (http://creativecommons.org/licenses/by-nc-nd/3.0/deed.it). Questo documento può quindi essere riprodotto senza violare nessuna legge, sia in versione elettronica, sia in versione cartacea, purché sia riprodotto integralmente in tutte le sue parti, compresa la pagina che contiene queste informazioni: Versione originale scaricabile dal sito http://www.sereno-online.com/site/ Tutti i marchi riportati in questa pubblicazione appartengono ai rispettivi proprietari. Scopo Notizie chiave: Qt è gratis! Qt è cross-platform KDE usa Qt Scopo di questa presentazione è fornire informazioni divulgative a un pubblico specifico. Questo tipo di pubblicazione si propone infatti di fornire una prima introduzione all utilizzo del Qt Application Framework per lo sviluppo di applicazioni software cross-platform in ambito Open Source. Esulano dallo scopo di questo documento l approfondimento degli aspetti legati alla licenza commerciale di Qt e l approfondimento degli aspetti legali e/o normativi implicati dall adozione di una licenza GPL o LGPL.

Qt Framework Pagina 2 di 6 Che cosa è Qt? Qt è una libreria di classi ed un insieme di strumenti per lo sviluppo di interfacce utente grafiche (GUI) Qt è una libreria di classi ed un insieme di strumenti per lo sviluppo di interfacce utente grafiche (GUI) multi piattaforma, e conosciuto infatti anche con il nome di toolkit Qt. Sviluppato in origine, dalla norvegese Trolltech, ora acquistata da Nokia, Qt permette lo sviluppo software secondo la filosofia write once, compile anywhere, che significa letteralmente scrivi una sola volta e compila ovunque. In altre parole, Qt permette agli sviluppatori di scrivere codice sorgente perfettamente compilabile su diversi sistemi operativi, quali ad esempio MS Windows, Mac OS X, Linux, Solaris, HP-UX, molte versioni UNIX con grafica X11 ed embedded Linux. Cio e stato reso possibile grazie all adozione di un interfaccia di programmazione delle applicazioni (API) unica ed indipendente dall hardware e dal software di sistema. Insieme con la libreria di classi, vengono forniti strumenti di supporto per il design grafico (Qt Designer), per la traduzione linguistica (Qt Linguist) e il manuale in linea (Qt Assistant). Molte distribuzioni Linux (tra le maggiori troviamo Debian, SuSE, RedHat) contengono il toolkit Qt, esso è la base su cui è stato costruito l intero desktop environment KDE ed è stato integrato sin dall inizio nell IDE di riferimento per il mondo KDE, ovvero Kdevelop. Qt è attualmente usato in molti campi per applicazioni sia open source, sia commerciali. Gli esempi più famosi citati dalla stessa Trolltech, sono Adobe Photoshop Album (elaborazione ed archiviazione immagini), Skype (comunicazioni VoIP) e Scribus (editing e desktop publishing). Qt è gratis! Qt è disponibile per il download all indirizzo: http://www.qtsoftware.com E possibile scaricare gli eseguibili e i sorgenti dell intero toolkit per i diversi sistemi operativi supportati. A partire alla versione 4.5 il repository verrà aperto alla collaborazione esterna. L annuncio di questa nuova era dello sviluppo di Qt è stato infatti dato da Nokia ad inizio 2009 e si inserisce nel contesto inquadrato dall adozione della LGPL (v. 2.1) che ha crattere meno virale della GPL e consente, tra l altro, di includere il codice Qt anche all interno di applicazioni closed source.

Pagina 3 di 6 Qt Framework Storia di Qt Il toolkit Qt fu inizialmente sviluppato dai fondatori della Trolltech, Haavard Nord ed Eirik Chambe Eng. Lo sviluppo di un toolkit in C++ per la realizzazione di Graphical User Interface (GUI) iniziò nel 1988, per conto di un azienda svedese, che commissionò il lavoro ai due ricercatori e due anni più tardi, venne completato lo sviluppo di un applicazione per la gestione di una banca dati di immagini, ottenute da apparecchiature mediche ad ultrasuoni; poiché questa applicazione doveva permettere l esecuzione dell interfaccia utente su sistemi MS Windows, Mac e UNIX, gettò le basi di quello che oggi è uno dei punti di forza di Qt: la portabilità del codice sorgente su diverse piattaforme o, come si dice correntemente, lo sviluppo cross-platform. Nel 1991 si iniziò a scrivere le prime classi di Qt a seguito dell idea di implementazione del meccanismo di Signals&Slots, un semplice ma potente modo per far comunicare tra loro le classi del toolkit. Nel 1993, dopo aver trascorso due anni a lavorare sul progetto senza contratti e senza stipendio, Haavard ed Eirik resero disponibile il primo kernel grafico e decisero di entrare in affari presentando al mondo il miglior GUI toolkit in C++ multipiattaforma. Il 1994 non iniziò nel migliore dei modi e si dovette attendere sino ad aprile 1995 per avere il primo contratto; il nome Qt venne scelto perché la lettera Q, tra i caratteri disponibili su Emacs, piaceva ad Haavard e la lettera t venne aggiunta per rappresentare la parola inglese toolkit (letteralmente l insieme di strumenti di lavoro). Il 20 maggio venne rilasciata la versione 0.90 del toolkit e resa disponibile su sunsite.unc.edu, sei giorni dopo venne annunciata sul newsgroup comp.os.linux.announce. Questa fu la prima release pubblica di Qt, essa poteva essere usata sia per lo sviluppo di interfacce grafiche per MS Windows, sia per Linux ed offriva le stesse API su entrambe le piattaforme. Qt fu reso disponibile secondo due licenze d uso sin dal primo giorno: la licenza commerciale serviva per lo sviluppo di applicazioni commerciali o close source e la free software edition per lo sviluppo di applicazioni open source. Nel marzo 1996, l agenzia spaziale europea (ESA) divenne il secondo cliente della Trolltech e da questo momento iniziò un periodo che portò in breve tempo al rilascio della versione 0.97 (maggio), della versione 1.0 (settembre) e prima della fine dell anno si giunse alla versione 1.1 usata da otto diversi clienti. Nell aprile 1997 il fondatore del progetto KDE, Mattias Ettrich decise di adottare Qt per il suo progetto e, con il rilascio della versione 1.2, il toolkit Qt divenne lo standard de facto per la realizzazione di GUI in C++ per Linux. Nel 1998, Mattias decise di entrare a far parte del team di sviluppatori Trolltech (attualmente ricopre il ruolo di vice presidente) e contribuì al rilascio della versione 2.0. Questa versione conteneva un gran numero di cambi nell architettura e rappresentò un notevole balzo in avanti nella realizzazione di un toolkit stabile e maturo; vennero aggiunte quaranta nuove classi, tra cui il supporto per l UNICODE e nell agosto del 1999 vinse il LinuxWorld award come miglior libreria software. L anno 2000 segna l ingresso sul mercato dell ambiente Qt/embedded, concepito appositamente per supportare la piattaforma Linux/embedded. In quell anno, Trolltech decise di cambiare la sua politica di licenza da QPL (politica open source appositamente redatta dalla Trolltech) a favore della ben più nota ed accettata GPL. Questo cambiamento venne accolto con entusiasmo dalle comunità open source (KDE per prima) di tutto il mondo. Qt: le fondamenta su cui è stato costruito KDE.

Qt Framework Pagina 4 di 6 Qt 3 Il nuovo attesissimo balzo in avanti avvenne nel 2001 con il rilascio della versione 3.0. Il nuovo attesissimo balzo in avanti avvenne nel 2001 con il rilascio della versione 3.0. Qt era ora disponibile per MS Windows, UNIX, Linux, Embedded Linux e Mac OS X. Qt 3.0 aggiunse quarantadue nuove classi e il codice superò le 500.000 linee. Dal 2001 al 2005 si è passati attraverso numerose minor releases che hanno fatto del toolkit Qt un mito tra gli sviluppatori (open source e non) di tutto il mondo, sia per le eccellenti caratteristiche tecniche del prodotto, sia per la politica di rilascio del prodotto aperta e lungimirante. Qt 4 A partire dalla quarta major release, sono state introdotte nuove tecnologie nel "core" della Libreria, particolarmente utili per KDE. Fondamentalmente esse sono: Scribe, il renderer per testo unicode Mainwindow, ovvero la nuova modalità di gestione della main window di una qualsiasi applicazione Qt. di scripting QtScript che va a sostituire il "glorioso", ma meno performante QSA. Arthur, il nuovo sistema di disegno dei widgets. Unitamente a ciò, è stato introdotto il nuovo motore 2008: Nokia acquista Trolltech Nel giugno 2008 la finlandese Nokia ha acquistato la piccola Trolltech offrendo circa 850 milioni di corone norvegesi (poco più di 100 milioni di euro) Nel giugno 2008 la finlandese Nokia ha acquistato la piccola Trolltech offrendo circa 850 milioni di corone norvegesi (poco più di 100 milioni di euro), una somma significativamente superiore al valore delle azioni di Trolltech. Occorre sottolineare che al momento dell acquisizione, Nokia è entrata in possesso, unitamente al Qt framework, di una tra le più mature piattaforme open source per il mercato embedded/mobile: Qtopia, anch essa rilasciata sotto licenza GPL. La versione Phone Edition di Qtopia (piattaforma operativa per la telefonia cellulare), di recente introduzione nel mercato, ha sicuramente rappresentato per Nokia un opportunità interessante per contrastare l ascesa di Android come futuro standard per la telefonia cellulare.

Pagina 5 di 6 Qt Framework Perché usare Qt? Per sistemi UNIX, Qt rappresenta un ottima possibilità, è portabile, è veloce, facile da imparare ed usare, inoltre, se si scrive software open source per Linux, BSD, Solaris o molte altre varianti UNIX, Qt è gratuito. In altre parole, non si deve pagare alcuna licenza. In caso contrario, se si sviluppa codice commerciale, occorre acquistare una licenza per lo sviluppo (ma non si dovrà pagare alcuna royalty per ogni applicazione venduta). Supponiamo che si voglia scrivere software commerciale closed source per la piattaforma Windows, per quale motivo si dovrebbe usare Qt, per il mondo Windows esistono già diversi ambienti di sviluppo commerciali e diversi toolkit GUI? La risposta a questa domanda può arrivare se si pensa alla portabilità. Scrivere applicazioni con Qt permette infatti di portare il codice sorgente scritto anche su altre piattaforme, sarà sufficiente la ricompilazione e la nostra applicazione potrà essere eseguita in modo nativo sulla nuova piattaforma. I principali linguaggi di porgrammazione supportati sono: C++ Java Python (PyQt) Qt si integra perfettamente con gli strumenti di sviluppo open source di Linux. Cross-Platform: cosa vuol dire? Un toolkit che permetta lo sviluppo di GUI multipiattaforma, deve implementare una strategia per nascondere al programmatore i dettagli dovuti alle API native del sistema operativo sottostante. Esistono fondamentalmente tre strategie differenti adatte allo scopo e prendono il nome di API layering, API emulation e GUI emulation. La strategia di API layering (letteralmente stratificazione delle API), prevede la costruzione di una nuova API fornita da uno strato software che viene localizzato al di sopra della API nativa. I vantaggi offerti da questa soluzione sono una relativa semplicità di programmazione ed una totale conformità con il look&feel (aspetto estetico) nativo. Per contro lo svantaggio principale è dovuto alla lentezza dei programmi scritti, basandosi sulle nuove API; infatti lo strato software aggiuntivo va ad appesantire l esecuzione con inevitabili rallentamenti. La strategia di API emulation (letteralmente emulazione della API), consiste nell emulare le API di un unico sistema su tutte le altre piattaforme. In questo caso, non occorre innestare uno strato software al di sopra delle API native per la piattaforma emulata, occorre bensì inserirla per le altre piattaforme, diverse da quella usata come riferimento. Benché questa soluzione sembri risolvere i problemi di portabilità, in realtà è difficile da ottenere, in quanto se le piattaforme sono tra loro troppo differenti, l uso di una API di riferimento è molto complicato da realizzare. La terza strategia è quella adottata da Qt e consiste nell emulare il vero comportamento di una GUI; per fare ciò, vengono usate solamente le primitive grafiche di base, offerte da ciascuna piattaforma, quali ad esempio le funzioni per tracciare un punto, una linea, un cerchio. Il vantaggio di questa soluzione è evidente, non si appesantisce l applicazione con uno strato software aggiuntivo e neppure si devono uniformare tutte le API dei sistemi su cui garantire la portabilità. Un toolkit che permetta lo sviluppo di GUI multipiattaforma, deve implementare una strategia per nascondere al programmatore i dettagli dovuti alle API native del sistema operativo sottostante.

KDE e Qt P. Sereno Fondatore di alcuni progetti open source basati sul Qt framework, collabora con riviste specializzate e segue da diversi anni l evoluzione del free software in Italia. Scarica guide e tutorial gratuiti di programmazione grafica open source! Le trovi all'indirizzo: www.sereno-online.com/site La potenza di Qt è di fondamentale importanza per KDE, il desktop environment di Linux è stato infatti costruito su questa libreria. Il ricco repertorio di widgets (oggetti grafici di interfaccia utente) e la quantità di classi offerte da questo toolkit (ad esempio la gestione dei caratteri UNICODE, interfacciamento verso database, gestione protocolli TCP ed UDP) ha fornito agli sviluppatori KDE un substrato intellettuale su cui basare l intera architettura software. La filosofia di Qt è stata ripresa ed estesa, sino a consentire a KDE di offrire classi, oggetti grafici e plugins agli sviluppatori applicativi. Oggi, uno sviluppatore Qt/KDE ha a disposizione una collezione di componenti software estremamente ricca e performante per sviluppare la sua applicazione. In altre parole, se è valido il detto che buoni programmatori scrivono buoni programmi ed eccellenti programmatori rubano codice eccellente, allora Qt e KDE offrono le migliori condizioni per questo furto, grazie alla filosofia open source ed alla licenza GPL. Trolls contro Gnomi La storia vissuta dai programmatori KDE non è stata però molto facile all inizio, il fatto di usare le librerie Qt che nella versione 1.1 non erano disponibili con licenza GPL, scatenò le ire della comunità open source, in particolare Richard Stallman si scagliò in prima persona contro il loro impiego. Celebri infatti sono le sue parole sul tema KDE e Qt: Il disegno di KDE è stato basato su un errore fondamentale: l uso della libreria Qt (che allora era software non-libero). Malgrado le buone intenzioni degli sviluppatori di KDE e malgrado il fatto che il codice di KDE in sè fosse software libero, KDE non poteva mai fare parte di un sistema operativo completamente libero. Per arginare il pericolo derivante dall affermarsi di un desktop environment non-libero, sulla sua piattaforma libera GNU/Linux, Stallman si mosse attivamente per cercare un antagonista al progetto KDE e lo trovò nel progetto GNOME, il GNU desktop. Dall anno della sua fondazione, 1997, sino al 1999 (e ancor oggi), GNOME fu una spina nel fianco per i programmatori KDE; chi ha seguito le vicende dei due progetti, ricorda ancora le battaglie sui newsgroup a colpi di post e le reciproche accuse di filoeuropeismo (KDE) e filoamericanismo (GNOME).