Prof. Pagani corrado
JAVA
NASCITA DI JAVA



Java è stato creato, a partire da ricerche effettuate
alla Stanford University agli inizi degli anni Novanta, da un
gruppo di esperti sviluppatori capitanati da James Gosling in
Sun Microsystems.
Per facilitare il passaggio a Java ai programmatori legati a
linguaggi come il C++, la sintassi di base è stata mantenuta
pressoché identica a quella del C++; tuttavia, non sono state
introdotte caratteristiche ritenute fonti di una complessità
non necessaria come l'aritmetica dei puntatori, l'ereditarietà
multipla delle classi, e l'istruzione goto.
In un primo momento Sun decise di destinare questo nuovo
prodotto alla creazione di applicazioni complesse per piccoli
dispositivi elettronici; a metà degli anni ‘90, con l'esplosione
di internet, Java iniziò a farsi notare e a diffondersi
enormemente come strumento di programmazione web.
PUNTI DI FORZA
1.
Paradigma ad oggetti

2.
3.
4.
Portabilità
Ampia disponibilità di librerie e strumenti
Sicurezza del codice

5.
puro ad eccezione dei tipi primitivi
Applet  eseguono codice scaricato (tramite browser)
da server remoto in modalità sicura (sandbox) 
necessitano della JVM su PC locale
Multithreading nativo

Non dipende dal SO
PORTABILITA’
Java è un linguaggio al tempo stesso compilato
e interpretato
 Compilatore  produce bytecode (linguaggio
intermedio portabile) che facilità il lavoro
dell’interprete (e quindi le prestazioni)
 Interprete JVM  dipende dalla piattaforma
hardware/software e deve essere installato sul
PC su cui si avvia il programma

COMPILATORE E JVM
JDK
JRE
LIBRERIE DEL LINGUAGGIO
Java prevede numerose librerie che permettono
l’interazione con diverse tecnologie software:
 Accesso a DB relazionali
 XML
 Programmazione WEB sia client sia server
 Interfaccia grafica utente
 multimedialità
LIBRERIE E PIATTAFORME SOFTWARE (API)
Il linguaggio in sé definisce solo una minima
parte delle librerie utilizzabili. La parte restante
è definita dalla piattaforma sulla quale il
programma sarà eseguito.
 La Oracle mette a disposizione tre piattaforme
ufficiali, ciascuna destinata ad ambiti diversi:

 Java
Platform, Standard Edition
 Java Platform, Micro Edition
 Java EE
JAVA PLATFORM, STANDARD EDITION
La Java Platform, Standard Edition è
una piattaforma software ampiamente utilizzata
nella programmazione in linguaggio Java per
costruire e distribuire applicazioni portatili ad uso
generale.
 Java SE consiste di

una macchina virtuale (Java Virtual Machine), che deve
essere usata per eseguire
(interpretare) programmi Java
 Librerie (API) necessarie per consentire l'uso di file
system, reti, interfacce grafiche e così via, all'interno di
tali programmi.

JAVA PLATFORM, ENTERPRISE EDITION


La specifica Java EE include tecnologie che estendono
le funzionalità di base della piattaforma Java;
principalmente abbiamo:
Componenti web


Componenti enterprise


Le componenti che rientrano in questa categoria sono
quelle legate alla visualizzazione delle pagine web ed
all'esposizione di web service.
L'uso di queste componenti è richiesto solamente in
applicativi di medie e grandi dimensioni.
Componenti per l'interazione con la base dati

Questa categoria contiene le tecnologie che permettono la
persistenza dei dati all'interno di una base dati relazionale
MAPPA DEGLI ELEMENTI JAVA

JRE  Java Runtime
Environment (comprende la
JVM)

JDK  Java Development
Kit (motore di compilazione
del codice sorgente,
comprende il compilatore
javac)

JSR  Java Specification

JavaFX  è una famiglia di
Requests (specifiche di API
sia approvate/implementate
che in fase di approvazione)
software applicativi, basati
sulla Piattaforma Java, per la
creazione di rich Internet
applications.
PACKAGE





Le classi che costituiscono un programma JAVA sono
normalmente suddivise in insiemi definiti PACKAGE, in modo
da avere una struttura il più possibile ordinata
Package nomePackage;
I package una volta compilati possono essere memorizzati in
file compressi con estensione .JAR che ne comprendono i
Lbytecode
Un package definisce un nuovo spazio dei nomi per le classi
che si trovano al suo interno, per questo i programmatori
possono creare classi con lo steso nome all’interno di
package diversi
E’ possibile importare package diversi tramite le istruzioni


import java.io.InputStream;
import java.io.*;
CLASSI

Regole





Il nome della classe deve coincidere con il nome del file
(convenzionalmente inizia con la lettera maiuscola)
Convenzione di inserire una sola classe per file
Può avere un proprio metodo main di tipo static
Un programma è composto da 1 o + classi che risiedono su
altrettanti file. Almeno una classe deve possedere il metodo
main
Sintassi


Public class nomeClasse
{
Attributi (o proprietà)
 Costruttori
 Metodi



}
Eventuale metodo static main per l’avvio
FILE CHE CONTIENE LA CLASSE
Deve avere lo steso nome della classe che
contiene
 Struttura e Sintassi

 Commento
di intestazione del file
 Dichiarazione del package
 Sezione di import di altri package
 Package
dell’applicazione
 Package delle librerie
 Definizione
della classe
INCAPSULAMENTO
L’incapsulamento è legato al concetto
di “impacchettare” in un oggetto i dati (attributi) e
le azioni (metodi) ammissibili su tali dati (il tutto è
riconducibili all’astrazione di un singolo
componente denominato classe).
 Gli attributi sono variabili che descrivono lo stato
informativo della classe.
 I metodi sono i comportamenti che la classe
implementa, sono definite in modo analogo alle
funzioni, ma possono accedere direttamente a
tutti gli attributi della oggetto che li invoca.

MODIFICATORI DI ACCESSIBILITA’


Il modificatore va anteposto alla definizione della classe,
attributo, metodo e ha lo scopo di come tale elemento
sia visto all’esterno del file/classe dove sia definito.
E’ preferibile mantenere tutti gli attributi privati e
prevedere specifici metodi di accesso/scrittura: in tale
modo posso gestire eventuali accessibilità specifiche e
differenti per SCRITTURA e LETTURA.
MEMBRI STATIC
Con il modificatore STATIC è possibile associare
attributi o metodi all’intera CLASSE invece che ai
singoli oggetti istanziati.
 Tali membri sono condivisi quindi da tutti gli
oggetti della classe
 Per poter invocare il metodo static o accedere
all’attributo static occorre premettere al nome del
membro il nome della CLASSE:

NomeClasse.NomeAttributoStatico
 NomeClasse.NomeMetodoStatico(…)
