Web Apps

Come sviluppare applicazioni web?

Aggiornato da Roberto Rossi il 18-06-2018

Oggi parliamo di applicazioni web.

Iniziamo col dire che una applicazione web può essere un semplice sito web, un servizio dedicato ma anche un software per il calcolo, più in genere un qualsiasi programma che elabora i dati principalmente su un sistema remoto (all'interno di internet).

Il bello di questo tipo di software è che può essere utilizzato da tutti i dispositivi dotati di un browser, quindi PC, tablet, smartphone ecc...

Non pretendo certo di spiegare tutto ciò che c'è da sapere ma, proverò a fornire alcune indicazioni su come approcciare a questo fantastico mondo, cercando di fare una panoramica sulle più popolari tecnologie oggi disponibili, fornendo indirizzi e riferimenti utili per iniziare lo sviluppo delle proprie applicazioni.

Come Funziona?

La prima cosa che deve essere chiara è il come funziona una applicazione web, indipendentemente dagli strumenti che verranno poi utilizzati per crearla.

Un software web funziona (nella maggior parte dei casi) all'interno di un Browser Web (es. : Internet Explorer, Firefox, Opera, ecc...).

Nella pratica, il meccanismo sul quale si basa è il seguente :

Applicazioni e siti web

Meccanismo che, a parole, può essere cosi riassunto :

  1. L'utente da un comando al browser. Ad esempio indicando l'indirizzo della pagina web che vogliamo visualizzare.
  2. Il browser si collega al server corrispondente all'indirizzo inserito.
  3. Il server elabora la pagina richiesta e restituisce al browser i dati che compongono la pagina.
  4. Il browser riceve i dati dal server e li mostra all'utente.

Questo è il processo alla base di tutte le applicazioni web, un continuo scambio di dati tra client (il browser) e server.

Per quanto costantemente presente, tale meccanismo non è esente da eccezzioni. Se nella maggior parte dei casi le elaborazioni dei dati avvengono sul server, il quale produce risultati, alcune volte sarà necessario effettuare elaborazioni direttamente sul client (il browser) senza scomodare il sistema remoto.

Per governare questo processo ci sono molte cose da imparare, sia a livello di linguaggi di programmazione sia a livello di metodi di presentazione dei contenuti.

I Linguaggi del Web

Nella realizzazione di applicazioni web i linguaggi, di programmazione e non, indispensabili sono pochissimi. Nella pratica, una pagina web è composta da un mix di tre linguaggi/sistemi. In realtà questi non sono gli unici utilizzabili ma, sicuramente sono quelli più rilevamenti.

Prima di tutto HTML. E' utilizzato per rappresentare la pagina mostrata all'utente, in tutte le sue parti;

Poi CSS. E' usato per razionalizzare e formattare adeguatamente una pagina web, in pratica permette di agire sui contenuti modificando il modo con cui questi vengono presentati;

Infine Javascript. Eseguito direttamente dal Browser Web, è indispensabile per rendere la pagina interattiva senza dover coinvolgere il server. Spesso è utilizzato anche per effettuare elaborazioni più o meno complesse. Con Javascript non solo è possibile lavorare sui dati ma è in grado di modificare anche il contenuto della pagina in ogni suo aspetto.

Passiamo ora alla parte server. Se HTML, CSS e Javascript vengono interpretati direttamente dal nostro Browser Web, ciò che succede sul server è cosa diversa.

Un server web, una volta ricevuta una richiesta, deve processare dei dati e restituire un risultato al nostro browser, per fare questo entrano in gioco altri linguaggi di programmazione/tecnologie. La scelta è veramente ampia quindi, per semplificare, mi limiterò ad elencare i linguaggi/tecnologie più usati nell'attuale mondo di internet:

  • PHP. PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti; originariamente acronimo di "Personal Home Page") è un linguaggio di scripting interpretato, con licenza open source e libera, originariamente concepito per la programmazione Web ovvero la realizzazione di pagine web dinamiche.
  • Microsoft .NET (ASP.NET). Microsoft ha sviluppato .NET come contrapposizione proprietaria al linguaggio Java (che è open source) e attribuisce un ruolo strategico al lancio di .NET come piattaforma di sviluppo per applicazioni desktop e server per le architetture client/server, internet ed intranet.
  • Java. Java è stato ideato a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, creato come linguaggio orientato agli oggetti, indipendente dalla piattaforma, contenente strumenti e librerie per il networking e progettato per eseguire codice da sorgenti remote in modo sicuro.

