Fact-checked by Grok 2 weeks ago

Distributed object

A distributed object is a software component in that encapsulates both data and behavior (methods), enabling remote invocation of its methods by clients across different address spaces, processes, or networked machines, as if it were a local object. This paradigm extends to distributed systems, promoting transparency, reusability, and interoperability among heterogeneous environments. Distributed object computing emerged in the early as a response to the limitations of traditional client-server models, aiming to simplify the development of networked applications by treating remote objects uniformly with local ones through mechanisms like interface definition languages (IDLs) and object request brokers (ORBs). The (OMG), founded in 1989, standardized this approach via the (CORBA), which defines core components such as for transparent communication, IDL for specifying object interfaces, and services for naming, events, and transactions, supporting over 300 member organizations in creating portable, language-independent systems. Other notable implementations include (RMI), which uses stubs and skeletons for remote calls, and earlier influences like remote procedure calls (RPC) in systems such as Open Group's (DCE). Despite its advantages in modularity and scalability, distributed object systems face inherent challenges that distinguish them from local object-oriented programming, including significant latency differences (often 4–5 orders of magnitude higher for remote invocations), invalidation of direct memory pointers across address spaces, risks of partial failures without global state, and complexities in handling concurrency and asynchronous operations. These issues, highlighted in foundational critiques, underscore the need for explicit design considerations in interface semantics and fault tolerance, rather than assuming seamless uniformity between local and remote objects as initially envisioned in standards like CORBA. Today, distributed objects influence modern middleware, microservices, and cloud computing frameworks, though they have evolved alongside alternatives like RESTful APIs and service-oriented architectures.

Fundamentals

Definition

A distributed object is an entity in that encapsulates state and behavior, with its methods invocable from remote processes across different address spaces, such as separate processes on the same machine or networked computers. This allows clients to interact with the object as if it were local, abstracting the underlying network communication. Unlike local objects confined to a single , distributed objects extend object-oriented principles to heterogeneous environments, where the object's implementation may reside on a different host. Central to distributed objects are key concepts like location transparency, which hides the physical location of the object from clients, enabling seamless access regardless of . Remote method invocation (RMI) facilitates this by allowing a client to call methods on a remote object through a proxy-like , translating the call into network messages. While built on message-passing paradigms for , distributed objects emphasize object-oriented encapsulation to protect internal state, for across distributed components, and polymorphism to support flexible method resolution in networked settings. This distinguishes them from general distributed systems, which may rely on procedural or procedural-like interactions without these features. The basic lifecycle of a distributed object involves , , and . Creation typically occurs on a host, often through a object or direct , producing an object that serves as a for remote access. Referencing allows this handle to be passed to clients via parameters in method calls or registries, without exposing the object's location. then proceeds through RMI, where the client issues a method call on the reference, triggering execution on the server and return of results, all while managing potential failures transparently.

Historical Development

The concept of distributed objects emerged from the convergence of object-oriented programming principles and early distributed systems research in the 1970s and 1980s. , pioneered by languages like Smalltalk developed at Xerox PARC starting in 1972, emphasized encapsulation, inheritance, and polymorphism as a way to model complex software systems. Concurrently, drew from (RPC) mechanisms, formalized in the influential 1984 paper by Andrew Birrell and Bruce Nelson at Xerox PARC, which enabled procedure invocations across networked machines while abstracting network details. These foundations laid the groundwork for extending object models beyond single machines, addressing challenges like and concurrency in distributed environments. In the late , research projects began explicitly exploring distributed object systems. The system, developed at and detailed in a 1986 ACM paper, introduced a programming language and runtime for building reliable distributed applications using atomic actions and persistent objects to handle failures like crashes and partitions. Similarly, the Emerald language from the , presented in a 1986 paper, advanced a uniform and object mobility for distributed programming, allowing objects to migrate seamlessly across nodes without location-specific code. These efforts highlighted the potential of objects as a unifying for distributed , influencing subsequent designs. The 1990s marked the popularization of distributed objects through industry standards and frameworks. The (OMG), founded in 1989, released the initial CORBA 1.0 specification in 1991, defining a platform-independent architecture for object interoperability via an Object Request Broker (ORB). followed with (DCOM) in 1996, extending its (COM) to support remote object activation and invocation over networks. introduced (RMI) in 1997 with JDK 1.1, providing a Java-specific mechanism for remote method calls integrated with the . These standards facilitated widespread adoption in enterprise systems for building scalable, heterogeneous applications. Distributed objects reached peak adoption in the late 1990s and early , powering in sectors like and for integrating legacy systems and enabling service-oriented architectures. However, by the 2010s, critiques emerged regarding their complexity, performance overhead, and mismatch with web-scale demands, as noted by Martin Fowler in his 2014 analysis, which argued that distributed objects violated fundamental laws of distribution and paved the way for alternatives like .

Architectural Principles

Location Transparency

