title: Java Architecture for XML Binding
text: # Java Architecture for XML Binding
  
  Java Architecture for XML Binding (JAXB) è una delle API della Java Enterprise Edition, fa parte del Java Web Services Development Pack (JWSDP) ed è una delle tecnologie di base del progetto Web Services Interoperability Technology (WSIT) promosso dalla Sun Microsystems; inoltre, a partire dalla versione 1.6, JAXB è inclusa anche in Java SE.
  
  JAXB permette agli sviluppatori Java di effettuare il mapping tra classi e una loro corrispondente rappresentazione XML. JAXB fornisce la possibilità di serializzare oggetti Java in XML (marshalling) e di effettuare l'operazione inversa (unmarshalling), cioè permette di ottenere a partire da un file XML la corrispondente rappresentazione a oggetti Java. JAXB permette quindi di manipolare file XML senza la necessità di implementare alcuna routine specifica per il salvataggio e la lettura di dati.
  
  JAXB 1.0 fu sviluppato nell'ambito del Java Community Process come JSR 31. Dal 2006, JAXB 2.0 viene sviluppata come JSR 222. L'implementazione delle specifiche di JAXB è disponibile sotto licenza CDDL.
  
  ## Utilizzo
  
  Il pacchetto JAXB include il compilatore xjc, che viene usato per convertire XML Schema e altri formati di descrizione XML (a partire da Java 1.6, il supporto a RELAX NG, XML DTD e WSDL è in fase di sperimentazione) in classi Java. Il meccanismo di mapping tra XML Schema e Java viene implementato mediante l'uso delle annotazioni definite nel package javax.xml.bind.annotation. Ad esempio @XmlRootElement e @XmlElement annotano le classi Java che rappresentano, rispettivamente, l'elemento radice del file XML e un elemento generico.
  
  In aggiunta a xjc, JAXB fornisce anche schemagen, un compilatore che effettua l'operazione inversa di xjc, cioè la generazione di un file XML Schema a partire da un insieme di classi Java annotate secondo le specifiche di JAXB.
  
  ## Binding predefiniti
  
  La tabella seguente elenca il mapping di alcuni dei principali tipi definiti in XML Schema in tipi di dato Java.
  
  | XML Schema Type | Java Data Type |
  | - | - |
  | xsd:string | java.lang.String |
  | xsd:positiveInteger | java.math.BigInteger |
  | xsd:int | int |
  | xsd:long | long |
  | xsd:short | short |
  | xsd:decimal | java.math.BigDecimal |
  | xsd:float | float |
  | xsd:double | double |
  | xsd:boolean | boolean |
  | xsd:byte | byte |
  | xsd:QName | javax.xml.namespace.QName |
  | xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
  | xsd:base64Binary | byte |
  | xsd:hexBinary | byte |
  | xsd:unsignedInt | long |
  | xsd:unsignedShort | int |
  | xsd:unsignedByte | short |
  | xsd:time | javax.xml.datatype.XMLGregorianCalendar |
  | xsd:date | javax.xml.datatype.XMLGregorianCalendar |
  | xsd:g | javax.xml.datatype.XMLGregorianCalendar |
  | xsd:anySimpleType | java.lang.Object |
  | xsd:anySimpleType | java.lang.String |
  