Apart from primitive specialization the biggest omission in my opinion is the lack of value types ("structs"). It's almost impossible to write code that is heap allocation free or allows reasoning about cache locality.
Long story short: keep the traditional getters and setters but have just a byte[] field to store the object state. For example If you need just the date (without the time) you can store it in 2 bytes, say 7 and 8, and in getDate() method you do
public Date getDate() {
int day = bytes[8] * 256 + bytes[9]
return new Date(day * MILLIS_PER_DAY);
}
Some of the improvements are amazing