2011-01-24 9 views
3

私の経験上、デスクトッププラットフォームのJavaアプリケーションのほとんどは、C++や他のネイティブコンパイル言語で書かれた同様のアプリケーションよりも応答がありません。 Javaが中間言語にコンパイルするだけであることを考えると分かります。Javaアプリケーションはネイティブの代替プログラムと同じように応答することができます

ここでは、アプリケーションがマウスクリックやキーボードイベントにどのように反応するか、ユーザーがどこかをクリックしている間に少し遅れていること、そしてそのクリックに対するレスポンスを表すために必要なものすべてを実際に再描画するプログラムです。ほとんどの場合、これらの遅延は非常に小さく、遅れとして見ることはできませんが、アプリケーション全体が少し遅くなるという気持ちがあります。

レスポンスが低いと思われるこのようなJavaアプリケーションの例は、Azureus、ZendスタジオのJavaベースのバージョン、Eclipse、および自分のスイングベースのJavaプロジェクトです。

これは本当ですか? Javaアプリケーションはネイティブアプリケーションほど敏感ではありませんか?それはおそらくいくつかの異なる方法でコンパイルする必要がありますか? (もし可能ならば、Zendスタジオのような大きな製品はこれをやっていると思いますが)。

+0

これは言語よりもグラフィックスフレームワークとはるかに関係があります。私はスイングがちょっと遅いと思う。 – Falmarri

+0

@Falmarri:EclipseとAzureusはSwingではなくSWTで書かれています。 – Powerlord

+0

Eclipseのインターフェースが自分のニーズに対応できるようになっています。それだけでも私です。 – MattC

答えて

1

Javaでのアプリケーションの応答性は、しばしば悪い/非効率的なプログラミングに至りません。 JavaのUIはC/C++で書かれたものよりも重いものですが、最近のコンピュータ(ここ数年ほど)でうまくコーディングされたアプリケーションと闘うべきではありません。

最新のベンチマークでは、Java 1.6がC/C++と比較してスピードが速いことが示されています(実際には、パフォーマンスの面で両者の間にぴったりと合っていました。

Javaの症状とIDEの人々が書いているのは、間違ったやり方で(読み方が悪い、あまり好きではありません)あなたはより良いソフトウェアを書くことを余儀なくされます。

個人的には、開発者がUIのすべての要素に単一のリスナーを関連付けたJavaアプリケーションを見てきました。そのリスナーは、if ... elseif ... elseif ...イベントオブジェクトから戻されたツールチップの文字列。

1

javacは中間バイトコードにコンパイルします。しかし、JVMはコードが動的にどのように使用されるかに基づいてネイティブコードにコンパイルされます(スタティックコンパイラではできないもの)。GUIの場合、実際の作業のほとんどはネイティブコードコンポーネントで行われます。

多くのリアルタイム取引システムは、Javaを使用して開発され、100マイクロ秒未満で応答します。すなわち0.0001秒である。応答性の問題がある場合、その言語には誤りがありません。

BTW:EclipseはネイティブライブラリであるSWTを使用します。

+0

AWTはネイティブコンポーネントをベースにしていました。スイングはありません。ネイティブコンポーネントがアプリに必要なウィジェットを見逃してしまったため、 – Cratylus

+0

純粋なJava SwingアプリケーションであるIntelliJを使用していますが、GUIアクション(通常は待機中)による応答性の問題はありませんディスクのために)私はそれが主にユースケースとあなたが使用するライブラリに依存すると思うが、言語ではない。 –

関連する問題