54

当社は数年前からEclipseを使用しています(リリース0.7からWTPを使用しています)

私は現在、Eclipse 3.4.2 をメイン IDE として WTP 3.0.4 に置き換える必要があるWTP 3.2.3 で Eclipse 3.6.2 を評価しています。

もう一度言いますが、パフォーマンスの懸念にはかなりがっかりしています
。WTP 3.2.3 は 3.0.4 よりもかなり遅いようです。
実際、リリースごとに WTP が遅くなるのはなぜなのか、本当に疑問に思っています。

私たちのアプリケーションの 1 つ (動的 Web プロジェクト) には、約4000 の Java クラスと 700 の jsps/jsp フラグメントが含まれています。jsps、xml、および xsd を開発するための基本的な WTP 機能のみが必要です。そもそも、 Dali (JPA ツールは本当にwebtools プロジェクトでカバーされるべきでしょうか?)、Libra、または視覚的な xml エディターのような高度に洗練された機能は必要ありません。

もう 1 つの興味深い点は、WTP がIDE 全体の速度を低下させているように見えることです。SWT が数秒反応せず、CPU 使用率が非常に高い (特にビルドが行われた後 - システム ジョブを見ると、すべての WTP ビルド バリデーターが存在する場合でも、いくつかの jsp/javascript インデクサーが数分間作業を行っています)無効になっている)、新しいファイルを開くのが遅くなる、プロジェクト内を移動するなど。

これは、シングル コア CPU しか搭載されていない古いマシンで特に見られます。

