Encoder versus OTD Gabriel Badescu, Jun Xu Sun Microsystems, Inc.

Slides:



Advertisements
Similar presentations
Programming Paradigms and languages
Advertisements

Apache Struts Technology
JAXB Java Architecture for XML Binding Andy Fanton Khalid AlBayat.
Sergio Ferreira MoreData I16 Thursday, October 12, :30 a.m. – 11:30 a.m. Platform: Informix How to call Informix 4gl code from J2EE.
ILDG File Format Chip Watson, for Middleware & MetaData Working Groups.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
XML Parsing Using Java APIs AIP Independence project Fall 2010.
J2ME Web Services Specification.  With the promise to ease interoperability and allow for large scale software collaboration over the Internet by offering.
MIT iCampus iLabs Software Architecture Workshop June , 2006.
Accelerate your SaaS Integration The Cloud Adapter SDK Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Struts 2.0 an Overview ( )
UNIT-V The MVC architecture and Struts Framework.
JavaServer Faces: The Fundamentals Compiled from Sun TechDays workshops (JSF Basics, Web-Tier Codecamp: JavaServer Faces, Java Studio Creator; IBM RAD)
ESB Guidance 2.0 Kevin Gock
Apache Chemistry face-to-face meeting April 2010.
NetArchive Suite Workshop 2011 Technical Track - Code refactoring with the Spring Framework.
Christopher Jeffers August 2012
1 3. Implementing Web Services 1.Create SOAP proxy interfaces and WSDL based service descriptions 2.Register/publish services 3.Stores service descriptions.
What is Sure BDCs? BDC stands for Batch Data Communication and is also known as Batch Input. It is a technique for mass input of data into SAP by simulating.
SSC2: Web Services. Web Services Web Services offer interoperability using the web Web Services provide information on the operations they can perform.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Thank You ©2012, Cognizant. Rapido has been created by the Research and Development team from QE&A Technology CoE Rapido is continuously enhanced and.
Eric Westfall – Indiana University Jeremy Hanson – Iowa State University Building Applications with the KNS.
THE GITB TESTING FRAMEWORK Jacques Durand, Fujitsu America | December 1, 2011 GITB |
95-843: Service Oriented Architecture 1 Master of Information System Management Service Oriented Architecture Lecture 10: Service Component Architecture.
XML in Development of Distributed Systems Tooling Programming Runtime.
Codeigniter is an open source web application. It occupies a very small amount of space in the memory and is most useful for developers who aim to develop.
Web Services based e-Commerce System Sandy Liu Jodrey School of Computer Science Acadia University July, 2002.
Component frameworks Roy Kensmil. Historical trens in software development. ABSTRACT INTERACTIONS COMPONENT BUS COMPONENT GLUE THIRD-PARTY BINDING.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Wrapping Scientific Applications As Web Services Using The Opal Toolkit Wrapping Scientific Applications As Web Services Using The Opal Toolkit Sriram.
SIMO SIMulation and Optimization ”New generation forest planning system” Antti Mäkinen & Jussi Rasinmäki Dept. of Forest Resource Management.
ModelPedia Model Driven Engineering Graphical User Interfaces for Web 2.0 Sites Centro de Informática – CIn/UFPe ORCAS Group Eclipse GMF Fábio M. Pereira.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Presented By:. What is JavaHelp: Most software developers do not look forward to spending time documenting and explaining their product. JavaSoft has.
Static SDO Proposal Main Points/ Next Steps. Goals of specification Not about the algorithm to generate Static SDOs Instead, about how Static SDOs map.
Leveraging ColdSpring to build a robust Flex applications Chris Scott, Cynergy Systems.
1 RIC 2009 Symbolic Nuclear Analysis Package - SNAP version 1.0: Features and Applications Chester Gingrich RES/DSA/CDB 3/12/09.
1 1 Gabriel Badescu Jun Xu Encoder Road Map. Sun Confidential: Internal Only 2 Encoders Today.
Component Base Class Rationale
1 Niklas Nebel Sun Microsystems NEW FEATURES IN CALC
Intro to JavaServer Faces Mimi Opkins CECS 493 Fall 2016.
Hello NetBeans Platform
DDC 2223 SYSTEM SOFTWARE DDC2223 SYSTEM SOFTWARE.
.NET Omid Darroudi.
Chapter 16 – Software Reuse
Operating System Structures
TIM 58 Chapter 7: Moving on to Design
A Web Services Journey on the .NET Bus
JavaOne BOF: The Legacy Developer’s Guide to Java 9
Chapter 11 Object-Oriented Design
Software Design and Architecture
Distribution and components
Magento Technical Guidelines Eugene Shakhsuvarov, Software Magento
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
API Documentation Guidelines
Distributed System Using Java 2 Enterprise Edition (J2EE)
SwE 455 Tutorial.
Service Oriented Architecture (SOA)
JavaServer Faces: The Fundamentals
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
Smart Integration Express
Presents: Rally To Java Conversion Suite
The JSF Tools Project – WTP (internal) release review
Web Client Side Technologies Raneem Qaddoura
Enterprise Web Services
Games Development 2 Entity / Architecture Review
Eurostat Unit B3 – IT and standards for data and metadata exchange
CSPA Templates for sharing services
CSPA Templates for sharing services
Presentation transcript:

