Подтвердить что ты не робот

Проект Eclipse webtools (WTP) и его производительность/качество

Наша компания использует eclipse уже несколько лет (мы используем WTP с момента выпуска 0.7)

В настоящее время я оцениваю eclipse 3.6.2 с WTP 3.2.3, который должен заменить eclipse 3.4.2 на WTP 3.0.4 как нашу главную среду IDE.

И я должен сказать, что еще раз я очень разочарован в отношении производительности:
WTP 3.2.3 выглядит намного медленнее, чем 3.0.4.
На самом деле мне действительно интересно, почему WTP становится медленнее с каждым выпуском.

Одно из наших приложений (динамический веб-проект) содержит около 4000 классов Java и 700 фрагментов jsps/jsp. Нам нужны только базовые функции WTP для разработки jsps, xmls и xsd. Нам не нужны высокие софистические функции, такие как Dali (если инструменты JPA действительно покрыты проектом webtools?), Libra или визуальный редактор XML.

Еще один интересный момент в том, что WTP кажется замедляет всю IDE. SWT не отвечает за какую-то часть секунд, использование процессора очень велико (особенно после того, как он был построен - если вы посмотрите на системные задания, несколько индексировщиков jsp/javascript работают в течение нескольких минут, даже если все валидаторы сборки WTP были отключены), открытие новых файлов происходит медленнее, перемещение по проекту и т.д.

Это особенно заметно на старых машинах, которые содержат только один процессор ядра.

