Top Banner
1 - lezione 03 - Panoramica su Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu [email protected] 2 A. Longheu – Linguaggi M-Z – Ing. Inf. 2009 – 2010 Code-Name Green Nome del progetto Sun con l’obiettivo di fornire “intelligent consumer-electronic devices”. Il risultato fu Oak Un linguaggio basato su C++ Creato da James Gosling Il nome del nuovo linguaggio fu cambiato in Java E’ fortemente ispirato al C++ ma riprogettato senza il requisito della piena compatibilità con il C (a cui però assomiglia)
23

Code-Name Green [email protected] http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

Sep 08, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

[email protected]

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)

Page 2: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 3: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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à

Page 4: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 5: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 6: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 7: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 8: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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.

Page 9: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

mail

beans…

�Una

classe

bean

tipica

mente

implementa

l’interfa

ccia sta

ndard Serializable.

Page 10: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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).

Page 11: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 12: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 13: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 14: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 15: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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++

Page 16: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 17: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 18: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 19: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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à

Page 20: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 21: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 22: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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

Page 23: Code-Name Green alessandro.longheu@diit.unict.it http ...utenti.dieei.unict.it/users/alongheu/linguaggi/aa0910/lezione03_introjava.pdf · A. Longheu –Linguaggi M-Z –Ing. Inf.

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