Monday, 11th October 2004
The complexity of the Java EJB architecture is way overdone as far as I am concerned.


The principle that it should should be possible to distribute processing, makes Java uncessary complex:

So why are EJBs a success?


There is an easier way. It must get simpler.

Not because of the be-the-biggest competition, but for the sake of mobility. The future of internet is mobile. Distributed processing is the way to go for the future. PDA's and phones get more and more functionality, lots of different platforms, perfect for Java.

Java must simplify to stay popular among a large group of software developers.

    New principles:
  1. Every object runs on only one machine. Objects never know any object on another machine.
  2. Objects can send messages to another machine, yet never addressing one specific object, Messages always have primitive parameters, never objects.
  3. It is possible to download class definitions from other machines. Those class definitions are best on one central location to keep software control simple.


The principles lead to an astounding simplicity, yet without loss of functionality and technical possibilities.

Real life example

SUMit recently built an advanced route planning application in Java.
Example Client Server Webserver

Routeplanning in Java
1. The client asks the server for address information 2. The server sends the address of the class files and bulk parameters.  
3. The client loads the required class files from the webserver.   4. The webserver accesses the .class files
5. The client requests bulk input from the server, raw data for the route planning. 6. The server gets the raw data and sends it in an agreed format.  
7. The client creates objects. Those client objects execute a complex route planning algorithm.    
8. The client sends the generated route to the server. 9. The server saves the route.  
In this example the client is a Java applet that downloads Java class files from a webserver. The server side code is in PHP, pleasantly transparent for the Java client.

Till next nut,