Отличия Java от C++

средствоC++Javaкомментарий
Глобальные переменные программа=
данные+функции
программа=
иерархия классов
функция могла привести к широкомасштабным побочным эффектам
оператор goto   отсутствует в Java мощный хорошо определенный встроенный механизм исключений
Указатели или адреса в памяти причина большинства ошибок отсутствуют Хотя в Java дескрипторы объектов и реализованы в виде указателей, в ней отсутствуют возможности работать непосредственно с указателями.
Распределение памяти malloc(), free()
new delete
сборщик мусора! Сборщик мусора запускается каждый раз, когда система простаивает, либо когда Java не может удовлетворить запрос на выделение памяти.
типы данных диапазон и точность типов зависит от реализации диапазон и точность фиксированы Поведение не должно изменяться при смене платформы
приведение типов мощный, но ненадежный механизм Дескрипторы объектов включают в себя полную информацию о классе объекты в C++ - это просто указатели на адреса памяти; Java может выполнять проверку совместимости типов на фазе исполнения кода
списки аргументов Интерфейс varargs для списков переменной длины средство отсутствуют проверка допустимости типов ложится на программиста
файлы заголовков #include "name.h" средство отсутствует
тип и видимость встроены в байт-код
усложнение поддержки в больших системах
структуры struct, union отсутствуют эти конструкции прикрывают критические и катастрофические машинно-зависимые ограничения по размеру и выравниванию данных
препроцессорная обработка простая условная трансляция и макроопределения отсутствуют вместо #define N 100 -> final int N=100