resource-oriented computing w/ netkerneljava.ociweb.com › javasig › knowledgebase › 2008-01...

69
Resource-Oriented Computing w/ NetKernel : Software for the 21st Century Brian Sletten Zepheira, LLC [email protected]

Upload: others

Post on 29-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Resource-Oriented Computing w/ NetKernel :

Software forthe 21st Century

Brian SlettenZepheira, [email protected]

Page 2: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Speaker Qualifications

Over 14 years of software development experience

Has own software consulting company for design, mentoring, training and development

Currently working in Semantic Web, AOP, Grid Computing, P2P and security consulting

Pinky Committer

Page 3: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Agenda

What the heck is NetKernel?

Why We Care

NetKernel Overview

NetKernel Languages

Advanced Concepts

Pinky

Page 4: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

What the heck is NetKernel?

A micro-kernel based resource ecosystem built around the principles of REST, Unix Pipes and SOA

Page 5: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Why We Care: The Simple Answer

Most enterprise systems use XML and are built in Java and this is still too much of a pain

Complicated

Different Languages for different technologies

Predicting scalability

Page 6: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Why We Care : The Complicated Answer

This is hard because of a general mismatch at the intersection of languages, data model, processing abstractions, architectural tiers, etc.

Page 7: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Larger Trends

1970s 1980s 1990s 2000s

Code written

Dataformatted

Page 8: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

NetKernel

A Ground-Up Resource-oriented computing environment

Modern, microkernel architecture

Takes the best of REST, Unix Pipes, SOA

Open Source w/ Dual License for non-open source uses

Page 9: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Resource-Oriented Computing

Everything is a Resource

Everything is URI-Addressable (logical reference)

“Computation” is the turning of logical resource references into physical representation

Lossless conversion between representations

Page 10: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

REST

Representational State Transfer

Architectural style described in Roy Fielding’s Ph.D. thesis

URLs locate resources in Internet-sized address spaces

Client passes all state in request

Page 11: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

History of Addressing

Network

-----

-----

-----

Documents

http://myserver.com/docs/reports/3rdQtr/

Page 12: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

History of Addressing

Network

Data

http://myserver.com/data/graph/1

Page 13: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

History of Addressing

Network

Service A

Services

http://myserver.com/service/a

Page 14: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

URLs ! => Scalability

Addressability of the resources is important, but REST derives its properties from the architectural constraints

Page 15: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

REST Properties

Page 16: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Unix Influences

Everything is a file (common interface/resource abstraction)

Small, focused, reusable tools

Tools are scripted

Processes have context from environment

Page 17: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

SOA Influences

Loosely-coupled

Asynchronous requests

Reusable services composed through orchestration languages

Page 18: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Putting the Kernel in NetKernel

Internally, a microkernel manages threading resources

Maps URI requests to managed resources and schedules them

Page 19: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

General Concept

Page 20: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Calling a BeanShell Script

Page 21: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XQuery

Page 22: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XSLT

Page 23: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Active URIs

Internally, NetKernel uses a special URI naming scheme

A proposed IETF standard by HP and 1060 Research to encode complex URIs into standard forms

General formactive:<processURI>*(+<inputName>@<inputURI>)

http://ietf.mirror.netmonic.com/draft-butterfield-active-uri-01.txt

Page 25: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

NetKernel Benefits

“Deep” REST environment

Appropriate abstractionsFocus on information, not code!

Layered approach to building applications

Logical connections/requests get resolved at runtime (late-binding)

Page 26: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

NetKernel Properties

Fine-grained caching

Self-optimizing based on use

“Aspect-Oriented” architecture

Security, logging, etc. behind URI interception

Tiny Footprint

Can do “real” work in a VM w/ 10-12MB

Takes full advantage of multi-core, multi-CPU boxes

Page 27: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Basic NetKernel Tour

Page 28: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

NetKernel Concepts(aka Really Cool Terms)

Accessors

Transports

Representations

Aspects

Transreptors

Page 29: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Accessors

URI-addressable component that provides access to NetKernel resources and services

Page 30: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Transport

A component that funnels requests from external sources into NetKernel URI requests (and ultimately Accessors)

