Java takes the part of C++ that I like the least – its syntax derived from the C syntax – and not the parts I consider most important – the ability to do data abstraction without compromising efficiency and the ability to write user-defined types that are treated on equal footing with built-in types.