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 è permette future e facili integrazioni senza che esse alterino la sua architettura. Per capire meglio la sua struttura identifichiamo i tre macro blocchi:
- Core: E' il framework, costituito da un insieme di classi php e javascript.
- I datasource: Collezione di classi PHP create ognuna con lo scopo di gestire una determinata fonte di dati(mysql, xml, filesystem, ssh, ftp, record, csv, ecc). Ogni classe contiene i metodi ed eventi in grado di leggere, modificare, inserire ed eliminare dati.
- Oggetto: Gli oggetti sono gli elementi che compongono una pagina, essi si suddividono in "elementari" quando implementati attraverso semplici tag HTML ed oggetti "complessi" perchè tradotti in strutture maggiormente elaborate ossia più tag HTML, funzioni javascript, fogli di stile. I tag XML "elementari" si riconoscono facilmente perché chiamati con lo stesso nome del corrispettivo tag HTML. Gli oggetti vanno specificati all'interno del file sorgente XML tramite appositi tag in alternativa è possibile istanziare gli oggetti direttamente dalla pagina sorgente PHP avendo così accesso alle proprietà e metodi pubblici della classe stessa. Ogni tag è identificato da un idtag univoco è da un attributo typeobj che identifica il tipo di oggetto
<idtag typeobj="..." attr1="..." attr2="..." .... attrn="..." />
Nel grafico viene sottolineata la netta separazione tra la parte che si occupa di interfacciarsi fisicamente ai dati(tutte le classi estensione della classe astratta DS) e gli oggetti che si occupano di visualizzare/gestire i dati(tutte le classi estensione della classe object), in questo modo qualsiasi modifica effettuata alle classi inerenti il primo blocco sia essa l'aggiunta di una nuova classe, l'implementazione di un nuovo metodo, la correzione di un bug, sarà del tutto trasparente per quelle del secondo blocco e viceversa. Quanto appena detto è possibile in quanto lo scambio di dati avviene in un formato XML standard, ossia indipendente dalla fonte di dati. Di seguito riportiamo un grafico che descrive in maniera generale l'architettura di JAMP