Encoder versus OTD Gabriel Badescu, Jun Xu Sun Microsystems, Inc

2 How Are They Different?

Sun Microsystems, Inc 3 OTD is meant for old fashioned Java centric application integration. It is a wrapper around everything being used in Java Collaboration (such as a message or a connector). In terms of messageable OTD, OTD is the message. And in terms of non-messageable OTD, OTD is the connector, for example. OTD

Sun Microsystems, Inc 4 Encoder Encoder is meant for enabling new fashioned SOA technology to understand what legacy enterprise systems speak. Conceptually it has some similarity to messageable OTD, but it is NOT a wrapper of anything. It is a core library (plus some design time tooling support) that concentrates on data conversion and validation (from legacy format to XML and vice versa).

Sun Microsystems, Inc 5 Why Encoder Technology? ● Function Cohesive (easy to understand and explain) ● Simple, Lightweight and Well-Defined Infrastructure (easy to learn and work with) ● Open, Flexible yet Consistent Metadata Format (easy to exchange and maintain) ● Service Provider Based Pluggability for Runtime (easy to plug in new encoder runtime support) ● Service Provider Based Pluggability for Design Time (easy to plug in new encoder design time tooling support)

Sun Microsystems, Inc 6 Continued ● Streaming Interface Support (ready for future enhancement) ● Use SAXSource and ContentHandler Internally (good performance) ● Interpretative Parsing and Marshaling (no codegen, resource efficient, fast deployment) ● Standards Driven (support full features of certain specification)

Sun Microsystems, Inc 7 Continued ● Binding Technology Agnostic (utilize the best of everything) ● Java Story Still Supported (easy to use in Java code) ● Support Customization at Different Levels (good for ESRs)

Sun Microsystems, Inc 8 Function Cohesive Encoder runtime only does data conversion. It is very function cohesive. While OTD is wrapper of everything and it's hard to describe what it really is.

Sun Microsystems, Inc 9 Simple, Lightweight and Well-Defined Infrastructure OTD framework contains Forest and FOG APIs, Layering, Codegen framework and big amount of glue code, which is a very heavy infrastructure. Using it involves big learning curve. Too much wrapping is also error prone. Encoder framework, on the other hand, is much simpler. It only contains a few major interfaces and classes, plus some runtime support classes. It's very easy to learn and use.

Sun Microsystems, Inc 10 OTD metadata is API based and its persistency format is proprietary. There is no easy way for user to find the persisted OTD metadata, to understand it or to exchange it. Encoder metadata, on the other hand, is based on XSD, which is an open standard. Encoder specific meta- information is stored in XSD's annotation and the XML structures in annotations are also defined by XSDs. Open, Flexible yet Consistent Metadata Format

Sun Microsystems, Inc 11 Sample Metadata 10 RPIE-CODENR PIC X(2) 10 RPIE-CODENR X(2) Very straight forward, right? Everyone understands this at first glance.

