Java introduzione

18
Java White Paper Le caratteristiche del linguaggio

Transcript of Java introduzione

Page 1: Java introduzione

Java White Paper

Le caratteristiche del linguaggio

Page 2: Java introduzione

SempliceJava è stato progettato partendo dal C++, omettendole funzioni poco utilizzate o fuorvianti.

Grazie alle numerose librerie preconfezionate è possibile realizzare applicazioni complesse con poco codice.

Integrando le funzionalità GUI e tramite la tecnologia dei componenti JavaBean è stato possibile realizzare software di sviluppo che si avvicinano alla semplicità di VB.

Le applicazioni sono file di dimensioni molto piccole, il che consente di sviluppare per computer di piccole dimensioni (palmari, cellulari, ecc)

Page 3: Java introduzione

Object OrientedJava è un linguaggio veramente O.O., molto più del C++ che consente uno sviluppo di tipo procedurale.

Una fondamentale differenza rispetto al C++ è la mancanza dell’ereditarietà multipla, sostituita dalle ‘interfacce’.

I linguaggi O.O. permettono allo sviluppatore di vedere il progetto più ad alto livello, occupandosi degli oggetti, della loro interfaccia, e trascurando i loro dettagli implementativi.Questo ha consentito, grazie al meccanismo dell’ereditarietà, lo sviluppo di oggetti sempre più specializzati e complessi facilmente riutilizzabili in più progetti.Inoltre questo meccanismo di riutilizzo del codice rende il software prodotto meno soggetto a errori.

Page 4: Java introduzione

DistribuitoJava dispone di una libreria per gestite i protocolli TCP/IP.Le applicazioni Java possono utilizzare oggetti attraverso una rete.

Utilizzando java è possibile creare applicazioni server side che consentono di sviluppare servizi Web dinamici (servlet, JSP).

Infine è possibile implementare un meccanismo di chiamata di metodi remoti consentendo di far comunicare tra loro oggetti distribuiti in una rete.

Page 5: Java introduzione

RobustoI programmi Java per loro natura devo essere affidabili.In primo luogo non esiste il meccanismo dei puntatori, tipici del C: quindi è impossibile sovrascrivere per errore zone di memoria protette.

Il compilatore Java si accorge di alcune incongruenze e le segnala immediatamente come errore o come warning: ad esempio il classico errore che si commette in C: if (a=1)

Java dispone anche di un meccanismo potente per intercettare gli errori a Run-Time evitando di far abortire le applicazioni.

In java non è necessario liberare la memoria manualmente. Infatti quando un oggetto non viene più utilizzato la memoria viene liberata automaticamente (garbage collector)

Page 6: Java introduzione

SicuroJava viene utilizzato spesso in ambienti di rete, quindi la sicurezza è un punto fondamentale. Java è stato studiato tenendone conto fortemente, anche se come tutti i sistemi è impossibile garantire la completa immunità agli attacchi maligni. La Sun in ogni caso coinvolge l’intera comunità nel compito della rilevazione dei bug di sicurezza in modo da poterli correggere.

Certamente le Applet java rispetto agli ActiveX Microsoft hanno un meccanismo di sicurezza molto più efficiente. Ad esempio è possibile impedire l’accesso ai file locali anche alle classi che possiedono una firma digitale autenticata.

Page 7: Java introduzione

Indipendente dall’architetturaIl compilatore java genera un codice intermedio (bytecode) non un eseguibile. Tale byetecode non dipendono da alcuna architettura hardware o software.

Il bytecode dovrà essere interpretato dalla macchina virtuale java su qualsiasi piattaforma. Questo ha come conseguenza prestazioni molto peggiori rispetto agli eseguibili nativi, ma nella maggior parte dei casi i tempi sono comunque accettabili.

Il bytecode invece di essere interpretato può essere anche tradotto ‘al-volo’ in codice nativo riducendo il problema delle basse prestazioni.

Page 8: Java introduzione

PortabileIl C e in tutti i linguaggi precedenti non si sa mai con certezza la dimensione di una variabile, ad esempio un int può essere a 16 o a 32 bit a seconda dell’ambiente. Con java le dimensioni sono sempre le stesse 32 bit. Lo stesso vale per le stringhe che sono salvate sempre come Unicode.

Inoltre Java risolve, o fa il meglio per risolvere, il grosso problema delle interfacce grafiche Windows. Infatti mette a disposizione un toolkit che consente di scrivere un applicazione utilizzabile in modo soddisfacente su Windows, su Macintosh e su una delle tante versioni di xWindows di Unix.

Page 9: Java introduzione

