The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


Rex Young

Rex Young is a software engineer at his day job. In his spare time, he has been working on a research project called Actor Virtual Machine that improves Object-Oriented programming by Message-Passing concurrency. The magic for a perfect marriage of OO and MP is innovative and unified syntaxes at level of programming model rather than of programming language.

 

Rex Young's blog

Actor Virtual Machine

Posted by rexyoung on October 11, 2009 at 4:35 PM PDT

Object-oriented programming has been at the center of mainstream software development since the early 1990s. Although OOP languages have evolved, the OO model foundation hasn't changed much. OOP is still deeply rooted in sequential programming within a single address space. AVM extends the OO model with Message Passing and Dynamic Message Binding.

You are at the right place if you reached it here by following a link in the article Actor Virtual Machine at ddj.com. Occasionally I blog some design and coding issues here from my day job. I will talk more about AVM after I finish the series of Swing application.

Last week, on the Oct 8th, DDJ (Dr. Dobb's Journal) published my research paper Actor Virtual Machine as a featured story. Here is the link http://www.ddj.com/hpc-high-performance-computing/220400007

Here is a brief about what problems AVM addresses. I hope it helps you decide whether click on the link or not.

Object-oriented programming has been at the center of mainstream software development since the early 1990s. Although OOP languages have evolved, the OO model foundation hasn't changed much. OOP is still deeply rooted in sequential programming within a single address space in the following ways:

  • Objects are related and linked by references. This tightly coupled relationship is based on the assumption that all objects are in the same address space.

  • Objects interact with each other by synchronous method invocations. The caller's thread of control always steps inside the callee. Although the OO model says that an object encapsulates data and behaviors, the object does not have any control over who would execute a behavior and when. Thus objects actually encapsulate the definition of the behaviors rather than behaviors themselves. This makes an object just a stop for a thread to reach into, do something, then get out of in a sequential route through which the thread executes.

  • OOP uses threads as its concurrent model. Multiple threads are used to execute the different parts of an OO program concurrently. Such a program may be abstracted as multiple sequential thread routes over collections of objects. This concurrent model adds extra semantics for a programmer to handle. On the one hand, at design level this model adds a new dependence of the design of thread routes to objects besides their own data and behaviors. On the other hand, at programming level it adds handling interleavings to the programming of the objects when they sit on a route where multiple threads cross. This kind of programming in non-trivial programs is incomprehensible to humans and cannot and should not be trusted, as Edward Lee concluded [Lee 2006].

  • The OO model suggests modeling live, real-world entities using active objects [Booch 2007]. In this approach an active object is defined as an object with its own thread of control. Unfortunately, active objects do not change the abstraction that programs may be viewed as multiple, sequential thread routes over collections of objects. Non-active objects remain passive, and even active objects are forced to be passive when they are on the thread routes of other active objects.

 

Related Topics >> Research      
Comments
Comments are listed in date ascending order (oldest first)
Syndicate content