scispace - formally typeset
Search or ask a question

Showing papers on "Serialization published in 2003"


Patent
10 Mar 2003
TL;DR: In this article, a method of computing to address a predetermined computing requirement involving access to and use of computer resources, where more than one resource is capable of addressing the computing requirement, is presented.
Abstract: A method of computing to address a predetermined computing requirement involving access to and use of computer resources, where more than one resource is capable of addressing the computing requirement. The method includes steps of describing plural computer resources using a description language, thereby obtaining descriptions of the resources; arranging the descriptions in one or more semantic ontologies; accessing one or more of the ontologies to select a particular one of the plural resources as available and/or qualified for addressing the computing requirement; and executing a computing process that utilizes the selected one of the plural resources to satisfy the computing requirement. The disclosed method involves use of description language and the computer resources comprise web services. The describing step involves identifying attributes of the computer-accessible resources. The attributes of the computer resources are selected from the group comprising but not limited to: message formatting for the computer resources, transport mechanisms associated with the computer resources, protocols associated with the computer resources, type serialization associated with the computer resources, and invocation requirements of the computer resources. In further accordance with the method, the invocation requirements of the computer resources may be selected from the group comprising: HTTP, SOAP, CORBA, JAVA RMI, and equivalent computer invocation specifications.

364 citations


BookDOI
TL;DR: This volume focuses on topics such as object-oriented (distributed) technologies, concepts and systems, agent-related technologies and concepts, advanced database systems and the Web, and E-commerce, including both the engineering and the use of Web-based application systems.
Abstract: Keynotes.- AspectJ(tm): Aspect-Oriented Programming in Java.- Agile Processes and Modeling.- Eclipse - An Open Source Platform for the Next Generation of Development Tools.- Regular Papers.- A Framework for Resource Management in Peer-to-Peer Networks.- A Lightweight Communication Infrastructure for Spontaneously Networked Devices with Limited Resources.- Serialization of Distributed Execution-State in Java.- Specification of Business Components.- Graph Rewrite Systems for Software Design Transformations.- Lightweight Plug-In-Based Application Development.- Supporting Component-Based Software Evolution.- Java Smart Ticket Demo Application Scrutinized.- Java Class Deployment Using Class Collections.- Do We Need Components for Persistent Data Storage in the Java 2 Enterprise Environment?.- Consistency Checking of Financial Derivatives Transactions.- Toolkits for Generating Wrappers.- Developing a Generic Concept of an Electronic Negotiation Process with ebXML.- AspectS - Aspect-Oriented Programming with Squeak.- Relational Database Support for Aspect-Oriented Programming.- Object Teams: Improving Modularity for Crosscutting Collaborations.- Ubiquitous Healthcare: The OnkoNet Mobile Agents Architecture.- Extending Activity Diagrams to Model Mobile Systems.- A Concrete Method for Developing and Applying Product Line Architectures.- Generic Implementation of Product Line Components.- Qualifying Types Illustrated by Synchronisation Examples.- Advanced Thread Synchronization in Java Using Interaction Expressions.- Refactoring Browser for UML.- Test-Driven Web Application Development in Java.- UML-Based Statistical Test Case Generation.- Do We Need 'Agile' Software Development Tools?.

138 citations


Proceedings ArticleDOI
Jens Krinke1
01 Sep 2003
TL;DR: In this paper, the authors present a context-sensitive approach to slice concurrent programs accurately, which extends the well known structures of the control flow graph and the program dependence graph for concurrent programs with interference.
Abstract: Program slicing is a technique to identify statements that may influence the computations at other statements. Precise slicing has been shown to be undecidable for concurrent programs. This work presents the first context-sensitive approach to slice concurrent programs accurately. It extends the well known structures of the control flow graph and the (interprocedural) program dependence graph for concurrent programs with interference. This new technique does not require serialization or inlining.

107 citations


