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

news018.jpg

「TikTok Ads」2019年の振り返りと2020年の展望
もう「踊ってみた」動画だけではない。急成長する広告配信プラットフォーム「TikTok Ads...

news112.jpg

「メルカリハイ」の謎を解く――4人に1人が100円以下の利益でもフリマアプリに出品
なぜ人は100円以下の少額利益でもフリマアプリに出品してしまうのか。謎を解く鍵は「承認...

news049.jpg

買い物場所の使い分け調査2019――日本能率協会総合研究所
コンビニエンスストア、ドラッグストア、100円ショップなど業態別利用実態と「そこで買う...