web-dev-qa-db-ja.com

GoogleがJavaからJavaScriptへのクロスコンパイラーを開発したのはなぜですか?

GoogleはJavaからJavaScriptへのクロスコンパイラーを開発しました。なぜこれを行ったのですか?これは、JavaScriptが高度なWebアプリの開発に十分ではないことを意味しますか?

4
hidarikani

彼らはこのページの答えの一部を提供します:

http://code.google.com/webtoolkit/makinggwtbetter.html

基本から始めるために、そもそもなぜGWTが存在するのですか?簡単に言えば、GWTはユーザーにとってWebをより良くするために存在するということです。ミッションステートメントに少し長い答えを注入しました。

GWTの使命は、開発者が既存のJavaツールを使用して、妥協のないビルドAJAXを最新のブラウザーで構築できるようにすることです。

言い換えれば、これはJava開発者にAjaxを多用するアプリを作成させる方法でした。

7
Joeri Sebrechts

当時、人々はJavaScriptの学習に価値を見いださなかったため、JavaScriptには大きな実装ベースがありませんでした(ただし、そこには最大のインストールベースがあります!)。一般的にJavaプログラマーはJavaでのプログラミングを他の何よりも優先すること。

4
Jonathan Rich

Javaは、さまざまな成熟したツールと大規模な開発者コミュニティを備えたコンパイル言語です。タイプ、オブジェクト、例外、フレームワーク、優れたツール、コミュニティサポートなどがあります。

JavaScript にもこれらすべてが含まれています-コンパイルを除きます

コードをコンパイルできる場合は、Java=で徹底的にテストしてから、クライアントが実行できるもの(つまり、JavaScript-ここではVBScriptにチャンスがないと思います)に変換します。全体的な開発コスト。大規模で複雑なAJAX= GMailのようなアプリケーションの開発は、費用がかかります。

「1つの言語で記述し、別の言語で実行する」手法は数多くありますが、これは優れた手法でした。

[〜#〜]更新[〜#〜]

私のポイントをさらに明確にするために、JavaScriptはパーサーが構文をチェックする解釈言語ですが、次のような意味上のエラーを拾いません。

function f(x) {
  g(y);
}

「g()」も「y」も存在しない場所。これは実行時にのみ取得されます。

JavaScriptエンジンには、 V8Nitro(JavaScriptCore)Spider/Jaeger/TraceMonkey など多くの解析されたコードを可能な限り高速に解析して実行するという素晴らしい仕事を(おそらくマシンコードを発行することによって)行いますが、完全なコンパイルプロセスが行うような意味上のエラーをキャッチしません。これは、スクリプトが互いに独立してWebブラウザーに配信され、必要なすべてのスクリプトがダウンロード/キャッシュされ、DOMが初期化され、動的に生成されたスクリプトが完了するまで、JavaScriptエンジンが完全なストーリーを持っていないことが原因です。トリガーされました。したがって、エンジンは通常、ダウンロードおよびレンダリングプロセスのかなり遅い段階まで、ソース全体を保持できません。

フルコンパイラーは、上記のコードスニペットをエラーとして強調表示します。これは、コンパイルされた言語を使用し、正確性を検証し、ユニットテストを実行してから、リフレクションまたは逆コンパイルを使用して、検証済みの正しいJavaScriptを生成し、クライアントで実行します。

4
JBRWilkinson