Location transparency is a core principle in distributed object systems that abstracts the physical location of objects from clients, allowing method invocations to appear identical whether the object resides locally or remotely across a . This abstraction enables developers to interact with distributed objects using the same syntax and semantics as local ones, without needing to specify or manage network addresses, hostnames, or communication protocols. As defined in foundational distributed systems literature, location transparency treats remote objects as if they were local variables or instances, fostering a single-system despite underlying . The primary benefits of location transparency include simplifying application development by allowing reuse of established models in distributed environments, which reduces the on programmers who can focus on rather than distribution details. It also facilitates dynamic object binding, where references to objects can be resolved at , and supports object across nodes without requiring modifications, enhancing system flexibility and . For instance, in middleware-based architectures, this principle promotes by client code from server topology changes. Implementation of location transparency typically relies on location-independent object references, such as handles, universal resource locators (URLs), or opaque identifiers, which replace direct memory pointers used in local systems. These references are managed by layers that intercept invocations and route them transparently to the appropriate host, often through naming services or registries that map logical names to current physical s. This approach ensures that clients obtain and use references without embedded information, enabling seamless redirection if objects move. Despite these advantages, location transparency is often partial in practice due to inherent network realities, such as unavoidable in remote calls that cannot be fully concealed from performance-sensitive applications. Additionally, it may mask failure modes, like network partitions appearing as object unavailability, complicating error handling and . Achieving complete transparency can introduce overhead from indirection layers, potentially impacting efficiency in high-throughput scenarios.

Remote Method Invocation

Remote Method Invocation (RMI) enables a client object in one process to invoke a method on a remote object in another process, typically across network boundaries, as the object-oriented counterpart to remote procedure calls (RPC). This mechanism abstracts the distribution, allowing developers to program as if invoking local methods while the underlying system handles communication and execution. In distributed object systems, RMI relies on to manage the invocation, ensuring despite differences in hardware, operating systems, or programming languages. The RMI process begins on the , where a —a for the remote object—marshals the arguments into a message, including the remote object , identifier, and parameters, then transmits it over the using a request-reply . On the side, a receives the message, unmarshals the arguments, dispatches the call to the actual remote object's , executes the , and marshals the result (or exception) before sending it back to the client , which unmarshals and returns it to the caller. This end-to-end flow, often synchronous by default, ensures the client blocks until the response arrives, mimicking local invocation semantics. The marshalling steps involve serializing data structures for transmission, as detailed in object marshalling techniques. Communication models in RMI vary to balance reliability, , and responsiveness. Synchronous invocation follows a request-reply pattern, where the client waits for the server's response, providing exactly-once or at-most-once semantics through acknowledgments and duplicate detection to handle failures like lost messages. Asynchronous decouples the caller, allowing non-blocking calls where the client continues execution without waiting, often used in event-driven systems for better . One-way invocations, a subset of asynchronous models, execute the without expecting a reply, offering "maybe" semantics where is best-effort but not guaranteed, suitable for fire-and-forget operations like . In standards like CORBA, operation attributes specify these semantics, enabling the to enforce at-least-once or at-most-once based on retransmission and idempotency. Exception handling in RMI distinguishes remote failures from local ones to maintain system robustness. Remote exceptions, such as those arising from network timeouts, server crashes, or communication errors, are propagated to the client via the response message, wrapped in a specialized exception type (e.g., RemoteException in Java RMI implementations) that includes details like the underlying cause. Local exceptions within the remote method execution are also returned but marked as remote to alert the client of the distributed context, requiring explicit handling to avoid masking network issues. This separation ensures clients can implement fault-tolerant strategies, such as retries or fallbacks, while preserving the transparency of the invocation model. Invocation semantics like at-most-once prevent arbitrary re-executions that could exacerbate exceptions in non-idempotent methods. RMI presupposes the availability of remote object references to locate and the target object. These references serve as unique, location-independent identifiers, often comprising an , , , and object ID, passed as parameters or results in prior invocations or obtained via naming services like registries. Without such references, clients cannot initiate calls, as they encapsulate the to the remote while supporting relocation for . In systems like CORBA, these references are managed by the Object Request Broker () to enable dynamic .

Implementation Mechanisms

Object Marshalling and Serialization

Object marshalling, also known as in many contexts, is the process of transforming the in-memory representation of an object's state—including its and references—into a byte suitable for over a in distributed systems. This ensures that objects can be sent between processes on different machines while preserving their structure and semantics, enabling remote interactions without . In distributed object systems, marshalling is essential for passing parameters in remote invocations or exchanging entire object states, as it bridges heterogeneous environments with varying representations. Common serialization formats in distributed object systems include binary protocols like the Common Data Representation () used in CORBA, which encodes data in a platform-independent manner to support across languages and architectures. CDR handles primitive types such as integers and strings, as well as constructed types like sequences and structures, by specifying alignment rules (e.g., octet-aligned for efficiency) and (sender's native byte order, indicated by a flag in the message header). Other formats encompass XML-based approaches for human-readable , which represent object hierarchies through tagged elements and attributes, and custom protocols tailored to specific systems like Java's object , which uses a stream with class descriptors and object handles to manage references. Handling complex types, such as cyclic references or inheritance hierarchies, often involves techniques like or unique identifiers in formats to avoid infinite loops, while XML relies on schemas to define type relationships. Unmarshalling is the inverse operation, where the receiving end reconstructs the original object from the byte stream, including type verification and reassembly to restore references and . This typically involves deserializing the stream into local memory structures, resolving object references, and invoking constructors or initialization methods to ensure the reconstructed object behaves equivalently to the original. In systems like CORBA, the Object Request Broker () facilitates unmarshalling by generating code that interprets streams and instantiates proxies for remote objects. Key challenges in object marshalling include versioning, where evolving definitions across updates can lead to issues during deserialization, requiring mechanisms like serialVersionUID in to track and resolve modifications such as added or removed fields. Systems address this by defining rules, such as allowing new optional fields while ignoring obsolete ones, to enable backward and without breaking remote communications. Additionally, handling non-serializable components—like file handles, sockets, or threads—poses difficulties, as these cannot be meaningfully transmitted; solutions often involve marking them as transient to exclude them from the stream or replacing them with proxies that reinitialize local equivalents upon unmarshalling. In the context of remote method invocation, these techniques ensure parameters are correctly packaged and reconstructed, supporting transparent distribution.

