Eclipse webtools project (WTP) et sa performance / qualité

notre société utilise eclipse depuis plusieurs années maintenant (nous utilisons WTP depuis la version 0.7)

je suis en train d'évaluer eclipse 3.6.2 avec WTP 3.2.3 qui devrait remplacer eclipse 3.4.2 avec WTP 3.0.4 comme étant notre principal IDE.

et je dois dire qu'une fois de plus je suis assez déçu par des préoccupations de performance:

WTP 3.2.3 semble être beaucoup plus lent que 3.0.4.

En fait, je me demande vraiment pourquoi WTP est plus lent à chaque sortie.

L'une de nos applications (dynamic web project) contient environ 4000 classes java et 700 fragments jsps/jsp . Nous n'avons besoin que des fonctionnalités WTP de base pour développer jsps, xmls et xsd. Nous n'avons pas besoin de fonctionnalités sophistiquées comme Dali (les outils JPA devraient-ils être couverts par un projet webtools ? ?), Balance ou un visual xml editor en premier lieu.

un autre point intéressant est que WTP semble ralentir l'IDE entier . SWT est non-réponsive pendant une fraction de secondes, l'utilisation du cpu est très élevée (surtout après qu'une construction a eu lieu - si vous regardez les travaux du système, plusieurs indexeurs JSP / javascript font du travail pendant quelques minutes, même si tous les WTP les validateurs de construction ont été désactivés), ouvrir de nouveaux fichiers sont plus lents, naviguer dans le projet, etc.

cela peut être particulièrement vu sur les machines plus anciennes qui ne contiennent qu'un seul processeur de base.

le pire, c'est que j'ai le sentiment que L'équipe de développement WTP ne se soucie pas beaucoup de la performance (par exemple, regardez le http://wiki.eclipse.org/WTP_Performance_Tests page - dernière mise à jour a pris lieu en 2008).

les rapports de bogues et les messages de groupes de discussion concernant la performance des fonctionnalités de base (par exemple l'édition/validation jsp) sont souvent ignorés ou fermés après un certain temps, quelques exemples: ici , ici , et ici .

Quo vadis, WTP?


ne vous méprenez pas:

Je ne veux pas blâmer WTP.

En fait, je crois que WTP est un bon projet open-source développé par une équipe talentueuse.

Mais évidemment le projet a un problème avec son assurance qualité , surtout en termes de performance qui affecte la convivialité et l'acceptation de l'utilisateur.

je veux juste souligner que l'équipe doit se concentrer sur les choses qui sont essentiel pour la plupart des utilisateurs en premier lieu et par la suite travailler sur la mise en œuvre de super-duper-features.

Mes Questions

  • quelles sont vos expériences avec WTP, en particulier les versions les plus récentes?
  • Pouvez-vous confirmer ou infirmer mes observations?
  • y a-t-il de meilleures alternatives?
  • avez-vous changé de ou vers WTP et pourquoi?
  • avez-vous quelques bonnes pratiques pour l'accélérer, surtout pour les personnes de taille moyenne comme la nôtre?

mise à jour

j'aimerais faire une mise à jour sur cette question pour refléter les réponses actuelles et pour résumer les résultats actuels:

  • beaucoup d'utilisateurs se plaignent plus ou moins sur les mêmes questions donc je vois ces questions comme confirmer.

    BTW, cette question est également mentionnée sur un billet sur theserverside.com avec des commentaires supplémentaires.

  • le responsable du projet WTP, nitind, a fait un billet remarquable sur la situation actuelle de WTP, que j'aime citer:

    "le simple fait est que nous ne passons pas beaucoup de temps sur les tests de performance parce que nous le manque de ressources pour le faire."

    "bien sûr, nous aimerions être proactifs à ce sujet plutôt que réactifs, mais nous avons tendance à consacrer notre temps aux problèmes fonctionnels d'abord."

alors cette question se transforme un peu en une sorte de lettre ouverte de la communauté à l'équipe 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.
54
demandé sur MRalwasser 2011-03-25 17:44:03

11 réponses

pour répondre, je suis responsable des projets qui fournissent la fonctionnalité D'édition des sources JSP, XML et JavaScript dans WTP. Le simple fait est que nous ne consacrons pas beaucoup de temps aux tests de performance parce que nous manquons de ressources pour le faire. Bien sûr, nous aimerions être proactifs à ce sujet plutôt que réactifs, mais nous avons tendance à consacrer notre temps aux problèmes fonctionnels d'abord. Nous avons un produit adopteur qui exécute régulièrement des tests de régression de performance, mais je m'attends à ce que les tests soient effectués sur des machines multi-noyaux maintenant--et nous n'avons pas eu de nouveaux signaux d'alarme depuis un certain temps.

des 3 bogues auxquels vous avez fait référence, 2 sont antérieurs à la version 3.0.4 que vous louez et le troisième est soit un problème de performance de formatage (depuis qu'il a été résolu) ou un problème de validation spécifique aux fichiers XML (dont la correction aurait déclenché une fuite de mémoire dans Xerces, iirc, donc nous ne l'avons pas mis en place à ce moment-là). Si vous avez des projets concrets que vous pouvez attacher à un bug et disons "faire X est plus lent en 3.2 par y montant", nous allons faire ce que nous pouvons pour comprendre où il ya une régression.

quant aux indexeurs, ils devraient au moins éventuellement compléter. L'information sur disque qui est stockée a changé entre les versions WTP, et ces fichiers doivent être retraités afin qu'ils soient à nouveau inclus dans les opérations de recherche et (où mis en œuvre) refactoring. Une fois l'indexation initiale terminée, elle devrait agir progressivement et être virtuellement inaperçu. Un changement d'architecture que vous pourriez rencontrer est que pour JSPs, l'ensemble de l'espace de travail doit être indexé dans une session simple workbench pour que cet index soit considéré comme "à jour". Fermer Eclipse par frustration ne fera que prolonger l'impact de ce retraitement.

il semble que l'installation standard de votre entreprise comprend la totalité de WTP plutôt que de rouler votre propre distribution personnalisée. Je vous invite à cochez la page de préférence démarrage et arrêt et désactivez le démarrage anticipé de toute fonctionnalité que vous n'êtes pas intéressé à utiliser. Rien de ce qui vous intéresse n'utilise cette installation, mais il y a d'autres zones de WTP et de la plate-forme qui le font. Tout ce que vous n'êtes pas intéressé par la validation est fair game sur la page de préférence Validation , ainsi que le paramétrage pour valider les fragments JSP par défaut sur la page Web / Fichiers JSP / Validation page de préférences.

32
répondu nitind 2011-04-06 04:12:02

nous avons le même problème avec WTP 3.2.3 ici aussi. Nous l'utilisons dans notre produit depuis plusieurs années, mais l'acceptation de nos développeurs et clients dans cet outil diminue chaque année parce que dans chaque nouvelle version, il est plus lent et plus lent.

je voudrais l'utiliser si je pouvais désactiver toutes les fonctionnalités "avancées" mais comme vous l'avez mentionné, vous ne pouvez pas désactiver les indexeurs à tous. De plus, vous ne pouvez pas arrêter le validateur de fichiers JSP s'il est déjà en cours d'exécution (vous pouvez testez ceci si vous avez autant de fichiers que vous avez et nous avons aussi environ 1000 fichiers JSP et beaucoup de fichiers tag dans notre projet).

je peux aussi prouver que l'augmentation de la mémoire n'aide pas. Il ne prévient que les collisions de l'éclipse totale, mais il ne réduit pas les opérations internes de blocage de L'UI de WTP.

dans la plus récente version 3.2.3 j'ai eu de nombreux accros quand je commencer Tomcat de l'intérieur de la les serveurs affichent . Le UI juste se bloque à propos de 1 minute . Ce n'est pas seulement moi qui ai les crochets, ce sont tous mes collègues qui travaillent sur Windows qui ont le même problème. Sur Linux, je ne suis pas au courant de ce problème.

Il ya aussi des problèmes dans WTP lorsque vous n'avez pas accès à l'internet. Il semble qu'Il ya demande à certains registres de télécharger des schémas ou de telles choses et si vous n'avez pas connexion puis il se bloque et attend le temps.

5
répondu Udo 2011-03-31 07:49:37

Je ne sais pas qui est à blâmer: outils WTP ou JBoss. Le fait est que, comme je travaille avec GWT (minimum JSP), je suis allé dans le sens opposé: pas de WTP du tout!!! J'utilise maintenant simple Eclipse pour Java, et j'utilise une configuration d'exécution pour déployer (programmatically invoking ANT) et démarrer le serveur, et je n'ai jamais regardé en arrière!!! Eclipse prenait ~ 1,5 Go et s'est écrasé plusieurs fois. Maintenant, il se trouve sur ~ 800 Mo, et l'environnement entier est devenu plus stable.

4
répondu Luis Fernando 2011-03-30 16:25:46

j'ai vu des effets similaires, voici une solution qui pourrait être appropriée dans certains environnements de projet...

pour garantir un environnement Web Eclipse rapide et responsable, considérez ceci:

  1. utiliser Eclipse IDE pour les développeurs Java
    • la version de 98 Mo est plus courte que la version de 200 Mo EE
    • de General / de Démarrage et d'Arrêt, désactivez tous, mais "l'Éclipse de l'INTERFACE utilisateur"
    • de l' Validation, désactiver les validateurs dont vous n'avez pas besoin
    • ces probablement prévenir certains problèmes de performances (YMMW)
  2. Use Jetée
    • vous n'avez pas besoin de WTP ou tout d'autres plugins, c'est de la pure Java
    • comme Tomcat mais très rapide et simple à installer dans n'importe quel IDE / environnement
    • intégré directement dans votre projet fichiers, configurer une fois pour chaque développeur
    • fonctionne dans n'importe quel IDE (Eclipse, IDEA, JDeveloper..)
    • démarrer le Conteneur de Servlet avec "Debug" / "Exécuter en tant Que"
    • arrêt Conteneur de Servlet en cliquant sur la boîte rouge sur Eclipse console
    • IDE de la Console, le débogage et un code de remplacement & JRebel fonctionne bien

résultat: éclipse rapide et réactive par rapport à beaucoup d'autres installations Eclipse qui utilisent la version Eclipse EE avec des trucs WTP.

pourquoi? Il se peut que certaines fonctionnalités D'Eclipse ou un plugin contiennent des bogues ou utilisent simplement les ressources d'une mauvaise manière, ce qui rend Eclipse UI léthargique.

Non-Java EE Eclipse est assez bon même pour de nombreux environnements de projet Java EE, tout dépend de votre architecture et des outils que vous utilisez..

voici un tutoriel rapide pour commencer au cas où vous vous souhaitez essayer Jetty Servlet Container avec Eclipse. Voir https://vaadin.com/web/jani/home/-/blogs/vaadin-for-everyone-how-to-get-started . Télécharger VaadinProjectForAnyIDE.zip, c'est un projet D'éclipse. Ignorez ce truc de Vaadin et remplacez HelloWorldApplication.java avec votre propre servlet et éditer web.xml en conséquence.

encore une chose. Avec la version Eclipse EE, vous pouvez aussi essayer J2EE preview server qui est en fait Jetty embedded dans Eclipse bundle. Cependant, cela utilise également le mécanisme WTP.

4
répondu Jani Laakso 2013-04-12 20:49:18

je pense aussi que la stabilité et la performance D'Eclipse/WTP est quelque peu alarmante. J'utilise Eclipse depuis mi-2003 et j'ai essayé WTP depuis ses toutes premières versions.

au début, la qualité était absolument épouvantable, mais pour un 0.x version Je ne pouvais pas me plaindre bien sûr. En attendant que le WTP mûrisse, J'ai utilisé MyEclipse, qui était en quelque sorte d'accord, mais avait ses défauts aussi (et étant partiellement basé sur le WTP, hérité d'une partie du WTP).

quand MyEclipse est devenu de plus en plus lourd, plus lent et plus lent et nous avons rencontré plusieurs problèmes de stabilité, nous sommes passés à "pure WTP". Tout ce que nous utilisions était en fait L'éditeur et le déployeur de base de JSP/JSF.

étant donné que WTP ne fait pas de déploiement incrémental (du moins pas pour l'exécution du serveur JBoss), nous avons ajouté l'exécution du serveur séparé des outils JBoss. Lorsque nous avons adopté Facelets, nous sommes également passés à l'éditeur de JBoss tools.

nous rencontrons cependant beaucoup nous avons aussi eu des problèmes avec MyEclipse. Il y a des ralentissements inexplicables, mais bien pires sont les divers problèmes de stabilité. Il y a beaucoup d'exceptions et d'accidents maladroits. Un typique .le fichier journal sur de nombreux postes de travail différents que j'ai examinés est rempli d'exceptions. Une petite sélection des 10 dernières exceptions dans mon journal:

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)

notez que ce ne sont que les 10 derniers, il y a beaucoup, beaucoup plus d'exceptions.

la réaction occasionnelle serait: " votre installation Eclipse est corrompu! Vous avez un problème local! " Oui, j'ai peut-être un problème local, mais ce "problème local" semble répandu car beaucoup D'installations Eclipse que j'ai inspectées semblent avoir ce genre de problème dans leurs journaux.

j'ai aussi des problèmes avec les déploiements comme rapporté au lien suivant dans diverses incarnations: http://community.jboss.org/thread/158611 il peut être spécifique outils JBoss ou il peut être basé sur la WTP sous-jacente ou même Eclipse code. Je ne sais pas, mais je sais que c'est un méchant problème. Chaque version des outils WTP et JBoss est corrigée, et chaque version d'un problème de ce type refait surface sous une forme légèrement différente.

entre les problèmes de stabilité, je suis en mesure de faire un peu de travail et j'aime l'achèvement automatique et naviguer dans les fonctionnalités que les éditeurs m'offrent( ce qui m'empêche de passer à un éditeur de texte et de construire complètement sur la ligne de commande), mais je suis sûr que je voudrais un peu augmenté stabilité.

2
répondu Arjan Tijms 2011-04-01 18:47:56

de loin, la meilleure façon d'accélérer mes projets a été de précompiler du code que je n'utilise pas actuellement. Nous avons environ 20 projets qui constituent notre système et quand je travaille sur un problème spécifique, je ne touche qu'un sous-ensemble spécifique de ces fichiers java. Compiler la plupart du code que je ne toucherai pas et le jeter dans certains .jar, puis en utilisant cela comme source au lieu d'inclure les projets a prouvé pour accélérer les choses par tout à fait un peu. J'imagine que ça vous aidera eh bien, si vous avez 4k+ fichiers. Chaque projet a juste une petite construction.xml qui en fera un bocal à inclure.

quant à la lenteur engourdie de l'édition JSP. J'ai les mêmes problèmes, c'est juste à ce barrage lent. Je n'ai pas beaucoup plus de 100 fichiers jsp mais j'ai les mêmes problèmes que vous. Ma solution a juste été de jeter de l'argent à la quincaillerie, que je dois admettre que j'aime faire :p.

1
répondu Andrew 2011-03-28 21:29:35

pour répondre à la question suivante: avez-vous quelques bonnes pratiques pour l'accélérer, surtout pour les personnes de taille moyenne comme la nôtre?

désactiver la validation et l'auto-construction après la sauvegarde de fichiers est un bon début pour augmenter les performances.

1
répondu Allen Chee 2011-03-31 07:40:54

j'ai désactivé L'éditeur JSP WTP pour les raisons que vous avez mentionnées ci-dessus: il a juste besoin de trop de ressources. Quelques autres choses que vous devriez considérer:

  1. Éditez JSPs dans l'éditeur HTML normal. Cela signifie que vous n'obtenez pas l'achèvement du code ce qui est une bonne chose . IMO, mélanger Java et HTML est une erreur en premier lieu et un éditeur ne peut pas corriger cela. Mettez tout le code Java dans les haricots helper (que vous pouvez ensuite tester facilement) et il suffit d'accéder aux haricots de JSP. Cela devrait se débarrasser de 99% de toutes les étiquettes <% %> et résoudre la plupart de vos problèmes déjà.

  2. envisagez D'utiliser le ressort pour être en mesure de construire des haricots plus complexes et de les injecter dans votre JSPs en utilisant ces modèles:

  3. essayez une VM différente. Les éditeurs WTP créent d'énormes quantités d'objets et maintenant tous les VMs (implémentations GC) peuvent gérer cela aussi bien. Si vous utilisez Sun's Java, essayez JRockit ou IBMs J9 . Jouez aussi avec les paramètres du GC. Augmenter la RAM n'aidera pas parce que si vous avez des problèmes avec le GC, plus de RAM ne fait qu'empirer les choses (puisque le GC devra traiter plus de données.)

  4. précompiler autant de code que possible. Vous n'avez pas besoin de 4000 cours ouverts en permanence sur votre lieu de travail. Découpez votre énorme projet en morceaux gérables.

  5. remplacer JSPs avec des servlets Java simples et utiliser des bibliothèques de rendu HTML comme rendersnake ou utiliser un langage de programmation qui joue plus agréable avec HTML (comme Groovy ).

  6. obtenir du matériel décent. Un nouveau PC avec un Noyau quad et une RAM de 8 Go coûte 1000$. Si vous enregistrez dix minutes chaque jour, l'investissement sera payé à 50 jours (au taux de 1 personne frais de 1 000 $/jour).

  7. Essayer MyEclipse qui a beaucoup plus de rédacteurs web. L'éditeur JSP est mieux que WTP (complétion de code fonctionne la plupart du temps, par exemple) mais c'est toujours lent.

1
répondu Aaron Digulla 2017-05-23 12:19:55

WTP (3.2.3) est lent pour moi aussi. Je crois que j'ai trouvé des façons de rendre pas si lent:

  • nous utilisons maven, donc il y a un répertoire target qui contient une copie de tous les JSP et D'autres XML. J'ai reconnu qu'ils sont parfois balayés par les validateurs WTP. Mais ce n'est pas nécessaire, j'ai donc exclus de validation (Projet/Propriétés/Validation/XXX/Exclure/Groupe). ( Vous devriez être en mesure d'obtenir la même effet lors du marquage du répertoire target comme dérivé, mais cela ne fonctionne pas pour moi quelques fois ; - ( )
  • j'ai fait l'observation (Non scientifiquement prouvé) , que WTP semble être plus rapide avec JSPX que les fichiers JSP.
1
répondu Ralph 2011-04-04 12:42:48

si vous avez besoin de barebones Java EE, alors vous êtes mieux avec Netbeans, si vous avez besoin de tout sauf de travailler, vous êtes mieux avec IDEA. C'est aussi simple que cela.

1
répondu Werner 2013-04-12 20:49:33

ne pouvait pas commenter donc je vais juste mettre mon commentaire dans cette réponse.

avez-vous essayé d'augmenter l'allocation de mémoire D'Eclipse, je sais qu'il s'est écrasé tout le temps quand je l'ai utilisé sur Mac OS X Il ya un certain temps. Il y a un fichier de configuration qui contient l'allocation de RAM de base, une fois que j'ai modifié ce fichier et que je lui ai donné 128 mégaoctets de mémoire supplémentaire, il s'est mieux comporté. Pas sûr que cela affectera WTP, je commente davantage en ce qui concerne L'application Eclipse de base elle-même.

0
répondu macguru2000 2011-03-27 15:52:07