Journal Article
TL;DR: Introduction Boost.Python Design Goals Hello Boost.
Abstract: Introduction Boost.Python Design Goals Hello Boost.Python World Library Overview Exposing Classes Constructors Data Members and Properties Operator Overloading Inheritance Virtual Functions Deeper Reflection on the Horizon? Serialization Object interface Thinking hybrid Development history Conclusions Citations Footnotes

92 citations


Patent
02 Sep 2003
TL;DR: In this article, a serialization ordering between a database transaction and other database transactions based on the intended use of the database system resource by the database transaction is asserted between the DB transactions and other DB transactions, then communicated to a node in the distributed database system that needs to know the serialization order to perform concurrency control.
Abstract: A mechanism controls concurrency among database transactions through the use of serial ordering relations. The ordering relations are computed dynamically in response to patterns of use. An embodiment of the present invention serializes a transaction that accesses a resource before a transaction that modifies the resource, even if the accessor starts after the modifier starts or commits after the modifier commits. A method of concurrency control for a database transaction in a distributed database system stores an intended use of a database system resource by the database transaction in a serialization graph. A serialization ordering is asserted between the database transaction and other database transactions based on the intended use of the database system resource by the database transaction. The serialization ordering is then communicated to a node in the distributed database system that needs to know the serialization ordering to perform concurrency control. Cycles in the serialization graph are detected based on the asserted serialization order and in order to break such cycles and ensure transaction serializability a database transaction is identified that is a member of a cycle in the serialization graph.

71 citations


Patent
Kwabena Mireku1
13 Nov 2003
TL;DR: In this paper, techniques for serializing objects (such as Java™ objects), and deserializing those objects, in a manner that enables contents of the objects to be preserved following changes to definitions of the object structures.
Abstract: Techniques are disclosed for serializing objects (such as Java™ objects), and deserializing those objects, in a manner that enables contents of the objects to be preserved following changes to definitions of the object structures. Objects are serialized using documents encoded in a markup language (such as Extensible Markup Language, or “XML”). The serialized objects thereby capture class definition information for the class definition which was in effect when the object was serialized. Subsequently, if the class definition is changed, techniques disclosed herein enable deserializing the information from the markup language document to an object that uses the new class definition, without requiring access to a programming language specification of the now-obsolete class definition.

68 citations


Patent
11 Sep 2003
TL;DR: In this article, a hardware configuration and methodology for serializing or partially serializing WRITE requests directed to a unified data set are subsequently distributed to one or more remote arrays containing a corresponding mirror unified data sets.
Abstract: A hardware configuration and methodology for serializing or partially serializing WRITE requests directed to a unified data set are subsequently distributed to one or more remote arrays containing a corresponding mirror unified data set. For each unified data set, one of the local disk arrays over which the unified data set is distributed is selected as a supervisor disk array, and a unified sequence number component is included within that supervisor disk array. WRITE requests generated by a local array to mirror unified data set data to a mirror unified data set must be associated with a unified sequence number, and the WRITE requests are therefore serialized or partially serialized by the unified sequence number component. Additional direct communications links are provided between the local arrays over which a unified data set is distributed both to facilitate WRITE-request serialization and to provide a redundant communications paths for added reliability.

68 citations


Patent
01 May 2003
TL;DR: In this paper, the authors present techniques for transferring a serialized image of data for an XML construct including selecting a first format from multiple different XML serialization formats that represent, in a database system, data for XML constructs as a series of data units, such as series of bytes representing characters, or series of bits, bytes or octets representing binary values.
Abstract: Techniques for transferring a serialized image of data for an XML construct includes selecting a first format from multiple different XML serialization formats that represent, in a database system, data for XML constructs as a series of data units, such as a series of bytes representing characters, or a series of bits, bytes or octets representing binary values. A message is generated that includes a payload and a payload type field. The payload includes particular serialized data that represents particular data for a particular XML construct in the first format. The type field includes data that indicates the first format. The message is sent from a sending component of the database system to a different receiving component of the database system. These techniques allow the format selection to be based on characteristics of the sending or receiving components to make better use of the resources available to the two components.

62 citations


