- No primitives. No ints, bytes, chars, shorts, floats, booleans, doubles or longs. They are all evil and should not be in the language.
- No primitive arrays. Javas primitive arrays are not typesafe and are evil. With generics there is no real point in having them, especially since they interact so badly with generic collections. This point would mean that certain primitive collection types can't be implemented in the language itself. This is a price I'm willing to pay.
- Scala style generics, with usage-defined contra/co-variance and more flexible type bounds.
- No anonymous inner classes. There is no need for them with the next points.
- First class methods.
- Anonymous methods (these obviously need to be closures).
- Interfaces that carries optional implementation.
- No abstract classes - since you don't need them with the above.
- Limited type inference, to avoid some typing. Scala or C# style is fine.
- Annotations for many of the current keywords - accessibility specifically, but also things like transient, volatile and synchronized.
- No checked exceptions.
- No angle brackets for generics (they really hurt my eyes. are there XML induced illnesses? XII?). Square brackets look so much better.
- Explicit separation of nullable from non-nullable values.
måndag, maj 19, 2008
As some of you might have noticed I am not extremely fond of everything the Java language. I have spent some time lately trying to figure out how I would change the language if I could. These changes are of course breaking, and would never be included in regular Java. I've had several names for it, but my current favorite is unJava. You can call it Java .314 or minijava if you want. Anyway, here's a quick breakdown of what I'd like to see done to make a better language out of Java without straying to far away from the current language: