Concurrency, was Re: Doh! Stupid Programming Mistakes <humor>

Levi Pearson levi at
Fri Oct 27 15:13:53 MDT 2006

On Oct 27, 2006, at 2:10 PM, Bryan Sant wrote:
> This is what J2EE set out to solve for the masses.  With the original
> J2EE systems, things were complex, but the hope was to encapsulate a
> uniform way to work with local and remote objects (among other
> things).  I've always found this to be a worthy and interesting goal.
> Enterprise Java Beans (EJBs) could be configured as a local or remote
> resource, and their role could be easily switched.  Remote
> communication could be done with a messaging protocol (which would
> work similar to MPI), or with RMI (actually RMI-IIOP, which is
> actually CORBA).
> The new JEE 1.5 specification has really simplified things compared to
> prior J2EE complexity evilness.  You just add one-liner annotations to
> your plain-jane objects, which gives your JEE container clues about
> what services you want that object surrounded with.
> Whether you like or hate the implementation specifics of JEE, I still
> think the concept is cool.  Distributed computing is neato.

I don't know the implementation specifics of J2EE to know how I like  
them, at least aside from their reputation of being rather complex.   
The name 'Enterprise Java Bean' itself leaves a bad taste in my  
mouth; it's entirely free of content and sounds like it was contrived  
by a marketing guy who thought he was really clever.  But that's  
beside the point.  I should probably look into them at some point,  
especially if the complexity has decreased.

Distributed computing is indeed pretty cool, and it's still a very  
open research area.  I had a fun conversation with Peter Van Roy[1]  
about it after his BYU Colloquium presentation; I wanted him to give  
his talk on distributed computing, but everyone else wanted his talk  
on CS education.  I didn't have any insights to contribute during our  
conversation, and I'm sure I didn't get but a small fraction of what  
he has to say out of him, but he did spark my interest in distributed  
computing and the issues involved.

Some platforms of interest for their ideas relating to distributed  
computing are Erlang, E (, the Mozart Programming System,  
and Inferno/Limbo.  Also interesting are the Linda extensions for C,  
Prolog, Java, etc.

There are also many formal systems that have been developed for  
reasoning about concurrent systems such as Petri Nets, Communicating  
Sequential Processes, Pi Calculus, the Actor Model, and probably more  
that I'm forgetting right now.  As formal systems, they're not  
immediately practical, but many software models can and have been  
built around them, and software based on formal systems has the  
advantage of having at least some aspects of its execution provably  
correct (or at least consistent with the model).

This is something I'd really like to dig into, if I had time.   
Unfortunately, most of what I know about the above topics are that  
they exist and look interesting. :)


[1]: Peter Van Roy is co-author of Concepts, Techniques, and Models  
of Computer Programming ( 
default.asp?ttype=2&tid=10142), a fairly new textbook that aims to be  
a comprehensive introduction to computer programming from a computer  
science perspective.  He also actively researches logic programming  
and distributed programming, largely within the Mozart programming  


More information about the PLUG mailing list