JavaとC++の比較
C++とJavaとの違いは、それら言語の歴史から辿ることができる。
C++はC言語の派生規格であり、手続き型プログラミング言語にクラス(抽象データ型)を導入し、静的型付けオブジェクト指向プログラミングを実現するために開発された。C言語の設計思想を維持・継承し、C言語の利点(機械語やアセンブラに準ずる高速性やハードウェア操作性など)を一切損なわないようにしているため、他のオブジェクト指向言語に比べてコードの実行効率や柔軟性を重視している反面、安全性は犠牲になっている。
Javaは当初、組み込みシステム上でネットワークコンピューティングに対応 (support) するために開発された。Javaは移植性があり、セキュアであり、マルチスレッド対応であり、分散であり、そしてC++よりも単純 (simple) になるように設計された。Javaの文法はC/C++プログラマに馴染みやすいものが選ばれたが、C/C++との直接的な互換性は維持されていない。
C++とJavaは開発の目的が異なるため、両者の方針とトレードオフに違いが生じている。

C言語とC++は相互運用性が確保されており、C++からCのライブラリ(関数群)を直接利用することが可能になっている。なお、2018年現在のC/C++最新規格はそれぞれC11およびC++17だが、双方に独自の追加仕様が重ねられており、C言語に対する完全な上位互換性はなくなっている。ただし、互いの差異を埋めて互換性を向上するための機能追加もなされている。
また、JavaはC/C++との互換性はないが、ScalaやKotlin、Groovyといった後発のJava仮想マシン (JVM) ベースのABI互換言語との間で相互運用が可能になっている。