ExamplesHTTP

SMTP

JMS

Page 31: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Representations

The ‘R’ in REST

In NetKernel, an object representing the resource

Exposed via immutable, cacheable “views”

Page 32: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Aspects

Not AOP “Aspects”

Immutable views of the underlying representation in a given form

ExamplesJDOM, DOM, String, BinaryStream

Page 33: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Transreptors

Fancy term for “transforming representations”

Transreptors return a resource in a specified form if conversion is possible

Useful for converting between Aspects

Page 34: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

NetKernelLanguages

Page 35: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

DPML

A simple NetKernel scripting language for specifying URI requests

Supports conditionals, loops, subroutines, etc.

Page 36: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

DPML Sample

<idoc><seq><instr><type>copy</type><operand>ffcpl:/usr/local/NetKernel/modules/workbench/nfjs/hello.xml</operand><target>this:response</target>

</instr></seq>

</idoc>

Page 37: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

BasicExamples

Page 38: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XQuery

XML Query Language

W3C Candidate Recommendation

Functional language

FLWOR (For Let Where Order By Return)

Page 39: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XQuery Sample

<abbeysayings>{ for $author in doc("active:xquery+operator@file:/usr/local/ NetKernel/modules/workbench/nfjs/quotations/ authors.xq")//* where $author/name/last = 'Abbey' return $author/quotation}</abbeysayings>

Page 40: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

BeanShell

Supports embedded BSH interpreter

Java source interpreter

Interacts with other scripts, Java, etc.

Makes for very fast scripting

Page 41: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

BeanShell Sample

void main(){ // Extract all speeches with lines // containing the parameter argument req=context.createSubRequest(); req.setURI("active:xquery"); req.addArgument("operator","abbey.xq"); output=context.issueSubRequest(req);

//Finally return response response=context.createResponseFrom(output); context.setResponse(response);}

Page 42: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

“Real World”Examples

Page 43: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XSLT Input Data

Page 44: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XSLT Example

if( context.exists("this:param:param") ) { param=context.sourceAspect("this:param:param", IAspectNVP.class); mbid = param.getValue("mbid");} req=context.createSubRequest();req.setURI("active:httpGet");

url="http://musicbrainz.org/ws/1/artist/" +mbid+ "?type=xml&inc=sa-Album";req.addArgument("url", url);output=context.issueSubRequest(req);

sa= new StringAspect("<albums>" + mbid + "</albums>");req=context.createSubRequest();req.setURI("active:xslt");req.addArgument("operand", output); req.addArgument("operator", "albums.xsl");req.addArgument("band", sa);output=context.issueSubRequest(req);

Page 45: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XSLT Stylesheet

<xsl:param name="band"/> <xsl:template match="mo:metadata/mo:artist/mo:release-list"> <html> <body> <h1>Results for <xsl:value-of select="../mo:name"/></h1> <table border="1"> <xsl:apply-templates/> </table> </body> </html></xsl:template> <xsl:template match="mo:release"> <tr><xsl:apply-templates/></tr></xsl:template> <xsl:template match="mo:title"> <xsl:variable name="id" select="../@id"/> <xsl:variable name="url" select="concat('http://musicbrainz.org/ws/1/release/',$id)"/> <td><a href="{$url}?type=xml&amp;inc=tracks"><xsl:value-of select="."/></a></td></xsl:template>

Page 46: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

XSLTExamples

Page 47: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Simple Tree Manipulation

Kind of a DSL for XML

XML is tree-oriented, let’s use it that way

STM

Page 48: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Sets element values to the specified value

stm:set

<stm:set select=”/x/y” xpath=”/a/b[1]/c”><x><y>zebra</y>

</x></stm:set>

<a> <b> <c food="hay">horse</c> </b> <b> <c food="hay">donkey</c> </b></a>

<a> <b> <c food="hay">zebra</c> </b> <b> <c food="hay">donkey</c> </b></a>

Page 49: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Inserts specified value after the selected element

stm:insert-after

<stm:insert-after xpath=”/a/b[1]”><x><y>zebra</y>

</x></stm:insert-after>

<a> <b> <c food="hay">horse</c> </b> <b> <c food="hay">donkey</c> </b></a>

<a> <b> <c food="hay">horse</c> </b><x><y>zebra</y>

</x> <b>

<c food="hay">donkey</c> </b></a>

Page 50: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Applies the specified namespace to the selected elements

stm:apply-ns

<stm:apply-ns prefix=”ns” uri=”http://www.bosatsu.net/ns”xpath=”/a/b[2]”/>

<a> <b> <c food="hay">zebra</c> </b> <ns:b xmlns=”http://www.bosatsu.net/ns”> <ns:c food="hay">donkey</ns:c> </ns:b></a>

Page 51: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

AdvancedConcepts

Page 52: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Asynchronous requests are easy in NetKernel

Asynchronous Requests

// Set up request 1req1=context.createSubRequest();req1.setURI("active:beanshell");req1.addArgument("operator", “script1.bsh” );req1.addArgument("param", param );handle1 = context.issueAsyncSubRequest(req1);

// Set up request 2req2=context.createSubRequest();req2.setURI("active:beanshell");req2.addArgument("operator", “script2.bsh” );req2.addArgument("param", param );handle2 = context.issueAsyncSubRequest(req2);

// Block until both calls finishretValue1 = handle1.join();retValue2 = handle2.join();

Page 53: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Throttling requests is also easy

Throttling Requests

// attempt to issue 100 concurrent requests to script1.bshfor (int i=0; i<100; i++) { req=context.createSubRequest("active:throttle"); req.addArgument("id","throttle:my_throttle"); req.addArgument("uri","active:beanshell"); req.addArgument(“operator”,”myscript.bsh”); context.issueAsyncSubRequest(req);}

<throttle>  <concurrency>4</concurrency>  <queue>50</queue></throttle>

Expects to find a configuration file in ffcpl:/etc/ConfigThrottle.xml

Page 54: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Golden Thread Pattern

Virtual Dependency Management

Powerful technique for invalidating arbitrary collections of resources

Easier to see than hear about!

Page 55: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Long Computation wrapped in an Accessor called from a DPML script

Scalability - Scenario 1

Page 56: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Shorter Computation called multiple times from DPML script

Scalability - Scenario 2

Page 57: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Random document chosen from DPML script

Scalability - Scenario 3

Page 58: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Real NetKernel Infrastructure is built around modules

Modules

Page 59: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Ways of segmenting Address Space and functionality

Modules export public URIs and class packages

Separately Versioned units of deployment

Modules (cont)

Page 60: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Modules (cont)

Can hold static resources, Java code, scripts, accessors, aspects, transreptors, transports, fragmentors and caches

Import module definitions to access another namespace

If you create a new module, you will need to at it to the deployedModules.xml

Page 61: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Sample Modules

Module Functionality

ext-xml-core-1.4.2.jar DOM, JDom, SAX, XDA, XMLBean

ext-dpml-1.2.2.jar DPML Language runtime

ext-kernel-1.0.6.jar System component accessors

doc-netkernel-4.0.0.jar NetKernel Core Documentation

mod-fulcrum-frontend HTTP Server FrontEnd Fulcrum

mod-fulcrum-backend HTTP Server Backend Fulcrum

tpt-http-2.1.8.jar HTTP Transport

tpt-jms-1.0.2.jar JMS Transport

app-address-book-1.1.4.jar Address Book application

Page 62: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Module Example

Page 63: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Pipes in NK (Yahoo)Module for implementing Yahoo Pipes-like functionality

Runs in your computational space

No ads

Full control

Pinky

http://sourceforge.net/projects/pinky

Page 64: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Union - combine one or more feeds

Truncate - keep things manageable

Unique - remove duplicate stories

Count - how many elements per feed

Filter - restrict feed elements to filter criteria

Pinky Accessors

Page 65: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Pinky Example

Page 66: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Sophisticated management consoleSystem Healthcheck

Manipulate Modules

Monitor Memory, Throttle Settings, Workload

Edit Kernel Parameters

NetKernel Administration

http://localhost:1060/ep+name@app_ext_introspect_controlpanel

Page 67: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Non-XML Examples

Page 69: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the

Please WriteReviews

Feedback/Questions:[email protected]