2020年8月28日金曜日

「Java」「Rust」が C/C++の代替になるこれだけの根拠

https://ids.itmedia.jp/dl/tt_46847.pdf
シェアしました。

「Java」と「C」「C++」はどちらが速いのか。C / C++ の後継と目される「Rust」と はどのようなプログラミング言語なのか。これらの疑問に答えよう。
        「Java」は遅い言語ではなかった? 「C++」との違いを比較  「『Java』は遅い?」
 これは、プログラムのパフォーマンスをこぞって向上させようとする開発者の間でよく聞かれる 質問だ。2019 年 9 月開催の開発者向けカンファレンス「Oracle Code One 2019」でも、Java 関連の「Birds of a Feather」(BOF)セッション(特定のテーマに関するインフォーマルのミー ティング)において、このトピックが取り上げられた。
 この質問に対して「いいえ、Java は遅くない」と答える人も少なからずいる。実際、他のプロ グラミング言語と比べても、Java の処理速度は決して遅くない。Java が採用している、実行時 にプログラムをコンパイルする「JIT(Just-in-Time)コンパイラ」(「実行時コンパイラ」とも) のメモリ管理方法やアーキテクチャが、功を奏しているためだ。
                            1 「Java」「Rust」が C / C++ の代替になるこれだけの根拠
     ITインフラ セキュリティ 業務アプリ システム開発 IT経営 インダストリー

   ■インタープリタ言語対コンパイル言語
 Java には「インタープリタ言語」の側面がある。インタープリタ言語は、プログラムを実行す るたびに機械語(コンピュータが読めるコード)に変換するプログラミング言語だ。Java はプロ グラムをいったん「バイトコード」という中間コードに変換。Java プログラムを実行する「Java 仮想マシン」(JVM)がこのバイトコードを機械語に変換し、それを読み取って実行する。これに 対し、Java としばしば比較される「C++」は「コンパイル言語」に分類される。コンパイル言語 は、プログラムをコンパイルすることで実行ファイルを作成する。
 Java のバイトコードは、JVM をインストールしたコンピュータであれば、どのコンピュータで も実行可能だ。この仕組みが「一度書けばどこででも動く」という Java の理念を支えている。だ がバイトコードから機械語への変換はリソースを消費するため、パフォーマンスを重視するユー ザーや開発者を悩ませる原因となる。
■何がパフォーマンスに影響するのか
 C++ は、プログラムを機械語に直接コンパイルするため、中間コードへの変換は必要ない。こ
れが、C++ プログラムが Java プログラムより高速に動作する傾向がある理由だ。
 例外もある。C++ プログラムはコンパイル時に、プログラムを実行するシステムのアーキテク チャに基づいて最適化される。具体的には、システムが搭載するプロセッサのアーキテクチャに基 づき、その時点で利用可能なプロセッサの機能を利用できるようにコンパイルする。
 Java は違う。Java プログラムは実行時にシステムを調査する。そのため、JVM は使用可能 なシステムの機能に基づいて、生成する機械語を最適化できる。これに対し、C++ プログラムで そのような新機能を利用するには、再コンパイルする必要がある。
 それでも Java は遅いのだろうか。「新しいアーキテクチャを持つ CPU を搭載するシステムが 登場すれば、そのシステムでは Java プログラムの方が、プログラミング言語『C』で記述したプ ログラムより高速に動作するだろう」。Java 開発ツールベンダーの Azul Systems で最高技術 責任者(CTO)を務めるギル・ティーン氏は、Java を取り扱った Oracle Code One の BOF セッションでそう語った。
 Java が遅いかと言えば、決してそうではない。では Java プログラムは、C++ プログラムと同 程度に速いのだろうか。必ずしもそうではないが、Java プログラムが C++ プログラム並みに速 い場合もあり、Java プログラムの方が速い場合もある。
2 「Java」「Rust」が C / C++ の代替になるこれだけの根拠
     ITインフラ セキュリティ 業務アプリ システム開発 IT経営 インダストリー

          プログラミング言語「Rust」が「C」「C++」の後継になるこれだけの根拠
 クラウドベンダー大手の Amazon Web Services(以下、AWS)が、プログラミング言語 「Rust」のスポンサーになった。Rust は 2015 年に初の安定版が公開されて以来「、C++」の有 力な代替として台頭している。「高性能で安定したアプリケーションを開発できる」「プログラマー
