I think the real original sin was the decision to be a dumbed-down C++, avoiding all the ugliness and hard to get right parts, in particular eliminating operator overloading. With operator overloading supporting the normal meanings of the operators (== means equals, not identical to). Integer would then work the same as int and auto-unblocking would have been there from the beginning. Remember Java overloads '+' for strings, so it isnt consistent.<p>Primitives made sense at the time, but with operator overloading we wouldnt be stuck with the mess we have now.<p>And methods should have been first-class objects. More messes that could have been avoided.
Great blog post. Especially for those interested in scala and the future of Java.<p>The comments below, in my view, are just as interesting as the post.