最悪なのは、WTP 開発チームがパフォーマンスをあまり気にしていないように感じたことです (たとえば、http://wiki.eclipse.org/WTP_Performance_Testsページを見てください - 最後の更新は 2008 年に行われました)。

基本機能 (jsp の編集/検証など) のパフォーマンスに関するバグ レポートやニュースグループへの投稿は、無視されるか、しばらくすると閉じられることよくあります

Quo vadis、WTP?


誤解しないでください:

私はWTPを責めたくありません。
実際、WTP は有能なチームによって開発された優れたオープンソース プロジェクトであると私は信じています。
しかし明らかに、このプロジェクトには品質保証に問題があり、特にユーザビリティとユーザーの受け入れに影響を与えるパフォーマンスの点で問題があります。

チームは、最初にほとんどのユーザーにとって不可欠なものに焦点を当て、その後、非常に優れた機能の実装に取り​​組む必要があることを指摘したいと思います.

私の質問

  • WTP、特に最新のリリースについて、どのような経験をしましたか?
  • 私の観察を確認または反証できますか?
  • より良い代替手段はありますか?
  • WTP から、または WTP に切り替えましたか?その理由は?
  • 特に私たちのようなアッパーミッドサイズのために、それをスピードアップするためのベストプラクティスはありますか?

アップデート

現在の回答を反映し、現在の結果を要約するために、この質問を更新したいと思います。

  • 多くのユーザーが同じ問題について多かれ少なかれ不満を持っているので、それらの問題は確認されていると思います。
    ところで、この質問はtheserverside.comのニュース投稿にも追加のコメントとともに記載されています。

  • 担当の WTP プロジェクト リーダーである nitind は、WTP の現在の状況に関する注目すべき投稿を作成しました。これを引用したいと
    思います。
    「もちろん、受け身ではなく積極的に取り組みたいと考えていますが、機能的な問題に最初に時間を割く傾向があります。」

したがって、この質問は、コミュニティから WTP チームへのある種の公開書簡に少し変わります。

Dear WTP team,

it's obvious that WTP is suffering from major quality/performance issues 
which you try to play down or to ignore.
Please invest some time to improve the current situation 
at the cost of new features and do everything what's required 
to solve the current problems.
E.g. revive the performance team, do some regression tests between 
previous releases or ask the community for (precise defined) help.

I am sure that they are enough people willing and able to help here.

If you like, do some kind of poll to get a feeling what should be 
the most important scopes of future's WTP releases.

Please, please, listen to your community.
4

11 に答える 11

32

それに応えて、私は WTP で JSP、XML、および JavaScript のソース編集機能を提供するプロジェクトのリーダーを務めています。単純な事実として、私たちはパフォーマンス テストに多くの時間を費やしていません。それを行うためのリソースが不足しているからです。もちろん、受け身ではなく積極的に対応したいと考えていますが、最初に機能的な問題に時間を割く傾向があります。パフォーマンス回帰テストを定期的に実行しているアダプター製品がありますが、テストは今のところマルチコア マシンで実行されると予想されます。また、しばらくの間、新しい危険信号は報告されていません。

あなたがリンクした 3 つのバグのうち、2 つはあなたが賞賛した 3.0.4 バージョンよりも前のものであり、3 つ目は書式設定のパフォーマンスの問題 (対処されているため) または XML ファイルに固有の入力時の検証に関するものです (修正するとXerces、iirc でメモリ リークが発生したため、その時点では入れていません)。バグに添付できる具体的なプロジェクトがあり、「X を実行すると 3.2 で Y の分だけ遅くなる」と言う場合、リグレッションがどこにあるかを把握するためにできる限りのことを行います。

インデクサーに関しては、少なくとも最終的には完了するはずです。保存されているディスク上の情報は WTP のバージョン間で変更されており、これらのファイルを再処理して、検索および (実装されている場合は) リファクタリング操作に再度含める必要があります。最初のインデックス作成が完了すると、段階的に動作し、ほとんど目立たなくなります。実行している可能性のあるアーキテクチャ上の変更の 1 つは、JSP の場合、そのインデックスが「最新」であると見なされるように、単一のワークベンチ セッションでワークスペース全体にインデックスを付ける必要があることです。欲求不満から Eclipse をシャットダウンしても、その再処理の影響が長引くだけです。

あなたの会社の標準インストールには、独自のカスタムディストリビューションを展開するのではなく、WTP 全体が含まれているようです。Startup and Shutdown設定ページを確認し、使用することに興味のない機能の早期起動をオフにすることを強くお勧めします。あなたが興味を持っていると述べたものは何もその機能を利用していませんが、WTP とプラットフォームには他にも利用している分野があります。検証に興味のないものはすべて、検証設定ページで公平に扱うことができます。また、 Web / JSP ファイル/検証設定ページでデフォルトで JSP フラグメントを検証する設定も同様です。

于 2011-03-29T17:18:35.780 に答える
5

ここでも、WTP 3.2.3 に同じ問題があります。私たちの製品でも数年間使用していますが、新しいリリースごとに速度が低下しているため、このツールに対する開発者と顧客の受け入れは年々減少しています。

すべての「高度な」機能を無効にできる場合はそれを使用したいと思いますが、あなたが述べたように、インデクサーをまったく無効にすることはできません。また、すでに実行されている JSP ファイルのバリデータを停止することはできません (プロジェクトに約 1000 個の JSP ファイルと多くのタグ ファイルがある場合は、これをテストできます)。

また、メモリを増やしても効果がないことも証明できます。日食全体のクラッシュを防ぐだけで、WTP の内部操作をブロックする UI を減らすことはありません。

最新バージョン3.2.3では、サーバー ビュー内からTomcatを起動すると、多くのハングが発生しました。UIは約1 分間ハングします。ハングしているのは私だけではなく、Windows で作業している同僚全員が同じ問題を抱えています。Linux では、この問題についてはわかりません。

また、インターネットにアクセスできない場合、WTP には問題があります。一部のレジストリにスキーマなどをダウンロードするように要求しているようで、接続がない場合はハングしてタイムアウトを待ちます。

于 2011-03-28T08:06:19.490 に答える
4

誰のせいなのかわからない: WTP か JBoss Tools か。実際のところ、私は GWT (最小限の JSP) を使用していたので、逆の方向に進みました: WTP はまったくありません!!! 私は現在、プレーンな Eclipse for Java を使用しており、実行構成を使用して (プログラムで ANT を呼び出して) デプロイし、サーバーを起動しています。Eclipse は最大 1.5 GB を使用し、数回クラッシュしました。今では 800MB までになり、環境全体がより安定しました。

于 2011-03-30T16:25:46.953 に答える
4

私は同様の効果を見てきました.いくつかのプロジェクト環境に適しているかもしれない1つの解決策があります...

高速で責任ある Eclipse Web プロジェクト環境を保証するには、次の点を考慮してください。

  1. Java 開発者向けの Eclipse IDE の使用
    • 98MB バージョンは 200MB EE バージョンよりスリムです
    • General / Startup and Shutdownから、「Eclipse UI」以外をすべて無効にします
    • Validation から、不要なバリデーターを無効にします
    • これらはおそらくいくつかのパフォーマンスの問題を防ぎます (YMMW)
  2. 桟橋を使用
    • WTP やその他のプラグインは必要ありません。純粋な Java です。
    • Tomcat に似ていますが、どの IDE / 環境にもすばやく簡単にインストールできます
    • プロジェクト ファイルに直接埋め込み、開発者ごとに 1 回設定する
    • 任意の IDE (Eclipse、IDEA、JDeveloper..) で動作します。
    • 「Debug As」/「Run As」でサーブレットコンテナを起動します
    • Eclipse コンソールの赤いボックスをクリックして、Servlet Container をシャットダウンします。
    • IDE コンソール、デバッグ & ホットコード置換 & JRebel は正常に動作します

結果: Eclipse EE バージョンと WTP を使用する他の多くの Eclipse インストールと比較すると、高速で応答性の高い Eclipse です。

なんで?一部の Eclipse 機能またはプラグインにバグが含まれているか、単にリソースを不適切な方法で使用している可能性があり、これにより Eclipse UI が遅くなります。

Java EE 以外の Eclipse は、多くの Java EE プロジェクト環境でも十分に機能します。それはすべて、アーキテクチャと使用しているツールによって異なります。

Jetty Servlet Container を Eclipse で試してみたい場合に備えて、ここに簡単なチュートリアルがあります。https://vaadin.com/web/jani/home/-/blogs/vaadin-for-everyone-how-to-get-startedを参照してください。VaadinProjectForAnyIDE.zip をダウンロードします。これは Eclipse プロジェクトです。その Vaadin を無視して、HelloWorldApplication.java を独自のサーブレットに置き換え、それに応じて web.xml を編集します。

もう一つ。Eclipse EE バージョンでは、実際に Eclipse バンドルに組み込まれた Jetty である J2EE プレビュー サーバーを試してみることもできます。ただし、これも WTP メカニズムを使用します。

于 2011-04-04T10:37:57.280 に答える
2

また、Eclipse/WTP の安定性とパフォーマンスは、やや憂慮すべきものだと思います。私は 2003 年半ばから Eclipse を使用しており、最初のリリースから WTP を試してきました。

最初は品質が最悪でしたが、バージョン 0.x の場合、もちろん文句を言うことはできませんでした。WTP が成熟するのを待っている間、私は MyEclipse を使用しました。これはまあまあでしたが、欠点もありました (部分的に WTP に基づいており、WTP の一部を継承していました)。

MyEclipse がますます重くなり、速度が遅くなり、いくつかの安定性の問題が発生したとき、「純粋な WTP」に切り替えました。実際に使用していたのは、基本的な JSP/JSF エディターとデプロイヤーだけでした。

WTP は増分デプロイメントを行わないため (少なくとも JBoss サーバー ランタイムの場合はそうではありません)、JBoss ツールから別のサーバー ランタイムを追加しました。Facelets を採用したとき、エディターも JBoss ツールから切り替えました。

しかし、MyEclipse に関しても多くの問題に遭遇しました。説明のつかない速度低下がありますが、さらに悪いことに、さまざまな安定性の問題があります。厄介な例外やクラッシュがたくさんあります。私が調査したさまざまなワークステーションの典型的な .log ファイルには、例外がぎっしり詰まっています。私のログの最後の 10 個の例外の小さな選択:

1.

java.lang.NullPointerException
        at org.eclipse.jst.jsp.core.internal.validation.JSPActionValidator.isElIgnored(JSPActionValidator.java:147)

2.

java.lang.RuntimeException
        at org.eclipse.jface.viewers.ColumnViewer.checkBusy(ColumnViewer.java:763)

3.

java.lang.ArrayIndexOutOfBoundsException: 38
        at org.eclipse.debug.internal.ui.viewers.model.FilterTransform$Node.addFilter(FilterTransform.java:67)

4.

org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 302111.
        at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:171)

