Post on 02-Dec-2021
21/04/2004
1
G. Mecca – Università della Basilicata – mecca@unibas.it
Programmazione Orientataagli Oggetti in Linguaggio Java
IntroduzionePiattaforme di Riferimento
versione 1.2Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
2G. Mecca - Programmazione Orientata agli Oggetti
Sommario
m Linguaggi di Riferimentom La Piattaforma Javam La Piattaforma .NETmCaratteristiche del Linguaggio JavamCaratteristiche del Linguaggio C#mUtilizzo degli Strumenti
Piattaforme >> Sommario
21/04/2004
2
3G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> Linguaggi di Riferimento
4G. Mecca - Programmazione Orientata agli Oggetti
Linguaggi di Riferimento
mDomanda: Perché questi due linguaggi ?ðin effetti ne esistono molti altriðSmalltalk (tradizionale)ðDelphiðPython (recente)
mRispostaðrappresentano le piattaforme di riferimento
attuali per lo sviluppo softwareðuna serie di caratteristiche distintive
Piattaforme >> Linguaggi di Riferimento
21/04/2004
3
5G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mComplessa 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)mEssenzialmenteðun complesso di specifiche e di componenti
software
Piattaforme >> La Piattaforma Java
6G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mUn 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
Piattaforme >> La Piattaforma Java
21/04/2004
4
7G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mAttualmenteð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
Piattaforme >> La Piattaforma Java
8G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mOgnuno 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
Piattaforme >> La Piattaforma Java
21/04/2004
5
9G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
Piattaforme >> La Piattaforma Java
fonte: www.java.sun.com
10G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mPrincipali 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”
Piattaforme >> La Piattaforma Java
21/04/2004
6
11G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> La Piattaforma Java
12G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
m Le 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)
Piattaforme >> La Piattaforma Java
Differenza con altrilinguaggi/piattaforme
es: C++
21/04/2004
7
13G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
Piattaforme >> La Piattaforma Java
fonte: www.java.sun.com server accessibile in rete
clientes:
browser basidi
dati
14G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
m 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.
Piattaforme >> La Piattaforma Java
Differenza con altrilinguaggi/piattaforme
es: C++
21/04/2004
8
15G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
Piattaforme >> La Piattaforma Java
fonte: www.java.sun.com
16G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
Piattaforme >> La Piattaforma Java
3213830201.4
2390121301.3
2093517811.2
54785041.1
21252121.0
Numero di Metodi delle API Standard
Numero di Classi delle API Standard
Versione di J2SE
fonte: Horstmann, Cornell – “Core Java 2”, Volume I
21/04/2004
9
17G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> La Piattaforma Java
18G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mAttenzioneð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)
Piattaforme >> La Piattaforma Java
21/04/2004
10
19G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> La Piattaforma Java
20G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
Piattaforme >> La Piattaforma Java
compilatorejavac
codice sorgenteProva.java
010010011100101100110011
bytecodeProva.class
JVMjava
110 111 010 001101 101
codice eseguibilemacchina fisica
010010011100101100110011bytecode
delle librerie
ATTENZIONEal processo di
compilazione edesecuzione
21/04/2004
11
21G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
mEsecuzione 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)
Piattaforme >> La Piattaforma Java
22G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma Java
m In 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”
Piattaforme >> La Piattaforma Java
Differenza con altrilinguaggi/piattaforme
es: C++
21/04/2004
12
23G. Mecca - Programmazione Orientata agli Oggetti
Introduzione
Piattaforme >> La Piattaforma Java
fonte: www.java.sun.com
24G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
mPiattaforma di riferimento della Microsoftðdal 2000ðper molti versi, una risposta alla larghissima
diffusione di JavamPrincipali caratteristicheðI. scalabile e pensata per applicazioni
distribuiteðII. fornisce un’ampia libreria di classiðIII. multilinguaggio
Piattaforme >> La Piattaforma .NET
21/04/2004
13
25G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> La Piattaforma .NET
26G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
Piattaforme >> La Piattaforma .NET
fonte: Microsoft .NETAcademic Resource Kit
Web Form
.NET Framework
Windows
Web Service
.NET FoundationWeb Services
Your InternalWeb Service
Third-PartyWeb Services
.NET EnterpriseServers
Clients Applications
Protocols: HTTP,HTML, XML, SOAP, UDDI
server accessibilein rete
client
altri sistemi; es:basi di dati
21/04/2004
14
27G. Mecca - Programmazione Orientata agli Oggetti
Introduzione
Piattaforme >> La Piattaforma .NET
System.Data
DesignOLEDB
SQLTypesSQL
System
GlobalizationDiagnosticsConfigurationCollections
ResourcesReflectionNetIO
ThreadingTextServiceProcessSecurity Runtime
InteropServicesRemotingSerialization
System.Xml
XPathXSLT Serialization
System.Web
Configuration SessionStateCaching Security
ServicesDescriptionDiscoveryProtocols
UIHtmlControls
WebControlsSystem.Drawing
ImagingDrawing2D
TextPrinting
System.Windows.FormsForm Button
MessageBox ListControl
fonte: Microsoft .NETAcademic Resource Kit
28G. Mecca - Programmazione Orientata agli Oggetti
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
Piattaforme >> La Piattaforma .NET
21/04/2004
15
29G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
mMacchina 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 (>>)
Piattaforme >> La Piattaforma .NET
30G. Mecca - Programmazione Orientata agli Oggetti
Introduzione
Piattaforme >> La Piattaforma .NET
fonte: Microsoft .NETAcademic Resource Kit
CLR
VB.NETSource code
Compiler
C++C#
Assembly AssemblyAssembly
Operating System Services
MSIL
Common Language Runtime JIT Compiler
Compiler Compiler
Nativecode
ManagedCode
ManagedCode
ManagedCode
UnmanagedCode
CLR Services
21/04/2004
16
31G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
mAttenzioneð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)
Piattaforme >> La Piattaforma .NET
32G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
mPer eseguire codice .NETðuna macchina Windows deve avere installato
il .NET Framework
m .NET FrameworkðCLRðAPI di .NETðanalogo di JRE
Piattaforme >> La Piattaforma .NET
21/04/2004
17
33G. Mecca - Programmazione Orientata agli Oggetti
La Piattaforma .NET
mDi conseguenzaðalcune fortissime analogie con la piattaforma
Java
mDue significative differenzeðun linguaggio contro molti linguaggi (...)ðindipendenza dalla piattaforma hardware
contro dipendenza (di fatto) da Windows
Piattaforme >> La Piattaforma .NET
34G. Mecca - Programmazione Orientata agli Oggetti
Caratteristiche del Linguaggio Java
mPrincipali 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, ...)
Piattaforme >> Caratteristiche del Linguaggio Java
21/04/2004
18
35G. Mecca - Programmazione Orientata agli Oggetti
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.
Piattaforme >> Caratteristiche del Linguaggio Java
36G. Mecca - Programmazione Orientata agli Oggetti
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 (>>)
Piattaforme >> Caratteristiche del Linguaggio Java
21/04/2004
19
37G. Mecca - Programmazione Orientata agli Oggetti
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
mV. Altre caratteristiche avanzate
Piattaforme >> Caratteristiche del Linguaggio Java
38G. Mecca - Programmazione Orientata agli Oggetti
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à
Piattaforme >> Caratteristiche dei Linguaggio C#
21/04/2004
20
39G. Mecca - Programmazione Orientata agli Oggetti
Caratteristiche del Linguaggio C#
mPrincipali caratteristiche di ðI. completamente orientato agli oggettiðII. sintassi basata sul C/C++ðIII. semplice e robustoðIV. collegamento dinamicoðV. caratteristiche avanzate (multi-thread,
riflessione, ...)
Piattaforme >> Caratteristiche dei Linguaggio C#
Java e C#
(ATTENZIONE)
40G. Mecca - Programmazione Orientata agli Oggetti
Caratteristiche del Linguaggio C#
mAttenzione: semplice e robustoðC# eredita molte delle scelte fatte per Javaðgestione automatica della memoria,
tipizzazione, ereditarietà singola, eccezioni...mMaðè meno restrittivo nell’imporre queste scelte
al programmatoreðes: gestione della memoria, eccezioniðquesta è una delle principali differenze
Piattaforme >> Caratteristiche dei Linguaggio C#
21/04/2004
21
41G. Mecca - Programmazione Orientata agli Oggetti
Utilizzo degli Strumenti
mPer 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
Piattaforme >> Utilizzo degli Strumenti
42G. Mecca - Programmazione Orientata agli Oggetti
Utilizzo degli Strumenti
mPost-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
Piattaforme >> Utilizzo degli Strumenti
21/04/2004
22
43G. Mecca - Programmazione Orientata agli Oggetti
Utilizzo degli Strumenti
mGli strumenti principaliðil compilatore: javac.exeðla macchina virtuale: java.exe
m I passoðcompilare il sorgente (.java) con javacðeseguire il bytecode (.class) con java
Piattaforme >> Utilizzo degli Strumenti
44G. Mecca - Programmazione Orientata agli Oggetti
Un Semplice Programma Java/*
Questo e' il primo programma Javafile: Prima.java
*/package prima;class Prima {
public static void main(String[] args) {
// stampa una scritta sullo schermoSystem.out.println("Prima prova");
}}
Piattaforme >> Utilizzo degli Strumenti
>>
21/04/2004
23
45G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> Utilizzo degli Strumenti
46G. Mecca - Programmazione Orientata agli Oggetti
Utilizzo degli Strumenti
mPer sviluppare in C#ðè necessario installare il .NET
Redestributable Package e il .NETFramework 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
Piattaforme >> Utilizzo degli Strumenti
21/04/2004
24
47G. Mecca - Programmazione Orientata agli Oggetti
Utilizzo degli Strumenti
mPost-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’SDKm Lo strumento principaleðil compilatore csc.exeðla macchina virtuale viene eseguita
automaticamente
Piattaforme >> Utilizzo degli Strumenti
48G. Mecca - Programmazione Orientata agli Oggetti
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");
}
}}
Piattaforme >> Utilizzo degli Strumenti
>>
21/04/2004
25
49G. Mecca - Programmazione Orientata agli Oggetti
Piattaforme >> Utilizzo degli Strumenti
50G. Mecca - Programmazione Orientata agli Oggetti
Riassumendo
m Linguaggi di Riferimentom La Piattaforma Javam La Piattaforma .NETmCaratteristiche del Linguaggio JavamCaratteristiche del Linguaggio C#mUtilizzo degli Strumenti
Piattaforme >> Sommario
21/04/2004
26
51G. Mecca - Programmazione Orientata agli Oggetti
Termini della Licenza
Termini della Licenza
m This work is licensed under the Creative Commons Attribution-ShareAlike 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 dellalicenza “Attribution-ShareAlike” di Creative Commons. Per ottenereuna copia della licenza, è possibile visitarehttp://creativecommons.org/licenses/by-sa/1.0/ oppure inviare unalettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.