# JAMP

In informatica JAMP (acronimo JavaScript AJAX Mysql Php) è un potente e veloce framework distribuito con licenza GNU (General Public License), in esso è racchiuso un completo environment per lo sviluppo di applicazioni Web. Creare applicazioni attraverso JAMP risulta facile al pari dei tradizionali linguaggi di programmazione basati su classiche finestre e in aggiunta offre i vantaggi che l'ambiente Web può riservare.

## Caratteristiche

* Indipendente dalla piattaforma Software ed Hardware: indipendente dal sistema operativo ma anche dalla architettura Hardware dei dispositivi.
* Portabilità: non sono necessarie installazioni particolari lato client perché risulta sufficiente il browser predefinito del sistema operativo in uso, inoltre tutto il codice risiede fisicamente lato server, facilitando enormemente le operazioni di aggiornamento, correzioni bug ed implementazioni di nuove funzionalità.
* Integrabilità: le applicazioni Web sono spesso facilmente integrabili tra di loro, questo permette di fornire all'utente/cliente soluzioni più complete e facilitando anche le operazioni di manutenzione come ad esempio il backup dei dati.
Nell'acronimo JAMP si fa riferimento a Mysql essendo oggi indubbiamente tra i database server open source quello più importante, in realtà la struttura di JAMP è stata pensata per supportare qualunque tipo di database relazionale, infatti grazie alla programmazione ad oggetti presente nel PHP 5 è stato possibile realizzare delle classi astratte per l'accesso ai database, per ogni tipologia di database verranno poi realizzate delle apposite classi che ereditando ed implementeranno i metodi della classe astratta. Inoltre verranno incluse altre classi per l'accesso ad altre sorgenti di dati come file, LDAP, record, filesystem, ftp, ssh

## Il progetto

Il progetto JAMP nasce dall'idea di voler realizzare un sistema completo per la creazione di applicazioni Web ovvero applicazioni in grado di gestire dati, creare report, visualizzare grafici. La struttura modulare di JAMP è in grado di permettere future e facili integrazioni senza che esse alterino la sua architettura. In JAMP ogni form, o meglio visto che ci troviamo in ambito Web, ogni pagina è composta da due file:
* FILE XML: Contiene la struttura, inteso come l'insieme degli oggetti da instanziare della pagina, gli oggetti potremmo suddividerli in "semplici" perché JAMP li implementerà attraverso semplici tag HTML con uguali proprietà ed eventi e oggetti "complessi" perché tradotti in strutture maggiormente elaborate ossia più tag HTML, funzioni JavaScript, PHP, fogli di stile.
* FILE PHP: È il file da richiamare in esso i riferimenti minimi necessari a JAMP e alla pagina XML ad essa associata, ma soprattutto l'eventuale codice che l'utente ha la possibilità di inserire per customizzare il funzionamento dell'applicazione.

## Creazione della Pagina

1ª Fase) JAMP interpreta il sorgente XML e fornisce come OUTPUT la pagina nel formato voluto ovvero non necessariamente HTML ma anche in altri formati come ad esempio pdf.
2ª Fase) Gli oggetti connessi ad una sorgenti di dati(ds) si popolano con i dati che JAMP fornirà in formato XML.

## Datasource

Lo scambio dei dati tra il framework e gli oggetti avviene tramite i datasource, ossia apposite classi PHP che si interfacciano fisicamente alla fonte dati per restituire un formato XML standard, un piccolo esempio:

## Specifiche

JAMP è platform-independent e può essere eseguito senza modifiche su piattaforme Unix, Linux, FreeBSD, Windows, macOS, NetWare ed altri sistemi che supportano il linguaggio PHP.