Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sviluppo Web
Cos' HTTP?
Acronimo di HyperText Transfer Protocol, ovvero il protocollo di trasferimento dati, usato per scambiare documenti ipertestuali ed elementi a corollario (img, js, css). Un server HTTP resta generalmente in ascolto sulla porta 80 e serve le richieste dei client, usando il protocollo TCP a livello 4 (trasporto). Livelli TCP
Livello
7 6 5 4 3 2 1 Livello di applicazione Livello di presentazione Livello di sessione Livello di trasporto Livello di rete
Descrizione
Non essenziale conoscere i livelli tcp per essere buoni sviluppatori, ma sapere quanto il candidato conosce in questa materia pu essere utile per capire il grado di preparazione. Una risorsa HTTP pu essere identi!cata univocamente tramite il proprio URI (uniform resource identi!er), per esempio http://davide.gurgone.it/index.html HTTP stato progettato per la scalabilit dei servizi, pertanto non previsto il concetto di sessione, al !ne di consentire la replica speculare, su pi istanze server, della stessa risorsa. Per poter proter proteggere i dati si prevede luso dellheader Authentication Basic. Lautenticazione avviene cos ad ogni richiesta.
Per gestire la comunicazione tra client e server, HTTP mette a disposizione alcuni metodi, discussi di seguito.
Pagina 1 - 10
Metodo
GET POST HEAD PUT DELETE TRACE OPTIONS CONNECT
I browser moderni gestiscono ancora solo GET e, tramite uso di form, POST. Per utilizzare gli altri metodi necessario utilizzare codice JavaScript, per eseguire richieste asincrone.
un metodo HTTP pu essere idempotente, quando la stessa richiesta ripetuta pi volte, produce lo stesso identico risultato. il caso tipico di GET ed HEAD. importante in un sistema conoscere questo concetto al !ne di ottimizzare le chiamate, mediante meccanismi di caching adeguati.
Metodo
GET POST GET PUT DELETE
Richiesta
http://treis.it/clienti http://treis.it/clienti/facebook http://treis.it/clienti/facebook http://treis.it/clienti/facebook http://treis.it/clienti/swteam
Risultato
Mostra lelenco dei clienti della propria azienda Aggiungi Facebook tra i clienti Mostra lanagra!ca di Facebook Aggiorna le informazioni del cliente Elimini un vecchio cliente
Pagina 2 - 10
Sviluppare utilizzando rotte di questo tipo consente di mantenere ordine nel sito, nel codice e poter sviluppare meglio i sistemi di cache.
Cos' un virtualhost
Il Virtual Hosting un metodo tecnico per poter ospitare pi domini internet, solitamente siti web e domini di posta elettronica, in un singolo server con un singolo indirizzo IP. Questo metodo tecnico permette una maggiore e#cienza delle risorse utilizzare ed un pi facile controllo poich tutto concentrato in un singolo sistema. Questa condizione rende per condivisi i rischi eventuali legati ad un uso improprio di un singolo dominio ospite.
Uno dei pi usati HTTP Server al mondo, soprattutto in ambiente linux / unix. Web Server / Reverse proxy di abbastanza recente costruzione, molto leggero ed ad altissime prestazioni
File di testo che contiene il mapping tra un indirizzo IP ed il nome dellhost (dominio). Sovra-scrive localmente le informazioni presenti nel DNS
Pagina 3 - 10
Java DataBase Connectivity - Connettore per database che consente l'accesso alle basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java, indipendentemente dal tipo di DBMS utilizzato. Object-relational mapping - Un prodotto ORM fornisce, mediante un'interfaccia orientata agli oggetti, tutti i servizi inerenti alla persistenza dei dati, astraendo nel contempo le caratteristiche implementative dello speci!co DBMS utilizzato. Un ORM utilizza tipicamente JDBC, per accedere allo speci!co DBMS, mediante luso di speci!ci JDBC Driver.
Un ORM in java pu aderire allo standard JPA, che ne de!nisce le speci!che. Hibernate e TopLink (Oracle), sono tra i pi di"usi.
Cos' la JVM?
Java Virtual Machine - Componente della piattaforma Java che esegue i programmi tradotti in bytecode dopo una prima compilazione. La JVM nasce come interprete, tuttavia, a seguito dellintroduzione di compilatori Just In Time, il bytecode viene compilato in linguaggio macchina. Questo conferisce alle applicazioni Java alte performance.
Il bytecode generalmente prodotto dalla compilazione di codici sorgenti (o !le sorgenti) scritti in linguaggio Java, anche se possibile produrre bytecode partendo da altri linguaggi come Scala, Clojure o Groovy.
Oltre a questi, vi sono numerosi altri strumenti di templating, orientati al web, principalmente di derivazione da altri linguaggi di programmazione, come HAML, Mustache, ERB (Ruby On Rails). Questi ultimi sono stati studiati per eliminare la complessit o dal lato di sviluppo o dal lato del designer.
Pagina 5 - 10
Quali sono i layer applicativi pi comuni per un'applicazione web e che utilizza un DBMS? Layer
Templates Controller Services Data Access Entity Bean
Utilizzo
JSP / Freemarker, produzione di HTML, CSS, Javascript Acquisizione dati, Content Negotiation, richiama i services Elabora la Business Logic, Richiama i metodi di accesso ai dati Metodi di accesso ai dati Modello dei dati usato dallapplicazione
A seconda della complessit del progetto, services e data access layer potrebbero essere condensati in uno solo.
Sviluppo Frontend
Spesso lo sviluppatore java si scontra con tematiche non necessariamente di competenza java. Lo sviluppo frontend, seppur contiene elementi strettamente creativi e poco analitici, in alcune sue componenti devesser compreso per poter fare applicazioni di qualit.
Cos' JSON?
JavaScript Object Notation - formato adatto per lo scambio dei dati in applicazioni client-server. basato sul linguaggio JavaScript, ma ne indipendente. Viene usato in AJAX come alternativa a XML/XSLT. La semplicit di JSON ne ha decretato un rapido utilizzo specialmente nella programmazione in AJAX. Il suo uso tramite JavaScript particolarmente semplice, infatti l'interprete in grado di eseguirne il parsing tramite una semplice chiamata alla funzione eval().
Pagina 6 - 10
Questo fatto lo ha reso velocemente molto popolare a causa della di"usione della programmazione in JavaScript nel mondo del Web.
Cos' JSONP?
La cosiddetta same-domain-policy una restrizione presente nei recenti browser che impedisce a script scaricati dalla rete di accedere, tramite qualsiasi tipo di richiesta HTTP, a risorse che si trovano su server diversi rispetto a quello iniziale che ha inviato lo script. Questa inibizione non riguarda solo host diversi tra di loro, ma anche processi in ascolto su porte diverse della stessa macchina. JSONP lacronimo di JSON with Padding e rappresenta una tecnica che permette di ovviare a questa limitazione permettendo a un browser di accedere, ovviamente con alcuni limiti, a risorse remote indipendentemente dallhost di origine. Uno dei modi per accedere a script on-demand quello di modi!care il DOM della pagina inserendo un nuovo tag <script> allinterno della testata del documento. Questo approccio, nonstante permetta di accedere a !le JavaScript remoti, presenta un grosso limite: non si ha infatti% controllo sul codice generato da questa richiesta che verr eseguoto automaticamente dallinterprete JavaScript appena lo ricever dal server. JSONP pu essere visto come unestensione a questo approccio che permette di invocare una funzione di callback automatizzata al ricevimento di dati.
Cos' jQuery?
Libreria di funzioni Javascript, cross-browser per le applicazioni web, che si propone come obiettivo quello di sempli!care la programmazione lato client delle pagine HTML. Fornisce tutti gli strumenti per selezionare elementi allinterno del DOM di una pagina web, manipolarli, modi!care CSS, gestire gli eventi, e"ettuare chiamate AJAX, applicare e"etti di transizione. jQuery si di"uso enormemente grazie alla potenza espressiva della libreria, che consente di comprendere il funzionamento delle operazioni anche da parte di operatori non prettamente sviluppatori.
Alla base di jQuery c un forte uso di regular expression, una profonda conoscenza Javascript ed il lavoro della community, molto attiva. Peculiarit della libreria sono il keychaining, che consente di operare in sequenza numerose attivit, manipolando loggetto per modi!cazioni successive: <a class=loadClienti href=/clienti>Carica lista clienti</a> $(a.loadClienti) .addClass(red) .text(Carica elenco clienti);
Pagina 7 - 10
Javascript un linguaggio procedurale (c) ad oggetti (c++) e funzionale (lisp). primo nel suo genere, incorpora funzionalit di linguaggi di tipo diverso. Oggi queste stesse funzionalit sono state largamente replicate da linguaggi come Ruby, Scala, Groovy. call ed apply sono le funzioni che permettono di assegnare il contesto di esecuzione ad una data funzione javascript. Sono sostanzialmente analoghe, si distinguono per la modalit con cui applicare i parametri.
Un framework di frontend (html5 / css3 / Javascript) consente di dedicarsi interamente alla prototipazione, senza dover dedicare del tempo a ride!nire il css per la maggior parte degli oggetti comuni, come form, bottoni, immagini, etc. Luso di griglie consente di avere un risultato ottimo, senza scrivere particolari CSS, consentendo una veloce prototipazione.
Fammi alcuni esempi di linguaggi che usano la JVM Che cos' la reflection
Un programma Java in esecuzione pu esaminare le classi da cui costituito, i nomi e le signature dei loro metodi, e cos via. Il supporto per la re$ection costituisce una delle pi notevoli innovazioni di Java, che deriva da una tradizione di linguaggi (C, C++) in cui tutte le informazioni di tipo vengono consumate dal compilatore, al punto che il programma in esecuzione non ha neppure nozione di come la propria memoria sia suddivisa in variabili. Leone leone = (Leone) Class.forName(it.treis.animali.Leone); La re$ection alla base del funzionamento di numerosi framework. Ogni volta che si con!gura il WEB-INF/web.xml di una web application o si descrive il comportamento di Spring tramite !le xml, si predispone lapplicativo alluso della re$ection. Con le annotazioni il comportamento parzialmente cambiato, spostando la risoluzione delle classi anche in fase si compilazione.
Pagina 8 - 10
un modo per aggiungere metadati nel codice sorgente Java che possono essere disponibili al programmatore durante l'esecuzione. In fase di con!gurazione di unarchitettura applicativa, usata come alternativa alla tecnologia XML.
Cos' JPA?
Java Persistence API - framework per il linguaggio di programmazione Java che si occupa della gestione della persistenza dei dati di un DBMS relazionale. Le API JPA sono state nate a partire dal lavoro di Hibernate Annotation, sono state estese e standardizzate.
Hibernate risponde allesigenza di standardizzare laccesso alla base dati, senza la complicazione introdotta con gli standard EJB. JPA si basa su questo lavoro.
Spring un framework molto esteso che comprende tanti ambiti diversi, nello sviluppo di applicativi Java. In unapplicazione Spring e Hibernate (jpa), il primo si occupa di instanziare gli oggetti necessari al funzionamento dellimplementazione JPA scelta, per esempio Hibernate.
Cos' lo stacktrace?
il report degli stack frame ad un certo istante di tempo, durante lesecuzione di un applicazione. La stampa dello stacktrace, in caso di eccezione, fornisce lindicazione completa dellorigine di tale eccezione (o almeno ci prova nda).
Servono per poter costruire collezioni di dati omogenee e fornire indicazioni sulla tipologia dei dati, in fase di compilazione.
Pagina 9 - 10
Essendo risolti in fase di compilazione, il limite facilmente aggirabile, resta pertanto una pratica usata in fase di sviluppo.
Area di memoria riservata allo storage delle informazioni legate ad una classe che sta caricando.
Ogni volta che viene instanziato un oggetto java, si preleva il codice immagazzinato nella heap, in mancanza di questo, il ClassLoader provveder a cercarlo nel classpath.
la suddivisione di un processo in pi sottoprocessi, che vengono eseguiti in concorrenza da un sistema di elaborazione monoprocessore o multiprocessore.
(Qui lo becchi subito un impostore, se ti campa per aria una risposta non sa cosa sono i thread. La risposta pi semplice Mai, la pi articolata Ce ne occupiamo solo se dobbiamo scrivere un application server, la pi sistemistica Ce ne occupiamo solo in fase di tuning dell'application server%)
Pagina 10 - 10