MultithreadIn java è possibile sfruttare la potenzialità dei sistemi operativi in grado di eseguire le operazioni con un certo grado di parallelismo. E’ quindi possibile spezzare un applicazioni in più thread che vengono eseguiti parallelamente.

Il vantaggio di tale implementazione è evidente sia nella gestione dell’interfaccia grafica, sia nell’implementazione di server.

I server spesso sono in attesa di una richiesta e avviano un processo per ogni richiesta proveniente da un client.

I server inoltre spesso sono sistemi multiprocessore: ciò rende ancora più evidente il vantaggio.

Page 10: Java introduzione

Alte PrestazioniIl bytecode java viene interpretato producendo applicazioni che in termini di prestazioni sono da giudicare mediocri. Tuttavia sono prestazioni paragonabili a quelle di VB4 quindi nella maggior parte dei casi accettabili.

Nel caso dovessero servire applicativi molto veloci sarà necessario procedere all’uso di compilatori just-in-time (JIT) che producono codice nativo al-volo a partire sempre dal bytecode. In tal caso le prestazioni migliorano di 10-20 volte rimanendo sempre inferiori a un eseguibile veroe proprio.Oppure sarà possibile utilizzare compilatori che generano eseguibili nativi, perdendo però i vantaggi della portabilità.

Page 11: Java introduzione

L’ambiente di sviluppo SUN J2SE: Standard Edition J2EE: Enterprise Edition J2ME: Micro Edition

Page 12: Java introduzione

J2SEIl Java Developement Kit (JDK) viene distribuito dalla SUN

gratuitamente e contiene tutti gli strumenti per sviluppare ed eseguire un’applicazione.

Una volta installato vengono create le seguenti cartelle:

bin: contiene il compilatore e gli strumenti demo: contiene alcuni esempi jre: contiene le librerie standard in archivi .jar

Page 13: Java introduzione

Il compilatore javac Installare il pacchetto. Modificare le variabili d'ambiente PATH e CLASSPATH

SET CLASSPATH=.;c:\programmi\jdk114\lib\classes.zip;SET PATH=%PATH%c:\programmi\jdk114\bin;In tal modo sarà possibile avviare java da qualsiasi directory

Il pacchetto standard JDK non contiene un Editor integrato, si potrà tuttavia utilizzare un Editor qualsiasi.

La compilazione avviene tramite il comando:javac Prova.java(la compilazione genera il file Prova.class ovvero tanti file class quante classi contenute nel file .java)-Il comando javac prevede diverse opzioni, non usate di frequente, che possono essere analizzate scrivendo dal prompt:javac senza argomenti

Page 14: Java introduzione

L’interprete javaUn’applicazione java viene lanciata con:java Prova(Prova è il file .class che contiene il metodo main)

In alcuni casi si hanno applicazioni costituite da più file class inpacchettate in archivi .jar. In questi casi è possibile lanciare l’applicazione con:java –jar Archivio.jar

L’esecuzione di un’applicazione con java avvia sempre una finestra DOS anche si si tratta di un’applicazione windows. Se si vuole evitare l’apertura della finestra DOS si può usare il comando javaw (con le stesse opzioni di java)

Page 15: Java introduzione

Primo esempiopublic class Hello{ public static void main(String args[]) {

if(args.length>0) System.out.println("Hello " + args[0] +"!");

else System.out.println("Hello !!"); }}Da compilare con: javac Hello.javaEd eseguire con: java Hello Laura

Page 16: Java introduzione

Regola dei nomi Le classi iniziano sempre con la lettera maiuscola

Hello se il nome è composto da più parole si usa la seguente notazione HelloWorld metodi iniziano con la lettera minuscola

main se il nome è composto da più parole si ha:

stampaElenco le variabili usano la stessa notazione dei metodi le costanti sono tutte in maiuscolo

Page 17: Java introduzione

L’archiviatore jarNel pacchetto JDK è presente un tool per creare archivi:jar cvf bundle.jar * (aggiunge tutti i file della cartella in un file bundle.jar)jar cvf bundle.jar audio classes images (aggiunge tutti i file delle sottocartelle audio,classes,images in un file bundle.jar)jar tf bundle.jar (mostra il contenuto di un file jar)jar xvf bundle.jar(estrae i file dall’archivio)

Le opzioni complete possono essere analizzate nella documentazione.

Page 18: Java introduzione

Altre utilityjavadocServe per creare una documentazione HTML alle nostre classi.

appletviewerVisualizzatore di applet senza l’utilizzo di browser particolari.

rmicPermette di generare classi utili per l’invocazione di metodi remoti