Java VM 用に作成され、Java Byte-Code と互換性のあるプログラミング言語 (Scala、Clojure など) がますます増えています。
私は自問し始めています: なぜ Java VM なのか?
人気が高まっているように見える新しいプログラミング言語が作成されるほど強力で人気のある理由は何ですか?
新しい言語用の新しい VM を作成しないのはなぜですか?
新しい言語用の新しい VM を作成しないのはなぜですか?
それは簡単です:
パフォーマンスとライブラリ
JVMは堅固で、最も小さなJavaスマートカード(わかりました、小さなVM;)から想像できる最大のクラスター化されたスーパーコンピューターまで機能します。
それは堅実であるため、人々が持っている国全体があります:
私は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年間で最大の「言語」サクセスストーリーです。そしてそれは当然です。そして、ここにとどまります:)
他の誰かがすでに苦労して、すべての主要なプラットフォームで問題なく動作することを確認しているからです。
独自の VM を作成する場合は、Linux/Unix/BSD 用、Mac 用、および Windows 用に 1 つ作成する必要があり、言語コンパイラとランタイム ライブラリをサポートするだけでなく、これらすべてのプラットフォームで VM をサポートする必要があります。Java VM を使用する場合、最初の部分は Oracle、IBM、および Apple によって処理されます。
人気が高まっているように見える新しいプログラミング言語が作成されるほど強力で人気のある理由は何ですか?
無料でオープン、成熟 (安定、完全) であり、周囲のエコシステムは巨大です。
新しい言語用の新しい VM を作成しないのはなぜですか?
JVM と同じくらい優れた VM を作成するのは困難です。JVM の仕様とその実装は、業界の最高の頭脳によって 10 年以上にわたって洗練されてきました。
ほぼ 20 年の努力の結果、Java VM は
つまり、新しい言語をリリースする予定があるのなら、なぜ JVM を使用しないのでしょうか? わかりました、他にも VM (llvm、オウム) がありますが、JVM は十分にサポートされ、既知であり、テストされています。
そして、それはまた非常にうまく機能します!の不足はinvokeDynamic
Java7 のリリースで解決されるので、これよりも優れています..
最初の 2 番目の質問: なぜ車輪を再発明するのですか? 高度に最適化されたものを含め、Java VM には複数の実装があり、あらゆるプラットフォームの近くで利用できるものが少なくとも 1 つあります。
最初の質問 2 つ目: Java バイトコードにコンパイルされて VM 上で実行されるコードをサポートするサード パーティのライブラリとツールが大量にあります。新しい言語を作成するときの大きな問題の 1 つは、人々がその言語で使用できるものをすべて作成するか、他の何かと互換性を持たせる必要があることです (既存の静的 C ライブラリ、.Net、COM、または Java へのリンクなど)。 VM)。Java VM のオープンな仕様 (ええと、これまでのところ)、深い歴史、および幅広い適用性により、Java VM は新しい言語の優れたターゲットになっています。
マイクロソフトのテクノロジではないためです。他の人が述べたように、JVM を使用する大きな理由はたくさんありますが、Microsoft の CLR が無料で、移植性があり、オープンであるとすれば、JVM の人気は少し下がると思います。
明白な理由: