34

Java VM 用に作成され、Java Byte-Code と互換性のあるプログラミング言語 (Scala、Clojure など) がますます増えています。

私は自問し始めています: なぜ Java VM なのか?

  • 人気が高まっているように見える新しいプログラミング言語が作成されるほど強力で人気のある理由は何ですか?

  • 新しい言語用の新しい VM を作成しないのはなぜですか?

4

10 に答える 10

54

新しい言語用の新しい VM を作成しないのはなぜですか?

それは簡単です:

  • 良い VM を書くのは難しい
  • 高速な VM を書くのは難しい
  • VM を複数のアーキテクチャで実行するのは難しい
  • 既存のライブラリは既存の VM で動作します
  • 既存のツール (デバッガー、プロファイラー、コンパイラーなど) は既存の VM で動作します
  • 人々に新しい VM をインストールしてもらうのは難しい
  • 同じ VM を対象とする他の言語との即時の相互運用性
  • 既存の VM は本番環境で徹底的にテストされています
于 2010-03-19T14:23:57.673 に答える
26

パフォーマンスとライブラリ

  • JVM は、世界で最も高度に最適化されたソフトウェアの 1 つです。
  • Java クラス ライブラリの膨大な配列を活用するため。
  • JVM 内の Java 言語と非 Java 言語の間の対話が機能するという事実。
于 2010-03-19T14:28:13.707 に答える
19

JVMは堅固で、最も小さなJavaスマートカード(わかりました、小さなVM;)から想像できる最大のクラスター化されたスーパーコンピューターまで機能します。

それは堅実であるため、人々が持っている国全体があります:

  • ウォレット内のJavaSmartCardは、国民IDカードまたは医療システムカード(あるいはその両方)として使用されます。
  • JVM(または基本的にGoogleのJavaVMのブランド変更バージョンであるDalvikVM)を備えた携帯電話。ちなみに、iPhoneにはJavaバイトコードを実行するように最適化されたARM CPUが搭載されています(ただし、ビジネス上の理由から、AppleはiPhone / iPadでJavaを提供しないことにしました)。
  • もちろんJavaを搭載したBluRayプレーヤー(BluRay仕様の一部であるため)。

私はJavaで商用ソフトウェアを開発しています。WindowsとOSXで販売していますが、すべてLinuxで開発しています。そしてそれはうまくいきます。また、Solarisなどでも機能します。これは、JVMをターゲットにしているためです。さようなら移植性の問題です。プラットフォームにVMがある限り、ソフトウェアは機能します。

それでは、まだ誰もそれについて言及しているとは信じられません。セキュリティの観点からは非常に良いスタートです。

Java VMは、設計上、バッファオーバーラン/オーバーフローの影響を受けません。これは巨大です。これは実際、ほとんどの人が理解しているよりも巨大です

Linuxで覚えている唯一の「Java」バッファオーバーフロー(セキュリティ上の懸念からアップグレードを促した)は、実際にはバッファオーバーフローであり、Cで記述されたlib(正しく覚えていればzlib、戻って)で任意のコードが実行されることになります。 Linux上のJavaがまだデフォルトでそのlibに設定されていた時代)。

確かに、Webアプリケーションの場合、任意のコードの実行につながるバッファオーバーラン/オーバーフローは、もはや最も重要な攻撃のベクトルではありません(XSSとSQLインジェクションがショーを盗んだため)。しかし、他のすべての場合では、バッファオーバーラン/オーバーフローがほとんどのセキュリティ問題の原因です。

JVMはその影響を受けません。

その設計のおかげでそれに加えて、プロファイラーやデバッガーなどのさまざまなツールを簡単にプラグインできます。

これは、非常に堅固で安全な(正しく使用された場合)テクノロジーです。そのため、技術に精通した企業(JavaはGoogleで巨大であり、GMailからAndroid、GWTなど)と技術に精通していない企業の両方で広く使用されています。

Javaの成功はJVMに由来し、「JavatheVM」は「Javathelanguage」よりもはるかに重要であるということは実際には議論の余地があります。

JVMは、過去20年間で最大の「言語」サクセスストーリーです。そしてそれは当然です。そして、ここにとどまります:)

于 2010-03-19T18:47:08.867 に答える
15
  • 15 年間の改良、性能の向上などを見てきました。
  • 無料でオープンソースです
  • さまざまなプラットフォームで実行されます
  • 単一の VM で複数の言語をサポート
  • 主要言語 (Java) は最も普及している言語の 1 つであるため、Java + JVM は比較的安全なエントリ ポイントです。
  • 適度に安全で堅牢
于 2010-03-19T14:23:57.237 に答える
5

他の誰かがすでに苦労して、すべての主要なプラットフォームで問題なく動作することを確認しているからです。

独自の VM を作成する場合は、Linux/Unix/BSD 用、Mac 用、および Windows 用に 1 つ作成する必要があり、言語コンパイラとランタイム ライブラリをサポートするだけでなく、これらすべてのプラットフォームで VM をサポートする必要があります。Java VM を使用する場合、最初の部分は Oracle、IBM、および Apple によって処理されます。

于 2010-03-19T14:23:02.760 に答える
5

人気が高まっているように見える新しいプログラミング言語が作成されるほど強力で人気のある理由は何ですか?

無料でオープン、成熟 (安定、完全) であり、周囲のエコシステムは巨大です。

新しい言語用の新しい VM を作成しないのはなぜですか?

JVM と同じくらい優れた VM を作成するのは困難です。JVM の仕様とその実装は、業界の最高の頭脳によって 10 年以上にわたって洗練されてきました。

于 2010-03-19T14:24:11.760 に答える
5

ほぼ 20 年の努力の結果、Java VM は

  • ポータブル
  • CやC++ほどではなく、十分に効率的ですが、パフォーマンスは良好です(まだvmであることを考慮して)
  • 統合しやすい
  • API またはライブラリで広くサポートされている

つまり、新しい言語をリリースする予定があるのなら、なぜ JVM を使用しないのでしょうか? わかりました、他にも VM (llvm、オウム) がありますが、JVM は十分にサポートされ、既知であり、テストされています。

そして、それはまた非常にうまく機能します!の不足はinvokeDynamicJava7 のリリースで解決されるので、これよりも優れています..

于 2010-03-19T14:25:00.650 に答える
4

最初の 2 番目の質問: なぜ車輪を再発明するのですか? 高度に最適化されたものを含め、Java VM には複数の実装があり、あらゆるプラットフォームの近くで利用できるものが少なくとも 1 つあります。

最初の質問 2 つ目: Java バイトコードにコンパイルされて VM 上で実行されるコードをサポートするサード パーティのライブラリとツールが大量にあります新しい言語を作成するときの大きな問題の 1 つは、人々がその言語で使用できるものをすべて作成するか、他の何かと互換性を持たせる必要があることです (既存の静的 C ライブラリ、.Net、COM、または Java へのリンクなど)。 VM)。Java VM のオープンな仕様 (ええと、これまでのところ)、深い歴史、および幅広い適用性により、Java VM は新しい言語の優れたターゲットになっています。

于 2010-03-19T14:23:41.920 に答える
4

マイクロソフトのテクノロジではないためです。他の人が述べたように、JVM を使用する大きな理由はたくさんありますが、Microsoft の CLR が無料で、移植性があり、オープンであるとすれば、JVM の人気は少し下がると思います。

于 2010-03-19T18:39:27.730 に答える
3

明白な理由:

  1. 大規模な既存のクラス ライブラリがあります
  2. 複数の VM 実装があり、広く展開されています。
  3. これらの言語は、皆さんが思っているよりも意味的に Java に似ています。
于 2010-03-19T14:23:03.467 に答える