Patent
20 Oct 2003
TL;DR: In this paper, the state of a data object of interest is flushed from a memory location local to a one of the multiple processes to a shared memory location where the flushed state is visible to the rest of concurrently executing multiple processes.
Abstract: Data sharing between multiple computer processes is made possible by brokering the sharing of the state of data objects of interest between the multiple processes via a shared memory location. A state of a data object of interest is flushed from a memory location local to a one of the multiple processes to a shared memory location wherein the flushed state is visible to the rest of concurrently executing multiple processes. The instruction to flush may be explicit or implicit via data references. Similarly, a state of a data object in a memory location local to a process may be refreshed with an updated state available in the shared memory location. The state of data object in a shared memory location or in a local memory location may be determined via data reflection or if so specified, by serialization methods. The flush and refresh operations may be implemented as function calls exposed to the processes requesting data sharing.

58 citations


Patent
05 Nov 2003
TL;DR: In this paper, a serializer processes an object's data, and for each set of data, records the object data in a structured (e.g., XML) format that reflects the object's current state.
Abstract: A system and method, useful in tracing program execution, for serializing data, such as an object data, into consistent, structured (e.g., XML) output. A serializer processes an object's data, and for each set of data, records the object's data in a structured (e.g., XML) format that reflects the object's current state. Nodes corresponding to fields and properties of the object are nested in the structure. Simple types define nodes with the current data value associated with the tag. More complex types including arrays, collections, dictionaries and exceptions are stored as individual members of a type, with any complex members further broken down into sub-nodes. Object data including custom collections, dictionaries, non-public fields and properties and properties with only get-accessor are serialized. The resulting output, such as in an XML formatted structure, is easy to read by humans, and is easily processed, such as for automated analysis purposes.

58 citations


Proceedings ArticleDOI
03 Mar 2003
TL;DR: A serial implementation of RSA, which is based upon an optimized version of the RSA algorithm originally proposed by P.L. Montgomery (1985), and provides a thorough discussion of design tradeoffs, in terms of area requirements vs performance, for different values of the key length and of the serialization factor.
Abstract: In this paper we present an hardware implementation of the RSA algorithm for public-key cryptography. The RSA algorithm consists in the computation of modular exponentials on large integers, that can be reduced to repeated modular multiplications. We present a serial implementation of RSA, which is based upon an optimized version of the RSA algorithm originally proposed by P.L. Montgomery (1985). The proposed architecture is innovative, and it widely exploits specific capabilities of Xilinx programmable devices. As compared to other solutions in the literature, the proposed implementation of the RSA processor has smaller area occupation and comparable performance. The final performance level is a function of the serialization factor We provide a thorough discussion of design tradeoffs, in terms of area requirements vs performance, for different values of the key length and of the serialization factor.

Journal ArticleDOI
TL;DR: This article compares binary and XML object serialization on Java and Microsoft .NET platforms from the performance and size perspective.
Abstract: This article compares binary and XML object serialization on Java and Microsoft .NET platforms from the performance and size perspective. It uses three different types of objects and different number of objects to make a comparison which reflects real-world circumstances. The article has the following contributions: (1) it compares binary and XML serialization between Java and .NET to compare the efficiency of both platforms; (2) it compares binary and XML serialization within the platforms to compare the differences between the two serialization types; (3) it studies the reasons for performance differences and provides possible performance optimizations.

Patent
02 Sep 2003
TL;DR: In this paper, a serialization ordering between a database transaction and other database transactions based on the intended use of the database system resource by the database transaction is asserted between the DB transactions and other DB transactions, then communicated to a node in the distributed database system that needs to know the serialization order to perform concurrency control.
Abstract: A mechanism controls concurrency among database transactions through the use of serial ordering relations. The ordering relations are computed dynamically in response to patterns of use. An embodiment of the present invention serializes a transaction that accesses a resource before a transaction that modifies the resource, even if the accessor starts after the modifier starts or commits after the modifier commits. A method of concurrency control for a database transaction in a distributed database system stores an intended use of a database system resource by the database transaction in a serialization graph. A serialization ordering is asserted between the database transaction and other database transactions based on the intended use of the database system resource by the database transaction. The serialization ordering is then communicated to a node in the distributed database system that needs to know the serialization ordering to perform concurrency control. Cycles in the serialization graph are detected based on the asserted serialization order and in order to break such cycles and ensure transaction serializability a database transaction is identified that is a member of a cycle in the serialization graph.

Book
01 Jan 2003
TL;DR: This book discusses distributed computing with a dash of servlets, EJB, and Jini, and some of the things that didn?t make it into the rest of the book made headlines.
Abstract: Intro 1 Breaking the Surface: a quick dip 2 A Trip to Objectville: yes, there will be objects 3 Know Your Variables: primitives and references 4 How Objects Behave: object state affects method behavior 5 Extra-Strength Methods: flow control, operations, and more 6 Using the Java Library: so you don?t have to write it all yourself 7 Better Living in Objectville: planning for the future 8 Serious Polymorphism: exploiting abstract classes and interfaces 9 Life and Death of an Object: constructors and memory management 10 Numbers Matter: math, formatting, wrappers, and statics 11 Risky Behavior: exception handling 12 A Very Graphic Story: intro to GUI, event handling, and inner classes 13 Work on Your Swing: layout managers and components 14 Saving Objects: serialization and I/O 15 Make a Connection: networking sockets and multithreading 16 Data Structures: collections and generics 17 Release Your Code: packaging and deployment 18 Distributed Computing: RMI with a dash of servlets, EJB, and Jini A Appendix A: Final code kitchen B Appendix B: Top Ten Things that didn?t make it into the rest of the book Index

Patent
19 Jun 2003
TL;DR: In this paper, a serialization manager identifies a serializer for a particular serialization format and object type from available serialization providers, and the object, custom or standard, is serialized using the identified serializer to a custom and standard format, including source code representations, XML representations, etc.
Abstract: Methods, systems, and computer program products to serialize user interface objects having custom object types and serialization formats. A serialization manager may coordinate standard serialization providers to identify standard serializers for standard object types or serialization formats, and as needed, may be extended by loading custom serialization providers to identify custom serializers for custom object types or serialization formats, which may not be covered by the standard serialization providers. From available serialization providers, the serialization manager identifies a serializer for a particular serialization format and object type. The object, custom or standard, is serialized using the identified serializer to a custom or standard format, including source code representations, XML representations, etc. Certain serialization formats produce a snippet of code without producing a class representation of an object; to help coordinate and enhance modularity among serializers and their providers; the serialization manager may maintain and share context information.

Book ChapterDOI
07 Apr 2003
TL;DR: The Value State Dependence Graph (VSDG) as mentioned in this paper is a form of the value dependency graph (VDG) extended by the addition of state dependence edges to model sequentialised computation.
Abstract: We define the Value State Dependence Graph (VSDG) The VSDG is a form of the Value Dependence Graph (VDG) extended by the addition of state dependence edges to model sequentialised computation These express store dependencies and loop termination dependencies of the original program We also exploit them to express the additional serialization inherent in producing final object code The central idea is that this latter serialization can be done incrementally so that we have a class of algorithms which effectively interleave register allocation and code motion, thereby avoiding a well-known phase-order problem in compilers This class operates by first normalizing the VSDG during construction, to remove all duplicated computation, and then repeatedly choosing between: (i) allocating a value to a register, (ii) spilling a value to memory, (iii) moving a loop-invariant computation within a loop to avoid register spillage, and (iv) statically duplicating a computation to avoid register spillage We show that the classical two-phase approach (code motion then register allocation in both Chow and Chaitin forms) are examples of this class, and propose a new algorithm based on depth-first cuts of the VSDG

