raghavachari

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

By: chro (21 month(s) ago)

please create a download link for features of java ppt

Presentation Transcript

XJ: Robust XML Processing in Java™: 

XJ: Robust XML Processing in Java™ Mukund Raghavachari with Rajesh Bordawekar, Michael Burke, and Igor Peshansky

XML is Pervasive: 

XML is Pervasive Messaging Legacy Databases Web Services Programming is tedious, error-prone, and inefficient

DOM : 

DOM Verbose No static schema type checking Reflection-like programming style Performance an issue Element recipe = new Element(“recipe"); Element ingredient = new Element(“ingredient"); recipe.appendChild(recipe);

JAXB: 

JAXB Converts XML Schema types into Java classes Java type system cannot express schema content models Difference between attributes and elements Ordering Some static type checking XPath evaluation by passing strings No static type checking or optimization

XSLT and XQuery: 

XSLT and XQuery Domain-specific languages for processing XML Certain programming tasks may be complex Integration with Java programs is awkward Java programs must still pass and process XML data to these languages using runtime APIs: DOM XQJ

XJ Design Goals: 

XJ Design Goals Make XML a first-class construct in Java Consistency with XML standards (Namespaces, XML Schema, XPath) Minimal changes to Java Efficiency Support both schema and schema-less processing XML processing applications are easier to write, more robust, and efficient

XJ Features: 

XJ Features Language extensions In-line XML construction Integrated XPath In-place XML updates All of the above with or without XML Schema Import of XML Schemas Efficient implementation Native XPath compilation support Eclipse plug-in To be released soon

Sample XJ Program: 

Sample XJ Program import com.amazon.devheavy.*; import com.amazon.devheavy.ProductInfo.Details; import myOutput.*; public Book checkReviews (ProductInfo pi, String title, String author, float goodRating) { Sequence<Details> bookSeq = pi[| .//Details[ProductName = $title] |]; for (XMLCursor<Details> iter = bookSeq.iterator(); iter.hasNext();) { Details book = iter.next(); if (!book[| [$author = .//Author] |].isEmpty()) { double discountMult = 0.5; if (!book[| [.//AvgCustomerRating > $goodRating] |].isEmpty() ) discountMult = 0.75; Book result = new Book(<Book name='{title}' > <isbn> {book[| /Isbn |] } </isbn> <price> {book[| //Price |] * discountMult} </price> </Book>); return result; }}} Refer to schema declarations Inline XPath XML Construction

XPath Navigation: 

XPath Navigation context [| query |] The primary means of navigating XML data Semantics as defined by the XPath 1.0 standard ProductInfo p = ….; /* Generics for XML types */ Sequence<Details> items = p[| //Details[.//AvgCustomerRating > 3.5] |]; UsedPrice price1 = p [| /UsedPrice |]; String price2 = p [| /UsedPrice |]; /* Automatic unboxing as in Java 5*/ Compiler checks that XPath is well formed and valid according to the schema.

Construction of XML: 

Construction of XML Construction can be specified as: Inline XML (can use xmlns and xsi:type) Can construct “untyped” XML as well InputStream constructor int price = 54; Book b = new Book( <Book year="2004"> <title>C# Concisely</title> <author> <first>Judith</first><last>Bishop</last> </author> <author> <first>Nigel</first><last>Horspool</last> </author> <publisher>Addison-Wesley</publisher> <price> {price} </price> </Book>); XMLElement b = new XMLElement(

XML Updates: 

XML Updates Value update book[|./price|] = 100; or book[|./price|].updateValue(100); Insertion (can operate on a sequence) book.insertChild(author); Deletion (can operate on a sequence) author.detachNode(); Compound update article.rename(“inproceedings”);

XJ Compiler and Runtime System: 

XJ Compiler and Runtime System xjc XJ Source + XML Schemas Eclipse JDT Java bytecode xj JRE

Demo Details: 

Demo Details Based on “recipes” example from XML tutorial Convert list of recipes to HTML Originally XSLT (construction, XPath) Consolidate shopping list XPath + updates

Performance: 

Performance Using the DOM API to evaluate XPath expressions at runtime is inefficient Solution: Compile expressions directly to accesses on DOM tree

Advantages of XJ: 

Advantages of XJ W3C standards compliance Ease of programming Seamless integration with Java Robustness: more errors discovered statically Eclipse plug-in coming soon… Easier maintenance Adapt to changes in XML Schemas Independent of the runtime data representation Optimizations Compiler rewritings

Links: 

Links Web site: http://www.research.ibm.com/xj/ Available for free download on alphaWorks http://www.alphaworks.ibm.com/tech/xj/ E-mail: xj@watson.ibm.com