distributed-omar: reconfiguring a lisp system as a hybrid lisp/(java) component gte-i / bbn...
TRANSCRIPT
Distributed-OMAR:Reconfiguring a Lisp System as a Hybrid Lisp/(Java) Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Nichael Cramer
17 Nov 1998
The OMAR System
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Additional information:
– Stephen Deutsch (Stephen Deutsch ([email protected]@bbn.com).).
– http://www.sover.net/~nichael/misc/
– (Papers available at front.)(Papers available at front.)
Distributed-OMARDistributed-OMAR
The OMAR System
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Simulation Development Environment.Simulation Development Environment.– Editing/Browsing tools.Editing/Browsing tools.– Displays for runtime monitoring.Displays for runtime monitoring.– Application-specific displays (e.g. radars).Application-specific displays (e.g. radars).– Procedure language (SCORE).Procedure language (SCORE).– Simulation engine.Simulation engine.– ““Human in the Loop” experiments.Human in the Loop” experiments.
Distributed-OMARDistributed-OMAR
The OMAR System
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• OMAR has been primarily used in the OMAR has been primarily used in the modeling of human performance.modeling of human performance.– Multi-tasking capabilities of human-Multi-tasking capabilities of human-
operators.operators.– Teamwork activities.Teamwork activities.
– Air Traffic Control and Flight Deck Air Traffic Control and Flight Deck simulation.simulation.
Distributed-OMARDistributed-OMAR
The OMAR System
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• For the present talk:For the present talk:
– OMAR is a large, simulation application, OMAR is a large, simulation application, written in Lisp (ACL) and CLIM, running written in Lisp (ACL) and CLIM, running on Unix (Solaris and SGI) platforms.on Unix (Solaris and SGI) platforms.
– Signal/Event-based semantics for inter-Signal/Event-based semantics for inter-procedure communication.procedure communication.
Distributed-OMARDistributed-OMAR
Distributed-OMAR
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• OMAR was successful.OMAR was successful.– (I.e. the customer was very happy.)(I.e. the customer was very happy.)
• Interest in “distributing” OMAR.Interest in “distributing” OMAR.– OMAR as “intelligent agent” in existing OMAR as “intelligent agent” in existing
systems.systems.– Network of OMAR agents. Network of OMAR agents. – Interact with other agents/components.Interact with other agents/components.– Web-based operation.Web-based operation.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Design Goals
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• DistributedDistributed
– OMAR should be able to participate as an OMAR should be able to participate as an equal in distributed systems consisting of equal in distributed systems consisting of multiple remote, independent Agents or multiple remote, independent Agents or other Components.other Components.
– OMAR’s internal modules should be able to OMAR’s internal modules should be able to run in a distributed manner as needed.run in a distributed manner as needed.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Design Goals
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Flexible.Flexible.
– Usable with:Usable with:• Broad range of systems.Broad range of systems.
• Multiple “external” languages/platforms.Multiple “external” languages/platforms.
• Assortment of middleware choices.Assortment of middleware choices.
– Stable as standards change.Stable as standards change.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Design Goals
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Robust and Maintainable.Robust and Maintainable.– To the extent possible, there should be a To the extent possible, there should be a
single D-OMARsingle D-OMAR• I.e. not a “Corba-OMAR”; a “RMI-OMAR”; etc.I.e. not a “Corba-OMAR”; a “RMI-OMAR”; etc.
– Main System Functionality in Core-OMAR Main System Functionality in Core-OMAR (Lisp) system.(Lisp) system.
• Efficient.Efficient.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Design Goals
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Maintain the central Lisp functionality.Maintain the central Lisp functionality.
– Maintain the advantages that Lisp provides.Maintain the advantages that Lisp provides.• Dynamic class inheritance.Dynamic class inheritance.
• Rapid-prototyping capabilities.Rapid-prototyping capabilities.• Etc.Etc.
– Specifically: Want to be able to continue Specifically: Want to be able to continue writing the core simulation engine in Lisp.writing the core simulation engine in Lisp.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Overview
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Distributed-OMAR presents itself to the Distributed-OMAR presents itself to the external components as being a single external components as being a single unified component in the target language.unified component in the target language.
– Examples:Examples:• An “OMAR Bean” in Java.An “OMAR Bean” in Java.
• An “OMAR Federate” in HLA.An “OMAR Federate” in HLA.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture: High-Level Structure
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Core-OMAR module...Core-OMAR module...• (Compact version of Lisp simulation system.)(Compact version of Lisp simulation system.)
• through inter-module communication…through inter-module communication…• (Socket-based serialization protocol.)(Socket-based serialization protocol.)
• to Connection in External language.to Connection in External language.• (Presence of D-OMAR in foreign language.)(Presence of D-OMAR in foreign language.)
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture: High-Level Structure (cont.)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• In external Language, D-OMAR presents In external Language, D-OMAR presents a basic “External Connection” object.a basic “External Connection” object.
– External Connection behaves as a source External Connection behaves as a source and sink of D-OMAR events in the External and sink of D-OMAR events in the External language.language.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Can run with assortment of external Can run with assortment of external languages. languages. – Java is language of choice.Java is language of choice.– But, other languages available.But, other languages available.
• ““Piggy-back” off features of external or Piggy-back” off features of external or embedded language.embedded language.– Can use standard networking tools.Can use standard networking tools.
• E.g. RMI in Java; CORBA; HLA …E.g. RMI in Java; CORBA; HLA …
– Graphics packages, etc.Graphics packages, etc.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• The Core-OMAR system remains The Core-OMAR system remains compact and intact.compact and intact.– Remains in pure CommonLisp.Remains in pure CommonLisp.– It continues to be able to do what it does It continues to be able to do what it does
well.well.
• Only a small layer (Cap) needs to Only a small layer (Cap) needs to changed to work in different systems.changed to work in different systems.
Distributed-OMARDistributed-OMAR
Core OMAR Module
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOMAROMAR
• Original Lisp “Kernel”.Original Lisp “Kernel”.– ScoreScore
– SFLSFL
– Rule-based languageRule-based language
• Pure Common LispPure Common Lisp– Plus socket package.Plus socket package.
– Direct graphics/editing Direct graphics/editing support removed.support removed.
• Primarily Signal (Event) Primarily Signal (Event) based semantics.based semantics.
Distributed-OMARDistributed-OMAR
Core OMAR API
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Well-defined, cleaned-up Well-defined, cleaned-up functional API protocol.functional API protocol.
• CommanderCommander– ““Incoming” CommandsIncoming” Commands
• ListenerListener– ““Outgoing” CommandsOutgoing” Commands
CoreCoreOMAROMAR
Distributed-OMARDistributed-OMAR
MasterMaster
OMAR Master
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOMAROMAR
• Implementation of the Implementation of the Core-OMAR API.Core-OMAR API.
• Governs communication Governs communication with “outside world”.with “outside world”.
• More than one possible More than one possible implementation.implementation.– Command-Line.Command-Line.
– ““OMAR Classic”OMAR Classic”
Distributed-OMARDistributed-OMAR
Distributed Master
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Communicates to external “Connections”Communicates to external “Connections”– Connection written in language of host Connection written in language of host
system (e.g. Java, C++).system (e.g. Java, C++).
• Communication is a socket-based, Communication is a socket-based, serialization, message-passing protocol.serialization, message-passing protocol.
Distributed-OMARDistributed-OMAR
Sockets
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Sockets:Sockets:
– Standard mechanism for inter-process Standard mechanism for inter-process communication.communication.
– TCP/IP based communication layer.TCP/IP based communication layer.
– Common to virtually all platforms.Common to virtually all platforms.
Distributed-OMARDistributed-OMAR
Serialization
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Serialization:Serialization:
– Mechanism for moving objects (Strings, Mechanism for moving objects (Strings, Events, Structures, etc) between processes.Events, Structures, etc) between processes.
– (Encoding representation of Objects into a (Encoding representation of Objects into a byte-stream representation, to be decoded by byte-stream representation, to be decoded by an external process.)an external process.)
Distributed-OMARDistributed-OMAR
Message-Passing
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Message-passing:Message-passing:
– High-level specification of a request for a High-level specification of a request for a state-change.state-change.
• Event, method call, ….Event, method call, ….
– In the stream, an object with a “state-flag” In the stream, an object with a “state-flag” and a set of arguments.and a set of arguments.
Distributed-OMARDistributed-OMAR
Distributed Master (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• External Connections can run on:External Connections can run on:– Same machine (standard mechanism). Same machine (standard mechanism). – Different machine.Different machine.
• Event-based communication.Event-based communication.– Independent of language of Connection.Independent of language of Connection.
• Single protocol for all Connection types.Single protocol for all Connection types.
Distributed-OMARDistributed-OMAR
Distributed Master (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Current Connection types:Current Connection types:
– Control GUI Connection.Control GUI Connection.• OMAR editing and simulation-control panels.OMAR editing and simulation-control panels.
– Application GUI Connection.Application GUI Connection.• Panels specific to Current application.Panels specific to Current application.
– External Connection.External Connection.• Communicates with other “Agents”.Communicates with other “Agents”.
Distributed-OMARDistributed-OMAR
JavaJavaExternalExternal
ConnectionConnection
ApplicationApplicationGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Distributed-OMAR Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
ControlControlGUIGUI
ConnectionConnection
CoreCoreOMAROMAR
Distributed-OMARDistributed-OMAR
ProcedureBrowser
ConceptEditor
ScenarioControlPanel
ControlControlGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Control GUI Connection
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOMAROMAR
LISP JAVA
Distributed-OMARDistributed-OMAR
Control GUI Connection -Java
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• In the Java world, OMAR (as viewed In the Java world, OMAR (as viewed through the external Connection) is now through the external Connection) is now “just another Java component”.“just another Java component”.
• To which other Java component connect in a To which other Java component connect in a standard way.standard way.
Distributed-OMARDistributed-OMAR
Control GUI Connection -Java(continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Can use any standard Java mechanism Can use any standard Java mechanism for inter-component communication.for inter-component communication.– Regular Object-Oriented method calls.Regular Object-Oriented method calls.– RMI.RMI.
• For example, publish and subscribe to For example, publish and subscribe to Events in standard way (“Listener”).Events in standard way (“Listener”).
Distributed-OMARDistributed-OMAR
Control GUI Connection -Java (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• In short, foreign-language Connection In short, foreign-language Connection behaves as “conduit” into Core-OMAR.behaves as “conduit” into Core-OMAR.
• Connections serve as “sources” and Connections serve as “sources” and “sinks” of Events in the Java world.“sinks” of Events in the Java world.
• Finally, nothing special about the fact Finally, nothing special about the fact that the connection is written in Java.that the connection is written in Java.
Distributed-OMARDistributed-OMAR
ProcedureBrowser
ConceptEditor
ScenarioControlPanel
ControlControlGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Control GUI Connection
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOMAROMAR
Distributed-OMARDistributed-OMAR
ExternalD-OMAR
Agent2
ExternalAgent
3
ExternalD-OMAR
Agent1
JavaJavaExternalExternal
ConnectionConnection
ApplicationApplicationGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Distributed-OMAR Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
ControlControlGUIGUI
ConnectionConnection
CoreCoreOMAROMAR
Distributed-OMARDistributed-OMAR
Communication with External Agents
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Standard External Connection Object.Standard External Connection Object.– Common to all module types.Common to all module types.
• D-OMAR presents a thin “Cap” to D-OMAR presents a thin “Cap” to External language.External language.– Wrapper on External-Connection object.Wrapper on External-Connection object.– Specific to communication/middleware type.Specific to communication/middleware type.– Inner structure hidden to outside world.Inner structure hidden to outside world.
Distributed-OMARDistributed-OMAR
ExternalAgent
2
ExternalAgent
3
ExternalAgent
1
JavaJavaExternalExternal
ConnectionConnection
Communication with External Agents
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Communication Specific “Cap”
Distributed-OMARDistributed-OMAR
Communication with External Agents
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Java Inter-Agent Communication:Java Inter-Agent Communication:– Standard O-O method invocation. Standard O-O method invocation. – RMI (Remote Method Invocation).RMI (Remote Method Invocation).– Corba Corba – Voyager Voyager – HLAHLA
Distributed-OMARDistributed-OMAR
ExternalAgent
2
ExternalAgent
1
OMAROMARJavaJava
ExternalExternalConnectionConnection
Standard O-O Method Invocation
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Standard Cap
Distributed-OMARDistributed-OMAR
ExternalAgent
2
ExternalAgent
1
CentralRemoteServer
JavaJavaExternalExternal
ConnectionConnection
Remote Method Invocation (RMI)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
RMI Cap
Distributed-OMARDistributed-OMAR
ExternalComponent
2
ExternalComponent
1
JavaJavaExternalExternal
ConnectionConnection
ORB Connection (e.g. Corba)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Corba Cap O
R
B
Distributed-OMARDistributed-OMAR
DistributedOmar
Component
RemoteSystems
ExternalD-Omar
Agent2
ExternalAgent
3
ExternalD-Omar
Agent1
JavaJavaExternalExternal
ConnectionConnection
ApplicationApplicationGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Distributed-OMAR Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
ControlControlGUIGUI
ConnectionConnection
CoreCoreOMAROMAR
Distributed-OMARDistributed-OMAR
OMAR Communication with Other Implementation Languages
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Event-communication doesn’t depend on Event-communication doesn’t depend on details of Event-Listener.details of Event-Listener.
• Connection only needs to support:Connection only needs to support:– Sockets.Sockets.– Serialization protocol.Serialization protocol.
Distributed-OMARDistributed-OMAR
OMAR Communication with Other Implementation Languages
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Connection need not be written in Lisp Connection need not be written in Lisp or Java.or Java.
• Nothing in Core-OMAR module changes. Nothing in Core-OMAR module changes.
• An example: HLA.An example: HLA.
Distributed-OMARDistributed-OMAR
ExternalFederate
2
ExternalFederate
1
C++C++ExternalExternal
ConnectionConnection
ApplicationApplicationGUIGUI
ConnectionConnection(Java)(Java)
DistributedDistributedMasterMaster(Lisp)(Lisp)
D-OMAR/HLA Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
ControlControlGUIGUI
ConnectionConnection(Java)(Java)
CoreCoreOMAROMAR(Lisp)(Lisp)
Federate Cap R
T
I
Distributed-OMARDistributed-OMAR
D-OMAR/HLA Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• C++ based External Connection and C++ based External Connection and HLA Cap have been implemented and HLA Cap have been implemented and initially tested.initially tested.
• Currently converting to vendor supplied Currently converting to vendor supplied Java/C++ Federate interface/wrapper.Java/C++ Federate interface/wrapper.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Summary/Status
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Consolidated Core-OMAR kernel.Consolidated Core-OMAR kernel.– In Common-Lisp/CLOSIn Common-Lisp/CLOS
• + Processes.+ Processes.
• + Socket-code.+ Socket-code.
• (Again, no graphics code.)(Again, no graphics code.)
– Can run in any Lisp that supports these.Can run in any Lisp that supports these.• Currently using Allegro Common-Lisp.Currently using Allegro Common-Lisp.
• (MCL all but sockets/Open Transport). (MCL all but sockets/Open Transport).
• (Harlequin)(Harlequin)
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture: Summary/Status (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Standard Protocol for Connection to Standard Protocol for Connection to External Languages.External Languages.
• Current implementations in:Current implementations in:– Java.Java.– C++ (HLA).C++ (HLA).– Lisp.Lisp.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture: Summary/Status (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• GUI implementation in Java.GUI implementation in Java.
• Implementation of Java-based Implementation of Java-based communication among collection of D-communication among collection of D-OMAR agents.OMAR agents.
• In Java: Runs “anywhere”.In Java: Runs “anywhere”.
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Summary/Status (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Current Platforms:Current Platforms:– Windows NT/98.Windows NT/98.– Sun/Sparc.Sun/Sparc.– (SGI)(SGI)– (MacIntosh)(MacIntosh)
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture:
Summary/Status (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Middlewares used.Middlewares used.– Corba.Corba.– HLA.HLA.– RMI.RMI.
• (Nexus object for collection of D-OMAR agents.)(Nexus object for collection of D-OMAR agents.)
– (Simple Java Method calls.)(Simple Java Method calls.)
Distributed-OMARDistributed-OMAR
Distributed-OMAR Architecture: Summary/Status Recap
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Single Common-Lisp source code for all Single Common-Lisp source code for all system configurationssystem configurations– At most, involves a recompile.At most, involves a recompile.
• Single Java source code (exclusive of Single Java source code (exclusive of application-specific Cap).application-specific Cap).– Class files (binaries) “Run anywhere”.Class files (binaries) “Run anywhere”.
Distributed-OMARDistributed-OMAR
Distributed-OMAR:Reconfiguring a Lisp System as a Hybrid Lisp/(Java) Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Nichael Cramer
17 Nov 1998
Appendix 1:ObjectStream Structure
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• ObjectStream class:ObjectStream class:
– Supports socket-based read/write bytes Supports socket-based read/write bytes operations.operations.
– Supports serialization API.Supports serialization API.• (read-object <objstream>)(read-object <objstream>)• (write-object <objstream> <object>)(write-object <objstream> <object>)
Distributed-OMARDistributed-OMAR
Appendix 1:ObjectStream Structure
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• ObjStreamParser object:ObjStreamParser object:
– Passed as argument to ObjStream.Passed as argument to ObjStream.
– Governs details of translation in Governs details of translation in reads/writes in serialization.reads/writes in serialization.
Distributed-OMARDistributed-OMAR
Appendix 1:OMAR Parser Class Structure
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
– base-parser:base-parser:• (Error-handling; basic read/write operations.)(Error-handling; basic read/write operations.)
– core-parser:core-parser:• (strings, numbers, arrays, etc.)(strings, numbers, arrays, etc.)
– lisp-parser:lisp-parser:• (Cons cells; lists; etc.)(Cons cells; lists; etc.)
– omar-event-parser:omar-event-parser:• (omar-events; concept-structures; etc.)(omar-events; concept-structures; etc.)
Distributed-OMARDistributed-OMAR
Appendix 2:ObjectStream as “Eval-Server”
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• ““Message-passing” not the only protocol Message-passing” not the only protocol ObjectStream.ObjectStream.
• Java calls to Lisp can be written as Java calls to Lisp can be written as (stringified) Lisp form.(stringified) Lisp form.
Distributed-OMARDistributed-OMAR
Appendix 2:ObjectStream as “Eval-Server”
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Eval-Server:Eval-Server:– Use existing serialization protocol.Use existing serialization protocol.
– Java submits request as string into Lisp.Java submits request as string into Lisp.• submitEval(“(setq mainval (* 3 substate))”);submitEval(“(setq mainval (* 3 substate))”);
– Lisp performs a read-from-string.Lisp performs a read-from-string.
– Returns (serialized) result value to Java.Returns (serialized) result value to Java.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Tool for graphically viewing structures of Tool for graphically viewing structures of and communications between procedures and communications between procedures in D-OMAR models.in D-OMAR models.
• Multiple Views:Multiple Views:• Super-/sub-procedures (who calls, etc.)Super-/sub-procedures (who calls, etc.)
• Signals generated/waited-forSignals generated/waited-for
• Procedure view.Procedure view.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Super/Sub-procedures and Signal views Super/Sub-procedures and Signal views are graph-based.are graph-based.– Java Gui requests data-structure to view.Java Gui requests data-structure to view.
– Lisp prepares the data-structure and ships it Lisp prepares the data-structure and ships it off (via serialization) to Java.off (via serialization) to Java.
– Java uses standard graphing display code to Java uses standard graphing display code to display the results.display the results.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Procedure view (uses DrawStream):Procedure view (uses DrawStream):
• View is laid-out and “drawn” in Lisp.View is laid-out and “drawn” in Lisp.– Uses pre-existing Lisp display code.Uses pre-existing Lisp display code.– Display code draws to a DrawStream object.Display code draws to a DrawStream object.– DrawStream encodes drawing commands as DrawStream encodes drawing commands as
a sequence of bytes.a sequence of bytes.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Representation (sequence of bytes) is Representation (sequence of bytes) is shipped to Java.shipped to Java.– Currently as an Array (in an Event).Currently as an Array (in an Event).– Alternatively: “Live” byte-stream.Alternatively: “Live” byte-stream.
• Bytes are rendered in Java.Bytes are rendered in Java.– DrawStreamCanvas.DrawStreamCanvas.
• Decodes byte-sequence representation.Decodes byte-sequence representation.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Gestures are handled:Gestures are handled:– Transmit screen location back to Lisp.Transmit screen location back to Lisp.– Lisp returns any appropriate object.Lisp returns any appropriate object.
• Note that the DrawStream object and the Note that the DrawStream object and the Java DrawStreamCanvas class are “write Java DrawStreamCanvas class are “write once” constructs which can be re-used once” constructs which can be re-used with other Lisp displays.with other Lisp displays.
Distributed-OMARDistributed-OMAR
Appendix 3:DrawStream/Procedure Browser
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Demo.Demo.
Distributed-OMARDistributed-OMAR
Distributed-OMAR:
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Additional information:
http://www.sover.net/~nichael/misc/
Nichael Cramer
17 Nov 1998
Distributed-OMAR:Reconfiguring a Lisp System as a Hybrid Lisp/(Java) Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Nichael Cramer
17 Nov 1998
Why not simply Corba? (foreign-function calls?, etc?)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• When we started, no Lisp Corba binding.When we started, no Lisp Corba binding.– This has changed/is changing.This has changed/is changing.
• But, for example, no signal servicing.But, for example, no signal servicing.
• Don’t want to be “Corba-specific”.Don’t want to be “Corba-specific”.– I.e no multiple versions to run with:I.e no multiple versions to run with:
• HLA, DCOM, RMI…HLA, DCOM, RMI…
Distributed-OMARDistributed-OMAR
Why not simply Corba? (foreign-function calls?, etc?)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• LightweightLightweight– Don’t need an ORB to (e.g.) just run a GUI.Don’t need an ORB to (e.g.) just run a GUI.– D-OMAR has a single protocol to D-OMAR has a single protocol to
communicate with all external processes.communicate with all external processes.
• Works with any CommonLispWorks with any CommonLisp– (Provided it supports sockets.)(Provided it supports sockets.)
Distributed-OMARDistributed-OMAR
Why not simply Corba? (foreign-function calls?, etc?)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• By moving the burden into (Java), we can By moving the burden into (Java), we can automatically leverage any Java-based automatically leverage any Java-based middle-ware support.middle-ware support.– In short, we are betting that Java will always In short, we are betting that Java will always
have better support for middleware, GUIs, have better support for middleware, GUIs, etc.etc.
Distributed-OMARDistributed-OMAR
Why not simply Corba? (foreign-function calls?, etc?)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Finally, if the decision Finally, if the decision isis made to convert made to convert D-OMAR to a Corba base, we only have D-OMAR to a Corba base, we only have to re-write the Connection protocol.to re-write the Connection protocol.– Modular design ensures a (relatively ;-) Modular design ensures a (relatively ;-)
painless transition.painless transition.
Distributed-OMARDistributed-OMAR
Distributed-OMAR:Reconfiguring a Lisp System as a Hybrid Lisp/(Java) Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Nichael Cramer
17 Nov 1998
Distributed-OMAR:Reconfiguring a Lisp System as a Hybrid Lisp/(Java) Component
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
Nichael Cramer
17 Nov 1998
CommandCommandLineLine
MasterMaster
Example: Command-Line Master
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOmarOmar
> :Scenario select “ATC”
> :Scenario run
> Report: time = 0.
> Report: time = 5.
> Report: Event (Comm AC-11 ATC-23)
> Report time = 10.
> Report: Event (ATC-23 Acknowledge)
ATCControlPanel
CockpitDisplay
RadarDisplay
ApplicationApplicationGUIGUI
ConnectionConnection
DistributedDistributedMasterMaster
Application GUI Connection
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
ControlControlGUIGUI
ConnectionConnection
CoreCoreOmarOmar
Control GUI Connection -Java (continued)
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• Events function as high-level request for Events function as high-level request for state-change.state-change.
• Independent of nature of Subscriber.Independent of nature of Subscriber.
• No restrictions on how Subscriber uses No restrictions on how Subscriber uses events.events.– I.e. it can “do what it wants” with events.I.e. it can “do what it wants” with events.
Distributed-OMARDistributed-OMAR
D-OMAR/HLA Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
• ““Federate-Cap” functions as conduit Federate-Cap” functions as conduit into/from Core-OMAR module.into/from Core-OMAR module.
• Because Cap has no application-specific Because Cap has no application-specific information, it can be reused.information, it can be reused.
• All modeling behavior is handled within All modeling behavior is handled within Core-OMAR.Core-OMAR.
Distributed-OMARDistributed-OMAR
LISP C++ ExternalFederate
2
ExternalFederate
1
C++C++ExternalExternal
ConnectionConnection
DistributedDistributedMasterMaster
D-OMAR/HLA Architecture
GTE-I / BBN TechnologiesGTE-I / BBN Technologies
CoreCoreOMAROMAR
R
T
I
Federate Cap
Distributed-OMARDistributed-OMAR