Le differenze tra le queste tecnologie sono molte e servirebbe più di un libro per descriverle tutte.

A rendere ancora più complessa la scelta ci si mettono i programmatori. Infatti, se si domandasse ad uno sviluppatore che utilizza prevalentemente .NET, questo consiglierebbe di usare quello, allo stesso modo uno sviluppatore esperto di Java indirizzerebbe su Java, cosi come uno di PHP consiglierebbe quest'ultimo. Il brutto di molti programmatori è che esprimono le loro opinioni in base a ciò che piace, senza minimamente considerare i semplici dati oggettivi.

A questo punto spesso ci si domanda: come è possibile scegliere?

Personalmente, quando scelgo uno strumento, parto sempre da ciò che desidero. In particolare, il sistema di sviluppo che voglio utilizzare ha queste caratteristiche:

  • Facile da apprendere.
  • In grado di essere usato per qualsiasi tipo di sito/applicazione web, dal sito amatoriale fino ai siti ad elevatissimo traffico.
  • In grado di funzionare indifferentemente su sistemi Windows, Linux e magari mac.
  • In grado di funzionare con più server web (es.: Apache, IIS, Lighttpd, ecc...).
  • Disponibile sulla maggior parte dei servizi di hosting, sia gratuiti che a pagamento.
  • Ben documentato.
  • Ampia base di utenti e aziende di supporto in grado di fornire aiuto nei momenti critici.
  • Dotato di strumenti aggiuntivi gratuiti e commerciali per risolvere qualsiasi situazione.

Un sistema di sviluppo del genere può essere considerato universale ed è, a mio parere, la soluzione ideale per la realizzazione di applicazioni web.

