Harold Carr, Ph.D.

P. O. Box 58166
Salt Lake City, Utah 84158 USA

Current as of October 23, 2012


Harold Carr is the architect for SOAP web service technology at Oracle (a position he also held at Sun Microsystems). He designed the pluggable transports, the asynchronous client and service APIs, and streaming I/O used in Oracle's SOAP stack. He also lead the consolidation of Oracle's three SOAP stacks down to one centering on the Sun SOAP stack (aka Metro). Previous to this role he designed the core architecture used in Sun's JAX-WS 2.0 reference implementation, in Sun's CORBA ORB and in the and the scalable socket communications architecture (aka Grizzly) used in GlassFish and IIOP remoting. He was responsible for RMI-IIOP load-balancing and fail-over in the GlassFish application server. He was part of the DOE/NEO team that built a C++ forerunner to EJBs. He was chairperson of the OMG Portable Interceptor specification and helped write the OMG Portable Object Adapter specification. Previous to Sun, he did distributed computing research at Hewlett-Packard Research Laboratories and Schlumberger Research Laboratories, was Chief Architect of Visual Lisp technology at Autodesk, and was a logic simulation consultant for Cirrus Logic. He holds a Ph.D., in Computer Science from the University of Utah where he worked as a research programmer on Portable Standard LISP, Utah Common LISP, Concurrent Utah Scheme and Distributed C++.


1994Ph.D., Computer Science, University of Utah (Summa cum Laude)