Patent
John Richardson1
12 Nov 2003
TL;DR: In this paper, the authors present a system and methodology to facilitate automatic interactions between a client component and an object supported by an operating system framework, where various components provide automatic locking, or serialization of code execution during selected processing of events that are generated by the object and directed to the client component.
Abstract: The present invention relates to a system and methodology to facilitate automatic interactions between a client component and an object supported by an operating system framework. Various components provide automatic locking, or serialization of code execution during selected processing of events that are generated by the object and directed to the client component. The system framework provides automated synchronization services for processing events to a client program. Automated event processing can be configured such that, automated processing can be turned off for all or portions of some tasks and turned on for other tasks. In one aspect, a computer-based event handling system is provided having a framework component that supplies classes of objects that can raise events. A synchronization component automatically controls in part synchronization of access to data based on categorization of objects and/or instances defined by the framework.

Journal ArticleDOI
TL;DR: A subset of Java's object serialization protocol in native code is implemented, using the Java Native Interface (JNI) and JVM internals, and it is shown that this approach is up to eight times faster than Java's original objectserialization protocol for array objects.
Abstract: Distributed computing has become increasingly popular in the high-performance community. Java's remote method invocation (RMI) provides a simple, yet powerful method for implementing parallel algorithms. The performance of RMI has been less than adequate, however, and object serialization is often identified as a major performance inhibitor. We believe that object serialization is best performed in the Java Virtual Machine (JVM), where information regarding object layout and hardware communication resources are readily available. We implement a subset of Java's object serialization protocol in native code, using the Java Native Interface (JNI) and JVM internals. Experiments show that our approach is up to eight times faster than Java's original object serialization protocol for array objects. Also, for linked data structures our approach obtains a moderate speedup and better scalability. Evaluation of our object serialization implementation in an RMI framework indicates that a higher throughput can be obtained. Parallel applications, written using RMI, obtain better speedups and scalability when this more efficient object serialization is used. Copyright © 2003 John Wiley & Sons, Ltd.

Patent
23 Oct 2003
TL;DR: In this paper, a new persistence format for storing objects of a user defined type in a database store enables information about the structure of the type to be communicated to the store, which enables a number of store optimizations, including direct structural access to members of a type.
Abstract: A new persistence format for storing objects of a user defined type in a database store enables information about the structure of the type to be communicated to the store. This information enables a number of store optimizations, including direct structural access to members of the type. Specifically, metadata is exchanged between the type implementer and the data store. The store uses the metadata to determine the storage layout for instances of the type. With this information, the store is able to detect access patterns that can be optimized to directly operate over the storage representation without hydration (deserialization) the object.

Patent
Wolfgang Eibach1, Dietmar Kuebler1
14 Oct 2003
TL;DR: In this article, a serialization processor receives each incoming message request from a messaging client, extracts a transaction identifier (TI), searches a state table for the TI, and, if the TI is found active in the state table, stores the request in serialization queue and makes an entry for that TI with the state “queued” in the table.
Abstract: A messaging system and method which allows parallel execution of related requests according their context-based sequence. A serialization processor receives each incoming message request from a messaging client, extracts a transaction identifier (TI), searches a state table for the TI, and, if the TI is found active in the state table, stores the request in a serialization queue and makes an entry for that TI with the state “queued” in the state table. After execution of the active request, its entry in the state table is cleared, and the queued request with the same TI is executed, whereupon its entry is changed from queued to active.

Proceedings ArticleDOI
22 Apr 2003
TL;DR: The Java implementation of process networks is suitable for execution on a single computer, a cluster of servers on a high-speed LAN, or geographically dispersed servers on the Internet.
Abstract: Kahn (1974, 1977) defined a formal model for networks of processes that communicate through channels carrying streams of data tokens. His mathematical results show the necessary conditions for an implementation to be determinate, that is, for the results of the computation to be identical whether the processes are executed sequentially, concurrently, or in parallel. In our Java implementation channels enforce blocking reads and each process has its own thread in order to ensure determinacy and avoid deadlock. The network connections required to maintain the communication channels between processes executing on separate servers are automatically established when parts of the program graph are distributed to other servers by Java object serialization. Our Java implementation of process networks is suitable for execution on a single computer, a cluster of servers on a high-speed LAN, or geographically dispersed servers on the Internet.

