The bean convention doesn't help you with that one though; if you have private Date date; public Date getDate() {return date;} then people can still do getDate().setTime(1);
Yep, the thing is that Date is immutable.
I think that this public final immutable rule is ok, but one has to ensure the fields themself are really not modifiable.
public final Date date;
date.setTime(1);
That's not immutable.