2019年11月19日 10時05分 公開
特集/連載

インタープリタ言語とコンパイル言語を比較「Java」は遅い言語ではなかった? 「C++」との違いを比較

「Java」の処理速度は他のプログラミング言語と比べて速いだろうか。それとも遅いだろうか。「インタープリタ言語」と「コンパイル言語」の主な違いや、Javaと他言語を比較する際の注意点を紹介する。

[Cameron McKenzie,TechTarget]

関連キーワード

Java | プログラミング


画像

 「『Java』は遅い?」

 これは、プログラムのパフォーマンスをこぞって向上させようとする開発者の間でよく聞かれる質問だ。2019年9月開催の開発者向けカンファレンス「Oracle Code One 2019」でも、Java関連の「Birds of a Feather」(BOF)セッション(特定のテーマに関するインフォーマルのミーティング)において、このトピックが取り上げられた。

 この質問に対して「いいえ、Javaは遅くない」と答える人も少なからずいる。実際、他のプログラミング言語と比べても、Javaの処理速度は決して遅くない。Javaが採用している、実行時にプログラムをコンパイルする「JIT(Just-in-Time)コンパイラ」(「実行時コンパイラ」とも)のメモリ管理方法やアーキテクチャが、功を奏しているためだ。

インタープリタ言語対コンパイル言語

 Javaには「インタープリタ言語」の側面がある。インタープリタ言語は、プログラムを実行するたびに機械語(コンピュータが読めるコード)に変換するプログラミング言語だ。Javaはプログラムをいったん「バイトコード」という中間コードに変換。Javaプログラムを実行する「Java仮想マシン」(JVM)がこのバイトコードを機械語に変換し、それを読み取って実行する。これに対し、Javaとしばしば比較される「C++」は「コンパイル言語」に分類される。コンパイル言語は、プログラムをコンパイルすることで実行ファイルを作成する。

 Javaのバイトコードは、JVMをインストールしたコンピュータであれば、どのコンピュータでも実行可能だ。この仕組みが「一度書けばどこででも動く」というJavaの理念を支えている。だがバイトコードから機械語への変換はリソースを消費するため、パフォーマンスを重視するユーザーや開発者を悩ませる原因となる。

何がパフォーマンスに影響するのか

ITmedia マーケティング新着記事

news139.jpg

新型コロナウイルスの感染拡大で注目される「巣ごもり消費」に関する意識――カンム調査
外出控えムードの中、消費意欲は「自宅でのエンタメ」に向かっているようです。

news091.jpg

オンライン医療が進む中国と台湾、日本 iOS「メディカル」アプリ最新人気ランキング
今回は、2020年2月度における中国、台湾、日本市場におけるiOS「メディカル」モバイルア...

news137.jpg

SDGsへの取り組みが最も高く評価された企業はトヨタ自動車――ブランド総合研究所調査
国内の主力企業のSDGsへの取り組みやESG活動に対して1万500人に聞いています。