Jamp è un framework per lo sviluppo di applicazioni web. È un progetto open source (rilasciato con licenza GPL) italiano, caratteristica che lo contraddistingue rispetto ai framework web più diffusi. Il team di sviluppo è composto dai fondatori di Alyx, sotware house siciliana orientata alle tecnologie open source e da una community di programmatori italiani.
Il sito di riferimento del progetto è http://jamp.alyx.it, in cui è presente una chiara e ben strutturata documentazione in italiano oltre ai sorgenti da scaricare.
Jamp è nato per semplificare lo sviluppo di applicazioni web orientate alla gestione dei dati, in grado di creare report e visualizzare grafici. L'impiego di Ajax e Javascript permette di creare applicazioni user-friendly che utilizzino in modo massiccio le richieste asincrone tra client e server. Lo sviluppo di tali applicazioni è semplificato grazie ad un sistema di debug che permette di controllare ogni dettaglio delle transazioni asincrone tra client e server, basato su una versione personalizzata di Firebug (Jamp Firebug).
Il pattern MVC
Jamp è un basato su 4 tecnologie molto utilizzate per lo sviluppo web in ambiente opensource: Javascript, Ajax, MySQL e PHP. Jamp permette lo sviluppo di applicazioni secondo il pattern MVC (Model-View-Controller) che, mediante una netta separazione tra la logica dell'applicazione e l'interfaccia utente, permette di sviluppare applicazioni web facilmente manutenibili. Le varie componenti del framework comunicano e interagiscono mediante il formato XML standard.
Jamp è composto da tre parti principali:
- il core del framework, costituito da un insieme di classi php e javascript;
- i datasource: un insieme di classi PHP create ognuna con lo scopo di gestire una determinata fonte di dati (mysql, xml, filesystem, ssh, ftp, record, csv);
-
gli oggetti: sono gli elementi che compongono una pagina. Si suddividono in "elementari" quando implementati attraverso semplici tag HTML e "complessi" perché tradotti in strutture maggiormente elaborate: più tag HTML, funzioni javascript, fogli di stile. Gli oggetti vengono indicati nel formato
<idtag typeobj="..." attr1="..." attr2="..." .... attrN="..." />
in cui:- idtag è il tag dell'oggetto
- typeobj è il tipo di oggetto
- attr1,..,attrN sono un insieme di attributi che specifica le proprietà dell'oggetto
La coppia (idtag, typeobj) identifica univocamente un oggetto.
Le pagine
Ogni pagina di una applicazione Jamp è composta da:
- un file xml (componente View), che definisce la presentazione
- un file php (componente Control), che contiene la logica e rappresenta il punto di accesso per la pagina web
La funzionalità di Model è fornita dal framework mediante i datasource e non la deve implementare chi sta sviluppando l'applicazione (a meno di esigenze particolari che impongono lo sviluppo di un nuovo datasource). È necessario però definire le connessioni ai datasource a cui l'applicazione accede, inserendo nel file conf/conf.inc.php una direttiva nella forma name|dsengine|dshost|dsuser|dspwd|port
in cui:
- name indica l'identificativo della connessione da associare al tag ds (data source) tramite attributo conn;
- dsengine indica la tipologia di connessione, al momento sono supportati i seguenti engine: mysql, ldap, filesystem, ssh, xml, ftp, record e csv;
- dshost indica il nome o l'indirizzo IP server a cui connettersi;
- dsuser indica l'utente da utilizzare per l'autenticazione della connessione;
- dspwd indica la password da utilizzare, insieme al parametro dsuser, per l'autenticazione della connessione;
- port indica la porta su cui è in ascolto il servizio sul server (per i tracciati record e file csv nelle quali non esiste una porta per il servizio, questo campo rappresenta la modalità di apertura file).
I vantaggi
I vantaggi derivanti dallo sviluppo di applicazioni web utilizzando Jamp sono numerosi, senza considerare che chiunque può studiare la documentazione, anche chi ha poca familiarità con la lingua inglese.
Progetto tutto italiano. L'italiano è la lingua ufficiale, utilizzata sia per la documentazione sia nel forum della community.
Semplicità di installazione. Jamp è semplicissimo da installare: una volta scaricato il file compresso dal sito di riferimento, è sufficiente estrarre il contenuto nella directory dei file sorgenti di un sistema LAMP che si intende usare.
Semplicità e velocità di sviluppo. Jamp risolve nativamente molte problematiche comuni nello sviluppo di applicazioni web, inoltre l'uso di XML per descrivere le pagine rende semplice programmare ad oggetti il web e leggibile e manutenibile il codice prodotto.
Completezza. Jamp contiene già molte componenti riutilizzabili: oggetti, report pdf, grafici, mappe, editor web, editor di sintassi e altro ancora. Inoltre è possibile scaricare e utilizzare alcune applicazioni open source già pronte all'uso.
Ma non è finita qui.
OpenSource GPL. Jamp sostiene linux e l'open source. La licenza GPL permette l'utilizzo e la modifica del framework senza royalties per lo sviluppatore ed inoltre garantisce l'aggiornamento continuo del framework grazie alla community che lo sviluppa.
Cross Browser e Multi Piattaforma. Jamp è compatibile con tutti i browser di ultima generazione, quindi lo sviluppatore non si deve occupare di produrre codice multi-piattaforma e multi-browser.
Supporto a Google Maps. Jamp supporta nativamente le mappe di Google integrandole con i datasource e gli oggetti del framework. È quindi possibile creare in modo semplice itinerari, consultare mappe, inserire punti d'interesse utilizzando tutte le potenzialità delle Google Maps senza dover utilizzare direttamente le API fornite da Google.
Debug e Gestione Degli Errori. Jamp integra un sistema di debug che fornisce gli strumenti per effettuare un accurato debug dell'applicazione, sia server side (errori e eccezioni PHP) che client side (Javascript e transazioni Ajax).
Possibilità di utilizzo
Jamp è un framework molto flessibile, per cui può essere utilizzato per implementare applicazioni web semplici o più complesse, come ad esempio le applicazioni di tipo gestionale, che necessitano di gestire dati (mediante grafici e report) e che siano il più possibile veloci e semplici da usare grazie alla tecnologia Ajax. Rispetto ad altri framework PHP, Jamp introduce una importante novità: Javascript e Ajax sono integrati nativamente nel framework: lo sviluppatore può realizzare applicazioni che fanno largo uso di tecnologia Ajax senza doversi preoccupare dei dettagli della comunicazione asincrona col server in quanto questi sono interamente gestiti dal framework.
Scegliere Jamp per sviluppare una nuova applicazione permette di velocizzare la fase di sviluppo di applicazioni web in quanto, oltre alle numerose componenti riutilizzabili, l'architettura MVC consente di scrivere codice semplice e manutenibile e la fase di test grazie all'utilissimo sistema integrato di debug.
Inoltre, grazie alla semplicità del processo di installazione e al fatto che non necessita di requisiti particolari, Jamp può essere facilmente installato e utilizzato su un sistema avente server Apache versione 2, o Internet Information Server (IIS), con supporto a PHP versione 5 o superiore e librerie per l'accesso ai dati su server MySQL.