JavaとC++の比較

JavaとC++の比較（ジャバとシープラスプラスのひかく）の記事では、JavaとC++の比較について説明する。
設計思想.
C++とJavaとの違いは、それら言語の歴史から辿ることができる。
C++とJavaは開発の目的が異なるため、両者の方針とトレードオフに違いが生じている。
C言語とC++は相互運用性が確保されており、C++からCのライブラリ（関数群）を直接利用することが可能になっている。なお、2018年現在のC/C++最新規格はそれぞれC11およびC++17だが、双方に独自の追加仕様が重ねられており、C言語に対する完全な上位互換性はなくなっている。ただし、互いの差異を埋めて互換性を向上するための機能追加もなされている。
また、JavaはC/C++との互換性はないが、ScalaやKotlin、Groovyといった後発のJava仮想マシン (JVM) ベースのABI互換言語との間で相互運用が可能になっている。
言語の特徴.
ライブラリ.
JavaはC++と比べ標準ライブラリの提供する範囲が広い。標準C++ライブラリは文字列、コンテナ、IOストリームのような比較的一般的な目的のコンポーネントだけを提供する。Java標準ライブラリはネットワーキング、グラフィカルユーザインタフェース、XML処理、ロギング、データベースアクセス、暗号化やそのほか様々な領域のコンポーネントを含む。このような機能は、C++ではサードパーティー製のライブラリやOS固有のAPIによって実現されていることが多いが、どんな環境でも用意されているとは限らない。
C++はCに対する部分的な上位互換性を持つため、（多くのオペレーティングシステムのAPIのような）Cライブラリも直接使用できる。Javaでは、そのような環境固有のライブラリで提供される機能の多くが、クロスプラットフォームでリッチな標準ライブラリで提供される。その一方で、Javaからネイティブなオペレーティングシステムやハードウェア機能に直接アクセスするには、Java Native Interfaceを使用する必要がある。
パフォーマンス.
このセクションでは、WindowsやLinuxのような一般的なOSでのC++とJava相互の演算パフォーマンスを比較する。
Javaの初期バージョンは、C++のような静的コンパイルされる言語に比べ著しく性能が低かった。これは、C++ではソースコードはハードウェアが直接に解釈できる機械語にコンパイルされるのに対し、Javaでは共通の（ハードウェアに依存しない）仮想機械語であるJavaバイトコードにコンパイルされ、それをJava仮想マシンがインタプリタ的に実行していたからである。例として、
のように、ソースコードレベルでは同様な命令でも、Javaバイトコードの方がネイティブな機械語よりも長くなる傾向にある (C++によるコードでは、3行目でロード、インクリメント、保存が1命令で行われており、短く済んでいる)。
しかし、Javaは長期稼働するサーバやデスクトップのためにジャストインタイム(JIT) コンパイラテクノロジを発展させ、それがC++との性能差を縮めるであろうと言われている。JITコンパイルとは、Javaバイトコードをインタプリタ的に実行するのではなく、実行時にネイティブな機械語にコンパイルしてから実行する方式である。
以下は、JavaはC++よりも高速であるという研究の主張の一部である。
一般的に、Javaは、メモリ確保やファイルI/Oのような演算においてはC++より性能がよいが、算術演算や三角関数計算ではC++の方が優れた徴候を示す。 数値演算について述べると、Javaは新しいバージョンで大きく進歩しているものの、浮動小数点数を様々なプラットフォームで再現するためのオーバーヘッド等により、未だにC++やFortranより遅い。