1
-lezio
ne 0
3 -
Panora
mica su Ja
va
Lin
guaggi
Corso
M-Z -Lau
rea in In
gegneria In
formatica
A.A. 2
009-2010
Alessa
ndro Lo
ngheu
http
://www.diit.u
nict.it/u
sers/alongheu
alessandro.lon
nict.it
2
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Code-Name Green
�Nome del p
rogetto
Sun co
n l’o
biettivo
di fo
rnire
“in
tellig
ent co
nsumer-e
lectro
nic d
evice
s”.
�Il risu
ltato fu
Oak
�Un lin
guaggio basato su
C++
�Creato da Ja
mes G
oslin
g
�Il n
ome del nuovo lin
guaggio fu
cambiato in Ja
va
�E’forte
mente isp
irato al C
++ m
a rip
rogetta
to se
nza il
requisito
della piena co
mpatib
ilitàcon il C
(a cu
i però
asso
miglia)
3
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Green in th
e re
d?
�Il p
rogetto
Green non andòlontano
�Il m
erca
to degli “in
tellig
ent co
nsumer-e
lectro
nic
device
s”cre
bbe lentamente
�Sun non si im
pose in ta
le se
ttore di m
erca
to
�Fu su
l punto di esse
re ca
ncellato
�L’e
splosio
ne del W
orld
Wide W
eb nel 1
993 sa
lvo il
progetto
Green
�Java fu rip
ensato come linguaggio per fornire
contenuto dinamico
alle pagine web
�Java fu
form
almente annuncia
to nel 1995
4
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Java nasce
per a
pplica
zioni “e
mbedded”
�Si diffo
nde attra
verso
il concetto
di applet come
picco
la applica
zione da eseguirsi d
entro
un browser
Internet
�grafica
porta
bile ed eseguibile ovunque
�modello di sicu
rezza
“sandbox”
�Può benissim
o esse
re usato come linguaggio per
costru
ire applica
zioni a
nche non per In
ternet a
nche
non grafich
e (rim
ane un linguaggio general
purpose)
Java
5
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Alcu
ne date dello svilu
ppo Ja
va
�Java 1.0 –
rilascia
to nel 1995 dalla Sun
�Java 1.1 –
rilascia
to nel 1997
�dalla v. 1
.2 del 1998, riscrittu
ra sig
nifica
tiva
�attu
almente 1.6 (6
.0), rila
sciata nel dice
mbre
2006
6
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Versio
ni di Ja
va
Le ve
rsioni di Ja
va2
�1.2, la
prim
a
�1.3, so
stanzia
lmente equiva
lente alla 1.2
�1.4, in
troduce alcu
ne lim
itate fu
nzio
nalità
nuove incompatib
ili con il p
assa
to
�1.5, u
lterio
re riscrittu
ra sig
nifica
tiva, co
n
molte fu
nzio
nalità
nuove ed incompatib
ili
�1.6, a
ggiunta di dive
rse nuove fu
nzio
nalità
7
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
La Piatta
form
a Ja
va
�Piatta
form
a:
ambiente
hardware
o
softw
are dove so
no eseguiti i p
rogrammi
(Windows 2
000, Lin
ux, S
olaris, M
acO
S)
�Una piatta
form
a in genere può esse
re
descritta
come una combinazio
ne di
sistema operativo
e hardware
�la Ja
va p
latfo
rm è
solamente so
ftware e
viene eseguita al
di
sopra di
altre
piatta
form
e b
asate su
ll’hardware
8
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�La piatta
form
a co
nsiste
di due elementi:
�Java Virtu
al M
achine (JV
M)
�Java Applica
tion Programming In
terfa
ce (Ja
va A
PI),
ovve
ro una co
llezio
ne di so
ftware pronti p
er l’u
so, a
d
esempio per g
estire
Graphica
l User In
terfa
ce (G
UI),
organizza
ti in lib
rerie
di cla
ssi e in
terfa
cce co
rrelate
(packages)
Java API e
Java VM
isolano il p
rogramma
dall’h
ardware
La Piatta
form
a Ja
va
9
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
La Piatta
form
a Ja
va
�Il
codice
Java vie
ne com
pila
toin un linguaggio interm
edio
chiamato b
yte
code
�Il b
ytecode è
inte
rpre
tato
a ru
n-tim
e dalla JV
M e co
nvertito
nel linguaggio macch
ina del calco
latore su cui è
richiesta
l’esecuzio
ne;
�la JV
M è
in quindi u
n co
mputer virtu
ale svilu
ppato per re
ndere
indipendente dalla macch
ina il codice
Java: paradigma “w
rite once,
run anyw
here” ,
talvo
lta mutato dai detra
ttori
in “w
rite once, d
ebug an
ywhere”
�La
porta
bilità
del
codice
è
assicu
rata dalla garanzia
progettu
ale ch
e i tip
i di d
ata abbiano co
mporta
mento sta
ndard
al varia
re della piatta
form
a (ad esempio, i reali sono IEEE-
complian
t );�
in alternativa
, il byte
code può esse
re co
mpilato tra
mite un ju
st in
tim
e (JIT
) co
mpile
r, qualora occo
rrano presta
zioni
maggiori.
10
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
La Piatta
form
a Ja
va
11
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Esisto
no e
dizio
nidiffe
renti d
ella piatta
form
a Ja
va�
Sta
ndard
Editio
n (J2
SE)
�Lib
rerie
di base per lo svilu
ppo di applica
zioni deskto
p
(client a
pplica
tions) in
cluso AWT e S
wing
�Consente di eseguire
applica
zioni e applet
�Ente
rpris
e E
ditio
n (J2
EE)
�per lo
sviluppo di applica
zioni la
to se
rver
�Per svilu
ppatori W
eb (E
JB’s, S
ervle
ts e JS
Ps)
�rich
iede J2
SE
�M
icro
Editio
n (J2
ME)
�per lo
sviluppo di applica
zioni m
obili
�librerie
ridotte
e piùpicco
le�Im
plementa un su
bset d
elle fu
nzio
nalita
di Ja
va
La Piatta
form
a Ja
va
12
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
La Piatta
form
a Ja
va
Ogni edizio
ne si co
mpone di:
�una se
rie di sp
ecifich
e (d
ocumenti)
�una serie
di
strumenti
(es:
compilatore,
debugger e
cc.)
�una serie
di
librerie
o API
(Applica
tion
Program In
terfa
ces)
�sch
ematizza
ndo (e
ccessiva
mente) è
possib
ile
dire
che i live
lli più
complessi in
cludono i p
iùsemplici
13
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java2 –
Platfo
rm Editio
n 6.0
14
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Tipi di Programmi
Java perm
ette
la re
alizza
zone di 4 tip
i di programmi:
�Applica
tion
�Applet
�Servle
t
�Beans
15
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java Applica
tion
�Standalone program nelsenso ch
e rich
iede
solo la JV
M per e
ssere eseguito
�Non rich
iede un programma host (co
me un
browser) p
er l’e
secuzio
ne.
�Il
metodo “m
ainӏ
utilizza
to come entry
point e
deve quindi esse
re presente
�Il m
etodo m
ain deve avere la sig
nature
public static vo
id m
ain(Strin
g arg
s[ ])
16
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java Applet
�Picco
li programmi tip
icamente sca
ricati d
a un se
rver su
una
macch
ina clie
nt
�La JV
M è
costru
ita all’in
terno del b
rowser o
di u
n apposito
programma (a
ppletvie
wer), ch
e agisco
no co
me programma
host p
er l’ap
plet.
�Un applet è
tipica
mente lancia
to dentro
un file
HTML
�Un applet p
uò esse
re in
serito
in un documento H
TML co
n
l’apposito
tag <applet>
�Un applet
generalmente opera sotto
una gestio
ne sicu
ra
che im
pone un san
dbox secu
rity. �
Ciò previe
ne che un applet possa
eseguire
operazio
ni
potenzia
lmente perico
lose come leggere e scrive
re su un
disco
. �
Un applet è
deriva
to dalle cla
ssi Appleto JApplet.
17
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java Servle
t
�Una servlet
èun programma che vie
ne eseguito su una
macch
ina serve
r, tip
icamente con l’obiettivo
di processa
re
una rich
iesta
di un clie
nt
�L’h
ost
per una servlet
èdi norm
a un Web serve
r, che
fornisce
una JV
M.
�Una servlet, co
me un applet, è
norm
almente la
ncia
to da un
browser ma, a diffe
renza degli applet,
viene eseguito sul
serve
r.�
Una servlet
comunemente esegue delle operazio
ni su un
database e genera pagine Web dinamich
e che vengono
mostra
te al clie
nt.
�Una
classe
servlet
implementa
l’interfa
ccia
standard
Servleto è
deriva
ta da una cla
sse ch
e im
plementa ta
le
interfa
ccia.
18
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java Bean
�Un bean
èun co
mponente so
ftware, cio
è, u
na
parte
di softw
are precostru
ito che può esse
re
integrato co
n altri p
er co
struire
una applica
zione.
�Un bean
generalmente ha uno sco
po preciso
. Esempi so
no ca
lendar b
eans, lo
gin beans, e
beans…
�Una
classe
bean
tipica
mente
implementa
l’interfa
ccia sta
ndard Serializable.
19
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Il Java D
evelo
pm
en
t Kit (J
DK
)
�Il JD
K della Sun M
icrosyste
ms è
l’insie
me di stru
menti d
i svilu
ppo ch
e fu
nge da “rife
rimento ufficia
le”del lin
guaggio
Java:
�non è
un ambiente grafico
integrato: è
solo un in
sieme
di stru
menti d
a usare dalla lin
ea di co
mando
�non è
partico
larm
ente veloce ed efficie
nte (non
sostitu
isce stru
menti co
mmercia
li)
�però funzio
na,
ègratuito ed esiste
per
tutte
le
piatta
form
e (W
in32, Lin
ux, S
olaris, M
ac..)
�rife
rimento:
http
://java.su
n.co
msito
ufficia
le della
Javasoft
per
scarica
re tutto
il
softw
are e la
documentazio
ne
20
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Cosa se
rve per p
rogrammare
Il kit di svilu
ppo JD
K Standard Editio
n (J2
SE) è
: �distrib
uito
gratuitamente dalla Sun Micro
system
�comprende alcu
ni to
ols, co
me il co
mpilatore, il ru
ntim
e
e il
debugger,
numerosi
programmi di esempio e
l'insie
me completo dei
sorgenti
della ricch
issima
libreria
che acco
mpagna il lin
guaggio
�Il p
acch
etto
di in
stallazio
ne è
scarica
bile alla pagina
http
://java.su
n.co
m/ja
vase/downloads/in
dex.jsp
�Term
inato il d
ownload basta
eseguire
ed in
stallare tu
tti i tools
proposti,
compresa la JR
E (Ja
va Runtim
e
Enviro
ment), n
ecessa
ria all'e
secuzio
ne di file
'jar' e
delle applets d
i Internet (co
ntiene l’in
terprete e non il
compilatore).
21
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Configurare il S
istema
�Il co
mpilatore della Sun è
�un programma se
nza interfa
ccia grafica
�deve esse
re invocato dalla co
nsole di co
mandi M
S-Dos
�Necessa
rio se
ttare un'apposita
varia
bile di ambiente del co
mputer,
detta
PATH. Il se
ttaggio della path perm
ette
anche di e
seguire
icomandi ja
va, ja
r, javac d
a qualsia
si dire
ctory d
el siste
ma
�Per siste
ma operativo
Windows XP biso
gna modifica
re il p
ath nelle
"VARIABILI D
I AMBIENTE" d
el co
mputer, a
ggiungendo al P
ATH già
esiste
nte la rig
a C:\<
perco
rso_di_insta
llazio
ne>\BIN
�Sempre nella ste
ssa fin
estra
delle Varia
bili d
i Ambiente è
opportu
no
creare una va
riabile di a
mbiente di n
ome CLASSPATH, il cu
i valore
indich
i al co
mpilatore ja
va dove ce
rcare le
classi d
i eventuali p
acka
ge
importa
ti all’in
terno di un file
java. Il va
lore co
nsig
liabile è
.; C:\<
perco
rso_di_insta
llazio
ne>\lib
22
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Un programmatore Ja
va deve:
�costru
ire oggetti iso
lati e
robusti
�non influenzati d
a altri o
ggetti p
resenti n
el programma
�deriva
re i nuovi
oggetti
dai vecch
i in modo veloce e
additivo
�documentare le caratte
ristiche di un oggetto
, ossia
corre
datare il co
dice
con una documentazio
ne fa
cilmente
comprensib
ile anche da perso
ne dive
rse risp
etto
agli
autori.
�Sun m
ette
a disp
osizio
ne delle lib
rerie
dette
Packa
ge, a
cui
l'utente può acce
dere e che offro
no varie
funzio
nalità
. L’in
sieme dei
packa
ge Java è
chiamato Java
API
(Applic
atio
n
Pro
gra
mm
ing
Inte
rface):
non si
può
programmare in Ja
va se
nza co
nsultare le API.
Java API
23
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java API
�Java in
clude cla
ssi per co
struire
interfa
cce grafich
e (G
UI), p
ergestire
I/O
, networkin
g, w
eb applica
tions, e
ccetera, d
enominate nel co
mplesso
Java Applic
atio
n Pro
gra
mm
ing In
terfa
ce (API),
codice
già
scritto
organizza
to in packa
ges re
lativi a
d argomenti co
muni
�Un package è
una collezio
ne di cla
ssi e interfa
cce (co
rrelate) che
fornisce
una gestio
ne dei n
omi (n
amespace m
anagement) e
dell’a
ccesso
(acce
ss protectio
n)
�per u
sare una cla
sse o un’interfa
ccia in un packa
ge:
�usare il n
ome qualifica
to co
mpleto java.aw
t.BorderLayo
ut
�importa
re la cla
sse o l’in
terfa
ccia im
port java.aw
t.BorderLayo
ut
�importa
re tu
tto il p
acka
ge im
port java.aw
t.*�
inte
rfacce: una collezio
ne di definizio
ni di metodi e costa
nti
che
potra
nno esse
re implementate da cla
ssi (dire
mo che queste
cla
ssiimplementano l’in
terfa
ccia)
24
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Documentazio
ne
�La documentazio
ne ufficia
le è
racch
iusa in
un file
compresso
sca
ricabile dal sito
http
://java.su
n.co
m/docs
�Term
inato il d
ownload, si d
ecomprim
e il file
in una ca
rtella
del computer e per consultare le Api basta
eseguire
file
"in
dex.h
tm" p
resente nella ca
rtella di estra
zione.
�Esiste
anche il tu
toria
l, ossia
un perco
rso di a
pprendimento
guidato dalle prim
e nozio
ni a
lle più
avanzate, a
nche questo
sca
ricabile dal sito
ufficia
le�
Su In
ternet e
sistono numerosi siti ricch
i di e
sempi e
guide.
Qualch
e esempio:
�http
://examples.o
reilly.co
m/je
nut/
�http
://www.exampledepot.co
m/
�http
://www.ja
va2s.co
m/Code/Ja
va/JD
K-6/CatalogJDK-6.htm
�
http
://www.idevelopment.in
fo/data/Programming/ja
va/PROGRAMMIN
G_Java_Programming.sh
tml
25
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Ambiente di svilu
ppo
�un semplice
text
editor (esempio Notepad) è
sufficie
nte,
purch
èsi
salvi
con este
nsio
ne “.ja
va”
(atte
nzio
ne al
masch
eramento delle este
nsio
ni operato dal SO)
�Per e
sempio, vo
lendo re
alizza
re un programma ch
e visu
alizzi
su sch
erm
o la fra
se “Ciao a tutti”,
biso
gna cre
are il file
denominato ad esempio “C
iao.java”.
�Per co
mpilarlo
ènecessa
rio aprire
la fin
estra
del p
rompt d
i MS-DOS ed invocare il co
mando “ja
vac C
iao.java”
�se non vi so
no erro
ri il compilatore cre
a il file
“Ciao.cla
ss”nella ste
ssa dire
ctory.
�Per e
seguire
il file, si in
voca il co
mando “ja
va Ciao”(nome
del file
senza este
nsio
ne)
�I co
mandi “ja
vac”
e “ja
va”sono rico
nosciu
ti dal D
OS so
lo se
si è
configurato co
rretta
mente il p
ath!
26
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Esisto
no m
olti stru
menti te
si a m
igliorare il JD
K, e
/o
a re
nderne piùsemplice
l’uso
�edito
r con “syn
tax h
ighlightlin
g”, a
d esempio Scite
http
://www.scin
tilla.org/SciT
E.htm
l�ambienti in
tegrati fre
eware o sh
areware ch
e, p
ur
sfrutta
ndo il JDK, ne consentono l’uso in modo
interattivo
e in ambiente grafico
�JCreator LE
, EditP
lus, F
orte
, JaSupremo, e
tc...�Eclip
se http
://www.eclip
se.org
�ambienti
integrati
commercia
li, dotati
di
compilatori p
ropri e
debugger
Ambiente di svilu
ppo
27
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Eclip
se è
un ID
E (a
mbiente di svilu
ppo integrato)
�progetto
open so
urce
legato alla cre
azio
ne e allo svilu
ppo di
una piatta
form
a di svilu
ppoideata da un co
nsorzio
di g
randi
socie
tàquali E
ricsson, H
P, IB
M, In
tel, M
ontaVista
Softw
are,
QNX, S
AP e Serena Softw
are
�Usato per la
produzio
ne di so
ftware di va
rio genere
�Fornisce
�Un completo IDE
per il
linguaggio Java
(JDT, "Ja
va
Development T
ools")
�un ambiente di svilu
ppo per il linguaggio C++
(CDT,
"C/C++ Development T
ools")
�plug-in
che perm
etto
no di gestire
XML, P
HP
�Plug-in
per progetta
re grafica
mente una GUIper un
applica
zione JA
VA (E
clipse VE, "V
isual Editor"),
Ambiente di svilu
ppo
28
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Internazio
nalizza
zione
�A diffe
renza di gran parte
dei linguaggi Java usa un codice
a 16bit
chiamato U
nicode
�il p
rimo co
dice
ASCII è
a 7 bit (IS
O 646)
�con il b
it 8, si h
anno altri 1
28 ca
ratte
ri, scelti in
base alla lin
gua a cu
i si vuole offrire
il supporto
, dando luogo agli sta
ndard IS
O 8859
�8859-1 (IS
O Latin
-1) è
usato per la maggior parte
delle lingue
europee
�8859-15 cirillico
, 8859-6 arabo, 8
859-7 greco, 8
859-8 ebraico
�utilizza
ndo 16 bit si p
osso
no ra
ppresentare in
siemi d
i caratte
rifonetici e
ideogrammi ch
e ra
ppresentano in
tere parole (in
disp
ensabile per cin
ese e
giapponese); si o
ttiene il co
dice
UNICODE a 16 bit; i p
rimi 1
28 ca
ratte
ri sono identici a
ll’ISO 646 e i p
rimi 256 so
no gli ste
ssi dell’IS
O 8859-1
�utilizza
ndo 32 bit, si o
ttiene lo
standard IS
O 10646, ch
e ha l’o
biettivo
di
racco
gliere tu
tti i simboli u
tilizzati d
a tu
tte le
lingue del m
ondo in
clusi
quelli m
atematici, va
lutari e
cc.�
C++ usa 8 bits ~
256 ca
ratte
ri diffe
renti
�Java usa 16 bit ~
65,535 ca
ratte
ri diffe
renti
29
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Caratte
ristiche di Ja
va
�Semplice
e fa
milia
re�Object-o
riented
�Robusto
e sicu
ro�Porta
bile
�Ad alte presta
zioni
�Interpretato
�Dinamico
�Supporta
i thread
�Supporto
per n
etworkin
g
30
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Semplice
e fa
milia
re
�Java è
sem
plic
eperch
éintuitivo
, utilizza
nomi e
stesi e
notazio
ni p
untate,
ad esempio System
.out.p
rintln
(“prova”)
�Java è
fam
iliare
perch
éla sin
tassi
èmolto sim
ile al C
e C++
31
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Object O
riented
�Java è
un lin
guaggio Object O
riented
�Ogni elemento risie
de all’in
terno di una cla
sse
�Il
metodo Main e tutti
gli
altri
metodi devono esse
re
definiti a
ll’interno di una cla
sse
�Supporto
per e
reditarie
tà, p
olim
orfism
o, m
essa
ge passin
g
�L’u
so di Ja
va co
me lin
guaggio di p
rogrammazio
ne non im
plica
che ch
e il p
rogramma sia
object-o
riented
�Le librerie
sta
ndard di Java non sempre sono dei buoni
esempi di programmazio
ne OO. E
sempi:
�l’attrib
uto length negli a
rray
�L’a
ttributo out in
Syste
m
�Compromesso
fra co
nsid
erazio
ni d
i pratica
e efficie
nza e re
ale
buon progetto
OO
32
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Un lin
guaggio si d
ice ro
busto
quando anche in
situazio
ni d
i potenzia
le erro
re (erro
r-pron
esitu
ations)
si rie
sce a
mantenere l’o
peratività
. �
Java è
robusto
in quanto vengono effe
ttuati
sia dei
contro
lli durante la compilazio
ne (co
mpile-tim
e checkin
g)
che durante l’esecuzio
ne ( ru
n-tim
e checkin
g),
ad esempio
effe
ttua l’a
rray b
ounds ch
eckin
g ed il n
ull p
ointer ch
eckin
g;
�Una delle caratte
ristiche che rendono Java robusto
e che
merita
atte
nzio
ne è
la g
estio
ne d
elle
ecce
zioni, o
vvero
delle possib
ili situ
azio
ni di erro
re. Gestirle
consente di
evita
re il
crashdel programma, e di perso
nalizza
re il
comporta
mento del
medesim
o a fro
nte di
situazio
ni
inaspetta
te (a
ppunto, eccezio
ni).
Robuste
zza e sicu
rezza
33
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Un linguaggio si
dice
sicu
ro quando fo
rnisce
mecca
nism
i per
evita
re l’esecuzio
ne di codice
potenzia
lmente non corre
tto o
intenzio
nalmente perico
loso (m
alicio
us). N
el ca
so di Ja
va:
�la gestio
ne della m
emoria
non è
delegata al co
mpilatore (co
me
in C o C++), m
a rin
viata al ru
n-tim
e;
�i puntatori n
on esisto
no (a
ccesso
dire
tto im
possib
ile);
�tutto
deve esse
re esplicito
(ad esempio il
castin
g),
niente
avvie
ne “n
ell’o
mbra”;
�tutte
le cla
ssi locali so
no poste
in un name sp
ace distin
to da
quello per le
classi sca
ricate dalla re
te; le
classi im
porta
te non
posso
no “sp
iare”quelle locali;
�Java non si fid
a del co
dice
proveniente dalla re
te, p
er il q
uale
viene eseguito
la byte
code ve
rification
Robuste
zza e sicu
rezza
34
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�La b
yte
code v
erifica
tionverifica
che :
�i puntatori sia
no usati le
galmente;
�sia
no risp
etta
te le
regole di a
ccesso
ai m
embri d
i una
classe
;
�gli o
ggetti n
on sia
no usati in
maniera m
alizio
sa;
�non ci sia
no sta
ck overflo
w o underflo
w;
�i tip
i di tu
tti i parametri d
elle istru
zioni b
ytecode sia
no
conosciu
ti e co
rretti;
�gli a
ccessi a
i campi degli o
ggetti sia
no legali
Robuste
zza e sicu
rezza
35
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Robuste
zza e sicu
rezza
�Inizia
lmente Ja
va distin
gueva il co
dice
locale (tru
sted) e
quello re
moto (u
ntru
sted), m
odello sicu
ro m
a lim
itativo
�succe
ssivamente, si
èconcesso
al codice
importa
to di
poter
esse
re tru
sted, ciò
purch
èesso
fosse
firm
ato
(signed), m
odello m
igliore m
a ancora tro
ppo binario
�un modello fin
e grain
edèsta
to poi in
trodotto
; in esso
, per o
gni co
dice
remoto si p
uò sp
ecifica
re una politica
di
comporta
mento in un apposito
file
36
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Java fo
rnisce
un insie
me co
mpleto di fu
nzio
nalità
per la
security:
�cry
pto
gra
phy management(JC
E),
simmetrico
(DES) e non
(RSA);
�key m
anagement (ke
y database);
�dig
ital sig
n (firm
a co
n ch
iave priva
ta, d
ecodifica
con ch
iave
pubblica
(esporta
ta
come
certifica
to
-ce
rtificate
management);
�m
essa
ge d
igest (h
ash
ing), p
er il co
ntro
llo dell’in
tegrità
;�
auth
entica
tione a
ccess co
ntro
l(JA
AS);
�secure network co
mmunica
tion co
n S
SL(JS
SE);
�Java co
nsente di g
overnare tu
tti gli a
ccessi a
lle riso
rse lo
calied
alla rete che il codice
tenta di effe
ttuare; questo
è
possib
ile
defin
endo un opportu
no se
curity
manager(ad esempio, esso
vie
ne automatica
mente cre
ato per il co
dice
scarica
to dalla re
te,
ritenendo quest’u
ltimo untru
sted).
Robuste
zza e sicu
rezza
37
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Porta
bilità
, presta
zioni, in
terpretato
�La porta
bilità
ègarantita
con la
compilazio
ne del
sorgente in byte
code,
interpretato dovunque
tramite la JV
M
�quasi
tutti
i contro
lli sono fatti
in compilazio
ne,
così
la JVM a run tim
e può offrire
presta
zioni
adeguate nonosta
nte l’a
mbiente interpretato
38
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�le cla
ssi sono ca
ricate in
maniera tra
sparente dal cla
ss loader
quando sono rich
ieste
, e posso
no anche esse
re sca
ricate
dalla re
te.
�Ogni vo
lta ch
e ad una ce
rta cla
sse ve
ngono aggiunti m
etodi
o va
riabili, tu
tte le
classi ch
e ad essa
fanno rife
rimento (a
d
esempio, le sue sotto
classi),
richiedono una rico
mpilazio
ne
(fragile
superc
lass p
roble
m).
�Per evita
re questo
problema, il
compilatore Java lascia
i
riferim
enti
sotto
form
a
simbolica
sin
o
al
momento
dell’e
secuzio
ne, quando avve
rràla sostitu
zione (nel codice
che ne fa uso) della form
a sim
bolica
con quella reale. Il
codice
che ne fa
uso non rich
iede quindi la
ricompilazio
ne.
Dinamicità
39
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Threading
�Java gestisce
il multith
reading
�un th
read è
un processo
“leggero”
�Java tra
tta i th
reads co
me Abstra
ct Data Type
40
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java offre
un m
ecca
nism
o per l’a
mbiente distrib
uito, o
ssia il
Rem
ote
meth
od in
voca
tion (R
MI), tra
mite cu
i si posso
no
creare oggetti
i cui metodi posso
no esse
re invocati d
a altre
JVM, a
nche situ
ate su
macch
ine re
mote (a
rchitettu
ra clie
nt-
serv
er , g
estio
ne sim
ile all’R
PC)
Il supporto
al n
etworkin
g vie
ne fo
rnito tra
mite un in
sieme di
librerie
che im
plementano i co
ncetti d
i sock
et, U
RL, stre
am
co
nnectio
n, e soprattu
tto Java offre
il
supporto
per gli
apple
te se
rvle
t
Networkin
g
41
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Un programma Ja
va è
un in
sieme di cla
ssi e oggetti. Le
classi so
no
componenti sta
tici, che esisto
no già
all’in
izio del p
rogramma. G
li oggetti
sono invece componenti dinamici,
che vengono cre
ati al
momento del biso
gno, d
urante l'e
secuzio
ne.
�Il p
iùsemplice
Programma Ja
va è
costitu
ito da una sin
gola cla
sse
operante co
me sin
golo co
mponente so
ftware. E
ssa avrà
quindi la
sola parte
sta
tica. Come minimo, tale parte
dovrà
definire
una
singola fu
nzio
ne (sta
tica): il m
ain
�Il m
ain in
Java è
una fu
nzio
ne pubblica
con la
seguente in
terfa
ccia
obbligatoria
:public static vo
id m
ain(Strin
g arg
s[]){…}
�Deve esse
re dich
iarato public, sta
tic, void
�Non può avere va
lore di rito
rno (è
void)
�Deve sempre prevedere gli argomenti
dalla linea di comando,
anche se
non ve
ngono usati, so
tto fo
rma di arra
y di Strin
g
Java Programming
42
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Prim
a diffe
renza risp
etto
al C
:�il main deve sempre dich
iarare l’arra
y di strin
ghe args,
anche se
non lo
usa (o
vviamente può anche non ch
iamarlo
args...)
�il main non è
più
una funzio
ne a sé
stante: è
definito
dentro
una cla
sse pubblica
, ed è
a su
a vo
lta pubblico
; In
effe
tti, in Ja
va non esiste
nulla ch
e non sia
definito dentro
a una qualch
e cla
sse.
�Convenzio
ni:
�il nome di una cla
sse ha sempre l’in
iziale maiusco
la (es.
Esempio)
�se il n
ome è
composto
di p
iùparole co
ncatenate, o
gnuna
ha l’in
iziale m
aiusco
la (e
s. Disp
ositivo
CheConta)
�non si u
sano tra
ttini di so
ttolineatura
�i n
omi d
ei sin
goli ca
mpi (d
ati e
funzio
ni) in
iziano in
vece per
minusco
la
Java Programming
43
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Un programma costitu
ito da una sin
gola cla
sse EsempioBase che
definisce
il main:
public class E
sempioB
ase {public static void
main
(Strin
g arg
s[]) {int x =
3, y =
4;
int z =
x + y;
}}�Una cla
sse pubblica
deve risie
dere in
un file
.java ch
e ha lo
stesso
nome (ca
se se
nsitive
)�All’in
terno di un file
èammessa
al piùuna cla
sse public
Java Programming
44
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
Java Programming
Per cre
are ed eseguire
un programma Ja
va:
�Creare un file
testo
con este
nsio
ne .java
in cui inserire
il codice
sorgente. Per esempio il codice
sorgente di un programma può
risiedere nel file
Esem
pio.java
�Scrive
re il co
dice
sorgente.
�Compilare il co
dice
sorgente in byte
code.
$# javac E
sempio.java
�Se si
verifica
no “fa
tal erro
rs”durante la compilazio
ne il processo
term
ina e ve
ngono generati m
essa
ggi d’erro
re�
Se si ve
rificano “n
on fa
tal erro
rs”durante la co
mpilazio
ne il p
rocesso
contin
ua e ve
ngono generati m
essa
ggi di w
arnings.
�Viene generato il file
Esem
pio.class
�A questo
punto, per
eseguire
il
programma, occo
rre invocare
l’interprete (JV
M) tra
mite il co
mando ja
va, se
guito dal n
ome del file
.cla
ss in byte
code se
nza l’e
stensio
ne .cla
ss$# java E
sempio
45
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
// Questo
programma sta
mpa Ciao su
llo sta
ndard output.
public class E
sempio {
public static vo
id m
ain( S
tring[] a ){
System
.out.p
rintln
( “Ciao”
);}
}�Questo
programma è
una “Ja
va applica
tion”piutto
sto ch
e un applet,
o una se
rvlet, ch
e so
no altri tip
i di programmi.
�Una “Ja
va applica
tion”
può esse
re co
nsid
erato il tip
o di p
rogramma
più
generale; una applica
zione deve avere un metodo “public”
e
“static”
chiamato “m
ain”, ch
e acce
tta un arra
y di strin
ghe:
�La sin
tassi S
tring[] a
indica
che a è
un arra
y. In questo
caso si tra
tta
di un arra
y di Strin
gs, ch
e so
no gli a
rgomenti p
assa
ti al programma
�Nell’istru
zione System
.out.p
rintln
( “Ciao
!”) S
ystem è
una cla
sse Ja
va
standard che rappresenta il
sistema su cui il
programma vie
ne
eseguito
. Out è
un attrib
uto field della cla
sse Syste
m di tip
o
Prin
tStre
am e prin
tln è
un m
etodo di Prin
tStre
am.
Java Programming
46
A. L
ongheu –
Lin
guaggi M
-Z –
Ing. In
f. 2009 –
2010
�Stile
a “invio
di m
essa
ggi”:
�non più
chiamate di
funzio
ni
con parametri
che
rappresentano i d
ati su
cui o
perare (m
a ch
e sia
no quelli
lo sa
solo l'u
tente…)…
�...m
a co
mponenti su
cui ve
ngono in
vocate operazio
ni a
essi p
ertin
enti
�Notazio
ne puntata:
System
.out.p
rintln
("Hello
!");
�Il m
essa
ggio prin
tln(“H
ello!”) è
invia
to all’o
ggetto
out ch
e è
un m
embro (sta
tico) d
ella cla
sse predefinita Syste
m
Java Programming