Prof. Pagani corrado JAVA NASCITA DI JAVA Java è stato creato, a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, da un gruppo di esperti sviluppatori capitanati da James Gosling in Sun Microsystems. Per facilitare il passaggio a Java ai programmatori legati a linguaggi come il C++, la sintassi di base è stata mantenuta pressoché identica a quella del C++; tuttavia, non sono state introdotte caratteristiche ritenute fonti di una complessità non necessaria come l'aritmetica dei puntatori, l'ereditarietà multipla delle classi, e l'istruzione goto. In un primo momento Sun decise di destinare questo nuovo prodotto alla creazione di applicazioni complesse per piccoli dispositivi elettronici; a metà degli anni ‘90, con l'esplosione di internet, Java iniziò a farsi notare e a diffondersi enormemente come strumento di programmazione web. PUNTI DI FORZA 1. Paradigma ad oggetti 2. 3. 4. Portabilità Ampia disponibilità di librerie e strumenti Sicurezza del codice 5. puro ad eccezione dei tipi primitivi Applet eseguono codice scaricato (tramite browser) da server remoto in modalità sicura (sandbox) necessitano della JVM su PC locale Multithreading nativo Non dipende dal SO PORTABILITA’ Java è un linguaggio al tempo stesso compilato e interpretato Compilatore produce bytecode (linguaggio intermedio portabile) che facilità il lavoro dell’interprete (e quindi le prestazioni) Interprete JVM dipende dalla piattaforma hardware/software e deve essere installato sul PC su cui si avvia il programma COMPILATORE E JVM JDK JRE LIBRERIE DEL LINGUAGGIO Java prevede numerose librerie che permettono l’interazione con diverse tecnologie software: Accesso a DB relazionali XML Programmazione WEB sia client sia server Interfaccia grafica utente multimedialità LIBRERIE E PIATTAFORME SOFTWARE (API) Il linguaggio in sé definisce solo una minima parte delle librerie utilizzabili. La parte restante è definita dalla piattaforma sulla quale il programma sarà eseguito. La Oracle mette a disposizione tre piattaforme ufficiali, ciascuna destinata ad ambiti diversi: Java Platform, Standard Edition Java Platform, Micro Edition Java EE JAVA PLATFORM, STANDARD EDITION La Java Platform, Standard Edition è una piattaforma software ampiamente utilizzata nella programmazione in linguaggio Java per costruire e distribuire applicazioni portatili ad uso generale. Java SE consiste di una macchina virtuale (Java Virtual Machine), che deve essere usata per eseguire (interpretare) programmi Java Librerie (API) necessarie per consentire l'uso di file system, reti, interfacce grafiche e così via, all'interno di tali programmi. JAVA PLATFORM, ENTERPRISE EDITION La specifica Java EE include tecnologie che estendono le funzionalità di base della piattaforma Java; principalmente abbiamo: Componenti web Componenti enterprise Le componenti che rientrano in questa categoria sono quelle legate alla visualizzazione delle pagine web ed all'esposizione di web service. L'uso di queste componenti è richiesto solamente in applicativi di medie e grandi dimensioni. Componenti per l'interazione con la base dati Questa categoria contiene le tecnologie che permettono la persistenza dei dati all'interno di una base dati relazionale MAPPA DEGLI ELEMENTI JAVA JRE Java Runtime Environment (comprende la JVM) JDK Java Development Kit (motore di compilazione del codice sorgente, comprende il compilatore javac) JSR Java Specification JavaFX è una famiglia di Requests (specifiche di API sia approvate/implementate che in fase di approvazione) software applicativi, basati sulla Piattaforma Java, per la creazione di rich Internet applications. PACKAGE Le classi che costituiscono un programma JAVA sono normalmente suddivise in insiemi definiti PACKAGE, in modo da avere una struttura il più possibile ordinata Package nomePackage; I package una volta compilati possono essere memorizzati in file compressi con estensione .JAR che ne comprendono i Lbytecode Un package definisce un nuovo spazio dei nomi per le classi che si trovano al suo interno, per questo i programmatori possono creare classi con lo steso nome all’interno di package diversi E’ possibile importare package diversi tramite le istruzioni import java.io.InputStream; import java.io.*; CLASSI Regole Il nome della classe deve coincidere con il nome del file (convenzionalmente inizia con la lettera maiuscola) Convenzione di inserire una sola classe per file Può avere un proprio metodo main di tipo static Un programma è composto da 1 o + classi che risiedono su altrettanti file. Almeno una classe deve possedere il metodo main Sintassi Public class nomeClasse { Attributi (o proprietà) Costruttori Metodi } Eventuale metodo static main per l’avvio FILE CHE CONTIENE LA CLASSE Deve avere lo steso nome della classe che contiene Struttura e Sintassi Commento di intestazione del file Dichiarazione del package Sezione di import di altri package Package dell’applicazione Package delle librerie Definizione della classe INCAPSULAMENTO L’incapsulamento è legato al concetto di “impacchettare” in un oggetto i dati (attributi) e le azioni (metodi) ammissibili su tali dati (il tutto è riconducibili all’astrazione di un singolo componente denominato classe). Gli attributi sono variabili che descrivono lo stato informativo della classe. I metodi sono i comportamenti che la classe implementa, sono definite in modo analogo alle funzioni, ma possono accedere direttamente a tutti gli attributi della oggetto che li invoca. MODIFICATORI DI ACCESSIBILITA’ Il modificatore va anteposto alla definizione della classe, attributo, metodo e ha lo scopo di come tale elemento sia visto all’esterno del file/classe dove sia definito. E’ preferibile mantenere tutti gli attributi privati e prevedere specifici metodi di accesso/scrittura: in tale modo posso gestire eventuali accessibilità specifiche e differenti per SCRITTURA e LETTURA. MEMBRI STATIC Con il modificatore STATIC è possibile associare attributi o metodi all’intera CLASSE invece che ai singoli oggetti istanziati. Tali membri sono condivisi quindi da tutti gli oggetti della classe Per poter invocare il metodo static o accedere all’attributo static occorre premettere al nome del membro il nome della CLASSE: NomeClasse.NomeAttributoStatico NomeClasse.NomeMetodoStatico(…)