2 lucidi per pagina in formato pdf

21/04/2004
Programmazione Orientata
agli Oggetti in Linguaggio Java
Introduzione
Piattaforme di Riferimento
versione 1.2
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
G. Mecca – Università della Basilicata – [email protected]
Piattaforme >> Sommario
Sommario
m Linguaggi
di Riferimento
m La Piattaforma Java
m La Piattaforma .NET
m Caratteristiche del Linguaggio Java
m Caratteristiche del Linguaggio C#
m Utilizzo degli Strumenti
G. Mecca - Programmazione Orientata agli Oggetti
2
1
21/04/2004
Piattaforme >> Linguaggi di Riferimento
Linguaggi di Riferimento
m In
questo corso
ðtecniche e metodi della programmazione a
oggetti
m Linguaggio
principale
ðJava
m Linguaggio
secondario
ðC# della piattaforma Microsof.NET
G. Mecca - Programmazione Orientata agli Oggetti
3
Piattaforme >> Linguaggi di Riferimento
Linguaggi di Riferimento
m Domanda:
Perché questi due linguaggi ?
ðin effetti ne esistono molti altri
ðSmalltalk (tradizionale)
ðDelphi
ðPython (recente)
m Risposta
ðrappresentano le piattaforme di riferimento
attuali per lo sviluppo software
ðuna serie di caratteristiche distintive
G. Mecca - Programmazione Orientata agli Oggetti
4
2
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Complessa
piattaforma software
ðcentrata attorno al linguaggio Java
ðideata dalla Sun (http://www.java.sun.com) e
tuttora di “proprietà” della Sun
ðsviluppata attraverso lo Java Community
Process (JCP, http://www.jcp.org)
m Essenzialmente
ðun complesso di specifiche e di componenti
software
G. Mecca - Programmazione Orientata agli Oggetti
5
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Un
po’ di storia
ðnasce da un progetto della Sun (progetto
Green) con scopi totalmente diversi
ðinizialmente si chiamava Oak
ðJava 1.0 – rilasciato nel 1995 dalla Sun
ðJava 1.1 – rilasciato nel 1997
m Java
2
ðdalla v. 1.2 del 1998, riscrittura significativa
ðattualmente 1.4, verso la 1.5
G. Mecca - Programmazione Orientata agli Oggetti
6
3
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Attualmente
ðla piattaforma è organizzata in tre livelli
m J2SE
– Java 2 Standard Edition
ðper lo sviluppo di applicazioni desktop
m J2EE
– Java 2 Enterprise Edition
ðper lo sviluppo di applicazioni lato server
m J2ME
– Java 2 Micro Edition
ðper lo sviluppo di applicazioni mobili
G. Mecca - Programmazione Orientata agli Oggetti
7
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Ognuno
dei livelli si compone di
ðuna serie di specifiche (documenti)
ðuna serie di strumenti (es: compilatore,
debugger ecc.)
ðuna serie di librerie o API (Application
Program Interfaces)
ði livelli più complessi includono i più semplici
G. Mecca - Programmazione Orientata agli Oggetti
8
4
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
fonte: www.java.sun.com
9
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Principali
caratteristiche della piattaforma
ðI. scalabile e pensata per applicazioni
distribuite
ðII. fornisce un’ampia libreria di classi
ðIII. indipendente dalla piattaforma hardware e
realmente “portabile”
G. Mecca - Programmazione Orientata agli Oggetti
10
5
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m I.
Scalabilità e Applicazioni Distribuite
ðorientata alle applicazioni di rete
ðcon attenzione agli aspetti di sicurezza e
prestazioni
ðconsente di sviluppare applicazioni di vario
genere
ðsia di piccole e medie dimensioni
ðsia di grandi dimensioni e altissimo carico
11
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Le
Differenza con altri
linguaggi/piattaforme
es: C++
varie classi di applicazioni
ðapplicazioni “desktop” tradizionali di qualsiasi
genere
ðapplicazioni client-server a due livelli
ðapplicazioni Web a tre livelli, anche con
componenti distribuiti e ad alto traffico
ðapplicazioni per dispositivi mobili
ðapplicazioni innovative (es: Web Services)
G. Mecca - Programmazione Orientata agli Oggetti
12
6
21/04/2004
Piattaforme >> La Piattaforma Java
fonte: www.java.sun.com
La Piattaforma Java
client
es:
browser
server accessibile in rete
basi
di
dati
13
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m
Differenza con altri
linguaggi/piattaforme
es: C++
II. Ampia Libreria di Classi
ðlibrerie per qualsiasi esigenza di calcolo
ðAPI (“Application Program Interface”): collezione di
librerie di classi disponibili per l’uso
ðattualmente più di 3000 classi, 32000 metodi e circa
130 package
ðcollezioni (liste, pile ...)
ðprogrammazione grafica (finestre, bottoni, menu...)
ðcomunicazione di rete
ðconnessione ad un DBMS ecc.
G. Mecca - Programmazione Orientata agli Oggetti
14
7
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
fonte: www.java.sun.com
15
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
Versione di J2SE
Numero di Classi delle Numero di Metodi delle
API Standard
API Standard
1.0
212
2125
1.1
504
5478
1.2
1781
20935
1.3
2130
23901
1.4
3020
32138
fonte: Horstmann, Cornell – “Core Java 2”, Volume I
G. Mecca - Programmazione Orientata agli Oggetti
16
8
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m III.
Indipendenza dalla piattaforma
ðcaratteristica essenziale di Java
m Le
origini
ðle “applet” Java
ðidea: scaricare codice dalla rete ed eseguirlo
attraverso il browser
ðrequisito essenziale: il codice doveva essere
eseguibile indipendentemente dall’hardware
e dal sistema operativo
G. Mecca - Programmazione Orientata agli Oggetti
17
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Attenzione
ðin C++ (e in tutti i linguaggi tradizionali):
ðuna volta compilato, il codice oggetto e poi
l’eseguibile contengono codice macchina
specifico del (a) processore (b) sistema
operativo utilizzato
ðper eseguire il codice su altre piattaforme
hardware bisogna ricompilarlo (sperando che
tutte le librerie usate e le funzionalità siano
compatibili)
G. Mecca - Programmazione Orientata agli Oggetti
18
9
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m
Nel caso di Java
ðil compilatore produce codice oggetto in un
linguaggio intermedio per una “macchina virtuale”
m
Java Virtual Machine
ðun processore virtuale, registri virtuali della memoria
ecc.
ðil tutto simulato attraverso un’applicazione (java.exe)
m
Bytecode
ðlinguaggio intermedio
ðistruzioni eseguibili dalla macchina virtuale
19
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
compilatore
javac
codice sorgente
Prova.java
bytecode
delle librerie
01001001
11001011
00110011
01001001
11001011
00110011
JVM
java
bytecode
Prova.class
110 111
010 001
101 101
ATTENZIONE
al processo di
compilazione ed
esecuzione
macchina fisica
G. Mecca - Programmazione Orientata agli Oggetti
codice eseguibile
20
10
21/04/2004
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m Esecuzione
da parte della JVM
ðin linea di principio la macchina virtuale
potrebbe eseguire lo bytecode come se fosse
un interprete (es: Basic)
m Tipicamente
ðper ragioni di prestazioni il bytecode viene
compilato al volo
ðJIT Compiler (Just in Time Compiler)
21
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma Java
La Piattaforma Java
m In
Differenza con altri
linguaggi/piattaforme
es: C++
questo modo
ðil codice può essere compilato una volta ed
eseguito da molte macchine diverse
ðbasta che ciascuna delle macchine disponga
di una implementazione della JVM e delle
librerie necessarie
m JRE
– Java Runtime Environment
ðJVM e API di J2SE
ð“compile once, run anywhere”
G. Mecca - Programmazione Orientata agli Oggetti
22
11
21/04/2004
Piattaforme >> La Piattaforma Java
Introduzione
fonte: www.java.sun.com
G. Mecca - Programmazione Orientata agli Oggetti
23
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m Piattaforma
di riferimento della Microsoft
ðdal 2000
ðper molti versi, una risposta alla larghissima
diffusione di Java
m Principali
caratteristiche
ðI. scalabile e pensata per applicazioni
distribuite
ðII. fornisce un’ampia libreria di classi
ðIII. multilinguaggio
G. Mecca - Programmazione Orientata agli Oggetti
24
12
21/04/2004
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m I.
Scalabile e pensata per applicazioni
distribuite
ðesattamente come la piattaforma Java
ðdalle applicazioni di fascia alta ai palmari
ðmaggiore enfasi su standard recenti
ðXML e Web services
m II.
Fornisce un’ampia libreria di classi
ðesattamente come la piattaforma Java
25
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma .NET
fonte: Microsoft .NET
Academic Resource Kit
La Piattaforma .NET
Clients
Applications
Web Form
Protocols: HTTP,
HTML, XML,
SOAP, UDDI
client
Web Service
.NET Framework
server accessibile
in rete
Windows
altri sistemi; es:
basi di dati
Your Internal
Web Service
.NET Foundation
Web Services
G. Mecca - Programmazione Orientata agli Oggetti
Third-Party
Web Services
.NET Enterprise
Servers
26
13
21/04/2004
Piattaforme >> La Piattaforma .NET
fonte: Microsoft .NET
Academic Resource Kit
Introduzione
System.Web
Services
Description
Discovery
Protocols
UI
HtmlControls
Caching
Configuration
Security
SessionState
System.Windows.Forms
Form
Button
MessageBox
ListControl
WebControls
System.Drawing
Drawing2D
Imaging
System.Data
OLEDB
Design
SQL
SQLTypes
Collections
Configuration
Diagnostics
Globalization
IO
Net
Reflection
Resources
Printing
Text
System.Xml
XSLT
XPath
Serialization
System
Security
ServiceProcess
Text
Threading
Runtime
InteropServices
Remoting
Serialization
G. Mecca - Programmazione Orientata agli Oggetti
27
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m III.
Multilinguaggio
ðpensata per consentire l’interoperabilità di
codice scritto con linguaggi diversi
ðC#, Visual Basic.NET, C++.NET, J# ...
m Idea
(...)
ðarchitettura software basata su una
macchina virtuale
ðed un linguaggio intermedio
G. Mecca - Programmazione Orientata agli Oggetti
28
14
21/04/2004
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m Macchina
virtuale
ðCLR – Common Languare Runtime, dotata di
un compilatore JIT per Windows
m Linguaggio
Intermedio
ðMSIL – Microsoft Intermediate Language
ðlinguaggio in cui viene compilato il codice di
tutti i linguaggi della famiglia .NET
ðsotto forma di assembly (>>)
29
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> La Piattaforma .NET
fonte: Microsoft .NET
Academic Resource Kit
Introduzione
Source
code
MSIL
VB.NET
C#
C++
Compiler
Compiler
Compiler
Assembly
Assembly
Assembly
Common Language Runtime JIT Compiler
Native
code
Managed
Code
CLR Services
Managed
CLR
Code
Managed
Code
Unmanaged
Code
Operating System Services
G. Mecca - Programmazione Orientata agli Oggetti
30
15
21/04/2004
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m Attenzione
ðla compilazione, come nel caso di Java,
genera codice intermedio (IL)
ðnel caso di .NET, questo codice viene
definito assembly, e può avere varie
estensioni, tra cui .exe
ða differenza di Java, per eseguire l’assembly
non è necessario invocare esplicitamente la
macchina virtuale (il sistema operativo la
esegue automaticamente)
G. Mecca - Programmazione Orientata agli Oggetti
31
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m Per
eseguire codice .NET
ðuna macchina Windows deve avere installato
il .NET Framework
m .NET
Framework
ðCLR
ðAPI di .NET
ðanalogo di JRE
G. Mecca - Programmazione Orientata agli Oggetti
32
16
21/04/2004
Piattaforme >> La Piattaforma .NET
La Piattaforma .NET
m Di
conseguenza
ðalcune fortissime analogie con la piattaforma
Java
m Due
significative differenze
ðun linguaggio contro molti linguaggi (...)
ðindipendenza dalla piattaforma hardware
contro dipendenza (di fatto) da Windows
G. Mecca - Programmazione Orientata agli Oggetti
33
Piattaforme >> Caratteristiche del Linguaggio Java
Caratteristiche del Linguaggio Java
m Principali
caratteristiche del linguaggio
ðI. completamente orientato agli oggetti
ðII. sintassi basata sul C/C++
ðIII. semplice e robusto
ðIV. collegamento dinamico
ðV. caratteristiche avanzate (multi-thread,
riflessione, ...)
G. Mecca - Programmazione Orientata agli Oggetti
34
17
21/04/2004
Piattaforme >> Caratteristiche del Linguaggio Java
Caratteristiche del Linguaggio Java
m I.
Completamente orientato agli oggetti
ðnon è consentita programmazione ibrida
ðtutta la programmazione è basata su classi e
oggetti
m II.
Sintassi basata sul C/C++
ðsimilarità nei costrutti del linguaggio
ðes: espressioni, if, cicli ecc.
G. Mecca - Programmazione Orientata agli Oggetti
35
Piattaforme >> Caratteristiche del Linguaggio Java
Caratteristiche del Linguaggio Java
m III.
Semplice e robusto
ðdrastica semplificazione rispetto al C++
ðgestione automatica della memoria
(“garbage collection”)
ðfortemente tipato
ðgestione rafforzata delle eccezioni
ðereditarietà singola (>>)
G. Mecca - Programmazione Orientata agli Oggetti
36
18
21/04/2004
Piattaforme >> Caratteristiche del Linguaggio Java
Caratteristiche del Linguaggio Java
m IV.
Collegamento dinamico
ðle librerie non devono essere collegate
staticamente al codice
ðil collegamento avviene dinamicamente
(appena viene richiesto l’uso della libreria)
ðgrosso vantaggio: consente di collegare
versioni aggiornate delle librerie senza dover
ricollegare il codice
m V.
Altre caratteristiche avanzate
G. Mecca - Programmazione Orientata agli Oggetti
37
Piattaforme >> Caratteristiche dei Linguaggio C#
Caratteristiche del Linguaggio C#
m Linguaggi
.NET
ðuna famiglia di linguaggi
ðil principale è C# (completamente nuovo)
ðgli altri sono adattamenti di precedenti
linguaggi Microsoft (es: VB.NET),
significativamente cambiati per adattarli
all’architettura
ðin sostanza tutti i linguaggi sono basati sulle
stesse funzionalità
G. Mecca - Programmazione Orientata agli Oggetti
38
19
21/04/2004
Piattaforme >> Caratteristiche dei Linguaggio C#
Caratteristiche del Linguaggio C#
m Principali
caratteristiche di Java e C#
ðI. completamente orientato agli oggetti
ðII. sintassi basata sul C/C++
ðIII. semplice e robusto (ATTENZIONE)
ðIV. collegamento dinamico
ðV. caratteristiche avanzate (multi-thread,
riflessione, ...)
G. Mecca - Programmazione Orientata agli Oggetti
39
Piattaforme >> Caratteristiche dei Linguaggio C#
Caratteristiche del Linguaggio C#
m Attenzione:
semplice e robusto
ðC# eredita molte delle scelte fatte per Java
ðgestione automatica della memoria,
tipizzazione, ereditarietà singola, eccezioni...
m Ma
ðè meno restrittivo nell’imporre queste scelte
al programmatore
ðes: gestione della memoria, eccezioni
ðquesta è una delle principali differenze
G. Mecca - Programmazione Orientata agli Oggetti
40
20
21/04/2004
Piattaforme >> Utilizzo degli Strumenti
Utilizzo degli Strumenti
m Per
sviluppare in Java
ðè necessario installare il J2SE Software
Development Kit (J2SE SDK)
ðscaricabile liberamente da
http://www.java.sun.com con la relativa
documentazione (zip con file html)
ðattenzione alle dimensioni
ðj2sdk1.4.2.windows.exe >> circa 45 Mega
ðj2sdk1.4.2-doc.zip >> circa 34 Mega
G. Mecca - Programmazione Orientata agli Oggetti
41
Piattaforme >> Utilizzo degli Strumenti
Utilizzo degli Strumenti
m Post-Configurazione
ðcreare una nuova variabile di ambiente
JAVA_HOME e assegnargli il valore della
cartella in cui è installato l’SDK
ðPannello di Controllo >> Sistema >>
Avanzate >> Variabili di Ambiente
ðes: JAVA_HOME=c:\Programmi\j2sdk1.4.2
ðaggiornare la variabile PATH aggiungendo il
valore %JAVA_HOME%\bin
G. Mecca - Programmazione Orientata agli Oggetti
42
21
21/04/2004
Piattaforme >> Utilizzo degli Strumenti
Utilizzo degli Strumenti
m Gli
strumenti principali
ðil compilatore: javac.exe
ðla macchina virtuale: java.exe
mI
passo
ðcompilare il sorgente (.java) con javac
ðeseguire il bytecode (.class) con java
43
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> Utilizzo degli Strumenti
Un Semplice Programma Java
/*
Questo e' il primo programma Java
file: Prima.java
*/
package prima;
class Prima {
public static void main(String[] args) {
// stampa una scritta sullo schermo
System.out.println("Prima prova");
}
}
G. Mecca - Programmazione Orientata agli Oggetti
>>
44
22
21/04/2004
Piattaforme >> Utilizzo degli Strumenti
G. Mecca - Programmazione Orientata agli Oggetti
45
Piattaforme >> Utilizzo degli Strumenti
Utilizzo degli Strumenti
m Per
sviluppare in C#
ðè necessario installare il .NET
Redestributable Package e il .NET
Framework SDK v. 1.1
ðscaricabili liberamente dal sito
http://www.gotdotnet.com
ðattenzione alle dimensioni
ðdotnetfx.exe >> ca. 23 Mega
ðNETSDKSetup1.1.exe >> circa 112 Mega
G. Mecca - Programmazione Orientata agli Oggetti
46
23
21/04/2004
Piattaforme >> Utilizzo degli Strumenti
Utilizzo degli Strumenti
m Post-Configurazione
ðcambiare il PATH aggiungendo il valore
C:\Windows\Microsoft.NET\Framework\v1.1.4322\
ðATTENZIONE: il nome effettivo della cartella
può cambiare con la versione dell’SDK
m Lo
strumento principale
ðil compilatore csc.exe
ðla macchina virtuale viene eseguita
automaticamente
47
G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> Utilizzo degli Strumenti
Un Semplice Programma Java
/*
Questo e' il primo programma in C#
file: primo.cs
*/
namaspace primo {
class Prima {
public static void Main(string[] args) {
// stampa una scritta sullo schermo
System.Console.WriteLine("Prima Prova");
}
}
}
G. Mecca - Programmazione Orientata agli Oggetti
>>
48
24
21/04/2004
Piattaforme >> Utilizzo degli Strumenti
G. Mecca - Programmazione Orientata agli Oggetti
49
Piattaforme >> Sommario
Riassumendo
m Linguaggi
di Riferimento
m La Piattaforma Java
m La Piattaforma .NET
m Caratteristiche del Linguaggio Java
m Caratteristiche del Linguaggio C#
m Utilizzo degli Strumenti
G. Mecca - Programmazione Orientata agli Oggetti
50
25
21/04/2004
Termini della Licenza
Termini della Licenza
m
This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California
94305, USA.
m
Questo lavoro viene concesso in uso secondo i termini della
licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere
una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una
lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.
G. Mecca - Programmazione Orientata agli Oggetti
51
26