5.

java.lang.NullPointerException
        at org.eclipse.jst.jsf.facelet.core.internal.cm.ElementCMAdapter.getLength(ElementCMAdapter.java:109)

6.

Caused by: java.lang.NullPointerException
        at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.WebappConfiguration.getConfigFilesFromContextParam(WebappConfiguration.java:184)

7。

org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Feature 'span' not found. (file:///mysystem/Eclipse.app/Contents/MacOS/com
/sun/faces/metadata/taglib/facelets_jsf_core.taglib.xml, 453, 52)
        at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.handleErrors(XMLLoadImpl.java:83)
        ...
        at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.TagModelLoader.loadFromInputStream(TagModelLoader.java:100)

8.

java.lang.NullPointerException: No IModelProvider exists for project P/my_project of version: Utility Module
            at org.eclipse.jst.j2ee.model.ModelProviderManager.getModelProvider(ModelProviderManager.java:101

9.

 java.lang.NullPointerException
            at org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory.clearCache(J2EEDeployableFactory.java:238)

10.

org.eclipse.jst.jee.model.internal.mergers.ModelException: java.util.ConcurrentModificationException
        at org.eclipse.jst.jee.model.internal.mergers.EjbJarMerger.process(EjbJarMerger.java:79)

これらは最後の 10 件に過ぎず、さらに多くの例外があることに注意してください。

カジュアルな反応は次のようになります: 「Eclipse インストールが破損しています! ローカルに問題があります!」 はい、ローカルに問題がある可能性があります。ログ。

また、さまざまな化身で次のリンクで報告されているような展開に関する問題があります: http://community.jboss.org/thread/158611 JBoss ツール固有であるか、基礎となる WTP または Eclipse コードに基づいている可能性があります。 . わかりませんが、厄介な問題であることは知っています。そこにあるすべての WTP および JBoss ツールのバージョンでは「何か」が修正されており、そのような問題はすべてのバージョンでわずかに異なる形で再浮上しています。

安定性の問題の間に、いくつかの作業を完了することができ、エディターが提供するオートコンプリートとナビゲート機能が気に入っています (これにより、テキストエディターに切り替えて、コマンドラインで完全に構築することができなくなります)。安定性の向上が望まれます。

于 2011-04-01T18:47:56.687 に答える
1

私のプロジェクトを高速化するための最良の方法は、現在使用していないコードをプリコンパイルすることです。システムを構成する約 20 のプロジェクトがあり、特定の問題に取り組んでいるときは、それらの Java ファイルの特定のサブセットだけに触れています。私が触れないほとんどのコードをコンパイルしていくつかの.jarに投げ込み、プロジェクトを含める代わりにそれをソースとして使用すると、物事がかなりスピードアップすることが証明されています。4k以上のファイルがある場合にも役立つと思います。各プロジェクトには、そこから jar を作成してインクルードする小さな build.xml しかありません。

しびれるのはJSP編集での遅さ。私は同じ問題を抱えています、それはただとても遅いです。100 個を超える jsp ファイルはありませんが、あなたと同じ問題があります。私の解決策は、ハードウェアにお金を投じることでした。

于 2011-03-28T21:29:35.550 に答える
1

必要最小限の Java EE が必要な場合は、Netbeans を使用した方がよいでしょう。すべてが必要で、作業だけが必要な場合は、IDEA を使用したほうがよいでしょう。それはそれと同じくらい簡単です。

于 2011-11-07T17:21:52.223 に答える
1

次の質問に答えるには: 特に私たちのようなアッパーミッドサイズのために、スピードアップするためのベストプラクティスはありますか?

ファイルの保存後に検証と自動ビルドをオフにすることは、パフォーマンスを向上させるための良い出発点です。

于 2011-03-31T07:40:54.617 に答える
1

上記の理由により、WTP JSP エディターを無効にしました。必要なリソースが多すぎるだけです。考慮すべきその他の事項:

  1. 通常の HTML エディタで JSP を編集します。これは、良いことであるコード補完が得られないことを意味します。IMO、Java と HTML の混合はそもそも間違いであり、編集者はそれを修正できません。すべての Java コードをヘルパー Bean に入れ (簡単にテストできます)、JSP から Bean にアクセスするだけです。これにより、すべてのタグの 99% が取り除かれ<% %>、問題のほとんどが既に解決されているはずです。

  2. Spring を使用して、より複雑な Bean を構築し、これらのパターンを使用して JSP に注入できるようにすることを検討してください。

  3. 別の VM を試してください。WTP エディターは膨大な量のオブジェクトを作成しますが、現在ではすべての VM (GC 実装) がそれを同様に適切に処理できます。Sun の Java を使用している場合は、JRockitまたはIBM のJ9を試してください。また、GC設定で遊んでください。GC の問題がある場合、RAM を増やしても通常は悪化するだけなので (GC はより多くのデータを処理する必要があるため)、RAM を増やしても効果はありません。

  4. できるだけ多くのコードをプリコンパイルします。ワークスペースで常に 4000 個のクラスを開く必要はありません。巨大なプロジェクトを扱いやすいチャンクに分割します。

  5. JSP をプレーンな Java サーブレットに置き換え、 rendersnakeなどのHTML レンダリング ライブラリを使用するか、HTML でより適切に機能するプログラミング言語 ( Groovyなど) を使用します。

  6. まともなハードウェアを入手してください。クアッドコアと 8GB RAM を搭載した新しい PC の価格は 1000 ドルです。毎日 10 分節約した場合、投資は 50 日で完済されます (1 人の割合で、合計で 1 日あたり 1000 ドルかかります)。

  7. はるかに優れた Web エディターを備えたMyEclipseを試してください。JSP エディターは WTP よりも優れています (たとえば、コード補完はほとんどの場合に機能します) が、それでもまだ遅いです。

于 2011-04-04T12:20:25.923 に答える
1

WTP (3.2.3) も遅いです。それほど遅くならないようにする方法をいくつか見つけたと思います:

  • Maven を使用しているためtarget、すべての JSP とその他の XML のコピーを含むディレクトリがあります。WTP バリデーターによってスキャンされることがあると認識しています。しかし、これは必須ではないので、検証から除外しました (Project/Properties/Validation/XXX/Exclude Group/)。(ディレクトリを派生としてマークすると同じ効果が得られるはずですがtarget、それがうまくいかない場合があります;-( )
  • 私は(科学的に証明されていない) WTP が JSP ファイルよりも JSPX の方が高速であるように見えるという観察を行いました。
于 2011-04-04T12:42:48.700 に答える
0

コメントできなかったので、この回答にコメントを入れます。

Eclipse のメモリ割り当てを増やしてみましたか? 少し前に Mac OS X で使用したとき、Eclipse が常にクラッシュしていたことを知っています。基本 RAM 割り当てを含む構成ファイルがあり、そのファイルを変更して 128 メガバイトのメモリを追加すると、動作が改善されました。これが WTP に影響するかどうかはわかりませんが、コア Eclipse アプリケーション自体に関してさらにコメントしています。

于 2011-03-27T15:52:07.670 に答える