Per semplificare la scelta proverò ad affrontare l'analisi dei tre strumenti (Microsoft.Net, Java e PHP) partendo da dati oggettivi, in modo da poter stabilire quale sia quello che più si adatta al modello sopra esposto :

  • Dei tre linguaggi di programmazione quello certamente più semplice da apprendere è PHP. Da questo punto di vista i tempi necessari per poter scrivere il primo programma/applicazione avvantaggiano questo linguaggio. Anche chi è alle prime armi sarà in grado, in tempi brevissimi, di mettere online le prime realizzazioni.
  • La complessità del sistema di sviluppo influisce negativamente sulla sua capacità di realizzare sistemi semplici e a basso costo. Come si può osservare dalle statistiche di http://w3techs.com/, la semplicità di PHP ne fa il candidato perfetto per qualsiasi tipologia di sito web. Per quanto riguarda i siti a basso budget, PHP si avvantaggia per l'immediatezza di utilizzo, cosa che non accade con i più complessi Java e .NET. Se si parla con sviluppatori Java e .NET, spesso ci si sente raccontare di come questi sistemi siano superiori nella gestione dei siti ad alto traffico. Dal mio punto di vista, sono semplicemente punti di vista. Osservando i siti più popolari potremo vedere come non sia raro incontrare PHP. Tra gli utilizzatori eccellenti voglio ricordare Facebook che, proprio per PHP, ha sviluppato interessanti soluzioni per ottimizzarne il funzionamento su sistemi imponenti come quelli del più grande social network del pianeta.
  • Sia Java, sia PHP possono funzionare sui maggiori sistemi operativi (Windows, Linux, mac ecc...), al contrario Microsoft.NET è utilizzabile esclusivamente su Windows, anche se ultimamente è entrato in scena .NET Core che ne consente l'utilizzo su sistemi non Windows.
  • Microsoft.Net solitamente viene utilizzato in combinazione con IIS (web server Microsoft), al contrario Java e PHP possono essere usati indistintamente con i maggiori web server (Apache, IIS, Lighttpd ecc...).
  • Dal punto di vista degli hosting provider, cioè delle società che offrono servizi in grado di fornire server web per ospitare applicazioni o pagine di un sito web, ancora una volta grazie alla sua diffusione, PHP è ovunque. Servizi gratuiti, a bassissimo costo, professionali, per qualsiasi tasca. Diversamente, sia Java, sia .NET non offrono la stessa scelta, entrambe sono disponibili come servizi a pagamento, in grado di ospitare siti amatoriali o professionali, molto più complessa la ricerca di soluzioni gratuite. Sia per la complessità dei sistemi di sviluppo, sia per la minor diffusione e per i costi maggiori, l'approccio a Java o .Net è più impegnativo.
  • Anche nel caso della documentazione, la diffusione del sistema di sviluppo avvantaggia PHP che dispone di una sterminata documentazione in molte lingue, italiano compreso. Per quanto riguarda la letteratura commerciale (guide e manuali), questa abbonda soprattutto per PHP, anche se Java e .NET dispongono di un buona quantità di testi dedicati.
  • Attualmente, l'83,5% dei siti web conosciuti utilizzano come linguaggio di programmazione PHP (fonte http://w3techs.com/). Microsoft.NET si attesta al 13.3% e Java al 2,3%. Credo non ci sia altro da dire sulla diffusione e base di utenza.
  • Tutti i sistemi sono dotati di strumenti, librerie e software aggiuntivi, gratuiti e commerciali. Naturalmente, anche qui, la diffusione del sistema di sviluppo privilegia il solito PHP per il quale, spesso, si ha l'imbarazzo della scelta.

Ormai dovrebbe essere chiaro quale sia il sistema di sviluppo che ho scelto per i miei lavori (PHP). Purtroppo non sono mai riuscito a vedere, in Java o .Net, dei vantaggi reali. Se, sulla carta, Java e .Net sembrano meglio concepiti, nella realtà PHP dimostra, grazie alla sua flessibilità superiore, di non aver nulla da invidiare ai concorrenti.

Inoltre, indipendentemente dal sistema scelto, non bisogna mai dimenticarsi che lo strumento da solo non genera applicazioni migliori. E' sempre lo sviluppatore a determinare la qualità di un software, un cattivo sviluppatore realizzerà cattivo software con Java, .Net o PHP, un bravo sviluppatore realizzerà un'ottimo software in PHP, Java e .NET, solo che con PHP lo farà prima.

Ultimo argomento da trattare è il Database

Da Wikipedia:

In informatica, il termine database, banca dati o base di dati, indica un insieme di archivi collegati secondo un particolare modello logico (relazionale, gerarchico, reticolare o a oggetti) e in modo tale da consentire la gestione dei dati stessi (ricerca o interrogazione, inserimento, cancellazione ed aggiornamento) da parte di particolari applicazioni software dedicate (DBMS) basate su un'architettura di tipo client-server e sui cosiddetti query language per l'interfacciamento con l'utente.

In questo caso la scelta è veramente facile, e cadrà quasi certamente su MySQL oppure sul suo derivato MariaDB.

MySQL/MariaDB è il database engine più diffuso, disponibile su ogni tipo di hosting, sia gratuito sia commerciale, ottime performance e semplice da utilizzare.

Naturalmente le alternative ci sono, ma sono sicuramente meno attraenti. Ad esempio PostgreSQL oppure Microsoft SQL Server disponibile sia su Windows sia su Linux.

Due parole vanno sicuramente spese per SQLite. Se i sistema di gestione dati come MySQL sono veri e propri database server, SQLite è un piccolo gestore di database che lavora su singoli file. Questo software consente l'uso di [i]piccoli[/i] database SQL indipendentemente dalla presenza di un database server (tipo MySQL), ovviamente SQLite è integrato nativamente in PHP e può essere utilizzato sia da Java sia da .Net.