Stubs, Skeletons, and Proxies

In distributed object systems, stubs serve as client-side proxies that enable transparent remote method invocations by intercepting local method calls on a remote object's , marshalling the parameters into a network-transmittable format, and forwarding the request to the via the underlying communication layer. These stubs implement the same as the remote object, allowing clients to interact with them as if they were local instances, while handling the details of remote communication without exposing distribution aspects to the application code. On the server side, skeletons act as dispatchers that receive incoming requests from the client , unmarshal the parameters into a form usable by the local object implementation, invoke the corresponding method on the actual remote object, and then the response for return to the client. Skeletons are typically generated alongside stubs to ensure consistency between client and interfaces, providing a structured for request processing while abstracting the network from the server's implementation logic. In modern distributed object architectures, proxies extend the stub concept to support dynamic behavior, where static stubs—pre-generated at from interface definitions—are contrasted with dynamic that are created at without requiring prior . Dynamic , for instance, implement specified interfaces on-the-fly and delegate method to an invocation handler, which can intercept calls to perform tasks like validation or before forwarding, thus enabling flexible handling of remote interfaces without knowledge of their concrete implementations. This approach enhances adaptability in environments where interfaces may evolve or where is preferred over static compilation. Such intermediary components are commonly generated using tools like Interface Definition Language (IDL) compilers, which process formal interface specifications to produce both static stubs and skeletons tailored to the target programming language, ensuring type-safe and efficient remote interactions. Alternatively, runtime mechanisms for dynamic proxies leverage reflection APIs to instantiate proxies directly in code, bypassing the need for dedicated compilation steps while maintaining compatibility with marshalling processes for data serialization.

Technologies and Frameworks

CORBA and OMG Standards

The (CORBA) is a standard developed by the (OMG) to enable the creation of platform-agnostic distributed object systems, allowing objects to communicate across heterogeneous environments without regard to programming languages or operating systems. First specified in version 1.0 in October 1991, CORBA introduced the foundational object model, the Interface Definition Language (IDL) for defining object interfaces, and an initial C language mapping to support . The IDL serves as a neutral description language that abstracts object interfaces, enabling stubs and skeletons to be generated for various languages, thus promoting vendor-neutral integration. At the core of CORBA is the Object Request Broker (ORB), which acts as the central mediator for object interactions in a distributed system, handling request dispatching, location transparency, and response delivery between clients and servers. The encapsulates the complexities of network communication, allowing clients to invoke methods on remote objects as if they were local. To ensure interoperability across different ORB implementations, CORBA 2.0, released in August 1996, introduced the General Inter-ORB Protocol (GIOP) and its instantiation over TCP/IP, the Internet Inter-ORB Protocol (IIOP), which standardizes the wire protocol for message exchange. CORBA further supports dynamic discovery and management through the Interface Repository, a centralized store that allows clients to query and invoke operations on objects at without prior compilation of stubs. Complementary services enhance functionality, including the Naming Service for object location via hierarchical names, the Trading Service for dynamic based on properties, and the Event Service (later extended in CORBA 2.4) for decoupled, asynchronous communication between suppliers and consumers. During the , CORBA saw significant adoption in for high-volume , such as delivering millions of messages per second in systems, and in enterprise environments for applications like and reservations. However, its legacy is tempered by criticisms of excessive complexity, particularly in APIs for object adapters, services, and type handling, which often required extensive configuration and led to steep learning curves for developers. Despite these challenges, CORBA's standards laid groundwork for subsequent frameworks, with ongoing use in mission-critical sectors requiring robust .

Microsoft DCOM and COM+

