Document 549051
Download
Report
Transcript Document 549051
CORBA and Java
by Alex
Chaffee
[email protected]
http://www.jguru.com/
Java
online resources
http://www.purpletech.com/
Java
training and consulting
Copyright © 1998 Purple Technology, Inc
Abstract
CORBA loves Java! CORBA provides a platform-independent,
language-independent way to write applications that can invoke
objects that live across the room or across the planet. Java is an
object-oriented language that's ideal for writing the clients and
servers living on the Object Bus. In this session, we examine the
ways they interoperate programmatically, as we walk you stepby-step from a CORBA IDL, to a server and client both written in
Java, running on top of a 100%-Java ORB. We also discuss the
relationship between CORBA and RMI, and discuss some of the
real-world issues involved in deploying a CORBA-based
application. Recommended: some knowledge of CORBA, ability
to read Java source code.
Copyright © 1998 Purple Technology, Inc
Introduction
Purple
Technology
http://www.purpletech.com
Java
Alex
Training and Consulting
Chaffee
Creator
of Gamelan
Cool Java Dude
Copyright © 1998 Purple Technology, Inc
Part I: CORBA Overview
Copyright © 1998 Purple Technology, Inc.
What is CORBA?
Common
Object Request Broker
Architecture
Communication infrastructure for
distributed objects
Allows a heterogeneous, distributed
collection of objects to collaborate
transparently
Copyright © 1998 Purple Technology, Inc
What is CORBA good for?
Developing
distributed applications
Locating remote objects on a network
Sending messages to those objects
Common interface for transactions,
security, etc.
CORBA
Services (more later)
Copyright © 1998 Purple Technology, Inc
Why Distributed
Applications?
Data
is distributed
Administrative
and ownership reasons
Heterogeneous systems
Shared by multiple applications
Scalability
Copyright © 1998 Purple Technology, Inc
Why Distributed
Applications?
Computation
is distributed
Scalability:
multiprocessing
Take computation to data
Heterogeneous architectures
Users
are distributed
Multiple
users interacting and
communicating via distributed applications
Copyright © 1998 Purple Technology, Inc
Distributed Object Systems
All
entities are modeled as objects
Systems support location transparency
Interfaces, not implementations, define
objects
Good distributed object systems are
open, federated systems
Copyright © 1998 Purple Technology, Inc
What is the OMG?
Designers
of CORBA
Consortium of 700+ companies
Not
including Microsoft
Members:
platform
vendors
database
software
tool developers
corporate
software
vendors
developers
application vendors
Copyright © 1998 Purple Technology, Inc
It’s Just A Spec
Has
never been fully implemented
Probably never will be
Industry moves quickly and spec has to
keep up
Interoperability
vs. portability
Pass-by-value
Copyright © 1998 Purple Technology, Inc
Basic CORBA Architecture
Server
Client
response
request
ORB
ORB
“Object Bus”
Copyright © 1998 Purple Technology, Inc
CORBA Objects
Examples
Service
Client
Component
Business
object
CORBA objects approach universal
accessibility
Any
Language
Any Host on network
Any Platform
Copyright © 1998 Purple Technology, Inc
CORBA Elements
1.
ORB
2. CORBA Services
3. CORBA Facilities
4. Application Objects
Copyright © 1998 Purple Technology, Inc
ORB
Object
Request Broker
“Object
Handles
Bus”
all communication among
objects
Each host (machine) has its own ORB
ORBs know how to talk to each other
ORB also provides basic services to
client
Copyright © 1998 Purple Technology, Inc
ORB Responsibilities
Find
the object implementation for the
request
Prepare the object implementation to
receive the request
Communicate the data making up the
request
Retrieve results of request
Copyright © 1998 Purple Technology, Inc
Network of ORBs
There’s
an ORB on the server too
ORB receives request
Copyright © 1998 Purple Technology, Inc
IIOP
Internet
Inter-Orb Protocol
Network or “wire” protocol
Works across TCP/IP (the Internet
protocol)
Copyright © 1998 Purple Technology, Inc
ORB Features
Method
invocations
Static
and Dynamic
Remote objects or CORBA services
High-level
language bindings
Use
your favorite language; ORB
translates
Self-describing
Provides
services
metadata for all objects and
Copyright © 1998 Purple Technology, Inc
ORB Features
Local
or remote
Same
API wherever target object lives
Preserves
context
Distributed
security and transactions
Coexistence
Just
with legacy code
provide a wrapper object
Copyright © 1998 Purple Technology, Inc
What is an ORB really?
Not
a separate process
Library code that executes in-process
Listens to TCP ports for connections
One
port per local object
Opens
N
TCP sockets to other objects
ports per remote machine
Copyright © 1998 Purple Technology, Inc
IDL
Interface
Definition Language
Defines protocol to access objects
Like a contract
Well-specified
Language-independent
Copyright © 1998 Purple Technology, Inc
IDL Example
module Calc {
interface Adder {
long add(in long x, in long y);
}
}
Defines
an object called Adder with a
method called add
Copyright © 1998 Purple Technology, Inc
Stubs and Skeletons
Stub
lives
on client
pretends to be remote object
Skeleton
lives
on server
receives requests from stub
talks to true remote object
delivers response to stub
Copyright © 1997 Alex Chaffee
Stubs and Skeletons (Fig.)
Client Host Machine
Server Host Machine
Client
Object
Remote
Object
Stub
Skeleton
ORB
IIOP
ORB
Copyright © 1997 Alex Chaffee
Client vs. Server
in
CORBA, a client is a client relative to
a particular object
i.e. an object with a reference to a
“server” object
A client may also act as a server
If
it has an IDL and stubs and skeletons
Technically,
a CORBA server contains
one or more CORBA objects
Copyright © 1998 Purple Technology, Inc
Different Meanings of
“Server”
Host
machine
Program running on host machine
CORBA object running inside program
has
IDL, stub, skeleton
Sometimes called a Servant
Copyright © 1998 Purple Technology, Inc
Stubs and Skeletons ->
Platform Independence
Client
code has no knowledge of the
implementation of the object or which ORB
is used to access the implementation.
Copyright © 1998 Purple Technology, Inc
CORBA Services
APIs
for low-level, common tasks
Life Cycle Service
creating,
copying, moving, removing
objects
Naming
Service
Register
objects with a name
Look up objects by name
Copyright © 1998 Purple Technology, Inc
CORBA Services
Concurrency
Obtain
Control Service
and release exclusive locks
Transaction
Service
Two-phase
commit coordination
Supports nested transactions
Persistence
Service
Storing
objects in a variety of databases
RDBMS, OODBMS, file systems
Copyright © 1998 Purple Technology, Inc
CORBA Services
Security
Service
Authentication, ACLs,
Event
encryption, etc.
Service
Uncoupled
notifications
Copyright © 1998 Purple Technology, Inc
CORBA Services
Relationship
Externalization
Query
Licensing
Properties
Time
Trader
Collection
… and so on…
See
what I mean about it never being
Copyright © 1998 Purple Technology, Inc
implemented?
CORBA Facilities
Frameworks
for specialized applications
Distributed Document Component
Facility
OpenDoc
In
progress:
Agents
Business
Objects
Internationalization
Copyright © 1998 Purple Technology, Inc
N-Tier Design with CORBA
Storage “Tier”
ORB
DB
ORB
ORB
ORB
DB
Data Object
ORB
ORB
ORB
ORB
Client Tier
TP Monitor
ORB
Business Object
Tier
(after diagram in Orfali et al.)
Service “Tier”
Copyright © 1998 Purple Technology, Inc
Three Tiers
User
Interface Tier
Business Logic Tier
Data Storage Tier
Can use CORBA objects in each tier
Copyright © 1998 Purple Technology, Inc
Part II: Java IDL - Using
CORBA from Java
Copyright © 1998 Purple Technology, Inc.
Java CORBA Products
The
Java 2 ORB
VisiBroker for Java
OrbixWeb
Netscape Communicator
Various free or shareware ORBs
Copyright © 1998 Purple Technology, Inc
Java IDL
Should
be named “Java CORBA”
More
than just IDL
Full (?) implementation of CORBA in 100%
Java
Three
Parts
ORB
Naming
Service
idltojava compiler
Ships
with JDK 1.2
Copyright © 1998 Purple Technology, Inc
Transparent API
JavaIDL
turns IDL into direct method
calls
Easy to program
Clients have no knowledge of
implementation
Highly portable
Copyright © 1998 Purple Technology, Inc
The Java ORB
100%
Java
Generic
Allows Java IDL applications to run
either as stand-alone Java applications,
or as applets within Java-enabled
browsers
Uses IIOP
Copyright © 1998 Purple Technology, Inc
Other Java ORBs
Visigenic
(Inprise) VisiBroker
Netscape
Communicator
Oracle Web Server 3.0
Free download
Iona
OrbixWeb
Copyright © 1998 Purple Technology, Inc
IDL to Java Mapping
Defined
by OMG
Translates IDL concepts into Java
language constructs
Everything is accessible by writing
normal-looking Java code
Copyright © 1998 Purple Technology, Inc
IDL to Java Type Mapping
IDL Type
boolean
char / wchar
octet
short / unsigned short
long / unsigned long
long long / unsigned long long
float
double
string / wstring
Java Type
boolean
char
byte
short
int
long
float
double
String
Copyright © 1998 Purple Technology, Inc
IDL vs. Java vs. C++
concepts
IDL
module
Java
package
C++
namespace
interface
interface abstract
class
operation
method
member
function
attribute
pair of
methods
pair of
functions
Copyright © 1998 Purple Technology, Inc
IDL Modules
Map
to Java packages
Unfortunately, it has the root level name
of the module
Clutters up your package hierarchy
e.g. module Calc ->
package
Calc
interface Calc.Adder
not package
ORG.omg.CORBA.modules.Calc
Copyright © 1998 Purple Technology, Inc
IDL Interfaces
Map
to Java interfaces
Copyright © 1998 Purple Technology, Inc
IDL Operations
Map
to Java methods
Copyright © 1998 Purple Technology, Inc
IDL Attributes
Map
to pair of functions
IDL
string
name;
Java
public
void name(String val);
public String name();
Yes,
it looks stupid. Sorry.
Copyright © 1998 Purple Technology, Inc
idltojava
Development
tool
Automatically generates java stubs,
skeletons, helpers, holders, ...
Generates stubs for specific remote
interfaces
Copyright © 1998 Purple Technology, Inc
Stubs
Java
objects call stub methods
Stubs communicate with CORBA
objects
and
vice versa
Transparent
integration
Copyright © 1998 Purple Technology, Inc
Skeletons
ORB
passes request to skeleton (like a
stub)
Skeleton calls local implementation
Copyright © 1998 Purple Technology, Inc
Remote Interfaces and
Stubs
IDL Interface
implements
implements
extends
Client
Stub
Skeleton
Remote Object
(Server)
Copyright © 1997 Alex Chaffee
Show Me The Source Code
OK,
here it comes...
Copyright © 1998 Purple Technology, Inc
idltojava input
Calc.idl
module Calc {
interface Adder {
long add(in long x, in long y);
}
}
Copyright © 1998 Purple Technology, Inc
idltojava output
idltojava
Calc.idl
Adder.java (a Java interface that
maps the IDL interface)
_AdderStub.java (a client stub)
_AdderImplBase.java (a server
skeleton)
AdderHelper.java (a helper class)
AdderHolder.java (a holder class)
Must
compile these files and put them in
your CLASSPATH
Copyright © 1998 Purple Technology, Inc
Adder.java
Created
for you by idltojava
package Calc;
public interface Adder
extends
org.omg.CORBA.Object {
int add(int x, int y);
}
Copyright © 1998 Purple Technology, Inc
Implementing a server
Extend
base class
Implement
Provide
Create
all methods declared in IDL
a main method
an ORB instance
Create a server instance
Inform the ORB about the instance
Acquire a Naming Context
Register the instance in that Naming
Context under some name Copyright © 1998 Purple Technology, Inc
AdderServer.java
class AdderServer extends _AdderImplBase
{
public int add( int x, int y ) {
System.out.println(x + " + " + y + "
= " + (x+y));
return x + y;
}
Copyright © 1998 Purple Technology, Inc
AdderServer.java (cont.)
public static void main(String args[]) {
// create and initialize the ORB
ORB orb = ORB.init(args, null);
// create server and register it with
the ORB
AdderServer adderRef = new
AdderServer();
orb.connect(adderRef);
Copyright © 1998 Purple Technology, Inc
AdderServer.java (cont.)
// get the root naming context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameSer
vice");
NamingContext ncRef =
NamingContextHelper.narrow(objRef);
// bind the Object Reference in Naming
NameComponent nc = new
NameComponent("Adder", "");
NameComponent path[] = {nc};
ncRef.rebind(path, adderRef);
Copyright © 1998 Purple Technology, Inc
Implementing a client
Create
an ORB
Get a reference to the Naming Context
Look up the correct name in that
Naming Context
Receive an object reference to that
object
Actually,
Invoke
to its Stub
methods on the reference
Copyright © 1998 Purple Technology, Inc
AdderClient.java
Copyright © 1998 Purple Technology, Inc
Object Reference
Two
Meanings
1. An
abstract concept referring to a
specific object living on a specific host,
attached to a specific ORB
2. A local Java reference to an object that
relays messages to that object
Obtained
from
new
keyword
a Factory Object
the Naming Service
Copyright © 1998 Purple Technology, Inc
Naming Service
tnameserv
t
is for “transient”
Maps
name to object reference
An implementation of the CORBA
Object Service (COS) name service
to run the Naming Service
UNIX:
tnameserv &
Win32:
start /m tnameserv
Copyright © 1998 Purple Technology, Inc
Fire it up
start
/m tnameserv
start java AdderServer
java AdderClient
2 + 2 = ?
Copyright © 1998 Purple Technology, Inc
CORBA Flow
Client Virtual Machine
Server Virtual Machine
Client
Remote
Object
Skeleton
Stub
Server
“Fred”
Name Server Virtual Machine
Copyright © 1997 Alex Chaffee
CORBA Flow
1. Server Creates Remote Object
Client Virtual Machine
2. Server Registers Remote Object
Client
Server Virtual Machine
Remote
Object
1
Skeleton
Stub
Server
2
“Fred”
Name Server Virtual Machine
Copyright © 1997 Alex Chaffee
CORBA Flow
Client Virtual Machine
3. Client requests object fromRemote
Name Server
4. Name Server returns remote
reference
Object
(and stub gets created)
Client
Skeleton
Stub
3
Server Virtual Machine
Server
4
“Fred”
Name Server Virtual Machine
Copyright © 1997 Alex Chaffee
RMI Flow
Client Virtual Machine
Server Virtual Machine
Client
Remote
Object
5
7
6
Stub
Skeleton
Server
5. Client invokes stub method
6. Stub talks to skeleton
7. Skeleton invokes remote object
“Fred”
method
Name Server Virtual Machine
Copyright © 1997 Alex Chaffee
Pseudo-objects
The
ORB is a pseudo-object
It works just like a remote object, only
it’s local
Copyright © 1998 Purple Technology, Inc
The Basic Object Adapter
(BOA)
Another
pseudo-object
Helps register objects with the ORB
Functions
Maintain
Implementation Repository
Generate and interpret object references
Activate and deactivate implementation
objects
Invoke methods via skeletons
Copyright © 1998 Purple Technology, Inc
Why do you need both an
ORB and a BOA?
I’m
not really sure
Allows vendors to optimize or enhance
functionality
register
many objects en masse
cache object state elsewhere
E.g.
Object database
Copyright © 1998 Purple Technology, Inc
Using the BOA
Slightly
different procedure for
initializing objects
Hides name service from you
Ask
the BOA to register the object
Ask the Helper object to bind the object
Once
the object is created, interface is
identical
Just
call methods using normal Java
syntax
Copyright © 1998 Purple Technology, Inc
BOA Object Activation
Shared
server
Multiple
objects, one server
Normal procedure
Multithreaded (handled by CORBA
implementation)
Unshared
New
server
process for each object
Copyright © 1998 Purple Technology, Inc
BOA Object Activation
(cont.)
Server-per-method
Batch
processing
Persistent
Shared
server
server, but object not created by
ORB
Copyright © 1998 Purple Technology, Inc
BOA Object Activation
Scenario
Server
obj
creates object instance
= new MyObject();
Server
registers object with BOA
boa.create(interface_name,
implementation_name, reference_data)
VisiBroker does this for you in superclass
constructor
Copyright © 1998 Purple Technology, Inc
BOA Object Activation
Scenario (cont.)
Server
tells BOA the object is ready
boa.obj_is_ready(obj)
Server
tells BOA that all objects are
ready
boa.impl_is_ready()
Objects
shut down
boa.deactivate_obj(this)
Server
shuts down
boa.deactivate_impl()
Copyright © 1998 Purple Technology, Inc
Threads in JavaIDL
Remote
invocations happen on a
separate thread
Must make sure your remote objects
are thread-safe
Copyright © 1998 Purple Technology, Inc
Callbacks
Pass
in a reference to some CORBA
object
The server object can invoke methods
on that reference
ORB automatically generates a stub on
the server side
The server has become the client, and
vice versa
Copyright © 1998 Purple Technology, Inc
Obtaining Object
References
From
the ORB
orb.resolve_initial_references(“NameServic
e”)
From
a Naming Context
From a Stringified reference
From another object
From a parameter to your remote
method
Copyright © 1998 Purple Technology, Inc
Helper Objects
How
CORBA does casting
narrow method changes the type of an
object reference
// get the root naming context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameSer
vice");
NamingContext ncRef =
NamingContextHelper.narrow(objRef);
Copyright © 1998 Purple Technology, Inc
Naming Contexts
Directory
structure for CORBA
Naming Component = file
Naming Context = directory
Can add a Context as a Component
like
subdirectories
Can
add a Context on a different name
server
like
symbolic links
Copyright © 1998 Purple Technology, Inc
Stringification
Stringified
reference is ORBindependent
Object to string
org.omg.CORBA.Object obj = ...
String str = orb.object_to_string(obj);
String to object
org.omg.CORBA.Object obj =
orb.string_to_object(str);
Copyright © 1998 Purple Technology, Inc
Visigenic: Caffeine
Java
to IDL compiler
Copyright © 1998 Purple Technology, Inc
Symantec: Visual Café 3.0
Enterprise Suite
Java
to IDL compiler
Automatic client adapter bean
generation
Makes
a JavaBean that’s a proxy to a
CORBA object
Distributed
debugging
Follow
call chain, examine variables, et al.
Across many VMs, many hosts, many OSs
Copyright © 1998 Purple Technology, Inc
Part III: Example
Application
Copyright © 1998 Purple Technology, Inc
Publish-Subscribe System
Channel:
an avenue for real-time data
exchange
Consumers can subscribe to arbitrary
data channels
Producers can publish data on channels
Invokes
callback method on consumer
Copyright © 1998 Purple Technology, Inc
Object Model
PSServer
Channel
creates
getChannel(String channelName)
channel if it doesn’t already exist
Channel
void
subscribe(Subscriber sub)
void publish(Object data)
Subscriber
void
dataArrived(Object data)
Copyright © 1998 Purple Technology, Inc
Flow: Subscriber-side
Client
acquires PSServer reference
Client acquires channel from PSServer
Client creates subscriber locally,
passing reference to channel
Subscriber registers self with channel
channel.subscribe(this)
Client
waits for callback to its
dataArrived method
Copyright © 1998 Purple Technology, Inc
Flow: Publisher-side
Client
acquires PSServer reference
Client acquires channel from PSServer
Client creates publisher locally, passing
reference to channel
Publisher acquires data
From
a database
From a data feed
Publisher
calls channel.publish(data)
Copyright © 1998 Purple Technology, Inc
Example Application: Stock
data
Channel
name = stock symbol name
Source code available
Copyright © 1998 Purple Technology, Inc
Design issues
Name
space for channels
TIBCO
et al. use hierarchical directory
structure
Caching
prior messages
Subscribe
should spawn a thread that
sends previous N messages
Copyright © 1998 Purple Technology, Inc
Design issues
Maintain
local cache of data sent
Don’t
want to go back across the network
every time you draw a graph
Create local version of class
Copyright © 1998 Purple Technology, Inc
Part IV: Advanced Topics
Copyright © 1998 Purple Technology, Inc
Exceptions
CORBA exceptions are mapped to Java
exceptions
System Exceptions
They’re
subclasses of RuntimeException, so the
compiler won’t complain if you forget to catch
them
Minor codes
additional information
vendor-specific :-(
Completion
Status
Copyright © 1998 Purple Technology, Inc
Exceptions (cont.)
User Exceptions
Generated
by idltojava
Subclasses of Exception (declared)
Copyright © 1998 Purple Technology, Inc
Dynamic Invocation Interface
(DII)
CORBA is fully self-aware
Methods for acquiring
List
of all services
List of known objects
Interfaces of known objects
Etc.
Well-documented
elsewhere
Copyright © 1998 Purple Technology, Inc
Interface Repositories
JavaIDL
clients do not typically need or
use an Interface Repository
All of the needed type information is
available in the stubs or is resolved by
an object's server
JavaIDL supports access to Interface
Repository information made available
by other CORBA object
implementations.
Copyright © 1998 Purple Technology, Inc
Implementation Repository
contains
information that allows the
ORB to locate and activate
implementations of objects
also store additional information
associated with implementations of
ORB objects.
Debugging
information
Administrative control
Resource allocation
Security
Copyright © 1998 Purple Technology, Inc
Value Objects
CORBA 3.0
Blobs
Avoids
network latency of pass-byreference objects
Copyright © 1998 Purple Technology, Inc
RMI over IIOP
In
Development
Uses IIOP as transport protocol
Uses Value Objects to pass Java
serialized objects
Copyright © 1998 Purple Technology, Inc
CORBA via RMI
Possible
using middleware server
RMI from client to middleware
IIOP from middleware to other servers
Can use Servlet as middleware
Copyright © 1998 Purple Technology, Inc
CORBA and EJB
Transport
EJB
uses RMI interface, RMI uses IIOP
CORBA 3.0
promises object
compatibility with EJB
Not
quite sure what that means
Some
All
EJB Servers contain an ORB
EJB Objects are also CORBA objects
Copyright © 1998 Purple Technology, Inc
CORBA and EJB (Cont.)
All
EJB Servers use CORBA
Transactions (via JTS)
That
means that any client can make a
distributed transaction that includes both
CORBA and EJB Objects
Not
an either-or decision
You
can have both EJB and CORBA
working together in a single system
Copyright © 1998 Purple Technology, Inc
Java Transactions
Java
Transaction Service (JTS)
A standard
Java mapping of the OMG
Object Transaction Service (OTS)
packages
org.omg.CosTransaction and
org.omg.CosTSPortability
Java
Transaction API (JTA)
High-level
transaction management
specification
package
javax.transaction
Copyright © 1998 Purple Technology, Inc
Object Transaction Service
(OTS)
Distributed
Part
transaction specification
of CORBA, but also standalone
Transactions
can span
multiple
queries
multiple
objects
multiple
servers
multiple
databases
multiple
vendors’ products
Copyright © 1998 Purple Technology, Inc
OTS Features
Distributed
Flat
transactions
or nested transactions
Two-phase
Vendor
commit
interoperability (?)
Copyright © 1998 Purple Technology, Inc
OTS Object Model
Transactional
Can
Object
participate in a transaction
Recoverable
Object
Actually
performs commit or rollback on its
own data
Resource
A system
or server that can commit or
rollback data stored inside it
E.g.
a database server
Copyright © 1998 Purple Technology, Inc
OTS Object Model (Cont.)
Current
Reference/wrapper
to currently active transaction
Control / Coordinator / Terminator
Registers
objects
Performs
distributed commit/rollback
Synchronization
An
object that gets informed of the progress of the
ongoing transaction
Implements
callback methods
Copyright © 1998 Purple Technology, Inc
Part V: CORBA/Java Case
Studies
Copyright © 1998 Purple Technology, Inc.
CORBA Case Study
Kaiser
Permanente Northern California
KAHUNA a/k/a WebChart
http://www.javaworld.com/jw-111998/jw-11-kaiser.html?101698txt
Copyright © 1998 Purple Technology, Inc
Problem: Specific
Medical
records, patient histories,
clinical schedules, lab results, and
medical images all stored in disparate
databases
Many
patients per doctor, many doctors
per patient
Need
immediate access to all
information
Copyright © 1998 Purple Technology, Inc
Problem: General
getting
data
from
a multitude of sources
in a multitude of media
putting
into
data
a single system
distributing
data
to
a wide variety of desktops
throughout a very large company
Copyright © 1998 Purple Technology, Inc
Solution: Java/CORBA
“Not
only did Java/CORBA solve all
these problems, but Java/CORBA
development is cheap, fast, scalable
and works over the Internet.”
Copyright © 1998 Purple Technology, Inc
WebChart Architecture
Copyright © 1998 Purple Technology, Inc
This is your brain on Java.
Any questions?
Copyright © 1998 Purple Technology, Inc
Conclusion
Copyright © 1998 Purple Technology, Inc.
Where to Get More
Information
Orfali
& Harkey, Client/Server Programming with
Java and CORBA (Wiley)
Orfali, Harkey & Edwards, Instant CORBA (Wiley)
Copyright © 1998 Purple Technology, Inc
More Info: Links
This
http://www.purpletech.com/
JDK
Presentation
1.2 CORBA documentation
http://java.sun.com/products/jdk/1.2/docs/guide/idl/
Glerum,
WebChart serves up Kaiser patients,
JavaWorld
http://www.javaworld.com/jw-11-1998/jw-11kaiser.html?101698txt
Copyright © 1998 Purple Technology, Inc
More Info: Links
Object
Management Group - http://www.omg.org
Java Transactions
http://java.sun.com/products/jta/
http://java.sun.com/products/jts/
ftp://www.omg.org/pub/docs/formal/97-12-17.pdf
Copyright © 1998 Purple Technology, Inc