Come iniziare

La mia opinione è che PHP sia scelta migliore, sia nel caso si voglia realizzare piccole applicazioni, sia nel caso si desideri realizzare grossi siti o software avanzati.

Considerando l'enorme mole di informazioni necessarie per poter iniziare a sviluppare, mi limiterò ad elencare ciò che ti serve per approcciare a PHP.

Per quanto riguarda Java e .NET rimando ai siti di riferimento per questi due ambienti di:

HTML e CSS

Per approcciare alla creazione di applicazioni web, le prima cosa da conoscere sono HTML e CSS.

I primi due punti sono sicuramente fondamentali, al contrario i successivi possono essere letti anche in un secondo momento.

Se preferiamo i libri, consiglio:

Javascript

Al secondo posto, come importanza, il linguaggio Javascript. Questo linguaggio, interpretato dal browser, anche se non è indispensabile è fondamentale nel caso si desideri realizzare applicazioni interattive.

PHP

Per quanto riguarda PHP, il primo approccio può essere fatto con:

Il mondo di PHP è estremamente vasto e variegato, occorre quindi procedere per gradi, ciò che ho indicato dovrebbe, in teoria, essere seguito dal primo punto all'ultimo in modo da apprendere PHP gradualmente e logicamente.

Se invece si preferisce la letteratura classica, quella fatta con i libri, allora si può optare per la molta letteratura disponibile su Bol.it.

Si tenga sempre presente che, qualunque sia il sistema di sviluppo scelto, c'è molto altro da dire e da imparare ma, quello presentato in questo articolo è, a mio giudizio, la base minima dalla quale partire.

Gli strumenti per lo sviluppo web

Il primo, e più importante, strumento per affrontare lo sviluppo di software web è sicuramente il Browser.

Dal mio punto di vista il miglior browser oggi disponibile è Firefox, non solo per le sue caratteristiche tecniche ma anche grazie all'idea che il software non debba essere proprietà di una azienda, ma debba essere Libero, soprattutto nel caso di programmi basilari e indispensabili come i browser web.

Per chi volesse "esagerare" soggerirei di provare la versione di Firefox dedicata in modo specifica agli sviluppatori, Firefox Developer Edition.

Per quanto riguarda invece gli strumenti da usare con i vari linguaggi di programmazione (HTML / CSS / Javascript / PHP ecc...), devo dire che non ho mai trovato un software che li gestisca tutti, contemporaneamente e nel migliore dei modi.

Ci sono però alcuni programmi che, si adattano allo sviluppo web con PHP, meglio di altri. In particolare, mi sento di consigliare (tutti gratuiti) :

  • Visual Studio Code. Il mio IDE preferito targato Microsoft e disponibile per Windows, Linux e Mac.
  • PHP Development Tools (Eclipse). Una dei migliori ambienti per lo sviluppo di applicazioni web.
  • NetBeans. Completissimo IDE in grado di gestire la maggior parte dei linguaggi web.
  • RSciTE. Immancabile un editor di testo generico, per editare qualsiasi tipo di file. Il mio editor di testo preferito

Ovviamente, molti altri strumenti sono disponibili, alcuni ideati per risolvere problemi specifici, altri pensati per aiutare il programmatore in situazioni più generiche.

Hosting Web

Come già detto, i servizi di Hosting consentono di mettere online i nostri siti e le nostre applicazioni.

Esistono ovviamente, due tipologie di servizi, quelli gratuiti e quelli a pagamento. Nel caso di PHP trovare un Hosting Provider è semplicissimo, praticamente tutti lo supportano.

I due servizi che consiglio, uno gratuito e uno a pagamento, sono :

  • Netsons. Hosting professionale. Netsons è un brand ed un servizio offerto dalla Supernova s.r.l. che, ad oggi, conta più di 72000 clienti in Italia ed in Europa, per servizi di hosting, server virtuali, server dedicati, soluzioni IT. Supernova è tra i primi posti per le proprie offerte di servizi hosting e soluzioni Internet sul mercato italiano. L'obiettivo primario è lo sviluppo ed il miglioramento delle soluzioni IT e delle relative applicazioni, volte ad automatizzare ed a facilitare le operazioni e le meccaniche più comuni. La Supernova ha i suoi punti di forza nel fornire consulenze e servizi IT professionali a tutte le tipologie di clienti, sia business, che privati. Il "core" dell'azienda è un team di professionisti impegnati costantemente nell'implementazione di nuove tecnologie, 24h su 24h, 7 giorni su 7, 365 giorni l'anno.

  • Altervista. Hosting gratuito. Altervista è il laboratorio e la palestra del web Italiano. Milioni di ragazzi e ragazze hanno costruito il loro primo sito web qui. Alcuni di loro hanno continuato, facendo crescere il progetto fino a vederlo diventare un sito importante, con migliaia di visitatori e pagine viste ogni giorno. E' cosi che la propria passione diventa un lavoro. Altervista è nato dalla passione per l'informatica di un ragazzo di vent'anni. In poco tempo quella passione è diventata un lavoro e...

Entrambe i provider sono italiani e forniscono servizi di altissima qualità.

Personalmente, ho iniziato con Altervista per poi passare a Netsons nel momento in cui le necessità lo hanno richiesto. Il sito che stai guardando è ospitato proprio sui server di Netsons.

Come sviluppare siti web e applicazioni sul proprio PC?

I motivi per voler sviluppare affidandosi esclusivamente al proprio PC sono innumerevoli. Primo fra tutti il fatto che non sempre si dispone di una connessione web poi, può capitare di voler installare del software non consentito dal servizio di hosting, oppure possiamo trasformare il nostro sistema in un vero e proprio server, per fornire direttamente l'accesso al sito/applicazione, magari con l'ausilio di servizi come No-IP.

Di motivazioni ce ne sono mille, e ritengo che sia indispensabile poter sviluppare sul proprio sistema, senza dipendere in tutto e per tutto da servizi terzi.

Sempre pensando a PHP, per ottenere un sistema di sviluppo completamente (o quasi) indipendente, ed iniziare immediatamente lo sviluppo è necessario installare diverse cose, in particolare:

  • PHP.
  • MySQL.
  • Web Server.
  • IDE.

Grazie all'impegno della comunità di sviluppatori/utenti di PHP, la cosa è estremamente semplice, infatti è sufficiente scaricare ed installare due soli pacchetti:

  • XAMPP oppure EasyPHP. Una singola installazione che comprende le 3 componenti necessari al funzionamento di un server web dotato di PHP e MySQL.
  • Visual Studio Code oppure NetBeans. Ottimi ambienti in grado di supportare la programmazione web.

Credo, a questo punto, che ci sia abbastanza materiale per iniziare... buon divertimento a tutti.

Andare sul web. Dalla teoria alla pratica

Non dobbiamo nasconderci dietro un dito. Essere sul web è un’occasione da non lasciarsi sfuggire. Le possibilità che il web ci fornisce possono rivoluzionare la nostra attività, qualsiasi essa sia.

Il numero di persone raggiungibili mediante internet è infinitamente superiore a quello che si può fare in qualsiasi altro modo. E poco importa che la nostra attività sia solo nazionale o internazionale.

Bene. Quindi? Quindi non rimane che trovare il nostro posto online.

Oltre a quello che hai letto, ho scritto un ulteriore articolo su come mettere in pratica la teoria, spiegando come realizzare un primo sito web, nel modo più semplice e rapido possibile, ottenendo comunque un risultato professionale, bello da vedere e soprattutto utile alla nostra attività.

E... per leggere il nuovo articolo di approfondimento clicca qui:

Andare sul web. Dalla teoria alla pratica

Pubblicazione

Prima pubblicazione: 09/07/2012

Licenza di questo articolo

Autore : Roberto Rossi

Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.