TPSIT
TPSIT (Tecnologie e Progettazione di Sistemi Informatici e Telecomunicazioni) è un indirizzo di studi che fa parte degli Istituti tecnici in Italia, con l’obiettivo di formare professionisti in grado di progettare, realizzare e gestire sistemi informatici e di telecomunicazioni. Questo percorso educativo prepara gli studenti a lavorare in settori legati all’informatica, all’elettronica e alle telecomunicazioni, fornendo loro le competenze tecniche necessarie per affrontare le sfide di un mondo digitale in continua evoluzione.
Java
Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti, sviluppato da Sun Microsystems (ora di proprietà di Oracle). È stato creato negli anni ’90 da James Gosling, Mike Sheridan e Patrick Naughton, con l’obiettivo di essere semplice, portatile e sicuro. La sintassi di Java è simile a quella di C++, ma con una gestione della memoria automatica (garbage collection) e senza l’uso di puntatori espliciti, il che rende il linguaggio più sicuro e facile da usare.
Alcuni dei principali concetti di Java includono:
-
Portabilità: Grazie alla filosofia “Write Once, Run Anywhere” (WORA), il codice Java può essere eseguito su qualsiasi dispositivo che abbia una Java Virtual Machine (JVM). Ciò significa che, una volta scritto il codice, può essere eseguito su diverse piattaforme senza modifiche.
-
Orientamento agli oggetti: Java è completamente orientato agli oggetti, il che significa che il programma è strutturato attorno a oggetti che rappresentano entità del mondo reale. Le caratteristiche fondamentali dell’orientamento agli oggetti in Java sono l’incapsulamento, l’ereditarietà e il polimorfismo.
-
Gestione automatica della memoria: Java utilizza un sistema di garbage collection che gestisce automaticamente la memoria, evitando perdite di memoria e migliorando la sicurezza dell’applicazione.
-
Multithreading: Java supporta il multithreading, che consente di eseguire più operazioni contemporaneamente, migliorando le prestazioni di applicazioni che richiedono elaborazione parallela.
-
Librerie e framework: Java è supportato da un vasto ecosistema di librerie e framework, tra cui Spring, Hibernate, JavaFX, e molti altri, che semplificano lo sviluppo di applicazioni complesse.
Java è ampiamente utilizzato per lo sviluppo di applicazioni web, software aziendali, applicazioni mobili (in particolare su Android) e sistemi embedded. La sua popolarità è dovuta alla sua robustezza, scalabilità e sicurezza.
Il protocollo Http
HTTP e il Modello Client-Server
Introduzione al Modello Client-Server
-
Architettura fondamentale del web dove:
-
Client (browser, app): Invia richieste
-
Server (web server): Elabora e risponde
-
-
Comunicazione asincrona: Il client avvia la connessione, il server risponde
-
Stateless: Ogni richiesta è indipendente (a meno di sessioni/cookie)
Il Protocollo HTTP
-
HTTP (HyperText Transfer Protocol):
-
Protocollo application-layer per il web
-
Basato su testo (human-readable) nelle versioni 1.x
-
HTTP/2 e HTTP/3 introducono ottimizzazioni binarie
-
Caratteristiche chiave:
-
Porta default: 80 (443 per HTTPS)
-
Senza connessione: Chiusa dopo ogni scambio (HTTP/1.1 introduce keep-alive)
-
Estensibile: Tramite header personalizzati
Conversazione Client-Server
-
DNS Lookup: Risoluzione del nome dominio → IP
-
TCP Handshake: Connessione a livello di trasporto
-
Richiesta HTTP: Invio del messaggio (GET, POST, etc.)
-
Elaborazione: Il server processa la richiesta
-
Risposta HTTP: Invio della risorsa (HTML, JSON, etc.)
-
Rendering: Il client interpreta la risposta
Tipi di Connessioni
| Tipo | Descrizione |
|---|---|
| HTTP/1.0 | Connessione chiusa dopo ogni richiesta/risposta (alta latenza) |
| HTTP/1.1 (default) | Keep-alive: riutilizzo connessione per più richieste |
| HTTP/2 | Multiplexing: più richieste parallele su una connessione |
| HTTP/3 (QUIC) | Basato su UDP, riduce latenza con connessioni più stabili |
Messaggi HTTP
Struttura Generica:
-
Start-line (richiesta o status-line)
-
Header (metadati)
-
Corpo (opzionale, per dati come form o JSON)
Messaggio di Richiesta (HTTP Request)
-
Start-line:
METODO URI HTTP/Versione
Esempio:GET /index.html HTTP/1.1 -
Header: Informazioni aggiuntive (es.
User-Agent,Accept-Language) -
Body: Presente in metodi come POST/PUT (dati del form, JSON)
Messaggio di Risposta (HTTP Response)
-
Status-line:
HTTP/Versione CodiceStato Messaggio
Esempio:HTTP/1.1 200 OK -
Header: Metadata (es.
Content-Type,Server) -
Body: Contenuto richiesto (HTML, immagine, etc.)
Header HTTP
Categorie Principali:
-
Generali:
Date,Cache-Control -
Richiesta:
Host,User-Agent,Authorization -
Risposta:
Content-Type,Set-Cookie -
Entity:
Content-Length,Last-Modified
Metodi (Verbi) HTTP
| Metodo | Scopo |
|---|---|
GET |
Recuperare risorse (senza modificare il server) |
POST |
Inviare dati al server (es. form) |
PUT |
Sostituire una risorsa esistente |
DELETE |
Rimuovere una risorsa |
PATCH |
Modificare parzialmente una risorsa |
HEAD |
Come GET, ma senza corpo (solo header) |
Rappresentazioni HTTP
-
Content Negotiation: Il client specifica il formato preferito tramite header:
-
Accept:text/html,application/json -
Accept-Encoding:gzip,br
-
-
Server risponde con
Content-Type(es.image/png)
Codici di Stato
| Range | Tipo | Esempi |
|---|---|---|
| 1xx | Informativo | 100 Continue |
| 2xx | Successo | 200 OK, 201 Created, 204 No Content |
| 3xx | Redirect | 301 Moved Permanently, 304 Not Modified |
| 4xx | Errore client | 400 Bad Request, 404 Not Found, 403 Forbidden |
| 5xx | Errore server | 500 Internal Server Error, 503 Service Unavailable |
Socket e TCP/UDP
Socket e Comunicazione con Protocolli TCP/UDP
Socket e Protocolli per la Comunicazione di Rete
Generalità
-
Socket:
Punto terminale di una comunicazione bidirezionale tra due programmi in esecuzione su una rete.-
Funzione: Astrazione software che permette a processi (anche su host diversi) di scambiare dati.
-
Analogia: Simile a una presa elettrica: fornisce un’interfaccia standardizzata per la connessione.
-
Porte di Comunicazione e Socket
-
Porte:
-
Identificatori numerici (16-bit, da 0 a 65535) associati a servizi specifici.
-
Esempi:
-
80(HTTP),443(HTTPS),22(SSH).
-
-
Socket = Indirizzo IP + Porta (es:
192.168.1.1:80).
-
Architettura dei Socket
-
Endpoint di Comunicazione: Combinazione univoca di indirizzo IP e numero di porta.
-
Porte Logiche: Identificatori a 16 bit (0-65535) per multiplexing dei servizi.
-
Intervalli notevoli: 0-1023 (well-known), 1024-49151 (registrate), 49152-65535 (effimere).
-
Classificazione dei Socket
-
Famiglie di Indirizzi:
-
AF_INET (IPv4)
-
AF_INET6 (IPv6)
-
AF_UNIX (comunicazione locale)
-
-
Tipologie:
-
Stream (TCP) – trasmissione ordinata e affidabile
-
Datagram (UDP) – trasmissione a pacchetti indipendenti
-
Raw – accesso diretto al livello di rete
-
Modalità di Trasmissione
-
Unicast: Comunicazione punto-punto tra singolo mittente e destinatario.
-
Broadcast: Diffusione a tutti i nodi della sottorete.
-
Multicast: Distribuzione selettiva a gruppi di destinatari.
Ciclo di Vita della Connessione
-
Creazione socket
-
Assegnazione indirizzo (bind)
-
Attivazione ascolto (listen – TCP)
-
Accettazione connessione (accept – TCP)
-
Scambio dati (send/recv)
-
Chiusura connessione
Differenze TCP vs UDP
| Caratteristica | TCP | UDP |
|---|---|---|
| Affidabilità | Garantita | Non garantita |
| Controllo di flusso | Presente | Assente |
| Ordinamento | Garantito | Non garantito |
| Overhead | Significativo | Minimo |
| Use case tipici | Web, email, file transfer | VoIP, DNS, streaming live |
Considerazioni sulle Porte
-
Porte ben note: Associate a servizi standard (es: 80/HTTP, 443/HTTPS)
-
Sicurezza: Limitare l’esposizione di porte non necessarie
-
Dynamic/Private: Assegnazione temporanea per sessioni client
Aspetti Avanzati
-
Multiplexing: Gestione concorrente di più connessioni
-
Non-Blocking I/O: Operazioni asincrone per alte prestazioni
-
Socket Security: Implementazione di TLS/SSL per canali cifrati
Standard e RFC di Riferimento
-
TCP: RFC 793
-
UDP: RFC 768
-
IPv4: RFC 791
-
IPv6: RFC 2460
SOAP E REST
Che cos’è un Web Service?
Un Web Service è un sistema software progettato per supportare l’interoperabilità tra dispositivi diversi su una rete, tipicamente Internet.
-
Funzione principale: Consentire a diverse applicazioni (scritte in linguaggi diversi, su piattaforme diverse) di comunicare tra loro.
-
Protocolli standardizzati: Utilizza tecnologie aperte come HTTP, XML, JSON, SOAP e REST.
-
Esempi d’uso:
-
Integrazione tra sistemi aziendali (es. ERP e CRM).
-
Servizi di pagamento online (es. PayPal API).
-
Accesso a dati esterni (es. API meteo).
-
Un nuovo modello basato su XML: l’architettura SOA
SOA (Service-Oriented Architecture) è un’architettura software in cui i componenti sono servizi indipendenti che comunicano tramite protocolli standard.
-
Principi chiave:
-
Loose Coupling: I servizi sono indipendenti e interagiscono tramite interfacce ben definite.
-
Riusabilità: Un servizio può essere utilizzato da più applicazioni.
-
Interoperabilità: Grazie a standard come XML e SOAP.
-
-
Ruolo di XML:
-
Formato universale per lo scambio di dati strutturati.
-
Usato in SOAP per definire i messaggi.
-
Il protocollo SOAP
SOAP (Simple Object Access Protocol) è un protocollo basato su XML per lo scambio di informazioni in ambienti distribuiti.
-
Caratteristiche:
-
Formato strutturato: I messaggi sono XML con un envelope, header e body.
-
Indipendente dal trasporto: Può usare HTTP, SMTP, TCP, ecc.
-
Stretta definizione: WSDL (Web Services Description Language) descrive l’interfaccia del servizio.
-
-
Vantaggi:
-
Standardizzato e adatto a transazioni complesse (es. bancarie).
-
Supporto per sicurezza (WS-Security) e transazioni (WS-Transaction).
-
-
Svantaggi:
-
Overhead elevato (XML verboso).
-
Complessità di implementazione.
-
Il protocollo REST
REST (Representational State Transfer) è un’architettura leggera basata su HTTP.
-
Principi fondamentali:
-
Risorse: Ogni entità è identificata da un URL (es:
/users/123). -
Metodi HTTP: GET (leggere), POST (creare), PUT (aggiornare), DELETE (eliminare).
-
Stateless: Ogni richiesta contiene tutte le informazioni necessarie.
-
Formati dati: JSON (preferito), XML, testo.
-
-
Vantaggi:
-
Leggero e veloce (grazie a JSON).
-
Scalabile e adatto al web moderno (es. API pubbliche).
-
-
Svantaggi:
-
Meno strutturato di SOAP (nessuno standard rigido).
-
Confronto SOAP vs REST
| Caratteristica | SOAP | REST |
|---|---|---|
| Formato dati | XML | JSON, XML, testo |
| Protocollo | HTTP, SMTP, TCP | Solo HTTP |
| Sicurezza | WS-Security (integrata) | HTTPS + OAuth/JWT |
| Performance | Lento (XML pesante) | Veloce (JSON leggero) |
| Use Case | Transazioni complesse (es. bancarie) | API web, mobile app, microservizi |
Conclusioni
-
SOAP:
-
Ideale per applicazioni enterprise che richiedono alti standard di sicurezza e affidabilità.
-
Usato in settori come finanza e healthcare.
-
-
REST:
-
Dominante nel web moderno per la sua semplicità e scalabilità.
-
Scelto per API pubbliche (es. Google Maps, Twitter).
-
-
Trend attuale:
-
REST è più popolare per nuove implementazioni, mentre SOAP resiste in contesti legacy.
-
gRPC (basato su HTTP/2) sta emergendo come alternativa performante.
-
