Статьи

Расширения VisualVM

Как я упоминал в предыдущем посте , я недавно заметил, что утилита JDK VisualVM является расширяемой, и моей целью было создание полезного расширения. Я не собирался создавать руководство по началу работы, поскольку уже имеется достаточно информации, но я продолжаю сталкиваться с проблемой «устаревшего учебника». Инкапсулировав некоторую дополнительную информацию в мой предыдущий пост в категории «Настройка», я теперь вынужден прояснить проблемы, с которыми я сталкиваюсь при использовании NetBeans 7 для фактического создания расширения. Хотя некоторые различия могут быть прослежены в новой версии NetBeans, я думаю, что некоторые из них могут быть связаны с ожидаемыми изменениями API и аналогичными проблемами.

Я работаю над созданием плагина «Hello World»руководство. Я в основном буду следовать этому уроку здесь с изменениями и наблюдениями / советами по мере необходимости.

Если вы следовали моему предыдущему посту, у вас уже есть новый проект, так как этот шаг был необходим для «заполнения» диспетчера платформ в чистом меню NetBeans 7 Tools. Если нет, просто следуйте инструкциям Гертжана в его уроке. Моим следующим шагом было создание Установщика модулей. В NetBeans 7 элементы выбора немного отличаются. Вы по-прежнему выбираете «New», затем «Other …», затем выбираете «Module Development», но тип файла теперь называется «Installer / Activator», а не «Module Installer». Кроме того, в описании говорится, что этот установщик часто не нужен. Я не знаю, так ли это здесь, поэтому я все равно его создал.

В руководстве говорится, что в качестве зависимости для проекта необходимо добавить библиотеку VisualVM-Core. Создавая приложение «Hello World» в соответствии с руководством, вы быстро поймете, что вам также необходимо добавить зависимость от «VisualVM-Application», так что вы также можете сделать это одновременно.

Если вы не любите «видеть красный цвет» в IDE, вы можете создать классы Java в обратном порядке учебника. Кроме того, исходные списки в учебнике не включают импорт (конечно же, загружаемый полный образец). Если вы не хотите получать полный образец, вот импорт для класса HelloWorldProvider:

 import com.sun.tools.visualvm.application.Application;
  import com.sun.tools.visualvm.core.ui.DataSourceView;
  import com.sun.tools.visualvm.core.ui.DataSourceViewProvider;
  import com.sun.tools.visualvm.core.ui.DataSourceViewsManager;

и в классе HelloWorldView:

  import javax.swing.ImageIcon;
  import com.sun.tools.visualvm.application.Application;
  import com.sun.tools.visualvm.core.ui.DataSourceView;
  import com.sun.tools.visualvm.core.ui.components.DataViewComponent;
  import javax.swing.BorderFactory;
  import javax.swing.JEditorPane;
  import javax.swing.JPanel;
  import org.openide.util.Utilities;

 

Отсюда щелкните правой кнопкой мыши по проекту и выберите «Выполнить», и вы получите экземпляр VisualVM. Выбор приложения для мониторинга откроет вашу новую вкладку «Hello World». Это было на самом деле довольно легко!

Пауза для перспективы

Что мы только что сделали?

С расширениями VisualVM есть два различных пути:

  1. Создание нового инструмента, который вы хотите сделать доступным для VisualVM, инструмента, который будет доступен для анализа любого Java-приложения.
  2. Предоставление плагина для уникального типа приложения и использование VisualVM для предоставления инструментов, специфичных для этого типа приложения.

То, что мы сделали в этом «Hello World», является примером № 1 выше, представленным в форме новой вкладки. Если вы сделаете это, вы вряд ли будете использовать что-то уникальное в каком-либо приложении, о котором вы сейчас думаете, о мониторинге — эта версия VisualVM предоставит новую вкладку для всех приложений Java, к которым она подключена.

Какой тип вы выберете, вероятно, будет зависеть от того, какой проект в данный момент вас интересует, и ваших общих мотивов. Например, кажется, что каждый проект, над которым я работаю, действительно может использовать плагин VisualVM для конкретного приложения. Обычно я использую VisualVM в каждом проекте, над которым я работаю, но я должен признать, что я не вижу много других пользователей (к сожалению, потому что я думаю, что это отличный инструмент). В производственной ситуации персонал технической поддержки обычно знаком с небольшим набором инструментов, специфичных для их среды. Например, в магазине WLS есть вспомогательный персонал, который знаком с консолью WLS; переключиться на JBoss в таком магазине гораздо сложнее, чем просто убедить кого-то в технических достоинствах одной платформы над другой. Также есть проблема с обучением и поддержкой. Кроме того, я не знаю
ни одноговспомогательный персонал, который использует VisualVM.

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

У меня есть идея именно для такого проекта; Я поделюсь этим позже. Таким образом, если я отвлекся на гитару или
буду
практиковать португальский язык и никогда не буду заниматься этим, у меня не будет 404-х из моего блога. Но если мне удастся обойти это, я обновлю эту запись,
как только сделаю!Тем временем, я надеюсь, что каждый, кто увидит это, будет мотивирован добавить некоторый ценный контент в VisualVM. Больше позже.

 

С http://wayne-adams.blogspot.com/2011/10/visualvm-extensions.html