This is what happens when the foundation sucks
You can try and beautify things, but you end up with major compromises. The introduction of primitive types into Java from the start was a huge mistake. It is a classic case of a premature optimization. The creators of Java were sure that primitives as Objects would cause performance problems and therefore went with primitives. They ignored existing languages which dealt with these issues such as Smalltalk, where the VM deals with the issue, or statically typed languages like ML or even ongoing research which produced PolyJ.