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 マーケティング新着記事

news105.jpg

ITツールの利用効果に対する実感に世代間ギャップ――Dropbox Japan調査
国内企業における創造性とITツール利用に関する実態調査です。

news035.jpg

エードット×BIRDMAN デジタルクリエイティブ界の強力タッグが目指す「広告のいらない世界」
プロデュースカンパニーとして急成長中のエードットが総合クリエイティブプロダクション...

news092.jpg

10代女子に聞いたお年玉の使い道、「貯金」「推し活」が上位に――バイドゥ調べ
イマドキの女子はもらったお年玉をどう使っているのでしょうか。