Microsoft's (DCOM) evolved as an extension of the (COM), which was introduced in as the underlying for (OLE) 2.0, enabling binary interoperability among software components on a single machine. DCOM, originally known as Network OLE, extended COM's capabilities to support distributed communication across networks, allowing objects to interact seamlessly between processes on different computers as if they were local. Released in 1996 with and later integrated into , DCOM uses Universally Unique Identifiers (UUIDs) to uniquely identify classes, interfaces, and objects across distributed environments, ensuring location transparency. It relies on (RPC) mechanisms over / for inter-machine communication, facilitating remote method invocations through a layered protocol stack that includes authentication and data integrity features. DCOM's architecture employs and Dynamic Link Libraries (DLLs) to handle object marshalling and unmarshalling, where the marshals calls and parameters into a network-transmittable format, and the server-side reverses the process to invoke the actual object . models in DCOM support various scenarios, including in-process for local efficiency and remote via the Object Resolver , which manages object instantiation and across machines. Unlike CORBA's emphasis on cross-platform openness through standardized interfaces, DCOM is tightly integrated with the Windows ecosystem, prioritizing proprietary optimizations for environments. COM+, introduced in Windows 2000 in the late 1990s, built upon DCOM by incorporating services from Microsoft Transaction Server (MTS) to enhance enterprise-level distributed applications. It added support for declarative transactions via the Microsoft Distributed Transaction Coordinator (MSDTC), enabling atomic operations across multiple components; message queuing through integration with Microsoft Message Queuing (MSMQ) for reliable, asynchronous communication; and role-based security models for access control and authentication. COM+ further integrated with Windows services, such as the COM+ Event System for loosely coupled event handling and the Catalog for configuration management, streamlining deployment and scalability in server environments. By the 2000s, DCOM and COM+ began to be superseded by .NET Framework technologies, starting with .NET Remoting for managed code distribution and evolving to (WCF), which unified remoting, web services, and messaging under a more flexible, standards-based model. While still supported in modern Windows versions for legacy compatibility, these technologies have largely been replaced in new development by service-oriented architectures like WCF and later . Java Remote Method Invocation (RMI) is a API that enables the distribution of objects across multiple Java Virtual Machines (JVMs), allowing clients to invoke methods on remote objects as if they were local. Introduced in February 1997 as part of JDK 1.1, RMI builds on Java's object-oriented model by using interfaces to define remote objects, where a remote interface extends java.rmi.Remote and declares methods that can be called remotely. These interfaces ensure location transparency, with the underlying implementation handling communication via either the Java Remote Method Protocol (JRMP), RMI's native protocol, or the Internet Inter-ORB Protocol (IIOP) for interoperability with CORBA systems. Related Java technologies extend RMI's distributed object paradigm for specific use cases. , specified by in 1998, provides a model for coordination and object exchange among distributed components, allowing Java objects to be stored, retrieved, and matched in a shared virtual space without direct method invocation. (EJB), introduced in 1998 as part of the Java 2 Platform, Enterprise Edition (J2EE), supports the development of distributed, transactional, and secure business components through container-managed services, where EJBs act as remote objects deployed in application servers. More modern frameworks like , integrated into the since its early versions around 2003, abstract RMI and other protocols (such as HTTP-based or Burlap) to simplify remote access to Java objects in enterprise applications. Key features of Java RMI include dynamic class loading via the codebase protocol, where stub classes and supporting classes are downloaded from a specified URL using the java.rmi.server.codebase property, enabling clients to obtain necessary code without pre-installation. Additionally, RMI implements distributed garbage collection (DGC) across JVMs, using a reference counting mechanism with periodic "dirty" and "clean" calls between clients and servers to detect and reclaim unreferenced remote objects, preventing memory leaks in distributed environments. Despite these capabilities, Java RMI has notable limitations, including tight to the Java platform, which restricts with non-Java systems and requires all participants to use compatible JVMs. Firewall traversal poses another challenge, as RMI's use of dynamic ports for callbacks and object serialization can lead to refusals unless specific ports are configured or tunneling mechanisms are employed.

Challenges and Limitations

Performance and Scalability Issues

Distributed object systems incur substantial overhead from network delays during remote method invocations, where round-trip times far exceed those of local calls. In RMI, for instance, a standard null invocation exhibits a round-trip of approximately 1.5 milliseconds, compared to microseconds for local method calls, yielding slowdown factors of 10 to 100 times or greater depending on network conditions and object complexity. This overhead is exacerbated by costs, as Java's default object serialization can consume 25% to 50% of the total RMI execution time, particularly for structured like arrays or trees, where deserialization alone may account for up to 50% of the process in benchmarks involving 15-node object trees. Scalability in distributed object systems is limited by tight coupling between components, which often creates single points of failure and hinders effective load balancing and replication. In CORBA-based architectures, for example, the centralized object request broker can become a under high load, leading to cascading s if not replicated, while the inherent synchronous nature amplifies contention in multi-client scenarios. Empirical studies reveal throughput reductions of 10-100x relative to local invocations; CORBA implementations show slightly higher than RMI in simple single-client cases but degrade less under multi-client loads with larger data transfers, achieving better overall for concurrent access. Marshalling complex objects further strains , as serialization formats like 's JDK streams generate verbose representations that inflate usage—for a 32-integer object, can produce payloads several times larger than optimized alternatives, contributing to 25%-65% of RMI costs in high-volume exchanges. Garbage collection pauses in distributed settings, such as RMI's distributed , introduce additional delays by triggering full collections every 60 seconds by default to reclaim remote references, potentially halting application threads for milliseconds to seconds in memory-intensive deployments. Partial mitigations include asynchronous calls, which decouple invocation from response waiting to improve throughput by up to 50% in benchmarks, allowing clients to proceed without blocking on .

Security and Reliability Concerns

