Laboratorio di Sistemi Distribuiti
|
|
- Aureliano Arcuri
- 8 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di Sistemi Distribuiti Bianchi Marco Univ. Roma Tor Vergata November 15, 2006 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
2 Introduzione ad XML (3/3) 1 Parsing di documenti XML Modelli di parsing SAX DOM JAXB 2 Domande? Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
3 Parsing di documenti XML Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
4 Modelli di parsing Pull parsing: L applicazione chiede esplicitamente al parser il prossimo segmento di informazione. Non esistono ancora API standard, ma potrebbero uscire presto perchè è un modello di parsing che sta diventando sempre più popolare. Push parsing: Il parser notifica all applicazione il tipo di elemento XML incontrato. Le notifiche vengono inviate in ordine di lettura. Le Simple API for XML (SAX 2.0) rappresentano le API standard de facto. One-step parsing: Il parser legge l intero documento XML e genera una struttura dati (parse tree) che riflette la struttura ad albero del documento. La struttura dati, e relative API, standard de facto è Document Object Model (DOM), definita dal W3C. La comunità Java ha definito Java DOM (JDOM) per offrire un alternativa a DOM che risultasse pensata specificatamente per essere utilizzata in un programma Java. Hybrid parsing Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
5 Comparazione dei modelli di parsing Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
6 Processamento XML orientato ai dati Sono possibili due diversi approcci: approccio orientato alle operazioni approccio orientato ai dati Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
7 Processamento XML: approccio orientato alle operazioni L approccio orientato alle operazioni prevede la definizione di API customizzate per l esecuzione delle operazioni da eseguire sul documento XML. Ad esempio: package com.skatestown.invoice; import java.io.inputstream; public interface InvoiceChecker { /** Check invoice totals. invoicexml Invoice XML document Exception Any exception returned during checking */ void checkinvoice(inputstream invoicexml) throws Exception; Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
8 Per implementare il metodo checkinvoice() è necessario: 1 Ottenere un parser XML; 2 Parsare il documento XML passato come inputstream; 3 Inizializzare a 0 il totale; 4 Per ogni elemento bisogna calcolare il totale parziale del prodotto ordinato (quantità X prezzo) e aggiornare il totale; 5 Sommare il costo delle tasse al totale; 6 Sommare i costi di trasporto al totale; 7 Confrontare il totale calcolato con quello riportato nel documento XML; 8 Se le somme non coincidono, lanciare un eccezione; 9 altrimenti, esci. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
9 Processamento XML: approccio orientato ai dati L approccio orientato ai dati prevede la generazione di classi customizzate per la realizzazione di un mapping con i tipi di dato definiti dal documento XML. Ad esempio: class Address {... class Item {... class InvoiceItem extends Item {... class Invoice { int id; Date submitted; Address billto; Address shipto; InvoiceItem order[]; float tax; float shippingandhandling; float totalcost; Il processo di conversione dei dati applicativi in XML è chiamato marshalling, mentre il processo di conversione inverso unmashalling. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
10 Compilatori di schemi E possibile customizzare il binding tra dati XML e i tipi di dato che vengono generati. La comunità Java standardizzato il mapping tra tipi di dato XML schema e tipi di dato Java (JAXB 2.0) Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
11 Architettura di JAXP SAX Durante il parsing vengono invocati tutti i metodi callback registrati. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
12 Principali classi di JAXP SAX Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
13 Interfacce callback ContentHandler Contiene metodi per tutti i gli eventi principali del parsing XML: void startdocument() void enddocument() void startelement(string namespaceuri, String localname, String qname, Attributes atts) void characters(char[] ch, int start, int length) ErrorHandler Contiene metodi per la ricezione delle notifiche di errore void error(saxparseexception exception) void fatalerror(saxparseexception exception) DTDHandler. EntityResolver. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
14 Esempio di come SAX genera gli eventi <?xml version="1.0" encoding="utf-8"?> <sampledoc> <greeting>hello, world!</greeting> </sampledoc> Eventi generati start document start element: sampledoc star element: greeting characters: Hello, world! end element: greeting end element: sampledoc end document Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
15 Implementazione di invoicechecker() con SAX public class InvoiceCheckerSAX extends DefaultHandler implements InvoiceChecker { // Class-level data // invoice running total double runningtotal = 0.0; // invoice total double total = 0.0; // Utility data for extracting money amounts from content boolean ismoneycontent = false; double amount = 0.0; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
16 /** * Check invoice totals. invoicexml Invoice XML document Exception Any exception returned during checking */ public void checkinvoice(inputstream invoicexml) throws Exception { // Use the default (non-validating) parser SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxparser = factory.newsaxparser(); // Parse the input; we are the handler of SAX events saxparser.parse(invoicexml, this); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
17 // SAX DocumentHandler methods public void startdocument() throws SAXException { runningtotal = 0.0; total = 0.0; ismoneycontent = false; public void enddocument() throws SAXException { // Use delta equality check to prevent cumulative // binary arithmetic errors. In this case, the delta // is one half of one cent if (Math.abs(runningTotal - total) >= 0.005) { throw new SAXException( "Invoice error: total is " + Double.toString(total) + " while our calculation shows a total of " + Double.toString(Math.round(runningTotal * 100) / 100.0)); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
18 public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes attrs) throws SAXException { if (localname.equals("item")) { // Find item subtotal; add it to running total runningtotal += Integer.valueOf(attrs.getValue(namespaceURI, "quantity")).intvalue() * Double.valueOf(attrs.getValue(namespaceURI, "unitprice")).doublevalue(); else if (localname.equals("tax") localname.equals("shippingandhandling") localname.equals("totalcost")) { // Prepare to extract money amount ismoneycontent = true; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
19 public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException { if (ismoneycontent) { if (localname.equals("totalcost")) { total = amount; else { // It must be tax or shippingandhandling runningtotal += amount; ismoneycontent = false; public void characters(char buf[], int offset, int len) throws SAXException { if (ismoneycontent) { String value = new String(buf, offset, len); amount = Double.valueOf(value).doubleValue(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
20 Architettura di DOM Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
21 Interfacce principali di DOM Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
22 Implementazione di invoicechecker() con DOM public class InvoiceCheckerDOM implements InvoiceChecker { /** * Check invoice totals. * invoicexml Invoice XML document Exception Any exception returned during checking */ public void checkinvoice(inputstream invoicexml) throws Exception { // Invoice running total double runningtotal = 0.0; // Obtain parser instance and parse the document DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Document doc = builder.parse(invoicexml); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
23 // Calculate order subtotal NodeList itemlist = doc.getelementsbytagname("item"); for (int i = 0; i < itemlist.getlength(); i++) { // Extract quantity and price Element item = (Element)itemList.item(i); Integer qty = Integer.valueOf( item.getattribute("quantity")); Double price = Double.valueOf( item.getattribute("unitprice")); // Add subtotal to running total runningtotal += qty.intvalue() * price.doublevalue(); // Add tax Node nodetax = doc.getelementsbytagname("tax").item(0); runningtotal += doublevalue(nodetax); // Add shipping and handling Node nodeshippingandhandling = doc.getelementsbytagname("shippingandhandling").item(0); runningtotal += doublevalue(nodeshippingandhandling); Bianchi [continua] Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
24 // Get invoice total Node nodetotalcost = doc.getelementsbytagname("totalcost").item(0); double total = doublevalue(nodetotalcost); // Use delta equality check to prevent cumulative // binary arithmetic errors. In this case, the delta // is one half of one cent if (Math.abs(runningTotal - total) >= 0.005) { throw new Exception( "Invoice error: total is " + Double.toString(total) + " while our calculation shows a total of " + Double.toString(Math.round(runningTotal * 100) / 100.0)); [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
25 /** * Extract a double from the text content of a DOM node. * node A DOM node with character content. The double representation of the node s content. Exception Could be the result of either a node * that does not have text content being passed in * or a node whose text content is not a number. */ private double doublevalue(node node) throws Exception { // Get the character data from the node and parse it String value = ((CharacterData)node.getFirstChild()).getData(); return Double.valueOf(value).doubleValue(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
26 Java Architecture for XML Binding The Java Architecture for XML Binding (JAXB) offre un modo veloce e convenienete per il binding tra XML schemas and tipi di dato Java. JAXB 2.0 offre importanti novità rispetto a JAXB 1.0, tra cui: Supporto completo a W3C XML Schema; Supporto per il binding Java-to-XML, con un nuovo package (javax.xml.bind.annotation) per cil controllo del binding; Una significativa riduzione del numero delle classi generate a partire da uno schema; Maggiore capacità di validazione; Librerie runtime più leggere. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
27 Architettura di JAXB schema compiler (binding descritto da un XML-based binding language). schema generator (mapping descrito da annotazioni del programma). binding runtime framework. Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
28 Il processo di binding di JAXB Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
29 Utilizzo del compilatore xjc Dopo aver scaricato (dal sito java.sun.com) ed installato il Java Web Service Developer Pack 2.0 (jwsdp-2.0): Unix Shell invoice]$ $JWSDP_HOME/jaxb/bin/xjc.sh invoice.xsd parsing a schema... compiling a schema... com/skatestown/ns/invoice/invoicetype.java com/skatestown/ns/invoice/itemtype.java com/skatestown/ns/invoice/objectfactory.java com/skatestown/ns/invoice/package-info.java com/skatestown/ns/po/addresstype.java com/skatestown/ns/po/itemtype.java com/skatestown/ns/po/objectfactory.java com/skatestown/ns/po/potype.java com/skatestown/ns/po/package-info.java [localhost@localdomain invoice]$ Queste classi possono essere compilate ed utilizzate per implementare checkinvoice(). Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
30 La classe InvoiceType public class InvoiceType { protected AddressType billto; protected AddressType shipto; protected Order order; protected BigDecimal tax; protected BigDecimal shippingandhandling; protected BigDecimal totalcost; protected BigInteger customerid; protected BigInteger id; protected XMLGregorianCalendar submitted; [continua] Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
31 public AddressType getbillto() {... public void setbillto(addresstype value) {... public AddressType getshipto() {... public void setshipto(addresstype value) {... public Order getorder() {... public void setorder(order value) {... public BigDecimal gettax() {... public void settax(bigdecimal value) {... public BigDecimal getshippingandhandling() {... public void setshippingandhandling(bigdecimal value) {... public BigDecimal gettotalcost() {... public void settotalcost(bigdecimal value) {... public BigInteger getcustomerid() { public void setcustomerid(biginteger value) {... public BigInteger getid() {... public void setid(biginteger value) {... public XMLGregorianCalendar getsubmitted() {... public void setsubmitted(xmlgregoriancalendar value) {... public static class Order { protected List<ItemType> item; public List<ItemType> getitem() { Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
32 Modify Marshal Example import java.io.fileinputstream; import java.io.ioexception; import java.math.bigdecimal; import javax.xml.bind.jaxbcontext; import javax.xml.bind.jaxbelement; import javax.xml.bind.jaxbexception; import javax.xml.bind.marshaller; import javax.xml.bind.unmarshaller; import primer.po.*; public class Main { public static void main( String[] args ) { try { // create a JAXBContext capable of handling classes generated i // the primer.po package JAXBContext jc = JAXBContext.newInstance( "primer.po" ); // create an Unmarshaller Unmarshaller u = jc.createunmarshaller(); Bianchi [continua] Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
33 // unmarshal a po instance document into a tree of Java content // objects composed of classes from the primer.po package. JAXBElement poe = (JAXBElement)u.unmarshal(new FileInputStream( "po.xml" ) ); PurchaseOrderType po = (PurchaseOrderType)poe.getValue(); // change the billto address USAddress address = po.getbillto(); address.setname( "John Bob" ); address.setstreet( "242 Main Street" );... // create a Marshaller and marshal to a file Marshaller m = jc.createmarshaller(); m.setproperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ) m.marshal( poe, System.out ); catch( JAXBException je ) { je.printstacktrace(); catch( IOException ioe ) { ioe.printstacktrace(); Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
34 Per approfondire l utilizzo di JAXB 2.0 far riferimento al The Java EE 5 Tutorial scaricabile gratuitamente dal sito Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
35 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 15, / 52
Introduzione a The Java Architecture for XML Binding (JAXB)
Laboratorio di Programmazione Distribuita Introduzione a The Java Architecture for XML Binding () Dott. Marco Bianchi Università degli Studi di L'Aquila bianchi@di.univaq.it http://di.univaq.it/~bianchi
DettagliUniversità degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM
Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web T A.A. 2014 2015 Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Agenda Creazione di documenti XML Creazione di documenti DTD Creazione
DettagliUniversità degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web T A.A. 2014 2015. Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM
Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web T A.A. 2014 2015 Esercitazione 2 XML, DTD, XSD, Parser SAX/DOM Agenda Creazione di documenti XML Creazione di documenti DTD Creazione
DettagliXML e XSD. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com
XML e XSD Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com Ordine di Acquisto Servizio: eshop Operazione: ordine di acquisto Dati dell'ordine: prodotti quantità corriere Playstation 2 Controller
DettagliLaboratorio di sistemi interattivi. Struttura di un applicazione Java-XML. Lezione 12: Java & XML
Laboratorio di sistemi interattivi Lezione 12: Java & XML 1 Struttura di un applicazione Java-XML Parser analizza il contenuto di un file XML Produce eventi in corrispondenza delle diverse componenti Eventi
DettagliOperazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)
DettagliSAX e DOM. Analisi di un documento
SAX e DOM Programmazione in Ambienti Distribuiti A.A. 2003-04 Analisi di un documento Il parser è uno modulo software utilizzato per l analisi di un documento Eseguire il parsing di un documento significa
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione XML: JDOM versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
DettagliProva d Esame 07.04.2006 Compito B
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliSpring WS Sviluppare WebService in Java
Spring WS Sviluppare WebService in Java 1.1 Introduzione Nell ambito della programmazione Java è particolarmente utile avere una certa familiarità con i WebService e la tecnologia che li supporta. In particolare
DettagliProgrammazione ad Oggetti Modulo A (Esame del 11/9/2015)
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliElaborazione di documenti XML
Elaborazione di documenti XML Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.13 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria XML e i linguaggi di
DettagliProva d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
DettagliSpecifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
DettagliArchitettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliLaboratorio di Sistemi Distribuiti Leonardo Mariani
Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante
DettagliJava threads (2) Programmazione Concorrente
Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and
DettagliMOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY
MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY 1 Sommario 1. INTRODUZIONE... 3 2. GET METAIO... 4 2.1. PREREQUISITI... 4 2.2. INTALLAZIONE... 4 2.3. PROGETTI ESEMPLIFICATIVI... 4 3. USARE
DettagliSiti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
Dettagli1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org
1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org Applicazione J2EE sul SAP WAS con SAP NWDS. Il SAP Web Application Server fornisce un framework integrato per lo sviluppo e l
DettagliSAPIENZA Università di Roma, Facoltà di Ingegneria
SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione
DettagliMappare il DB senza XML. Introduzione alle annotation di Hibernate3
Introduzione alle annotation di Hibernate3 a cura di Lucio Benfante Hibernate Hibernate è un framework che realizza un object/relational mapping (ORM) fra oggetti Java e strutture di un database relazionale
DettagliXML. Spunti per la parte esercitativa. Simon Pietro Romano
XML Spunti per la parte esercitativa Simon Pietro Romano spromano@unina.it PARTE I Concetti generali SAX vs DOM SAX: Simple API for XML event-driven, serial-access mechanism that does element-by-element
Dettagli1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages
1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages Le JSP DynPages sono un utile strumento, fornito da SAP Netweaver, per una gestione più evoluta di event handling e session
DettagliCorso di Applicazioni Telematiche
XML: extensible Markup Language Parte II Corso di Applicazioni Telematiche A.A. 2011-2012 Prof. Simon Pietro Romano Università degli Studi di Napoli Federico II Facoltà di Ingegneria Outline Parte I XML:
Dettagli7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:
7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)
DettagliTest di unità con JUnit4
Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
DettagliProgrammazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
DettagliJUG Ancona Italy. Google Web Toolkit. Giovanni Baleani Programmatore Java. Filippetti S.r.l.
JUG Ancona Italy Google Web Toolkit Giovanni Baleani Programmatore Java Filippetti S.r.l. AJAX e GWT - AJAX: Tecnologia emergente, tra le prime applicazione ajax ci sono proprio gmail e google calendar.
DettagliProgrammazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
DettagliGestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)
Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione
DettagliParola chiave extends
Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi
DettagliEsercizi della lezione 5 di Java
Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore
DettagliIl Web-Service SDMX dell ISTAT
Il Web-Service SDMX dell ISTAT Versione: 1.0.0 Data: 05/06/2014 Autore: Approvato da: Modifiche Versione Modifiche Autore Data Indice dei contenuti 1 Introduzione... 4 2 Creazione dell esempio d uso...
Dettagli3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
DettagliGestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint
parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro
DettagliLinguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java
DettagliConcetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
DettagliPRACTICAL DEVELOPMENT OF A WEB SERVICE
PRACTICAL DEVELOPMENT OF A WEB SERVICE 1 JAX-WS 2.0 Java API for XML Web Services Specifica basata su annotazioni Applicata su classi ed interfacce in modo da definire e gestire automaticamente il protocollo
DettagliLa prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
DettagliRealizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
DettagliClient e Server comunicano tramite il protocollo SOAP.
In questo tutorial implementeremo un semplice SOAP web service in PHP che un client Java richiamerà. In questo modo mostreremo l'interoperabilità fra linguaggi diversi che SOAP permette di avere. La struttura
DettagliTecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Java Servlet Parte a versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca
DettagliTricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002
Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE
Dettagli20 - Input/Output su File
20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliOrganizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()
Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il
Dettagli4 Anno 2011 - Informatica ABACUS
Testo Il Ministero dell Ambiente commissiona lo sviluppo di un nuovo Sistema Informativo per censire la fauna e la flora presenti nei vari parchi naturali di ciascuna regione. Le informazioni della fauna
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione
DettagliEclipse. Avviare un progetto e compilare un semplice programma
Eclipse Avviare un progetto e compilare un semplice programma Descrizione di Eclipse Eclipse è un ambiente di sviluppo che facilita la scrittura ed il debug di programmi java Permette di: Scrivere il codice
DettagliSAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
DettagliNascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
DettagliMultithreading in Java. Fondamenti di Sistemi Informativi 2014-2015
Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla
DettagliRMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it
Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti
DettagliArchitettura Client-Server
Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliStruttura di un programma Java
Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che
DettagliLaboratorio di Sistemi Distribuiti
Laboratorio di Sistemi Distribuiti Bianchi Marco Univ. Roma Tor Vergata November 8, 2006 Bianchi Marco (Univ. Roma Tor Vergata) Laboratorio di Sistemi Distribuiti November 8, 2006 1 / 73 Introduzione ad
DettagliFlussi, lettori e scrittori
Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,
Dettagli13. Chain of Responsibility
Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire
DettagliIntroduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1
Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language a.a. 2004/05 Tecnologie Web 1 XML - I XML (exstensible Markup Language): XML è un formato standard,
DettagliAssembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive
Assembler di Spim Assembler di SPIM Il programma è organizzato in linee Ogni linea può contenere un commento che parte dal carattere # e si estende fino alla fine della linea Ogni linea che non sia bianca
DettagliCompute engine generici in RMI
Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del
DettagliProgrammazione ad Oggetti: JAVA. Esercitazione
Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore
DettagliProgrammazione su Reti
Programmazione su Reti Esempio di applicazione Client Server su protocollo Soap Fabio Donatantonio Applicazione Applicazione Client-Server per la gestione di un elenco di persone con relativi dati. Viene
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo
DettagliLa prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD
La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e
DettagliJAXP: Java API for XML Processing. Marco Tessarotto Programmazione dei Web Server Anno Accademico
JAXP: Java API for XML Processing Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JAXP: Java API for XML processing JAXP: elaborazione di dati XML in Java Utilizza i parser che
DettagliCreare client statici
Client statico Creare client statici Un client statico crea, a partire dal WSDL di un servizio, un insieme di classi di supporto client-side (stub) Sono necessari solo 2 passi: 1. parsing del WSDL pubblicato
Dettagli3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura
DettagliDATI IDENTIFICATIVI DEL PROGETTO
DATI IDENTIFICATIVI DEL PROGETTO N. VERSIONE 1.0 ITEM Integrazione con Java DATA DI USCITA PREVISTA DESCRIZIONE Creazione di DLL per integrazioni con Java Pag. 1 di 9 Descrizione dei requisiti Sezione
DettagliProgrammazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012
Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente
DettagliGestione delle Eccezioni
Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un
DettagliCifratura simmetrica
Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave
DettagliOttava Esercitazione. introduzione ai thread java mutua esclusione
Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione
DettagliChat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliQUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio
QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Thread versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliJava Remote Method Invocation
Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino
DettagliMain System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
DettagliProgrammazione in Java Parte I: Fondamenti
Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice
DettagliProgetto Automi e Linguaggi Parser svliluppato con JLex e cup
Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la
DettagliEsercitazione n 4. Obiettivi
Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire
DettagliUso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
DettagliReflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione
DettagliJava:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
DettagliCorso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging
Corso di programmazione di sistemi mobile 1 Android Google Cloud Messaging Corso di programmazione di sistemi mobile 2 Cos è Il Google Cloud Messaging o GCM è un servizio di Google che permette di inviare
DettagliLaboratorio di Informatica Lezione 4
Laboratorio di Informatica Lezione 4 Cristian Consonni 28 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 4 1 / 42 Outline 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte
Dettagli19. Introduzione al multi-threading
19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
Dettagli10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
Dettagli