2/2010 - presentConsulting Member of Technical StaffOracle, Redwood Shores, CA
Architect of SOAP-based Web Service Technology.
Shipped SOAP stack in WebLogic Server 12c, 11gR1; GlassFish V3.1.2.2, V3.1.2, V3.1.1, V3.1; JavaSE 7 (updates 1-9), JavaSE 6 (updates 19-37).
Oracle's SOAP stack is the wiring in Oracle Fusion Middleware (FM) and Oracle Fusion Applications.
Designed, submitted and patented "DISI: Dynamic Invocation and Service Interface".
Did majority of DISI implementation, test and documentation.
DISI enables layered softwared (e.g., FM) to take control of the input/output of the SOAP stack. In particular, pluggable transports and asynchronous, streaming I/O.
DISI was designed in response to requirements from Oracle's security, fusion, cloud service and Axia teams. Also used by our team to integrate WS-SOAP-JMS.
Consolidated Oracle's three SOAP stacks to use Sun's SOAP stack as the core.
Designed "configuration architecture" to enable SOAP stack to be dynamically configured by Oracle Web Services Manager and Oracle Enterprise Manager.
Designed "Life-Cycle Notification API" for client proxies and service endpoints lifetimes and various points in the request/response life-cycle.
Helped design a "Session API" to decouple WS-ReliableMessaging from WS-Security/SecureConversation implementations (since security is owned by another team in Oracle.
Helped design a "Persistence API" with pluggable providers (e.g., Coherence, JDBC, file).
Worked with customers (e.g., Verizon, AT-T, Siemens, Capital One, Harris, Mitre, ...) on their SOAP requirements and issues.
Worked with new Oracle acquisitions to transition them from external SOAP stacks (e.g., CXF) to Oracle's SOAP stack.
Lead distributed team: Beijing, India, Europe, East/West U.S.A.
Took course on Oracle Coherence In-Memory Data Grid.
Attended O-Reilly Strata (Santa Clara, CA 2011, 2012), O-Reilly Open Source Convention (Portland, Oregon 2011, 2012).
2/1999 - 2/2010Senior Staff EngineerSun Microsystems, Santa Clara, California
Engineering lead for Java SOAP web services interoperability with Microsoft .NET Windows Communication Foundation
Responsible for CORBA (JavaIDL and RMI-IIOP) parts of JavaSE and JavaEE.
Application server work includes: clustering, load-balancing and failover.
CORBA work includes specification, design, implementation, documentation and maintenance in all CORBA areas (e.g., POA, GIOP/IIOP, language mappings, etc).
Designed the PEPT 2.0 implementation architecture for JAX-WS.
Sun representative for OMG specifications and technical meetings.
11/2005 - 2/2010(Sun)
Java Web Services Interoperability with Microsoft Windows Communication Foundation.
Architect of SOAP-based Web Service Technology.
SOAP stack project known as "Tango" and "WSIT" and "Metro". Funded by Sun CTO. Quarterly in-person reports to Sun CTO, Greg Papadopoulos, on Project Tango status.
Shipped SOAP stack (JAX-WS, Metro) in OpenSSO 8.0; OpenESB; GlassFish V2, V2.1; JavaSE 6 (updates 1-18).
Lead a global team of engineers working closely with Microsoft engineers (including numerous onsites in Redmond over a several year period, weekly concalls, daily email) to implement WS-* specifications (i.e., WS-Trust, WS-Security, WS-SecureConversation, WS-AtomicTransactions, WS-Coordination, WS-ReliableMessaging, WS-MakeConnection, WS-Policy, WS-BP, WS-BSP, WS-RSP, WS-Addressing, WS-Metadata-Exchange...) enabling enterprise SOAP interoperability.
Non-interop specifications implemented in product: WS-SOAP/TCP, FastInfoset.
Worked with NetBeans team to ensure IDE support for the SOAP stack in all areas (e.g., Trust, Security, AtomicTransactions, ...). Note: Microsoft engineers told us that our IDE support was much better than theirs, especially in the security/trust area.
Worked with customers and partners (e.g., American Express, Boeing, U.S. Navy, Motorola, Credit Suisse, Canadian Health Infoway/HIAL, NHIN, Erickson, Siemens, Vodafone, Telefonica, MedPlus, BEA, JBOSS/Redhat, Oracle, Layer 7, Forrester, Noemax) on SOAP issues and requirements.
Guided ThoughtWorks engineers (paid for by Microsoft) in implementing Apache Stonehenge to demonstrate SOAP interoperability in a realistic application.
Guided ThoughtWorks engineers (paid for by Microsoft) in testing WS-RSP interoperability with Microsoft and IBM.
Participated in Sun's Mentoring Program as mentor to Alexei Mokeev (Russia), Nicholas Solter (Colorado), Alfredo Kojima (Argentina), 3 interns in India.
Attended Microsoft Professional Developers Conference in 2006; Semantic Technology Conference in 2008 and 2009.
1/2005 - 10/2005(Sun)
Sun Java System Application Server Enterprise Edition High Availability (HA).
Shipped CORBA (with HA features) in Sun Java Application Server 8.2 Enterprise Edition.
Designed RMI-IIOP dynamic load-balancing and failover system used in Java Application Server 9.0/EE, and lead implementation team.
11/2001 - 12/2004(Sun)
PEPT Remoting Systems Architecture.
Shipped CORBA in Sun Java Application Server 8.1 Enterprise Edition.
Shipped CORBA in Sun Java Application Server 8.0 Platform Edition.
Shipped CORBA in Java Standard Edition 5
Shipped CORBA in J2EE 1.4 Reference Implementation.
Shipped CORBA in Java Standard Edition 1.4
Designed RMI-IIOP static load-balancing and failover system used in Java Application Server 8.1/EE, and lead implementation team.
Created and patented PEPT 1.0: an adaptable remoting systems architecture.
Rewrote Sun's ORB to use PEPT 1.0 architecture.
Created and patented PEPT 2.0.
Used PEPT 2.0 as the implementation architecture for JAX-WS.
Used PEPT architecture to build clients and servers which use both IIOP and SOAP transparently to the programming model.
Designed and implemented RMI-IIOP static load-balancing and failover system used in Java Application Server 7.1/EE.
Designed and implemented a high-level, scalable framework on top of Java NIO. This became Project Grizzly.
Lead communications team comprised of JAX-RPC, CORBA, JMS, JAXM and Connectors.
Sun representative on OMG Java-to-IDL Revision Task Force.
Worked with customers (e.g., NTT) on their CORBA/RMI-IIOP requirements and issues.
Participated in Sun's Engineering Mentoring Pilot Program with mentor David Ungar.
Participated in Sun's Mentoring Program as mentor to Darryl Mocek.
Took course "Effective Presentations".
Took course "The 7 Habits of Highly Effective People".
Took course "Time Management and Personal Leadership".
4/2000 - 10/2001(Sun)
Lead ORB Interceptor Architect and Implementor.
Shipped CORBA in J2EE 1.2 and 1.3. Reference Implementation.
Shipped CORBA in iPlanet Application Server.
Chairperson of OMG Portable Interceptor (PI) Finalization and Revision Task Forces. Wrote OMG Portable Interceptor specifications: ptc/2001-10-25, ptc/2001-03-04, ptc/2000-08-06, and reports: ptc/2001-10-24, ptc/2000-08-05.
Lead and scheduled a team of 3 implementing the OMG PI specification.
Member of Sun team which wrote the OMG Object Reference Template (ORT) specification ptc/01-08-31 and gave OMG presentation orbos/2000-06-21 which led to the ORT RFP orbos/00-09-30.
Designed and implemented proprietary ORB connection interceptors used by J2EE and iPlanet.
Took course "Solaris System and Network Administration".
2/1999 - 3/2000(Sun)
Interceptors and GIOP 1.4
Shipped CORBA in J2SE 1.3
Sun's representative to OMG Portable Interceptor RFP orbos/98-07-10, which lead to adopted specification ptc/2000-04-05 (which included close collaboration with the CSIv2 Security and the Transaction specifications).
Sun representative on OMG Messaging Revision Force, Interoperable Naming Service and Interop Task Forces.
Designed implementation architecture for OMG GIOP 1.4 (formal/99-10-11), notably: fragmentation.
Designed and implemented proprietary IOR and Request/Reply interceptors for use by J2EE Reference Implementation.
3/1998 - 2/1999Chief Architect, LISP TechnologyAutodesk, San Rafael, California
Shipped Visual LISP in AutoCAD 2000
Shipped Visual LISP 1.0 plug-in product for AutoCAD R14 on Windows 95/98/NT. Voted a top CAD product of 1998 by Cadence magazine.
Replaced AutoLISP command-line interpreter with VM/compiler/IDE-based Visual LISP. (LISP is the main customization language used by AutoCAD's 2 million users.)
Designed API for Visual LISP 1.0
Led a team of engineers in Moscow and California.
12/1994 - 2/1998Staff Engineer, SoftwareSunSoft (Sun Microsystems), Mountain View, California
CORBA Sustaining Engineer
Defined architecture to transition NEO(C++)/Joe(Java) CORBA users to Visigenic Visibroker (C++) and JavaIDL ORBs.
Worked with Visigenic (Inprise/Borland) on phased, prioritized delivery of transition architecture.
Worked with chief architects at British Telecom, Siemens Nixdorf, and the Royal Danish Navy implementing specific transitions.
SunSoft representative at OMG technical meetings.
Portable Object Adapter Project Lead
Responsible for SunSoft's implementation of OMG's Portable Object Adapter (POA) on the Joe (Java) ORB.
Object Development Framework (ODF) Project Lead
(ODF is the programming API on top of Sun's C++ CORBA ORB.)
Member of SunSoft team which developed the OMG Portable Object Adapter specification: orbos/97-04-14.
Responsible for ODF portion of NEO 2.0 FCS and Joe 3.0 Beta.
Chief architect/implementor of ODF implementation which includes the following features: server-side ORB APIs; extensions to OMG naming service; automatic factory creation and registration; server lifecycle; server agent for remote administration; automatic tracing, logging, locking, delegation; third-party persistence integration.
Took course: "Advanced Java Networking, RMI and Joe".
12/1994 - 5/1996(Sun)
Member of the ODF team.
Shipped NEO 1.0 (SunSoft C++ CORBA product).
On team responsible for ODF portion of NEO 1.0.
Responsible for implementing and maintaining server-side APIs for the NEO product (SunSoft's OMG CORBA ORB).
Performance testing of SunSoft's implementation of OMG Naming, Events, Property and Relationship Services.
Designed and implemented selective locking, selective delegation, wait for commit (of transparent persistence).
Developed and documented examples of usage of NEO's advanced features: locking, delegation, object lifecycle, subobjects (i.e., flyweights), user-defined persistence, tracing and logging, refdata.
Maintained and extended ODF compiler.
Creation and codemerge of automatically generated server code.
Source code gatekeeper
Took course: "SunOS Internals for Employees".
12/1983 - 1/1994Senior Systems ProgrammerCenter for Software Science, Department of Computer Science, University of Utah, SLC, UT
Designed and implemented a distributed version of C++ for network workstations and the Mayfly Parallel Processing System.
Visualization of distributed systems, specifically, Distributed C++, Concurrent Utah Scheme, and Mach Shared Objects.
Lisp (Scheme) language design and compilation for the Mayfly Distributed Parallel Processing System (joint research with Hewlett-Packard Research Laboratories, Palo Alto, California), and for the FAIM-1 Symbolic Multiprocessing System (joint research with Schlumberger Research Laboratories, Palo Alto, California).
Closure analysis and representation.
Development, maintaining, and porting of Utah Common Lisp and Utah Scheme (compiler, interpreter, debuggers).
Implemented "modularization" of Utah Lisp to a minimal system LISP base on top of which we built Utah Scheme, Utah Common Lisp Subset and Utah Common Lisp
Developed a retargetable, highly optimizing Lisp compiler based on an architectural description of the target machine.
Retargeted the Portable Standard Lisp (PSL) compiler to produce C code, then using that compiler to compile the PSL runtime system. The resulting C files are ported to new Unix/C machines within one week.
Development, maintaining, and porting of PSL and Portable Common Lisp Subset (PCLS) (compiler, interpreter, debuggers) on various machines.
Increased PSL portability by implementing a portable linker to support export programs (delivery vehicles) and bootstrapping Lisp systems.
1/1981 - 12/1983VLSI-CAD Systems ProgrammerPatil Systems, Inc., SLC, UT
Designed, implemented, documented and maintained an asynchronous, event driven, gate and functional level logic simulator including a signal algebra. Prototype in Lisp. Production version in C/Unix. Wrote Lisp interpreter in C to provide a fully programmable user interface to the simulator.
Designed and implemented a high-level Hardware Description Language (before VHDL and Verilog) to drive and check simulation results.
Note: Patel Systems became Cirrus Logic.


3/1994 - 11/1994Cirrus Logic, Inc., Fremont, California
Extended CAD tools to interface with SPF, SDF and EDIF.
6/1985 - 3/1992Cirrus Logic, Inc., Fremont, California
VLSI Logic simulation, and Lisp frontends to C tools.
I wrote, maintained and extended a mixed mode (functional and gate-level) logic simulator written in C with an embedded Lisp extension language which was in daily production use from 1985 until 1992. My work included the the design of a signal algebra and the design, implementation, and documentation of a hardware design and control language.
6/1986 - 12/1987Schlumberger, Palo Alto, CA
Parallel Lisp Compilation and FAIM-1 Instruction Set Design.
3/1985 - 9/1986Hewlett-Packard Labs, Palo Alto, CA
Ported Lisp (PSL) to HP's HP-PA RISC Processor.
7/1984 - 8/1984Hewlett-Packard Labs, Palo Alto, CA
Bootstrapped PSL's Microkernel.


"System and Method for Providing a Dynamic Invocation and Service Interface for use in a Middleware or other Environment", Patent Pending 13/427,574, filed 2012 (with Ryan Eberhard)

Method and System for Servicing Requests in a Dynamic Cluster. Patent number 7743167, filed 2006, issued 2010 (with Ken Cavanaugh).

Method and Apparatus for RMI-IIOP Implementation with Java Serialization. Patent number 7533156, filed 2005, issued 2009 (with Ram Jayaraman and Ken Cavanaugh).

Method and Apparatus for Determining Data Encoding Format in RMI-IIOP Messages.. Patent number 7574710, filed 2005, issued 2009 (with Ram Jayaraman and Ken Cavanaugh).

Method and Apparatus to Isolate Change in Remoting System Servers. Patent number 7475402, filed 2004, issued 2009.

Method and Apparatus to Isolate Change in Remoting System Clients. Patent number 7487510, filed 2004, issued 2009

"Systems and Methods Employing a PEPt Architecture for RPC", Patent Pending 10/677,434, filed October 2003.

Refereed Journal Articles

Implementing Concurrent Scheme for the Mayfly Distributed Parallel Processing System, Lisp and Symbolic Computation, An International Journal, Volume 5 Number 1/2, pp 73-94, May 1992 (with R. Kessler, L. Stoller, and M. Swanson).

Moped (A Portable Debugger), Lisp and Symbolic Computation, An International Journal, Volume 3 Number 1, pp 39-66, January 1990 (with R. Kessler, and Mohammad Pourheidari).

An Emulator for Utah Common Lisp-s Abstract Virtual Register Machine, The Journal of Forth Application and Research, Volume 5 Number 1, pp 113-116, 1987 (with R. Kessler).

Putting Lisp on a Forth Base , The Journal of Forth Application and Research, Volume 5 Number 1, pp 117-120, 1987 (with R. Kessler).

Forth for AI?, The Journal of Forth Application and Research, Volume 4 Number 2, pp 177-180, 1986 (with R. Kessler).

A Forth-Based Object File Format and Relocating Loader Used to Bootstrap Portable Standard Lisp, The Journal of Forth Application and Research, Volume 3 Number 2, pp 119-122, 1985 (with R. Kessler).

Refereed Conference Papers

"IIOP and SOAP Failover in Static Clusters," Proceedings of the 2005 International Conference on Communications in Computing, June 2005, pp 61-66, Las Vegas (with K. Cavanaugh).

"llava - Java in Lisp Syntax," Proceedings of the 2005 International Lisp Conference, June 2005, pp 89-100, Stanford, CA.

"Server-side Encoding, Protocol and Transport Extensibility for Remoting Systems," Proceedings of the Second International Conference on Service Oriented Computing, November 2004, pp 329-334, New York.

"Client-side Encoding, Protocol and Transport Extensibility for Remoting Systems," Proceedings of the 2004 International Conference on Communications in Computing, June 2004, pp 51-57, Las Vegas.

"PEPt - A Minimal RPC Architecture," OTM Confederated International Workshops HCI-SWWA, IPQ, JTRES, WORM, WMS and WRSM 2003 Proceedings, November 2003, pp 109-122, Catania, Sicily.

"One-Page PEPt," Middleware 2003 Workshop Proceedings, June 2003, Rio de Janeiro, Brazil.

"The AutoLISP Platform for Computer-Aided Design," Lisp In the Mainstream, November 1998, Berkeley, California (with R. Holt).

"Compiling Distributed C++," Proceedings of the Fifth IEEE Symposium on Parallel and Distributed Processing, December 1993, pp 496-503, Dallas, Texas (with R. Kessler and M. Swanson).

Parallel C++ Workshop Report, with M. Chandy, C. Kesselman (California Institute of Technology), D. Gannon, (Indiana University) et. al. Marina Del Ray, California, May 1993.

"Distributed C++," Workshop on Languages, Compilers, and Run-Time Environments for Distributed Memory Multiprocessors,ACM Sigplan Notices, Volume 28, Number 1, p 81, January 1993 (with R. Kessler and M. Swanson).

"EPIC - A Retargetable, Highly Optimizing Lisp Compiler," Proceedings of the SIGPLAN '86: Symposium on Compiler Construction, June 1986, pp 118-130, (with G. Duggan; R. Kessler; J. Knell; J. Krohnfeldt; J. Peterson).

"A Portable Linker for Exporting Lisp Programs and Bootstrapping Portable Standard Lisp," Proceedings of the 1986 ACM Mountain Regional Conference, April 1986, (with R. Kessler).

Conference Responsibilities

2006-2012 Program Committee Member Java One.
2005-2010 Program Committee Member International Symposium on Distributed Objects and Applications: 2005, 2006, 2007, 2008, 2009, 2010.
2004 Program Committee Member ACM/IFIP/USENIX 5th International Middleware Conference.

Invited Talks

October 2012Remoting Retrospective: DCE, DCOM, CORBA, RMI/JINI, RMI-IIOP, SOAP, REST, WebSockets, JavaOne, San Francisco
October 2012SOAP and/or REST and/or WebSockets, JavaOne, San Francisco
April 2012"When To Use SOAP and when REST", Independent Oracle Users Group, Las Vegas
October 2011Enterprise SOAP - Advanced off-the-wire Features, JavaOne, San Francisco
June 2011When To Use SOAP and when REST, Jazoon, Zurich, Switzerland (with Marek Potociar).
September 2010SOAP and REST Web Service Use Cases, Interoperability and Programming Models, JavaOne, San Francisco (with Jakub Podlesak).
September 2009"Metro Update", Utah Java User Group, Salt Lake City.
June 2009"Metro Web Services Security Usage Scenarios", Jazoon, Zurich, Switzerland (with Jiandong Guo).
June 2009Microsoft General Session, JavaOne (keynote), San Francisco (with Dan'l Lewin, Steven Martin, Greg Leake - all Microsoft).
June 2009"Using Java Technology in the Windows Azure Cloud via the Metro Web Services Stack", JavaOne, San Francisco (with Clemens Vasters, Microsoft).
June 2009Metro Web Services Security Usage Scenarios, JavaOne, San Francisco (with Jiandong Guo).
June 2009Metro Web Services, NetBeans, GlassFish and OpenSSO in Action with Amazon WS, Azure, and Office, Community One (JavaOne), San Francisco.
April 2009"The PEPT Journey: A Story of Technology, Politics and Process", Industry forum speaker, University of Utah.
March 2009Metro, Jersey, GlassFish, OpenESB, OpenSSO, Utah Java User Group, Salt Lake City.
May 2008Interoperable Business Web Services Using Project Metro and .NET 3.5, JavaOne, San Francisco (with Kevin Wittkopf, Microsoft).
February 2008"Java/.NET 3.x Web Service Interoperability with Project Metro", Utah Java User Group, Salt Lake City.
December 2007"The Metro Web Services Stack (Project Tango in GlassFish)", JavaPolis, Antwerp, Belgium.
December 2007Metro and REST: Everyday Web Services, Sun Tech Days, Frankfurt, Germany (with Carol McDonald).
October 2007"The Metro SOAP Stack", Sun MidWest Java Days, Indianapolis, Indiana.
October 2007"The Metro SOAP Stack", Sun MidWest Java Days, Columbus, Ohio.
June 2007"Project Tango Features", Jazoon, Zurich.
May 2007Takes 2 to Tango: Java Web Services and .NET Interoperability, JavaOne, San Francisco (with Arun Gupta).
January 2007"Java EE 5 and GlassFish: A Plunge into The Aquarium", Utah Java User Group, Salt Lake City.
November 2006JAX-WS and WSIT - Tangoing with .NET, Sun Tech Days, Prague.
November 2006Java EE 5 and GlassFish: A Plunge into The Aquarium, Sun Tech Days, Prague.
May 2006Composable Web Services Using Interoperable Technologies from Sun-s Project Tango, JavaOne, San Francisco (with Nick Kassem).
April 2005"The PEPT Service-Oriented Architecture", Colloquium speaker, Brigham Young University.
February 2005"Is Worse Worse or Better?", Industry forum speaker, University of Utah.
February 2005The PEPT Service-Oriented Architecture, Colloquium speaker, University of Utah.
June 2001"OMG Portable Interceptors", JavaOne, San Francisco.
June 2001"New CORBA Features in J2SE 1.4", JavaOne, San Francisco.
November 1998"The Future of Lisp", Panel Member, Lisp in the Mainstream Conference.
1993"Compiling Distributed C++", Colloquium speaker, University of Texas at Austin
1987"Forth Engines", Panel Member, Rochester Forth Conference.
1986"Working group on AI", Chairman, Rochester Forth Conference.

Industry Articles

March 2010Metro, The GlassFish Podcast.
December 2009Metro 2.0 - the advanced SOAP web services stack in GlassFish, GlassFishWebinar.
June 2009A Common Ant Build File for Metro-Based Services and Clients, Sun Enterprise Tech Tips.
February 2009Metro Web Services stack (and .NET 3.x interop), GlassFish Webinar.
November 2008Sun Metro and .NET WCF Interoperability, video interview, On Software (with Kevin Wittkopf, Microsoft) (Note: search for author name).
March 2008Sun Metro and .NET WCF Interoperability, InfoQ.
November 2007Microsoft and Sun Interop Plugfest, Javalobby.
October 2007Testing Interoperability Between Metro and .NET, Enterprise Tech Tips.
June 2006Sun-s Project Tango, Sun Developer Network.

Courses Taught

9/1993 - 9/1994InstructorDepartment of Music, University of Utah, SLC, UT
Music 197, 198, 397, 398 - Private Applied Music
3/1988 - 6/1988InstructorDepartment of Computer Science, University of Utah, SLC, UT
CS101, Fortran


Phi Kappa Phi (General Scholastic Honorary)
Tau Beta Pi (Engineering Honorary)
Sperry Rand Computer Science Undergraduate Scholarship
Army/Navy Science Award

Dissertation Abstract

Distributed C++

Ph.D. Dissertation, University of Utah, 1994.

Distributed C++ (DC++) is a language in which to write parallel applications on loosely coupled distributed systems. Its key idea is to extend the C++ class into three categories: vanilla C++ classes, classes which act as communication and synchronization gateways between abstract processors, and classes whose instances may be passed by value between abstract processors via gateways. Value classes are deep copied and preserve structure sharing. DC++ marshals arguments when value classes are used in remote method invocations. An important result of making the three categories syntactically identical is that member function invocation of gateways looks identical to vanilla member function invocation. Therefore, gateways may be redistributed without program modification. Concurrency is achieved by creating multiple abstract processors and starting multiple threads of control operating within these abstract processors. DC++ transparently supports multitasking so that the number of actual processors may be changed without program modification. DC++ provides support for concurrency (threads), communication and synchronization (explicit ports, remote method invocation, and futures), and locality (domains). DC++ is designed to run on the Mayfly Distributed Processing System. It also runs on homogeneous workstations (HP Series 9000, Model 300/400/800/700) using BSD sockets or Mach ports for communication.