の生産性を高められる」と評判だ。Google、Microsoft、Mozilla、Yelp、Dropbox、Cloudflare、 AWS といった企業がシステム開発言語として Rust を採用している。
■高い評価を集める理由
 プログラミング言語「Ecstasy」を開発している新興企業 xqiz.it の CEO であるキャメロン・ パーディー氏は、Rust について「長い年月の中で初めて登場した “ 真の C++ の代替 ” と言える。 システム開発に適した仕組みを持ち、C++ よりもはるかによく考えられた言語だ」と評価する。シ ステム開発業界を対象としたアナリスト企業 RedMonk でアナリストを務めるジェームズ・ガバ ナー氏も、「Rust はシステム開発のための言語として着実に広がっている」と話す。
 AWS では、クラウドサービスの開発において Rust の使用が拡大している。イベント駆動型 コード実行サービス「AWS Lambda」、仮想マシンサービス「Amazon Elastic Compute Cloud(」Amazon EC2)、ストレージサービス「Amazon Simple Storage Service(」Amazon S3)などのサービスで、パフォーマンスを重視するコンポーネントに Rust を使っているという。 AWS の仮想化技術「Firecracker」も Rust を使って開発されている。
 今回の AWS による Rust のスポンサーシップは、Rust プロジェクトで利用するインフラの支 援を含む。AWS のブログによると、同社は上流工程テスト、性能テスト、CI/CD(継続的イン テグレーション/継続的デリバリー)、中間生成物の開発において、AWS のストレージを利用で きるプロモーション用クレジットを Rust プロジェクトに提供するという。AWS は同様のプロモー ションクレジットを、Java 開発環境「AdoptOpenJDK」やプログラミング言語「Julia」など のオープンソースプロジェクトにも提供している。
 「AWS は、『オープンソースソフトウェア(OSS)の恩恵を受けていながら、OSS を作り出す ことも、コミュニティーを支援することもしていない』という批判から免れるチャンスを探っている のだろう」。調査企業 Forrester Research のアナリストであるジェフリー・ハモンド氏はそう推 測する。「Java 開発環境『Amazon Corretto』や Firecracker などのプロジェクト、そして今 回のようなスポンサーシッププロジェクトは、全てそうした見方に対抗することを目的としている」 とハモンド氏は付け加える。
                            3 「Java」「Rust」が C / C++ の代替になるこれだけの根拠
     ITインフラ セキュリティ 業務アプリ システム開発 IT経営 インダストリー

    AWS によると、Rust プロジェクトは以下の目的で AWS を利用する。 ・コンパイラ、ライブラリ、ツール、ソースコードといったリリースの成果物(アーティファクト)
の保存
・Rust のレグレッションテスト(システムの整合性を確認するテスト)ツール「Crater」の実行
・Rust のパッケージ(拡張機能)管理 Web サイト「crates.io」に登録されたパッケージのド キュメントをホスティングする Web サイト「Docs.rs」の運用
■Microsoftが公式に「C」「C++」の代替と見なすことを表明
 Rust を支援する動きは AWS 以外にも広がっている。Microsoft も Rust を利用した開発を推 進している。「Rust はもはや、開発者が週末にいじるようなものではなく、インフラ開発のための 言語になりつつある」(ハモンド氏)
 Microsoft は 2019 年 7 月に、安全性と性能に基づき、Rust を「C」および C++ の代替と 見なしていることを明らかにした。同社の主席クラウドデベロッパー推進者であるライアン・レビッ ク氏はブログの中で、「Rust を使えばセキュアで高性能なアプリケーションを開発できる」と述 べている。
 「セキュアなシステムを開発できる点において、Rust はシステム開発業界を一変させた」とレ ビック氏は評価する。「Rust は低レベルのシステム開発に必要なパフォーマンスと制御機能を提 供すると同時に、安定したセキュアな開発も支援している」(同氏)
 開発者向け質問共有サイト「Stack Overflow」が毎年実施している調査では、Rust が「最 も愛される」プログラミング言語に 2016 年から 2019 年にかけて 4 年連続で選ばれている。Rust はパフォーマンスが優れているだけでなく、メモリとスレッド(並列処理のための仕組み)の安全 機能がバグの削減につながる。
■今後の課題
 レビック氏によれば、Microsoft は Rust に対し、C++ や同社の既存ツールとの相互運用性な
どの対処すべき問題があるとみている。
 調査会社 Constellation Research のアナリストであるホルガー・ミュラー氏は、「クラウド市 場の主導権争いは開発者を引き付けて、主導的なクラウドサービスを利用した次世代アプリケー ションを開発してもらうことが基本だ」と見解を示す。
4 「Java」「Rust」が C / C++ の代替になるこれだけの根拠
     ITインフラ セキュリティ 業務アプリ システム開発 IT経営 インダストリー

    生産性や機能を理由に、開発者の注目を集める新しいプログラミング言語が登場することはし ばしばある。Rust はそのケースだ。「人気の急上昇を受けて、大手 IaaS(Infrastructure as a Service)ベンダーが、提供するサービスで Rust を利用できるようにする必要に迫られている」
(ミュラー氏)
  TechTarget ジャパン プレミアム 「Java「」Rust」がC/C++の代替になるこれだけの根拠
2020年5月14日
編集:TechTarget ジャパン
発行:アイティメディア株式会社
Copyright 2020 ITmedia,Inc. TechTarget,Inc. All Rights Reserved.

0 コメント:

コメントを投稿