Programmazione Java Avanzata Concetti su Java



Похожие документы
Programmazione Java Avanzata

Test di unità con JUnit4

Java: Compilatore e Interprete

Strumenti per la programmazione

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione a Oggetti Lezione 10. Ereditarieta

Telematica II 17. Esercitazione/Laboratorio 6

Ambienti di Sviluppo

Progettazione : Design Pattern Creazionali

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Panoramica: che cosa è necessario

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Informatica. Prof. A. Longheu. Introduzione a Java

13. Chain of Responsibility

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Modulo 4: Ereditarietà, interfacce e clonazione

Scrivere un programma in Java

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Programmare in Java. Olga Scotti

Esercitazione n 4. Obiettivi

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Corso sul linguaggio Java

Programmazione in Java Parte I: Fondamenti

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Java Virtual Machine

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Gestione delle eccezioni in Java

Programmazione ad oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Programmazione ad Oggetti. Java Parte I

GESTIONE DEI PROCESSI

Approccio stratificato

Introduzione alla programmazione in C

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

2 - Introduzione al linguaggio Java

Oggetti Lezione 3. aspetti generali e definizione di classi I

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Le command line di Java

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Architettura MVC-2: i JavaBeans

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Tale attività non è descritta in questa dispensa

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Protezione. Protezione. Protezione. Obiettivi della protezione

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Corso di Informatica

Algoritmi di Ricerca. Esempi di programmi Java

Inizializzazione, Assegnamento e Distruzione di Classi

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

RMI Remote Method Invocation

Funzioni in C. Violetta Lonati

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

La struttura dati ad albero binario

Corso di Informatica

Programmazione Java Avanzata Spring - JDBC

Concetto di Funzione e Procedura METODI in Java

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Organizzazione degli archivi

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Lezione 9. Applicazioni tradizionali

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

CORSO DI PROGRAMMAZIONE JAVA

JDBC versione base. Le classi/interfacce principali di JDBC

Appunti di Informatica 1

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Introduzione all uso di Eclipse

Progettazione Web Applicazioni client-server

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Programmazione a Oggetti Modulo B

Application Server per sviluppare applicazioni Java Enterprise

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

INFORMATICA 1 L. Mezzalira

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Adobe Flash CS5.5 e Web Animation. Lezione 7: introduzione ad ActionScript 3.0, livelli guida, realizzazione di un player audio in streaming

Corso Eclipse. Prerequisiti. 1 Introduzione

Compilatore risorse display grafico LCD serie IEC-line

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...)

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Dispensa YACC: generalità

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Транскрипт:

Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì

Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008)

Java Virtual Machine Il codice scritto in Java viene compilato in un formato molto simile al codice macchina, chiamato bytecode Il bytecode viene eseguito da una Java Virtual Machine, che lo traduce just-in-time in codice macchina specifico E' il fondamento del concetto di Write Once, Run Anywhere

Tipi di Java Java è un linguaggio che ha più facce Viene usato in ambito: Desktop Application (Java Standard Edition) Web Application (Java Enterprise Edition) Mobile Application (Java Micro Edition e Android) Il linguaggio è sempre lo stesso, cambiano i tipi di JVM utilizzate e le librerie a disposizione Ci soffermeremo su Java Enterprise Edition

JVM e altri linguaggi JVM non supporta solo Java In ambito enterprise è naturale avere un insieme di software scritto negli anni, da persone diverse e con linguaggi diversi Inoltre la sintassi di Java è carente su alcuni aspetti (ad esempio, programmazione funzionale) e quindi si può semplificare lo sviluppo utilizzando linguaggi differenti Moltissimi linguaggi sono stati portati su JVM, per permettere l'integrazione con framework e librerie Java JRuby (Ruby) Jython (Python) PHP/Java Bridge e Quercus (PHP)

JVM e altri linguaggi (2) Alcuni linguaggi sono stati inventati come sostituti o ad integrazione di Java Groovy Scala Clojure Spesso le funzionalità introdotte sono la tipizzazione dinamica, programmazione funzionale, concorrenza In Java si può accedere a funzionalità a basso livello tramite il framework JNI (Java Native Interface), con il quale si possono chiamare funzioni scritte in C, C++ o Assembly

Java IDE Dato che Java è ormai il linguaggio più popolare* nell'industria del software, sono numerosi gli ambienti integrati di sviluppo (IDE) Eclipse (inizialmente IBM, ora Eclipse Foundation) Netbeans (inizialmente Sun, ora Oracle) IntelliJ IDEA Jbuilder * vedi TIOBE Index: [http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html]

Eclipse E' il più usato in ambito Java Ha un'architettura modulare Supporta decine di linguaggi Supporta praticamente tutte le librerie e framework java, dato che i plugin specifici vengono sviluppati prima per Eclipse e poi per gli altri IDE Ha degli ottimi analizzatori di codice