Distributed object systems face significant security challenges due to their networked nature, which exposes interactions between remote objects to potential interception and unauthorized access. In early implementations like (RMI), there were notable authentication gaps, as the standard protocol lacked built-in mechanisms for client or data encryption, allowing unauthorized entities to invoke methods or eavesdrop on communications. This deficiency made particularly susceptible to man-in-the-middle attacks, where an adversary could intercept and alter object invocations without detection, compromising the integrity and confidentiality of distributed operations. To address such vulnerabilities, in distributed objects often relies on capability-based mechanisms, where objects are accessed through unforgeable that encapsulate permissions, ensuring that only authorized principals can invoke specific methods. Standards like the CORBA Security Service, specified by the in the late 1990s, introduced comprehensive features for , , and , including delegation of rights and policy enforcement to mitigate risks in heterogeneous environments. Similarly, Microsoft’s (DCOM) incorporates , assigning privileges to users or groups based on predefined roles, which simplifies management while preventing unauthorized access to remote components without requiring custom security code in applications. Reliability in distributed object systems is undermined by partial failures, such as network partitions, where subsets of objects become unreachable, leading to inconsistent views of the system state across nodes. To handle transient failures during retries, method invocations must often be designed for idempotency, ensuring that repeated calls produce the same result without unintended side effects, thus maintaining amid unreliable networks. Replication strategies play a crucial role in enhancing reliability, with options ranging from —where all replicas reflect updates immediately via synchronization protocols—to , which allows temporary divergences for higher but requires eventual mechanisms. In distributed object contexts, fault models must account for Byzantine failures, in which nodes may behave arbitrarily, sending conflicting messages or halting unpredictably, complicating agreement on object states. Recovery from such faults typically involves techniques like checkpointing to capture object states periodically or distributed transactions to ensure atomicity and rollback, thereby restoring reliability after disruptions.

Applications and Modern Context

Traditional Use Cases

Distributed objects have found significant application in enterprise integration, particularly through CORBA middleware for connecting legacy systems in finance and telecommunications during the 1990s. In the financial sector, CORBA-based infrastructures were employed to integrate banking applications, including trading services for financial markets, enabling seamless data exchange across distributed components. Similarly, in telecommunications, projects such as , funded by Telecom Italia, utilized CORBA alongside to support services and advanced features in distributed environments. These deployments often involved wrapping banking databases with CORBA objects to facilitate web-accessible transactions, as demonstrated in applications that bridged older systems with modern client interfaces. In component-based architectures, DCOM extended COM to support distributed automation in Windows-based enterprise applications, allowing components to operate across networks with location transparency. For instance, DCOM enabled scalable load distribution in broker services, where a single component could manage requests across multiple servers for up to 600 users, promoting reuse of existing objects without recoding. Complementing this, RMI facilitated in grid environments by composing remote method calls for scientific applications, such as matrix computations on remote high-performance servers, though adaptations were needed to mitigate communication overheads in wide-area grids. Specific examples highlight distributed objects in real-time and collaborative domains. In , extensions to the () standard provided a data-centric publish-subscribe model for sensor health assessment in integrated vehicle health management systems, supporting real-time diagnostics on platforms like the MQ-9 Reaper UAV through normalized data models and dynamic topic types. For collaborative tools, concepts from introduced live distributed objects that modeled shared states and synchronization for multi-party interactions, such as peer-to-peer document editing via reliable , enabling incremental integration with legacy applications like spreadsheets. A key benefit of these traditional use cases lies in the reusability of distributed objects across heterogeneous environments, where frameworks like CORBA, DCOM, and RMI abstract away differences in languages, operating systems, and vendors, allowing components to be deployed portably in diverse enterprise settings. This reusability reduced development costs in legacy integrations, as seen in CORBA's role in modernizing tools over wide-area networks.

Evolution and Alternatives

The adoption of distributed object technologies began to wane in the 2010s due to their inherent complexity and fragility, as highlighted in critiques emphasizing the , such as the assumption that networks are reliable and transparent. Martin Fowler's analysis in 2014 underscored how distributed objects, exemplified by systems like CORBA, imposed significant overhead in programming and maintenance, often leading to brittle architectures that struggled with real-world network variability and versioning challenges. This shift was accelerated by the rise of RESTful services and architectures starting around 2010, which favored lightweight, HTTP-based communication over opaque object invocations, enabling easier integration and scalability in web-centric environments. Service-oriented architecture (SOA) emerged as a primary alternative, promoting loosely coupled services defined by contracts rather than shared object interfaces, thus reducing the tight coupling and platform dependencies prevalent in distributed objects. For efficient remote procedure calls (RPC), frameworks like gRPC, developed by Google in 2015, offer high-performance alternatives using HTTP/2 and Protocol Buffers for serialization, achieving lower latency than traditional distributed object brokers while supporting polyglot environments. Similarly, Cap’n Proto, introduced in 2013, provides a capability-based RPC system that extends object-like access across networks without the marshalling overhead of earlier models, emphasizing zero-copy serialization for distributed capability security. In concurrent and distributed scenarios, the actor model, implemented in toolkits like Akka (released in 2009), replaces shared mutable objects with isolated actors communicating via asynchronous messages, mitigating concurrency issues and enhancing fault tolerance in scalable systems. Contemporary evolutions of distributed object concepts appear in cloud environments, where proxy integrations in serverless platforms like enable dynamic invocation of remote functions as object proxies, facilitating distributed processing without full object migration. In databases, such as (initially released in 2008), weak consistency models allow for distributed data objects with tunable , prioritizing availability over strict synchronization to handle high-scale replication across nodes. In AI and , frameworks like (developed by Anyscale, open-sourced in 2016 and widely used by 2025) incorporate distributed object stores to manage shared data and computations across clusters, enabling efficient scaling for large models. Looking ahead, distributed object principles are integrating with to support low-latency processing in decentralized networks, where hybrid models combine object-oriented distribution with event-driven architectures for real-time and AI applications at the network periphery. These hybrids leverage cloud-edge orchestration to balance centralized control with local autonomy, addressing scalability in emerging and distributed AI ecosystems.

References

  1. [1]
    Distributed Objects
    A distributed object is one whose methods can be invoked by a remote process, a process running on a computer connected via a network to the computer on which ...<|control11|><|separator|>
  2. [2]
    [PDF] Distributed Object Computing With CORBA
    The OMG Object Management Architecture (OMA) attempts to define, at a high level of abstraction, the various facilities necessary for distributed OO computing.
  3. [3]
    DCE and Objects - The Open Group
    The CORBA standards define an environment for distributed object computing, a world in which objects can communicate as clients and servers. A key piece of this ...
  4. [4]
    A Note on Distributed Computing
    Nov 29, 1994 · Much of the current work in distributed, object-oriented systems is based on the assumption that objects form a sin- gle ontological class. This ...
  5. [5]
    Distributed Object Middleware
    It is defined as a layer of software above the operating system but below the application program that provides a common programming abstraction across a ...
  6. [6]
    Remote Method Invocation
    Remote method invocation (RMI) is the action of invoking a method of a remote interface on a remote object. Most importantly, a method invocation on a remote ...
  7. [7]
    [PDF] Relating Distributed Objects - VLDB Endowment
    Distributed object systems are emerging to support applications that access objects across distributed, heterogeneous system boundaries.
  8. [8]
    Object Request Broker (ORB) Basics
    The invocation ... Object creation and destruction delimit an object's lifetime. Creation of the object reference denotes creation of the object itself.
  9. [9]
    [PDF] A Distributed Object Model for the Java System
    We have designed such a model and implemented a system that supports remote method invocation (RMI) for distributed objects in Java. This system combines.
  10. [10]
    The Early History Of Smalltalk
    Early Smalltalk was the first complete realization of these new points of view as parented by its many predecessors in hardware, language and user interface ...
  11. [11]
    [PDF] Implementing Remote Procedure Calls
    This paper describes a package providing a remote procedure call facility, the options that face the designer of such a package, and the decisions. ~we made. We ...
  12. [12]
    Distributed programming in Argus - ACM Digital Library
    Argus is a programming language and system for distributed programs, designed to help programmers handle issues like network partitions and crashes.
  13. [13]
    [PDF] Object Structure in the Emerald System
    Emerald objects can be defined to be immutable; this simplifies sharing in a distributed system, since immutable objects can be freely copied. Immutability is ...
  14. [14]
    CORBA® History | Object Management Group
    CORBA 1.0 was released in 1991, 1.1 in 1992, 2.0 in 1996, 3.1 in 2008, and 3.4 in 2021. 1.1 was the first widely published version. 3.1.1 was published as ISO ...
  15. [15]
    //History of Windows · csandker.io
    Microsoft released beta Version of DCOM for Windows 95. Microsoft released Microsoft Transaction Server (MTS) 1.0. 1997. The Windows Scripting Host (WSH) in ...
  16. [16]
    Java version history - Wikipedia
    HotSpot JVM included (the HotSpot JVM was first released in April 1999 for the J2SE 1.2 JVM) · RMI was modified to support optional compatibility with CORBA.Release table · JDK 1.1 · Java SE 5 · Java SE 6
  17. [17]
    Microservices and the First Law of Distributed Objects - Martin Fowler
    The idea of distributed objects is that you could design objects and choose to use these same objects either in-process or remote.Missing: critique | Show results with:critique
  18. [18]
    [PDF] DISTRIBUTED SYSTEMS PRINCIPLES AND PARADIGMS ...
    A: To enhance the distribution transparency that is missing in network operat- ing systems. In other words, middleware aims at improving the single-system view ...Missing: limitations | Show results with:limitations<|control11|><|separator|>
  19. [19]
    [PDF] Distributed and Operating Systems Course Notes - LASS
    ... transparent to the user. It provides transparency in terms of location, migration, concurrency, replication, etc. There are essentially three flavors of ...
  20. [20]
    [PDF] Distributed Systems 5. Remote Method Invocation
    Each process contains objects, some of which can receive remote invocations, others only local invocations. ▫ Objects that can receive remote invocations are ...
  21. [21]
    [PDF] From Coulouris, Dollimore, Kindberg and Blair - Distributed Systems
    • Marshalling does this translation, unmarshalling reverses. • External data representations describe how. • Endian-ness, ASCI or Unicode text, etc. • Two main ...
  22. [22]
    [PDF] Common Object Request Broker Architecture (CORBA) Specification ...
    ... Semantics ... Invocation Interface, the Dynamic Skeleton. Interface, and by the object identity operations described in the Interface Repository clause of ...
  23. [23]
  24. [24]
  25. [25]
    Overview of CORBA
    Oct 2, 2018 · CORBA IDL stubs and skeletons -- CORBA IDL stubs and skeletons serve as the ``glue'' between the client and server applications ...
  26. [26]
    Dynamic Proxy Classes
    A dynamic proxy class is a class that implements a list of interfaces specified at runtime such that a method invocation through one of the interfaces on an ...
  27. [27]
    CORBA® — Common Object Request Broker Architecture
    CORBA (Common Object Request Broker Architecture) uses the ORB for objects to request and receive responses, and is version 3.4.
  28. [28]
    Response to 'The Rise and Fall of CORBA' by Michi Henning
    CORBA is alive and well and applicable today in more industry verticals than it was in its heyday of the 90's. Airline reservations, e-commerce back-ends, telco ...Missing: 1990s adoption
  29. [29]
    The Rise and Fall of CORBA - ACM Queue
    Jun 30, 2006 · Complexity. The most obvious technical problem is CORBA's complexity—specifically, the complexity of its APIs. Many of CORBA's APIs are far ...Missing: 1990s telecom criticisms
  30. [30]
    The Component Object Model - Win32 apps - Microsoft Learn
    Aug 23, 2019 · The Microsoft Component Object Model (COM) is a platform-independent, distributed, object-oriented system for creating binary software components that can ...Missing: COM+ | Show results with:COM+
  31. [31]
    [PDF] DCOM Technical Overview - Software Toolbox
    DCOM extends COM to support communication among objects on different computers, enabling distributed applications on LANs, WANs, or the Internet.Missing: history | Show results with:history
  32. [32]
    Distributed Component Object Model (DCOM) Remote Protocol
    Oct 11, 2022 · [MS-DCOM]: Distributed Component Object Model (DCOM) Remote Protocol ... Date. Protocol Revision. Revision Class. Downloads. 4/23/2024. 25.0.Missing: history | Show results with:history
  33. [33]
    [MS-DCOM]: Overview - Microsoft Learn
    Apr 23, 2024 · DCOM extends COM over a network, enabling object creation, activation, and management. Higher-level applications use DCOM clients to obtain ...Missing: history architecture
  34. [34]
    Component Object Model (COM) - Win32 apps - Microsoft Learn
    Aug 21, 2020 · COM+ is an evolution of Microsoft Component Object Model (COM) and Microsoft Transaction Server (MTS). COM+ builds on and extends applications ...Where Applicable · In This Section · Related DocumentationMissing: history | Show results with:history
  35. [35]
    Migrating from .NET Remoting to WCF - Microsoft Learn
    Nov 17, 2022 · This article describes how to migrate an application that uses .NET Remoting to use Windows Communication Foundation (WCF).Missing: DCOM superseded
  36. [36]
    CORBA and Java technologies
    History of the CORBA Programming Models. In 1997, Remote Method Invocation, or RMI, was introduced in JDK 1.1. Initially, RMI was positioned as a natural ...
  37. [37]
    RMI-IIOP Programmer's Guide
    Clients, remote interfaces, and servers are written entirely in Java. RMI uses the Java Remote Method Protocol (JRMP) for remote Java object communication.Missing: basics | Show results with:basics
  38. [38]
    [PDF] JavaSpaces™Specification - UCSD CSE
    Jul 17, 1998 · The JavaSpaces™ package provides a distributed persistence and object exchange mechanism for code written in the Java™ programming language.
  39. [39]
    What is EJB? The evolution of Enterprise JavaBeans - InfoWorld
    Aug 22, 2019 · Enterprise JavaBeans (EJB) is a specification for developing large-scale, distributed business applications on the Java platform.
  40. [40]
    21. Remoting and web services using Spring
    Spring features integration classes for remoting support using various technologies. The remoting support eases the development of remote-enabled services.
  41. [41]
    Dynamic code downloading using Java RMI - Oracle Help Center
    The java.rmi.server.codebase property value represents one or more URL locations from which these stubs (and any classes needed by the stubs) can be downloaded ...Starting out · How does it work? · Using codebase in Java RMI...
  42. [42]
    RMI - understanding Distributed Garbage Collection - IBM
    When a LiveRef to a remote object enters the JVM, it must be registered with the DGCClient to participate in distributed garbage collection. When the first ...
  43. [43]
    Difference between RMI and CORBA - GeeksforGeeks
    Jul 15, 2025 · Difference between RMI and CORBA ; RMI passes objects by remote reference or by value. CORBA passes objects by reference. ; Java RMI is a server- ...Missing: process | Show results with:process
  44. [44]
    A more efficient RMI for Java - ACM Digital Library
    RMI is designed for wide-area and high-latency net- works, it is based on a slow object serialization, and it does not support high-performance communication ...
  45. [45]
    [PDF] More Efficient Object Serialization - UCSB Computer Science
    Since Java's object serialization often takes 25%{50% of the time needed for a remote in- vocation, an essential step towards a fast RMI is to reduce the cost ...
  46. [46]
    [PDF] Applying Patterns to Improve the Performance of Fault-Tolerant ...
    FT-CORBA is designed to prevent single points of failure within a ... Tight coupling of data structures. Strategy. Design. Abstract Factory. Design. 5.
  47. [47]
    Performance comparison of CORBA and RMI | Request PDF
    Aug 6, 2025 · We have found that because of its complexity CORBA is slightly slower than RMI in simple scenarios. On the other hand, CORBA handles multiple ...Missing: 100x | Show results with:100x
  48. [48]
    RMI performance tips - Java Performance Tuning
    Every network communication has several overheads: the distance between the sender and the receiver adds a minimum latency (limited by the speed the signal can ...
  49. [49]
    Optimizing Remote Method Invocation in Java - ACM Digital Library
    This contribution deals with effectiveness of Java and Java-CORBA remote method invocation. Standard approaches are compared with asynchronous communication ...
  50. [50]
    (PDF) Dissection of the internal workings of the RMI, possible ...
    Aug 6, 2025 · However, the standard Java RMI lacks features like service availability, load sharing, authentication and authorisation of client, data security ...Missing: gaps early
  51. [51]
    Capability-based Access Control Mechanisms
    Capability-based access control stores access control as rows of subjects (capabilities), which are pairs of object and rights, and are transferable.Missing: via | Show results with:via
  52. [52]
    [PDF] Security Service Specification - Object Management Group
    This document specifies a security architecture which can support a variety of security policies to meet different needs. 15.1.3 Threats in a Distributed Object ...
  53. [53]
    [PDF] Role-based access control in DCOM - SEFCOM
    DCOM can make distributed applications secure without any secu- rity-specific coding or design in either the client or the component. Just as the DCOM ...
  54. [54]
    Distributed System Basics: Why They're Hard
    Jun 1, 2025 · The Fundamental Reality: Partial Failures Are Your New Normal ... In a monolithic system, operations either succeed completely or fail completely.Missing: objects idempotency
  55. [55]
    Retries Strategies in Distributed Systems - GeeksforGeeks
    Jul 23, 2025 · Persistent failures, such as configuration errors or network partitioning, will not be resolved by retries and can lead to wasted resources and ...
  56. [56]
    Eventual vs Strong Consistency in Distributed Databases
    Jul 23, 2025 · Eventual consistency is a consistency model that enables the data store to be highly available. It is also known as optimistic replication & is key to ...
  57. [57]
    Failure Models in Distributed System - GeeksforGeeks
    Jul 23, 2025 · This type of failure is characterized by sudden and complete loss of functionality. Crash failures can lead to data loss or inconsistency if not ...
  58. [58]
    [PDF] Fault tolerance, recovery in distributed systems
    – Reliability – time interval between failures. – Safety – no catastrophy in operation. – Maintainability – ease of repair. Failure Models. • Crash/fail-stop ...
  59. [59]
    Exploiting an event-based infrastructure to develop complex ...
    The CORBA ... It has been used over the past years to integrate financial and banking applications (especially, trading services for financial mar- kets).
  60. [60]
    [PDF] Distributed Object Technology with CORBA and Java
    In the object- oriented model, systems are viewed as cooperating objects that encapsulate structure and be- havior and belong to hierarchically-constructed ...
  61. [61]
    Adapting Java RMI for grid computing - ACM Digital Library
    Java is often used to develop portable grid applications, with programs being sequences (compositions) of remote method calls. We demonstrate an inherent ...
  62. [62]
    An Extensible Architecture for Avionics Sensor Health Assessment ...
    Dec 3, 2013 · In this paper, we present a distributed architecture for avionics sensor health assessment using the Data Distribution Service (DDS), an Object ...Missing: extensions | Show results with:extensions
  63. [63]
    [PDF] Programming with Live Distributed Objects - CS@Cornell
    Consider a distributed collaboration tool that uses reliable multicast to propagate updates between users (Figure 2). Let a be an application object in this sys ...
  64. [64]
    Comparing Service-Oriented and Distributed Object Architectures
    Service-Oriented Architectures have been proposed as a replacement for the more established Distributed Object Architectures as a way of developing loosely ...Missing: alternative | Show results with:alternative
  65. [65]
    Cap'n Proto: Introduction
    Cap'n Proto is an insanely fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except faster.Schema Language · C++ Serialization · Other Languages · RPC ProtocolMissing: distributed | Show results with:distributed
  66. [66]
    Why modern systems need a new programming model • Akka core
    The actor model was proposed decades ago by Carl Hewitt as a way to handle parallel processing in a high performance network.<|control11|><|separator|>
  67. [67]
    Lambda proxy integrations in API Gateway - AWS Documentation
    The Lambda proxy integration allows the client to call a single Lambda function in the backend. The function accesses many resources or features of other AWS ...
  68. [68]
    Edge Computing and the future of Distributed AI - Telefónica Tech
    Mar 24, 2025 · AI evolution has resulted in a paradigm shift, resulting in the migration of data processing from the cloud to decentralized systems.Edge Computing And The... · Edge Computing... · Data Sovereignty And...
  69. [69]
    Distributed Hybrid Infrastructure: The Future of Cloud Computing
    Mar 18, 2025 · Distributed hybrid infrastructure (DHI) is an advanced IT architecture that combines on-premise, cloud, and edge computing resources into a ...