1. Убрали препроцессор. Макросов больше нет. - "очень вредно и
запутано"
2. Убрали goto - "плохой стиль программирования".
3. убрали union (объединения), - "опасно использовать".
4. Убрали unsigned типы.
5. Указателей больше нет. Структуры переменной длины и другие хитрые
типы данных, следовательно, не реализовать.
6. По сравнению с C++ убрали множественное наследование.
Типа сложно и не нужно.
Вообще то в нескольких книгах по Java очень часто встречаются слова, - "вредно", "опасно", "запутано", "сложно", "не нужно". В одной из книг, проскакивала примерно такая фраза : "В Си есть unsigned типы. Они приводят к многочисленным ошибкам. В Java таких недостатков нет". После этой фразы я сразу забил на жабу.