Мне приходит в голову несколько различий высокого уровня. Некоторые из них являются обобщениями и должны быть префиксованы с помощью "Часто ..." или "Некоторые компиляторы ...", но для удобочитаемости я это пропущу.
Java компилирует код в байт-код, который интерпретируется виртуальной машиной Java. C++ должен компилироваться в объектный код, а затем на машинный язык. Из-за этого Java может компилировать только один класс для незначительных изменений, в то время как объектные файлы C++ должны быть повторно связаны с другими объектными файлами в исполняемый машинный код (или DLL). Это может привести к тому, что процесс займет немного больше времени.
Программа C ++, использующая все функции языка, по своей природе сложнее компилировать. Несколько вызовов шаблонов с рядом типов могут легко удвоить или утроить количество кода для генерации.
Единственное, с чем я столкнулся, это убедиться, что разрешение существует на другой схеме. Обычные вещи - если эти разрешения исчезнут по какой-либо причине, вы услышите об этом.
-121--1105175-Есть несколько различий высокого уровня, которые приходят мне на ум. Некоторые из них являются обобщениями и должны иметь префикс «Часто»... или «Некоторые компиляторы»..., но ради читаемости я оставлю это.
Глоссирование множества деталей, в Java вы компилируете файлы .java в один или несколько файлов .class. В C++ вы компилируете исходные файлы .cc (или что угодно) в файлы .o, а затем соедините файлы .o в исполняемый файл или библиотеку. Процесс связывания обычно убивает вас, особенно в случае незначительных изменений, поскольку объем работы по связыванию примерно пропорционален размеру всего проекта. (Это игнорирование инкрементных линкеров, которые специально разработаны, чтобы не вести себя так плохо для небольших изменений)
Другой фактор заключается в том, что механизм # include означает, что при изменении файла .h все зависящие от него файлы .o должны быть перестроены. В Java файл .class может зависеть от нескольких файлов .java (например, из-за постоянного встраивания), но, как правило, этих «горячих точек» гораздо меньше, где изменение одного исходного файла требует перестраивания многих других исходных файлов.
Кроме того, если вы используете среду IDE, такую как Eclipse, то вы постоянно строите код Java в фоновом режиме, поэтому к тому времени, когда вы скажете, что строить ее уже в основном (если не полностью).
Java компилирует любой исходный код в Bytecode, который интерпретируется JVM. Из-за этой функции его можно использовать в нескольких платформе.
Я не уверен, что вы ожидаете, что скорость компиляции Java и C ++ будет сопоставимы, поскольку они являются разными языками с совершенно разными дизайнами Gaols и реализациями.
Это сказало, что несколько конкретных различий, чтобы иметь в виду, есть: