DISCUSSION: Bean/Data classes

Stephen Colebourne scolebourne at joda.org
Wed Mar 25 15:33:30 PDT 2009


Reinier Zwitserloot wrote:
> You should move away from the idea of 'this keyword does so much  
> magic!' and move towards the idea that this keyword simply declares  
> that the class is to have bean semantics.

I proposed almost exactly this 'data' class two years ago - 
http://www.jroller.com/scolebourne/entry/a_bean_keyword.

public bean Person {
     // properties
     property String forename;
     property String surname;

     // normal fields and methods
     private String ordinaryField;
     public boolean validate() { ... }
}

This is fundamentally no different to how enum was slotted into the 
language (note I deliberately omitted the 'class' keyword.

The key aspect of this approach is that it allows there to be different 
grammer rules within 'bean' classes to normal classes, just as there are 
different rules for 'enum' classes.

Now, as for what exactly it generates, that is a much bigger question. 
Does it just generate getter/setter? What about lists, maps and arrays? 
How about events? The truth is that is where every property proposal 
gets bogged down (because server side JavaBeans are just data holders, 
whereas swing JavaBeans are much more a part of the application).

So, will this be in Coin? No. There is way to much to work out.

But this could be the best way to get a form of properties into Java. 
And a group could form to code up a prototype and prove it (Kijaro is 
available...)

Finally, I should say that of all the things Java lacks, I think 
properties is the biggest - bigger than closures. The sheer amount of 
wasted effort, lines of code, lack of consistency and sheer focus on the 
low level detail rather than the high level abstraction is staggering. 
It is IMO a far bigger hole in writing good Java apps today than 
closures (or any other language proposal).

Stephen



More information about the coin-dev mailing list