Javaプラットフォームの未来に関するいくつかの考え

ここで、将来のRadio-Tポッドキャストに関するコメントのトピックから始まった興味深い議論を開発したかったのですが(ポッドキャスト自体は時々興味深い)、定足数の不足により消滅しました。



実際、言語として、そしてプラットフォームとしてのJavaの未来についての議論。

要するに、Javaの開発を指揮する人々は、Javaを長期間にわたって維持するために何ができるでしょうか? 上記のリンクから、.NETプラットフォームの代替研究言語(たとえば、F#など)がMicrosoft Researchの研究所で多かれ少なかれ活発に開発されているのに、代替言語のそのようなサポートを備えたSun / Oracleが遅れているという方向に議論が進みました。





だから、これに関する私の考えのいくつか...



Javaは当初、プラットフォームに依存しないプログラミング言語として位置付けられていました。 プラットフォームではなく、クロスプラットフォーム言語であることを強調します。 一度書くだけで、どこでも実行できます。 つまり JVMスタックマシンのアーキテクチャとバイトコードの構造により、他の言語のJVMへの移植が許可および許可されているという事実にもかかわらず、高官たちはこれを決して強調しませんでした。 あらゆる場所で動作するJVMがあり、アーキテクチャに依存しないバイトコードがあり、ポインターやメモリへの他の直接アクセスがないという事実に常に重点が置かれています。 したがって、Java(言語)で記述してください。



これを.NET、C#、およびMicrosoftの位置付けと比較してください。 5年ほど前にAndrew Troelsenの本からC#2.0を学んだときでも(Javaに移行する前だった;))、それどころか.NETとそのコンポーネント、特にCLRが中間体をホストする媒体であると書かれていたマネージコード。 C#、VB#、C ++(実際には撮影しませんでしたが、実験が行われました)、IronPythonなどの.NETに移植されたあらゆる種類の言語、およびF#などのMicrosoft Researchによって開発された新しい言語を管理しました。



同時に、たとえば、Mycrofostは、「メイン」言語であるC#の急速な開発に加えて、他の言語の開発にも積極的に投資しています。 たとえば、F#は、OCamlから非常に多くの概念を採用しており、私が知る限り、Haskellを採用しています。 F#コードは文字通りHaskellコードと非常によく似ています。 MSSQLサーバーはCLRをホストする方法も知っており、私の知る限り、CLRでのストアドプロシージャの作成をサポートしています。



Javaの世界に戻りましょう。 -Javaは、プラットフォームとして、そして言語として、C#や.NETと比較してゆっくりと開発されています。これは明らかです。 おそらく、エンタープライズの世界(銀行、取引所など)は、急速な開発よりも安定性よりも重要であるため、これはおそらく正しいでしょう。



しかし、ここがその瞬間です。 言語としてのJava、つまりプラットフォームではなく言語としてのJavaは非常に少なく、制限されています。 はい、それはかなり構築されており、シンプルでコンパクトであり、すべて(私はやり手です)、制限があり、多くの概念をサポートせず、クロージャー、ラムダ、コレクションの操作、正規表現をサポートせず、一般的にフリーズしますそれはあまりにも多くに結びついています。 すべての変更はJCPを介して行われますが、ご存知のように気楽に気になります。



一方、もっと珍しいもの-閉鎖-を望む人のために、Groovy、Scalaがあります。 同時に、これらの言語はコミュニティグループ(たとえば、GroovyはSpringSourceコミュニティによって開発されています)または助成金(最近、主要なEU助成金を受け取ったScalaなど)によって作成およびデバッグされます。 7 JavaでのInvokeDynamic命令の導入を除いて、ここではSun / Oracleからのサポートはありませんが、これでは十分ではありません。 少し遅すぎます。



一般的に、Javaは、JVMの下での主要な代替言語の開発、そして最も重要なプロモーション(!)に投資すれば、非常に長い間、プラットフォームとしてリーダーシップを発揮する大きなチャンスがあります。 これは、.NETマーケティング担当者が最初からプラットフォームの強力な強みの1つとして宣伝したものです。



「お気に入りの言語で書いて、古き良きJavaで、Groovyをその言語の砂糖とメタプログラミングで、簡潔でアカデミックなScalaで、またはClojure(ここでは言い表せず、触れていないのでわかりません)、標準で信頼性の高いもので実行します、実証済みの(百万の小辞)Javaプラットフォーム。」



どうですか?



プラットフォームの位置には顕著な違いがあります。 .NETは当初、ランタイムで多くの言語を横断するためのプラットフォームとして位置付けられていました(最初はC#、VB#、マネージC ++でした)が、Javaマーケティング担当者はこれに気付きませんでした。 ポジショニングは常に少し異なります。Javaは、プラットフォームに依存しないバイトコードがあり、メモリなどの処理が行われないJavaプラットフォームで動作するユニバーサル言語です。 しかし、JVMの下では、他の言語を開発して移植し、それらにコードを書くことができるという事実があります-私が覚えている限り、これはあまり強調されていません。



誰がまだこれについて考えていますか? 将来は、現在の意味での言語(Lisp、Nemerle、Rubyなどの言語を含む)、またはすべて同じであり、ランタイムサービスをホストするプラットフォームと、それらのコンパイラの束(本質的には文法パーサーです)にありますそして、何らかの形のコードジェネレーター)?



All Articles