Patent
Brian S. McCain1, Amy L. Therrien1
30 Oct 2003
TL;DR: In this article, a technique for determining whether a server host supports the functions in a command sent by a client host is presented, where the client host formulates a command including a command object that contains parameter objects and the server host attempts to deserialize the parameter objects.
Abstract: A technique for determining whether a server host supports the functions in a command sent by a client host. The client host formulates a command including a command object that contains parameter objects. The parameter objects, which represent the functions, are serialized, e.g., using the Java serialization command, and communicated to the server host. The server host attempts to deserialize the parameter objects. If it is successful, it is concluded that the server host supports the functions represented by the parameter objects. Or, it is concluded that the server host is incompatible with the functions represented by one or more parameter objects that cannot be deserialized. The server host may be a storage server, and the functions may be storage-related, such as a copy type to be performed.

Journal ArticleDOI
TL;DR: The present study examines detection of conflicts based on enhanced local processing for distributed concurrency control in the proposed "edge detection" approach, a graph-based resolution of access conflicts has been adopted.
Abstract: Distributed locking is commonly adopted for performing concurrency control in distributed systems. It incorporates additional steps for handling deadlocks. This activity is carried out by methods based on wait-for-graphs or probes. The present study examines detection of conflicts based on enhanced local processing for distributed concurrency control. In the proposed "edge detection" approach, a graph-based resolution of access conflicts has been adopted. The technique generates a uniform wait-for precedence order at distributed sites for transactions to execute. The earlier methods based on serialization graph testing are difficult to implement in a distributed environment. The edge detection approach is a fully distributed approach. It presents a unified technique for locking and deadlock detection exercises. The technique eliminates many deadlocks without incurring message overheads.

Patent
08 Jan 2003
TL;DR: In this paper, a method and apparatus for handling window management instructions without post serialization in an out-of-order multi-issue processor includes an instruction decode unit arranged to decode the window management instruction.
Abstract: A method and apparatus for handling window management instructions without post serialization in an out-of-order multi-issue processor includes an instruction decode unit arranged to decode the window management instruction. A plurality of register windows are indexed by a current window pointer, and a working copy of the current window pointer is stored in a register in the instruction decode unit. The instruction decode unit uses the working copy of the current window pointer to handle the window management instruction.

Patent
29 Sep 2003
TL;DR: In this paper, a system and method for serializing objects in a compiled programming language is presented, which includes the operation of creating a storage agent for a serializable object, and the storage agent is configured to construct instances of the serializable objects.
Abstract: A system and method is provided for serializing objects in a compiled programming language. The method includes the operation of creating a storage agent for a serializable object, and the storage agent is configured to construct instances of the serializable object. A serializable object name and an associated storage agent pointer are registered in a type map for each serializable object, and the storage agent pointer links to the corresponding storage agent. The serializable object is stored with the serializable object name and object data on an electronic storage medium. The serializable object's storage agent is identified by using the serializable object name to index into the type map when the serialized object is read from the electronic storage medium. A further operation is constructing a serializable object instance using the storage agent. The serializable object instance can then be loaded with the object data read from the electronic storage medium to restore the serialized object.

Proceedings ArticleDOI
28 May 2003
TL;DR: In this article, a transaction processing protocol that increases the autonomy of clients, based on the dependency relation among updated data items, is proposed, where lists of dependents are sent by the server to the mobile clients along with requested data items.
Abstract: Transaction processing in mobile database systems faces new challenges to accommodate the limitations of mobile environments, such as frequent disconnections and low bandwidth. We propose a transaction processing protocol that increases the autonomy of clients, based on the dependency relation among updated data items. Lists of dependents, sent by the server to the mobile clients along with requested data items, are used by each client to build partial serialization graphs. Utilizing the graphs, mobile clients can autonomously verify serializability of locally executed read-only transactions. This information can also help mobile clients in early detection of the necessity to abort update transactions. Simulations for various data access patterns initiated by mobile clients provide insights on performance of the proposed protocol. Performance is heavily dependent on the depth of the dependency information for each data item.

Patent
Takeshi Ogasawara1
15 Apr 2003
TL;DR: Store forwarding avoidance (SFA) as mentioned in this paper prevents out-of-order execution when the address regions of a pair of store and load instructions coincide with each other but have an overlap there between.
Abstract: To improve the processing speed in a case where a program requiring memory access serialization is executed in a multiprocessor environment with a load instruction out-of-order execution function. Each of CPUs has the function of performing store forwarding (SF) when the address regions of a pair of store and load instructions coincide with each other. Each CPU stops SF and performs store forwarding avoidance (SFA) when the two address regions do not coincide with each other but have an overlap therebetween. Each of SF and SFA is executed with priority over out-of-order execution. Each CPU performs SFA effective in limiting out-of-order execution with respect to a predetermined store instruction on a program and a load instruction mated to the store instruction and given after the store instruction, and ensures that data relating to the store instruction can be observed from other CPUs.

Proceedings ArticleDOI
22 Apr 2003
TL;DR: This work extends client-server collaboration further by offloading some of the computations normally performed by the mobile client to the resource-rich server in order to conserve energy consumed by the client in a wireless Java environment.
Abstract: Java-enabled wireless devices are preferred for various reasons such as enhanced user experience and the support for dynamically downloading applications on demand. The dynamic download capability supports extensibility of the mobile client features and centralizes application maintenance at the server. Also, it enables service providers to customize features for the clients. In this work, we extend this client-server collaboration further by offloading some of the computations (i.e., method execution and dynamic compilation) normally performed by the mobile client to the resource-rich server in order to conserve energy consumed by the client in a wireless Java environment. In the proposed framework, the object serialization feature of Java is used to allow offloading of both method execution and bytecode-to-native code compilation to the server when executing a Java application. Our framework takes into account communication, computation and compilation energies to dynamically decide where to compile and execute a method (locally or remotely) and how to execute it (using interpretation or just-in-time compilation with different levels of optimizations).

Proceedings ArticleDOI
01 Dec 2003
TL;DR: Heap analysis and an RMI-specific version of escape analysis allows the reuse of object graphs created in earlier remote invocations, and increases the efficiency of Java RMI programs.
Abstract: We further increase the efficiency of Java RMI programs. Where other optimizing re-implementations of RMI use pre-processors to create stubs and skeletons and to create class specific serializers and deserializers, this paper demonstrates that with transformations based on compile time analysis, an additional 18% performance gain can be achieved over class specific serializers alone for a simple scientific application. A novel and RMI-specific version of static heap analysis is used to derive information about objects that are passed as arguments of remote method invocations. This knowledge of objects and their interrelations is used for three optimizations. First, dynamic introspection and/or (recursive) dynamic invocations of object specific serializers is slow. With knowledge from our heap analysis, the marshaling of graphs of argument objects can be inlined at the call site. Hence, many method table lookups and skeleton indirections of previous approaches can be avoided and less protocol information is sent over the network. Secondly, because object graphs may be passed as RMI arguments, cyclic references need to be detected. With our heap analysis, we can detect if there is no potential for cycles and hence, cycle detection code can be left out of the serialization and marshaling codes. Finally, object arguments to remote methods cause object creation and garbage collection. Heap analysis and an RMI-specific version of escape analysis allows the reuse of object graphs created in earlier remote invocations.

Patent
29 Apr 2003
TL;DR: In this paper, a program object is serialized into a persistent object by saving only those data fields that contain non-default data, and the persistent object is deserialized to be used by a deserializing application by first creating a blank program object of the same version as the deserialising application and then populating it with the nondefault data stored in the persistent objects.
Abstract: A method for serializing and deserializing program objects that is versioning sensitive. A program object is serialized into a persistent object by saving only those data fields that contain non-default data. The persistent object is deserialized to be used by a deserializing application by first creating a blank program object of the same version as the deserializing application and then populating it with the non-default data stored in the persistent object. The version of the deserializing application need not be the same as the version of the serializing application.