Code-Name Green [email protected] http...
Transcript of Code-Name Green [email protected] http...
1
Linguaggi
Corso
di Lau
rea Ingegneria In
form
atica (M-Z)
A.A. 2
006-2
007
Alessa
ndro Lo
ngheu
http
://www.diit.u
nict.it/u
sers/alongheu
alessandro.lon
nict.it
Intro
duzione a Ja
va
2
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
mpatibilità
con il C
(a cu
i però
asso
miglia)
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
3
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
4
�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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
5
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.5 (5
.0)
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
6
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 incompatibili co
n il p
assa
to
�1.5, u
lterio
re riscrittu
ra sig
nifica
tiva, co
n
molte fu
nzio
nalità
nuove ed incompatibili
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
7
Java 2 v. 1
.5 = Ja
va 2 5.0
�èsta
to alla fin
e ch
iamato Ja
va 2 v. 5
.0 per
sotto
lineare le novità
rispetto
alla versio
ne
precedente
Il problema di Ja
va 2 5.0
�il
codice
compilato è
incompatib
ile con le
vecch
ie m
acch
ine virtu
ali
�le funzio
nalità
vanno utilizza
te in modo
contro
llato
Versio
ni di Ja
va
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
8
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 platfo
rm è
solamente so
ftware e
viene eseguita al
di
sopra di
altre
piatta
form
e b
asate su
ll’hardware
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
9
�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 API),
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 A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
10
La Piatta
form
a Ja
va
�Il
codice
Java vie
ne compilato
in un linguaggio interm
edio
chiamato bytecode
�Il b
ytecode è
interpretato 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 variare 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
) compiler,
qualora occo
rrano presta
zioni
maggiori.
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
11
La Piatta
form
a Ja
va A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
12
Esisto
no edizionidiffe
renti d
ella piatta
form
a Ja
va�Standard 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
�Enterprise Editio
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
�Micro Editio
n (J2
ME)
�per lo
sviluppo di applica
zioni m
obili
�librerie rid
otte
e piùpicco
le�Im
plementa un su
bset d
elle fu
nzio
nalita
di Ja
va
La Piatta
form
a Ja
va A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
13
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 ch
e i live
lli più
complessi in
cludono i p
iùsemplici
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
14
Java2 –
Platfo
rm Editio
n 5.0
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
15
Tipi di Programmi
Java perm
ette
la re
alizza
zone di 4 tip
i di programmi:
�Applica
tion
�Applet
�Servle
t
�Beans
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
16
Java Applica
tion
�Standalone program nel se
nso 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[ ])
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
17
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.
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
18
Java Servle
t
�Una servlet
èun programma che vie
ne eseguito su una
macch
ina serve
r, tipica
mente 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 cla
sse servlet
implementa l’in
terfa
ccia
standard
Servleto è
deriva
ta da una cla
sse ch
e im
plementa ta
le
interfa
ccia.
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
19
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
generalemte 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.
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
20
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
21
Cosa se
rve per p
rogrammare
�J2SE: In
stallare il "Ja
va Development K
it" (JDK)
�Java 2 Platfo
rm Standard Editio
n 1
.4.2 o Ja
va 2 Platfo
rm
Standard Editio
n 1.5 detta
JAVA 5, èl’ultim
a release
ufficia
le della piatta
form
a ja
va.
�Java5 è
quella che si
definisce
come major
poich
èapporta
dive
rse novità
nel m
odo di p
rogrammare in
java
e di gestire
la JV
M.
�Miglioramenti in
term
ini di
�Scalabilità
�Perfo
rmance
�Monitorin
g
�Gestib
ilità
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
22
Cosa se
rve per p
rogrammare
Il kit di svilu
ppo jd
k è:
�distrib
uito gratuitamente dalla Sun Micro
system
�comprende alcu
ni tools,
come il compilatore, il runtim
e e il
debugger, n
umerosi p
rogrammi d
i esempio e l'in
sieme co
mpleto
dei
sorgenti
della ricch
issima libreria che acco
mpagna il
linguaggio
�Il p
acch
etto
di in
stallazio
ne denominato 'Jd
k-1.5'èsca
ricabile
alla pagina
http
://java.su
n.co
m/ja
vase/downloads/in
dex.jsp
�Term
inato il download (il
file zip
pato occu
pa 49,7 Mb) basta
eseguire
ed in
stallare tu
tti i tools p
roposti, co
mpresa la JR
E 1.5
(Java Runtim
e Enviro
ment), n
ecessa
ria all'e
secuzio
ne di file
'jar' e
delle applets d
i Internet.
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
23
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
variabile di ambiente del co
mputer,
detta
PATH. Il se
ttaggio della path perm
ette
anche di e
seguire i
comandi ja
va, ja
r, javac d
a qualsia
si directo
ry del 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_sce
lto>\JDK1.5.0_01\BIN
�Sempre nella ste
ssa fin
estra
delle Variabili 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_sce
lto>\JDK1.5.0_01\lib
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
24
�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
(Application Programming Interfa
ce):
non si
può
programmare in Ja
va se
nza co
nsultare le API.
Java API
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
25
Java API
�Java in
clude cla
ssi per co
struire in
terfa
cce grafich
e (G
UI), p
ergestire
I/O
, networkin
g, w
eb applica
tions, e
ccetera, d
enominate nel co
mplesso
Java Application Programming Interfa
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.*�interfa
cce: una collezio
ne di definizio
ni di metodi e costa
nti
che
potra
nno esse
re implementate da cla
ssi (diremo che queste
cla
ssiimplementano l’in
terfa
ccia)
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
26
Documentazio
ne
�La documentazio
ne completa di
tutorial
èracch
iusa nel file
zip
pato "jd
k-1_5_0-doc"
(di
circa 45 M
b) e
si può lib
eramente sca
ricare dal
sito http
://java.su
n.co
m/docs
�Term
inato il d
ownload, si d
ecomprim
e il file
in
una ca
rtella ( ch
e occu
perà
circa 245 M
b ) d
el
computer;
per consultare diretta
mente le Api
basta
eseguire file
"in
dex.h
tm" presente nella
carte
lla "...\d
ocs\a
pi\".
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
27
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 directo
ry. �
Per e
seguire il file
, si invoca 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! A
. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
28
Esisto
no m
olti stru
menti te
si a m
igliorare il JD
K, e
/o
a re
nderne piùsemplice
l’uso
�editor co
n “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
, EditPlus, 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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
29
�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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
30
Internazio
nalizza
zione
�A diffe
renza di gran parte
dei linguaggi Java usa un codice
a 16bit
chiamato Unicode
�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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
31
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
32
Semplice
e fa
milia
re
�Java è
semplice
perch
éintuitivo
, utilizza
nomi e
stesi e
notazio
ni p
untate,
ad esempio System
.out.p
rintln
(“prova”)
�Java èfamilia
reperch
éla sin
tassi
èmolto sim
ile al C
e C++
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
33
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
34
�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 riesce
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 gestio
ne delle 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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
35
�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
diretto
impossib
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
36
�La bytecode verifica
tionverifica
che :
�i puntatori sia
no usati le
galmente;
�sia
no risp
etta
te le re
gole di acce
sso ai m
embri d
i una cla
sse;
�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 co
nosciu
ti e
corre
tti;
�gli a
ccessi a
i campi degli o
ggetti sia
no legali
Robuste
zza e sicu
rezza
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
37
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
38
�Java fo
rnisce
un insie
me co
mpleto di fu
nzio
nalità
per la
security:
�cry
ptography management(JC
E), sim
metrico
(DES) e non
(RSA);
�key m
anagement (ke
y database);
�digital sig
n (firm
a co
n ch
iave priva
ta, d
ecodifica
con ch
iave
pubblica
(esporta
ta
come
certifica
to
-certifica
te
management);
�messa
ge digest (h
ashing), p
er il co
ntro
llo dell’in
tegrità
;�authentica
tione acce
ss contro
l(JA
AS);
�secure network co
mmunica
tion co
n SSL(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
definendo 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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
39
Porta
bilità
, presta
zioni, in
terpretato
�La
porta
bilità
ègarantita
con
la
compilazio
ne del
sorgente in byte
code,
interpretato dovunque tra
mite 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’ambiente interpretato
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
40
�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 superclass problem).
�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à
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
41
Threading
�Java gestisce
il multith
reading
�un th
read è
un processo
“leggero”
�Java tra
tta i th
reads co
me Abstra
ct Data Type
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
42
Java offre
un m
ecca
nism
o per l’a
mbiente distrib
uito, o
ssia il
Remote m
ethod in
vocation (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-
server , 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 ch
e im
plementano i co
ncetti d
i socket, U
RL, stre
am
connectio
n, e soprattu
tto Java offre
il
supporto
per gli
applete se
rvlet
Networkin
g
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
43
�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 se
guente 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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
44
�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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
45
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
46
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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
47
// 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 e 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 tipo
Prin
tStre
am e prin
tln è
un m
etodo di Prin
tStre
am.
Java Programming
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007
48
�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
A. Longheu –Linguaggi M
-Z –Ing. In
f. 2006-2007