W3C | OOP

Technologies for Development of Distributed Hypermedia Applications

Technologies that apply to Issues in the Development of Distributed Hypermedia Applications. (with an emphasis on released, royalty-free technologies). Don't forget to brows Mobile Code technologies.

LINCKS
evalutation
Inter-Language Unification -- ILU  Evaluation
Nifty work on interfaces between software modules, including RPC interfaces. Relates DCE and CORBA. Supports C, Modula-3, and there was some talk about Ada, emacs-lisp, Python, and others. The architecture has a single interface specification language, plus an extensible set of message formats (called protocols, of all things, in ILU-terminology), and transports. For example, an XDR/UDP combo allows interoperability with SunRPC clients and servers. The CORBA IIOP is supported in version2.0. Xerox courier is supported via another combination. Calls within the same address space are also supported. All these combinations can be mixed in the same process, so that gateways are trivial.

Language support includes C, C++, Modula-3, python, Common Lisp and tcl. Java is in the works.

SWIG
Simple Wrapper and Interface Generator. Interesting FFI technology.
Java RMI (and serialization)
serialization == m3 pickle. (with graph traversal). "call by value" objects, with implementation going over the wire (ala obliq)
Modula-3 (as Java VM implementation)
Modula-3 combines safe programming (ala Lisp) and unsafe programming (ala C), objects (ala C++), threads, and interfaces (ala Modula-2). It's the most practical technolgy I've seen for building large distributed applications. Threads, an M3 newsletter.
Python
This is a nifty object-oriented scripting language. Kinda like Modula-3 meets perl. See also: Why Tcl Doesn't Scale Well
Obliq
Obliq is a lexically-scoped untyped interpreted language that supports distributed object-oriented computation.

An Obliq computation may involve multiple threads of control within an address space, multiple address spaces on a machine, heterogeneous machines over a local network, and multiple networks over the Internet.

Obliq objects have state and are local to a site. Obliq computations can roam over the network, while maintaining network connections.

Scheme Underground
We want to take over the world. The internet badly needs a public domain software environment that allows the rapid construction of software tools using a modern programming language. Our goal is to build such a system using Scheme 48, an ultra-portable Scheme implementation which is easily interfaced to existing software written in other languages.
Ian Horswill --- ian@ai.mit.edu

See also: my thoughts on scheme48 for collaborative engineering

Interoperability Mechanisms

OMG COM/CORBA interworking spec
CORBA interface identifiers are mapped to a reserved portion of the UUID space using MD5. I suppose we can use that for URLs as well, no?

Q: What happens when you QueryInterface on a CORBA object?
A: 3.3.12.1 CORBA::Composable::query_interface()
primary_interface is just QI on IUnknown(). "C++ style implementation inheritance is not possible." Bull-pucky. It's not expressible in MIDL, but it's usable (and useful!) as an implementation technique.

2.8.1.2 is goofy. "Com objects are either initialized empty or arbitrary". Not true: factories can export creation methods that take arguments. And the definition of object identity in COM is that QI on IUnknown for all interface pointers on the same object returns the same thing.

2.8.2.1 makes claims about reference counting in wide area apps. The M3 networked object Distributed GC algorithm has proven (theoretically and practically) to work, and it's based on reference counting (as I recall). I know the ILU network garbage collection strategy is based on reference counting. This claim doesn't seem to hold water. Their claims about pinging seem to attack the implementation, rather than the model (whereas they were not willing to give COM credit for persistence and identity, which do exist, though they are built to top, and not intrinsic). Hmm... IMonikerProvider seems to bridge the gap.

Exception mapping: extra arg. Yuk.

pointer is mapped to a sequence of one arg. Interesting. Sharing? Nope. Causes exception.

ILU/HTTP
Digital Creations is releasing their freely-available integration of ILU and various http servers. An infromational W3C draft is available:
ANSA Information Services Framework Distributed Objects and the World Wide Web
ANSA is building a set of tools to integrate a distributed object model into WWW. The objective is to provide a CORBA based environment from which the web appears to consist of a world of distributed CORBA objects.
Web Objects -- Arjuna Group, Dept. of Computing Science, Newcastle University
TCL/CORBA
an integration of TCL with Orbix (IONA's ORB)
Newsgroups: comp.lang.tcl,comp.object
Subject: Re: Q: Tcl CORBA extension
Date: 17 Jul 1995 19:08:56 GMT
Organization: Customer of EUnet Germany; Info: info@Germany.EU.net
GROW -- The GNU Remote Operations Web
@@need to study this

Application Builders

These systems are generally used to build LAN or enterprise distributed database applications.

WebObjects
by NeXT. Includes web interoperability. Lots of O/S's supported.
Lotus Notes
@@need to investigate further
PowerBuilder
@@need more info
Visual Basic
Combined with MS/Access (and lots of other components known variously as VBXs, OLE controls, etc) VB is a booming applications development platform.

Misc.

SOS
burchard's http://www.cs.princeton.edu/~burchard/www/interactive/sos/
check out JIDL
Check out horb
UW Cecil Project Home Page
UF/NA Perl Archive
Remote file ftp.netcom.com/pub/pearl/
libwww-perl: Distribution Information
Inter-Language Unification -- ILU
The Scheme Programming Language
Scheme - Table of Contents
Computing Languages List
Larch Project at SRC Home Page
Programming Language Research
Xerox's PPCR
portable posix common runtime. Supports threads, GC over standard posix runtime (needs select/poll).

linux

Linux Documentation Project
Remote file ftp.yggdrasil.com/pub
Linux kernel changes
Query Interface to the Linux Software Map Broker
Query Interface to the Linux Software Map Harvest Broker


Connolly
last update by $Author $ on $Date $