Sun Microsystems, Inc 12 Service Provider Based Pluggability for Runtime New encoder provider runtime can be found by the encoder framework once it implements the EncoderProvider interface (the SPI) and expose the implementation class through the service provider mechanism. The contract between encoder framework and encoder provider is very straight forward.

Sun Microsystems, Inc 13 Service Provider Based Pluggability for Design Time Encoder Metadata Editor – Encoder GUI extension can be plugged into XSD editor through AppInfoProvider SPI. Encoder Metadata Validator – Encoder specific validation extension can be plugged into XSD validation framework through XAM Validator SPI.

Sun Microsystems, Inc 14 Sample: Custom Encoder GUI Extension

Sun Microsystems, Inc 15 Sample: Custom Encoder Validation Extension

Sun Microsystems, Inc 16 Streaming Interface Support In addition to methods that use String or byte[] as parameter data type, the Encoder interface has a set of decoding methods that use InputStream or Reader as input parameter data type and use Source as output parameter data type. It also has a set of encoding methods that use Source as input parameter data type and use OutputStream or Writer as output parameter data type. This way, at interface level, streaming support is not a problem. Actually HL7 and COBOL Copybook encoders also do streaming processing internally.

Sun Microsystems, Inc 17 Use SAXSource and ContentHandler Internally Encoder implementation returns SAXSource as output and favors SAXSource as input. This ensures better performance and lower resource consumption over DOMSource. Of course if other components (SEs, BCs) always turn a SAXSource into a DOMSource, overall processing may not benefit from it too much. But if encoder is directly used in Java code, this might be a big benefit.

Sun Microsystems, Inc 18 Interpretative Parsing and Marshaling Encoder providers being implemented so far (Custom, HL7, COBOL Copybook) all use interpretative parsing and marshaling. No code generation is needed. For huge metadata, resource consumption is relatively lower during deployment and the deployment process is faster without codegen. Also, it avoids some tricky class loading issues when being used in JBI environment. Performance-wise there shouldn't be much difference since the descriptors are loaded only once.

Sun Microsystems, Inc 19 Standards Driven Encoder implementation usually tries to follow the standards if there are any. For example, HL7 encoder follows the HL7 v2 specification and HL7 v2 XML encoding specification. Besides handling normal data adhere to HL7 v2 rules, it also handles unrecognized data and escape sequences in an HL7 recommended way.

Sun Microsystems, Inc 20 Binding Technology Agnostic Encoder only focuses on data conversion. It is up to the user to decide if binding technology should be used after encoder has done its job, or what binding technology should be used. There are so many XML binding technologies out there. We do not want to compete with them. Let them do their job and we do ours. If user likes JAXB, just uses JAXB. If he/she likes XmlBeans, just uses XmlBeans.

Sun Microsystems, Inc 21 Java Story Still Supported People may think that encoder technology is developed only for JBI environment. Actually this is not true. Encoders can be used in plain Java as well (E.g., in JavaSE or JavaEE projects). Every encoder provider's runtime is packaged as a NetBeans library module and can be added to the classpath of a JavaSE or JavaEE project and be used in Java code. Please see the screen shot in next slide.

Sun Microsystems, Inc 22 Encoder Runtime Packaged as NetBeans Library Modules

Sun Microsystems, Inc 23 Support Customization at Different Levels An encoder's behavior can be configured at three levels: [level-1] In the encoder's metadata [level-2] In encoding style string [level-3] Through an EncoderProperties instance when decode or encode method is called. The precedence rule is level3 > level2 > level1.

Sun Microsystems, Inc 24 Continued This mechanism is very handy, especially when user wants to tweak an encoder's behavior without touching its metadata. For example, user can pass in or override two properties through encoding style string as below: cocoencoder-1.0?displaycoding=cp037&display1coding=GB18030 On the other hand, an OTD's behavior can only be configured in its metadata (level-1).

Sun Microsystems, Inc 25 Prerequisite Users must know XML and XSD well to use encoder technology well because they are first class citizens in JBI based ESB offering!

Sun Microsystems, Inc 26 Thanks.