Хуже всего то, что у меня возникло ощущение, что команда разработчиков WTP не заботится о производительности (например, посмотрите страницу http://wiki.eclipse.org/WTP_Performance_Tests - последнее обновление состоялось в 2008 году).

Сообщения об ошибках и сообщения в Newsgroup относительно производительности основных функций (например, редактирование/проверка jsp) часто игнорируются или закрываются через некоторое время, некоторые примеры: здесь, здесь, и здесь.

Quo vadis, WTP?


Пожалуйста, не поймите меня неправильно:

Я не хочу обвинять WTP.
На самом деле я считаю, что WTP - это хороший проект с открытым исходным кодом, разработанный талантливой командой.
Но, очевидно, проект имеет проблемы с обеспечением качества, особенно с точки зрения производительности, которая влияет на удобство использования и принятие пользователем.

Я просто хочу указать, что команда должна сосредоточиться на том, что важно для большинства пользователей в первую очередь, а затем работать над реализацией супер-пупер-функций.

Мои вопросы

  • Каковы ваши впечатления от WTP, особенно самых последних выпусков?
  • Можете ли вы подтвердить или опровергнуть мои наблюдения?
  • Есть ли лучшие альтернативы?
  • Вы переключались с или на WTP и почему?
  • Есть ли у вас несколько лучших способов ускорить его, особенно для средних размеров, таких как наши?

UPDATE

Я хотел бы сделать обновление по этому вопросу, чтобы отразить текущие ответы и для подведения итогов:

  • Многие пользователи более или менее жалуются на одни и те же проблемы, поэтому я вижу, что эти проблемы подтверждены.
    Кстати, этот вопрос также упоминается в новостном сообщении theserverside.com с дополнительными комментариями.

  • Ответственный руководитель проекта WTP, nitind, сделал заметную запись о текущей ситуации WTP, которую я хотел бы привести:
    "Простой факт заключается в том, что мы не тратим много времени на тесты производительности, потому что нам не хватает ресурсов для этого".
    "Конечно, мы хотели бы проявить инициативу, а не реагировать, но мы склонны выделять наше время на функциональные проблемы".

Итак, этот вопрос немного превращается в какое-то открытое письмо сообщества в команду WTP:

Dear WTP team,

it 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 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 WTP releases.

Please, please, listen to your community.
4b9b3361

Ответ 1

Чтобы ответить, я возглавляю проекты, предоставляющие функции редактирования JSP, XML и JavaScript в WTP. Простой факт заключается в том, что мы не тратим много времени на тесты производительности, потому что нам не хватает ресурсов для этого. Конечно, мы хотели бы проявить активность, а не реагировать, но мы склонны выделять наше время на функциональные проблемы. У нас действительно есть продукт-усыновитель, который регулярно тестирует регрессию производительности, но я ожидаю, что тесты будут запущены на многоядерных машинах к настоящему времени - и у нас не было никаких новых красных флагов, которые нам сообщили в течение некоторого времени.

Из 3 ошибок, с которыми вы связаны, 2 предшествует версии 3.0.4, которую вы приветствуете, а третья - проблема производительности форматирования (с тех пор как она адресована) или одна с проверкой типа "тип", характерной для файлов XML (исправление который вызвал бы утечку памяти в Xerces, iirc, следовательно, мы не помещаем его в это время). Если у вас есть конкретные проекты, которые вы можете прикрепить к ошибке, и скажите, что "выполнение X медленнее в 3.2 по сумме Y", мы сделаем все возможное, чтобы выяснить, где есть регрессия.

Что касается индексаторов, они должны, по крайней мере, в конечном итоге завершить. Сохраненная на диске информация изменена между версиями WTP, и эти файлы необходимо перерабатывать, чтобы они снова включались в операции поиска и (где реализованы) рефакторинга. Как только начальная индексация завершена, она должна действовать постепенно и быть практически незаметной. Одно архитектурное изменение, с которым вы можете столкнуться, - это то, что для JSP все рабочее пространство необходимо индексировать в сеансе single workbench, чтобы этот индекс считался "актуальным". Выключение Eclipse из-за разочарования только продлит эффект этой переработки.

Похоже, стандартная установка вашей компании включает в себя всю полноту WTP, а не распространение собственного пользовательского дистрибутива. Я настоятельно рекомендую вам проверить страницу настроек Запуск и завершение работы и отключить ранний запуск любой функции, которую вы не заинтересованы в использовании. Ничто из того, что вы упомянули о заинтересованности, не использует этот объект, но есть и другие области WTP и платформы. Все, что вам не интересно проверять, это честная игра на странице предпочтений Валидация, а также параметр для проверки фрагментов JSP по умолчанию в Web/ JSP Файлы/ Валидация.

Ответ 2

У нас тоже есть проблема с WTP 3.2.3. Мы используем его в нашем продукте уже несколько лет, но признание наших разработчиков и клиентов в этом инструменте уменьшается каждый год, потому что в каждом новом выпуске он медленнее и медленнее.

Я хотел бы использовать его, если бы я мог отключить все "расширенные" функции, но, как вы упомянули, вы вообще не можете отключить индексаторы. Также вы не можете остановить валидатор JSP файлов, если он уже запущен (вы можете проверить это, если у вас есть столько файлов, как у вас, и у нас также есть около 1000 файлов JSP и много файлов тегов в нашем проекте).

Я также могу доказать, что увеличение памяти не помогает. Он только предотвращает сбои всего затмения, но не уменьшает внутренние блокировки пользовательского интерфейса WTP.

В новейшей версии 3.2.3 у меня появилось много зависаний, когда я запустил Tomcat из представления серверов. Пользовательский интерфейс только зависает 1 минута. Это не только я, у кого есть зависания, все мои коллеги, которые работают в Windows, имеют одинаковую проблему. В Linux я не знаю об этой проблеме.

Также есть проблемы в WTP, когда у вас нет доступа к Интернету. Кажется, есть запрос к некоторым реестрам, чтобы загружать схемы или такие вещи, и если у вас нет подключения, он просто зависает и ждет тайм-аута.

Ответ 3

Я не знаю, кто виноват: WTP или JBoss Tools. Дело в том, что, работая с GWT (минимальным JSP), я пошел наоборот: никакого WTP вообще!!! Теперь я использую простой Eclipse для Java и использую конфигурацию запуска для развертывания (программно вызываю ANT) и запускаю сервер, и я никогда не оглядывался!!! Затмение использовало ~ 1,5 ГБ и разбилось несколько раз. Теперь он сидит на ~ 800 МБ, и вся окружающая среда стала более стабильной.

Ответ 4

Я видел подобные эффекты, здесь одно решение, которое может быть подходящим в некоторых средах проекта...

Чтобы гарантировать быструю и ответственную среду веб-проекта Eclipse, рассмотрите следующее:

  • Использование Eclipse IDE для разработчиков Java
    • Версия 98MB более компактна, чем версия EE 200 МБ.
    • от General/Startup и Shutdown, отключите все, кроме "Eclipse UI"
    • from Validation, отключить валидаторы, которые вам не нужны.
    • они, вероятно, предотвращают некоторые проблемы с производительностью (YMMW)
  • Использование Jetty
    • вам не нужны WTP или любые другие плагины, это чистая Java
    • как Tomcat, но очень быстро и просто установить в любую среду IDE/среду
    • встроить непосредственно в ваши файлы проекта, настроить один раз для каждого разработчика
    • работает в любой среде IDE (Eclipse, IDEA, JDeveloper..)
    • запустите контейнер сервлета с "Debug As" / "Run As"
    • shutdown Контейнер сервлета, нажав красную кнопку на консоли Eclipse.
    • Консоль IDE, отладка и замена горячего кода и JRebel отлично работают

Результат: быстрый и отзывчивый Eclipse по сравнению со многими другими установками Eclipse, использующими Eclipse EE версию с материалами WTP.

Почему? Возможно, что некоторые функции или плагин 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 вы также можете попробовать сервер предварительного просмотра J2EE, который фактически является Jetty, встроенным в комплект Eclipse. Однако это также использует механизм WTP.

Ответ 5

Я также считаю, что стабильность и производительность Eclipse/WTP несколько тревожат. Я использую Eclipse с середины 2003 года и пытаюсь использовать WTP с самых первых выпусков.

Сначала качество было абсолютным ужасным, но для версии 0.x я, конечно, не мог жаловаться. Ожидая, пока WTP станет зрелым, я использовал MyEclipse, который был вроде бы в порядке, но имел свои недостатки (и частично основан на WTP, унаследовал некоторые из WTP).

Когда MyEclipse стал тяжелее и тяжелее, медленнее и медленнее, и мы столкнулись с несколькими проблемами стабильности, мы переключились на "чистый WTP". Все, что мы использовали, было действительно основным редактором JSP/JSF и развертывателем.

Поскольку WTP не выполняет инкрементное развертывание (по крайней мере, не для среды исполнения JBoss), мы добавили отдельную среду выполнения сервера из инструментов JBoss. Когда мы приняли Facelets, мы также переключились на редактор из инструментов JBoss.

Однако мы сталкиваемся с множеством проблем, которые мы также имели с MyEclipse. Есть необъяснимые замедления, но гораздо хуже - проблемы стабильности. Есть много неудобных исключений и сбоев. Типичный .log файл на многих разных рабочих станциях, которые я рассмотрел, является chockfull исключений. Небольшой выбор последних 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 повреждена! У вас есть локальная проблема!" Да, у меня может быть локальная проблема, но эта "локальная проблема" кажется широко распространенной, поскольку многие установки Eclipse, которые я проверял, похоже, имеют эти данные в своих журналах.

У меня также возникают проблемы с развертываниями, например, по следующей ссылке в разных инкарнациях: http://community.jboss.org/thread/158611 Это могут быть специфические инструменты JBoss или он может быть основан на базовом WTP или даже коде Eclipse. Я не знаю, но я знаю, что это неприятная проблема. В каждой версии WTP и JBoss есть "что-то", и каждая версия такая проблема возникает в несколько иной форме.

Между проблемами стабильности я могу выполнить определенную работу, и мне нравится автоматическое завершение и переход к функциям, предлагаемым редакторами (что препятствует мне переключиться на текстовый редактор и полностью построить в командной строке) но мне наверняка понравится повышенная стабильность.

Ответ 6

На сегодняшний день лучшим способом ускорения моих проектов является предварительный код, который я в настоящее время не использую. У нас около 20 проектов, которые составляют нашу систему, и при работе над какой-либо конкретной проблемой я касаюсь только определенного подмножества этих java файлов. Компилируя большую часть кода, к которому я не прикасаюсь и не бросаю его в некоторые .jar, тогда использование этого как источника вместо того, чтобы включать проекты, оказалось, ускорило ситуацию совсем немного. Я думаю, это поможет вам, если у вас есть 4k + файлы. В каждом проекте есть только маленький build.xml, который сделает из него банку.

Что касается замедления ума в редактировании JSP. У меня такие же проблемы, это просто плотина. У меня не более 100 файлов jsp, но у меня такие же проблемы, как и у вас. Мое решение состояло в том, чтобы набросать деньги на аппаратное обеспечение, и я должен признать, что мне нравится делать: P.

Ответ 7

Чтобы ответить на следующий вопрос: У вас есть несколько лучших методов, чтобы ускорить его, особенно для средних размеров, таких как наши?

Отключение проверки и автоматическое построение после сохранения файлов - хорошее начало для повышения производительности.

Ответ 8

Я отключил редактор WTP JSP по причинам, о которых вы говорили выше: для этого просто нужно слишком много ресурсов. Еще несколько вещей, которые вы должны учитывать:

  • Редактировать JSP в обычном редакторе HTML. Это означает, что вы не получите завершение кода, что хорошо. IMO, смешение Java и HTML является ошибкой в ​​первую очередь, и редактор не может это исправить. Поместите весь Java-код в вспомогательный beans (который вы можете легко проверить) и просто получите доступ к beans из JSP. Это должно избавиться от 99% всех тегов <% %> и решить большинство ваших проблем уже.

  • Подумайте, используя Spring, чтобы иметь возможность создавать более сложные beans и вводить их в свои JSP, используя следующие шаблоны:

  • Попробуйте использовать другую виртуальную машину. Редакторы WTP создают огромное количество объектов, и теперь все виртуальные машины (реализация GC) могут справиться с этим одинаково хорошо. Если вы используете Sun Java, попробуйте JRockit или IBMs J9. Также играйте с настройками GC. Увеличение ОЗУ не поможет, потому что, если у вас есть проблемы с GC, больше ОЗУ обычно только ухудшает (поскольку GC будет обрабатывать больше данных).

  • Предварительно скопируйте как можно больше кода. Вам не нужно постоянно открывать 4000 классов на рабочем месте. Сократите свой огромный проект на управляемые куски.

  • Замените JSP на простые Java-сервлеты и используйте библиотеки рендеринга HTML, такие как rendersnake или используйте язык программирования, который играет более приятный с HTML (например Groovy).

  • Получите приличное оборудование. Новый ПК с четырехъядерным процессором и 8 ГБ оперативной памяти стоит 1000 долларов. Если вы сэкономите 10 минут каждый день, инвестиции будут оплачены через 50 дней (из расчета 1 человек стоит 1000 долларов США в день в целом).

  • Попробуйте MyEclipse, у которого есть намного лучшие веб-редакторы. Редактор JSP лучше, чем WTP (например, завершение кода работает большую часть времени), но оно все еще вяло.

Ответ 9

WTP (3.2.3) для меня тоже медленный. Я верю, что нашел несколько способов сделать это не так медленно:

  • Мы используем maven, поэтому существует каталог target, который содержит копию всех JSP и некоторых других XML. Я узнал, что они иногда проверяются валидаторами WTP. Но это необязательно, поэтому я исключил их из проверки (Project/Properties/Validation/XXX/Exclude Group/). (Вы должны иметь тот же эффект при маркировке каталога target как производном, но это не работает для меня несколько раз;-()
  • Я сделал (не научно доказанное) наблюдение, что WTP, похоже, быстрее работает с JSPX, чем с файлами JSP.

Ответ 10

Если вам нужны barebones Java EE, тогда вам будет лучше с Netbeans, если вам нужно все, кроме как работать, вам лучше работать с IDEA. Это так просто.

Ответ 11

Не могу прокомментировать, поэтому я просто поставлю свой комментарий в этот ответ.

Вы пытались увеличить распределение памяти Eclipse, я знаю, что он использовался для краха все время, когда я использовал его в Mac OS X некоторое время назад. В нем есть файл конфигурации с базовым распределением ОЗУ, как только я модифицировал этот файл и дал ему дополнительные 128 мегабайт памяти, он вел себя лучше. Не уверен, что это повлияет на WTP, я комментирую больше в отношении самого основного приложения Eclipse.