blob: 27847881bbff839b6ed2bc80a7f8abad16a174a5 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "document-v12.dtd">
<document>
<header>
<title>Welcome to XMLBeans</title>
</header>
<body>
<section>
<title>Introduction to XMLBeans</title>
<p>XMLBeans is a tool that allows you to access the <em>full</em> power of XML in a Java friendly way. It is an XML-Java binding tool. The idea is that you can
take advantage the richness and features of XML and XML Schema and have these features mapped as naturally as possible to the equivalent Java language and typing
constructs. XMLBeans uses XML Schema to <em>compile</em> Java interfaces and classes that you can then use to access and modify XML instance data.
Using XMLBeans is similar to using any other Java interface/class, you will see things like <code>getFoo</code> or <code>setFoo</code> just as
you would
expect when working with Java. While a major use of XMLBeans is to access your XML instance data with strongly typed Java classes there are also
API's that allow you access to the full XML infoset (XMLBeans keeps full XML Infoset fidelity) as well as to allow you to <em>reflect</em> into the XML schema
itself through an XML Schema Object model.</p>
<p>For more details on XMLBeans see the <link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansExplanation">XMLBeans Explanation</link> Wiki page.
As well as the XMLBeans documentation (see the Documentation tab on this website as well as the docs directory in the XMLBeans Source).</p>
<section>
<title>What makes XMLBeans Different</title>
<p>There are at least two major things that make XMLBeans unique from other XML-Java binding options.</p>
<ol>
<li>
<strong>Full XML Schema support.</strong> XMLBeans fully supports XML Schema and the corresponding java classes provide constructs
for all of the major functionality of XML Schema. This is critical since often times you do not have control over the features of XML Schema
that you need to work with in Java. Also, XML Schema oriented applications can take full advantage of the power of XML Schema and not
have to restrict themselvs to a subset.</li>
<li>
<strong>Full XML Infoset fidelity.</strong>When unmarshalling an XML instance the full XML infoset is kept and is available to the developer. This is
critical because because of the subset of XML that is not easily represented in java. For example, order of the elements or comments might
be needed in a particular application.</li>
</ol>
<p>A major objective of XMLBeans has been to be applicable in <em>all</em> non-streaming (in memory) XML programming situations. You should be
able to compile your XML Schema into a set of java classes and know that 1) you will be able to use XMLBeans for all of the schemas you encounter
(even the warped ones) and 2) that you will be able to get to the XML at whatever level is necessary - and not have to resort to multple
tools to do this.</p>
<p>To accomplish this XMLBeans provides three major APIs:</p>
<ul>
<li>
<strong>XmlObject</strong> The java classes that are generated from an XML Schema are all derived from XmlObject. These provide strongly
typed getters and setters for each of the elements within the defined XML. Complex types are in turn XmlObjects. For example getCustomer
might return a CustomerType (which is an XmlObject). Simple types turn into simple getters and setters with the correct java type. For
example getName might return a String.</li>
<li>
<strong>XmlCursor</strong> From any XmlObject you can get an XmlCursor. This provides efficient, low level access to the XML Infoset. A cursor
represents a position in the XML instance. You can move the cursor around the XML instance at any level of granularity you need
from individual characters to Tokens.</li>
<li>
<strong>SchemaType</strong> XMLBeans provides a full XML Schema object model that you can use to reflect on the underlying schema meta information.
For example, you might want to generate a sample XML instance for an XML schema or perhaps find the enumerations for an element
so that you can display them.</li>
</ul>
<p>All of this was built with performance in mind. Informal benchmarks and user feedback indicate that XMLBeans is extremely fast.</p>
</section>
</section>
<section>
<title>History</title>
<p>XMLBeans was submitted to Apache by BEA Systems in September 2003 and is currently in the Apache incubation process.
XMLBeans was originally created because of the need seen by developers, in particular David Bau
(<link href="http://nagoya.apache.org/eyebrowse/ReadMsg?listName=xmlbeans-dev@xml.apache.org&amp;msgNo=93">David's about me post</link>),
need for a more XML centric Java binding model that nothing on the market offered. XMLBeans 1.0 has been successfully used as an underlying technology for several
products as well as by a growing number of large users including some of the largest companies in the world.</p>
</section>
<section>
<title>Future</title>
<p>The future of XMLBeans is exciting and you are invited to contribute. XMLBeans Version 1 is a great, stable technology that will continue to
improve going forward. Its emphasis on full support for XML Schema and the XML Infoset along with it's performance
charactaristics make it a great choice for in-memory XML-Java programming. </p>
<p>Work has begun on planning XMLBeans 2.0. At this point it appears that the major emphasis for XMLBeans 2.0 are new use cases that expand
the breadth of XMLBeans. The observation is that XML-Java binding occurs in situations that XMLBeans could be optimized for, areas
such as Web Services (XMLBeans works well now in many Web Services situations) and Java to XML Schema scenarios .
See the <link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansRoadMap">XMLBeans Roadmap</link> and the
<link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansFeaturePlan">XMLBeans Feature Plan</link> wiki page for
more information. XMLBeans is actively looking for contributors and committers so, if you are interested, please join in.</p>
</section>
<section>
<title>News and events</title>
<ul>
<li>
<link href="http://apachecon.com/2003/US/index.html">
<img src="http://jakarta.apache.org/images/logos/ac2003-150.gif" alt="apachecon 2003 logo" width="150" height="86"/>
</link>
<link href="http://apachecon.com/2003/US/index.html">ApacheCon US 2003</link>
(16-19 November 2003) is now open for registration. ApacheCon is
the conference for all things Apache. Come along and learn about
a range of new technologies, meet some Apache folks and share
the knowledge. David Bau is scheduled to speak about XMLBeans
on Monday, Nov 17 from 2:30 to 3:30
(<link href="http://apachecon.com/2003/US/html/sessions.html">ApacheCon Schedule</link>).
</li>
</ul>
</section>
</body>
</document>