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