Convenzioni I nomi delle classi sono sostantivi che iniziano in maiuscolo Es. class Studente{ } Se il nome è composto da più di un sostantivo, ognuno di questi avrà l'iniziale maiuscola (convenzione CamelCase) Es. class StudenteLavoratore{... } I nomi dei metodi sono composti da un verbo, oppure un verbo più sostantivo; la prima iniziale minuscola, le successive maiuscole Es. int getricaviesercizio() I nomi delle variabili membro sono composti da sostantivi e usano la stessa convenzione dei metodi

Convenzioni Le costanti sono tutte in maiuscolo, con i sostantivi separati da underscore Es. public static int MAX_VOTO = 30 Le costanti di enumerazione sono trattate come le costanti Es. enum TipoStudente{LAVORATORE, NON_LAVORATORE} I nomi dei package sono tutti in minuscolo, con i sostantivi separati da underscore Es. package org.unirc.ing.programmazione_java_avanzata Attenzione! Ogni azienda segue le sue convenzioni per i package, chiedete prima

Javadoc Javadoc è un generatore di documentazione per il codice Usa dei commenti speciali chiamati javadoc comments Formato: inizia con /**, termina con */ I commenti Javadoc vengono estratti in fase di compilazione e permettono di generare documentazione senza scriverla a parte Ad esempio Eclipse è in grado di restituire, con un popup, i commenti Javadoc per le classi e i metodi che stiamo usando Si possono commentare classi, metodi e variabili

Javadoc: Esempio /** * Descrizione breve * * Descrizione lunga, che può stare anche su * più righe. * * @param b Stringa che rappresenta la parola cercata * @return Indice dell'array che contiene la parola cercata */ public int cercastringa(string b) { }

Classi Astratte In Java le classi astratte si definiscono con la parola chiave abstract Se una classe è astratta, non è possibile istanziare oggetti di quel tipo Errore: ClasseAstratta obj = new ClasseAstratta(); Se la classe astratta fa parte di una libreria (non è stata scritta da noi), è necessario trovare classi concrete che la estendano Oppure estenderla noi

Interfacce Le interfacce (interface) sono definizioni di insiemi di metodi pubblici, senza implementazione Simili alle classi astratte Una interface è un contratto esplicito nel codice Ogni classe che implementa una interface deve possedere alcune funzionalità pubbliche (metodi) Se sappiamo che una classe implementa una certa interface, sappiamo che ha certe funzionalità e non ci interessa sapere come vengono eseguite Questo è un concetto di Design By Contract fondamentale quando più di una persona deve scrivere un software

Java Generics Dalla versione 5.0 Java ha aggiunto tecniche per rendere generica la gestione di strutture dati Ovvero, è possibile implementare una struttura dati (Lista, Array, ecc) in modo indipendente dal tipo che dovrà contenere Per esempio è possibile avere una List che gestisca Studenti e una List che gestisca Elettrodomestici, senza usare l'ereditarietà Con ereditarietà: public class ListStudente extends List{ } public class ListElettrodomestici extend List { } Con Generics: public class List <E> { }

Java Collections Le Java Collections sono interfacce e classi standard che permettono di gestire strutture dati, gruppi di oggetti Rendono obsoleto l'uso del tipo array nativo (es. int[10]) Implementano tutte l'interfaccia Collection o una delle sottointerfacce List, Queue, Set, Map Sono estendibili, ovvero possiamo creare tipi specializzati di Collections (oppure possiamo usare librerie che li creano) Hanno un supporto per i Java Generics Es. Collection lista = new ArrayList<String>();

Eccezioni Le eccezioni in java sono di due tipi: Checked Exception Unchecked Exception Le Checked Exception sono controllate in fase di compilazione cioè possiamo sapere dalla definizione dei metodi se un certo tipo di codice può lanciare una data eccezione Esempio: tutte le eccezioni definite da noi o dai framework Le Unchecked Exception invece sono lanciate per problemi a run-time, che non potevano essere conosciuti in fase di compilazione del codice Esempio: ArrayIndexOutOfBoundsException, NullPointerException

Eccezioni (2) Le eccezioni possono essere gestite (con try/catch) Esempio: public void nostrafunzione(){ try{ obj.funzionechelanciaeccezione(); }catch(myexception e){ } } Le eccezioni possono essere rilanciate ad una funzione di livello più alto: public void nostrafunzione() throws MyException{ } obj.funzionechelanciaeccezione();

Java Annotations Dalla versione 5.0 Java ha introdotto dei meccanismi per inserire metadati descrittivi nel codice stesso Questi metadati (dati a proposito dei dati) possono essere usati per rendere espliciti alcuni comportamenti Siccome sono immersi nel codice, esistono analizzatori in grado di adoperarli per semplificare il lavoro si sviluppo o potenziare il Design By Contract Es. @Override, @Deprecated Molti framework definiscono annotation proprie

Java Reflection La Java Reflection Api è un insieme di classi e funzionalità che vengono usate per conoscere e manipolare gli oggetti e i metodi attualmente in esecuzione Per esempio è possibile aggiungere o eliminare metodi alle classi a run-time Es. obj.getclass() Può essere usato per rendere il codice illeggibile (spaghetticoding) Viene usato più proficuamente per realizzare funzioni di analisi del codice, usate dagli IDE e dai framework