Бета-версия 2 VisualVM была выпущена около недели назад. В ходе подготовки к финальному выпуску произошла значительная реорганизация API . Давайте рассмотрим все это и соответствующим образом адаптируем существующие плагины VisualVM.
Прежде всего, давайте посмотрим на структуру источника. Когда вы зайдете на visualvm.dev.java.net и загрузите найденный там ZIP-файл, источники, с которыми вы столкнетесь, будут показаны ниже:
Краткий обзор всего, что вы видите там:
- плагины. Источники плагинов, которые доступны для VisualVM.
- btrace: источники для плагина btrace для VisualVM.
- Потребительские точки: источники для экспериментального плагина, обеспечивающего «точки входа» в VisualVM (перейдите в JavaOne, где будет представлен BOF по этой теме ).
- consumervisualvm: Источники для экспериментального плагина, предоставляющего API для создания точек входа в VisualVM.
- glassfish: источники для плагина, который позволяет VisualVM отслеживать, управлять и устранять неполадки приложений, развернутых в GlassFish.
- jconsole: источники для подключаемого модуля, который позволяет подключать подключаемые модули JConsole к VisualVM.
- mbeans: исходники для плагина вкладки «mbeans», знакомые тем, кто знает JConsole, который предоставляет ту же вкладку.
- nbproject: папка проекта NetBeans, содержащая метаданные, которые позволяют открывать всю папку «плагинов» в виде набора модулей в IDE NetBeans.
Папка «plugins» особенно полезна, если вы хотите создать подобную функциональность самостоятельно. Например, если вы заинтересованы в создании плагина VisualVM для WebSphere, взгляните на плагин GlassFish и попытайтесь использовать его как можно чаще.
- образцы. Два примера, которые можно открыть в IDE NetBeans и проверить, как показано ниже:
Первый «hellovvm» предоставляет новое представление «Hello World» для приложений VisualVM:
Второй, «jvmcap», добавляет новую вложенную вкладку на вкладку «Обзор» каждого приложения, перечисляя детали, предоставленные JVM для рассматриваемого приложения (ниже, новая вложенная вкладка находится в правом нижнем углу скриншота):
- VisualVM. Источники VisualVM, состоящие из API-интерфейсов VisualVM и их реализаций. Основные из них следующие:
- application, applicationviews, appui: API и реализация источника данных «Приложение».
- ядро. Инфраструктура VisualVM, которую вы потенциально можете использовать в качестве основы своего собственного приложения поверх VisualVM.
- CoreDump. API и реализация источника данных «CoreDump».
- heapdump. API и реализация источника данных «HeapDump».
- host, hostviews. API и реализация «Хоста» источника данных.
- jmx, jvm, jvmstat. API для взаимодействия с этими технологиями.
- профайлер. API и реализация функционала «Профилировщик».
- threaddump. API и реализация источника данных «ThreadDump».
- application, applicationviews, appui: API и реализация источника данных «Приложение».
VisualVM Javadoc, который вы также можете загрузить с сайта visualvm.dev.java.net, отражает похожую структуру:
Особенно, если вы переносите плагины, созданные с помощью более ранней версии API, настоятельно рекомендуем прочитать приведенный выше Javadoc:
Изменения в API бета-версии VisualVM 2
Теперь, когда у вас есть общий обзор того, из чего состоит ZIP-файл, давайте рассмотрим наиболее важные изменения API между VisualVM Beta и VisualVM Beta 2.
- Переупаковка. Ранее API для различных источников данных были в «базовом» пакете; теперь они были разделены на подпакеты для каждого источника данных. Например, вы хотите создать новый вид для приложений? Вам понадобится пакет «заявка». Хотите создать новый вид для дампов кучи? Вам понадобится пакет «heapdump» и так далее.
- Обзорная вкладка может быть сохранена. Это позволяет сравнивать обзорные вкладки в разных точках приложения. В соответствии с этим усовершенствованием в DataSourceViewProvider есть два новых метода: «SupportSaveViewsFor» (который возвращает логическое значение) и «saveViews» (которые могут что-то делать, если для предыдущего метода установлено значение «истина»).
- Изменения подписи. Вместо реализации DataSourceViewsProvider вам теперь нужно расширить DataSourceViewProvider. (Обратите внимание на единственное число вместо множественного числа в названии провайдера представления.)
- Изменения в конструкторе. Для DataSourceView вызов суперкласса теперь начинается с экземпляра приложения и заканчивается логическим значением, указывающим, должно ли представление быть сохранено или нет. Следовательно, есть два новых аргумента для суперкласса.
- Класс переименования. Было несколько изменений и переименований, которые делают бета-версию API-интерфейсов несовместимой с бета-версией, например:
- DataSourceWindowFactory >>> DataSourceViewsManager
- DataSourceViewsProvider >>> DataSourceViewProvider
- Метод переименования. Точно так же некоторые методы были переименованы, такие как следующие:
- DataSourceViewsProvider.getViews >>> DataSourceViewProvider.createView
- DataSourceViewsProvider.supportsViewsFor >>> DataSourceViewProvider.supportsViewFor
- DataSourceView.getView >>> DataSourceView.createComponent
Как видно, приведенное выше резюме относится в основном к представлениям . Подобные изменения встречаются в API. Таким образом, API, которые относятся к VisualVM, теперь выглядят следующим образом:
Регистрация слоя для действий Explorer
Другое изменение заключается в том, что теперь действия на узлах проводника должны быть зарегистрированы в файле layer.xml. Для примера посмотрите источники плагинов «btrace», в которых есть файл layer.xml со следующим содержимым:
<filesystem>
<folder name="Actions">
<folder name="Other">
<file name="net-java-visualvm-btrace-actions-DeployBTraceScriptAction.instance"/>
<file name="net-java-visualvm-btrace-actions-UndeployBTraceScriptAction.instance"/>
</folder>
</folder>
<folder name="VisualVM">
<folder name="ExplorerPopupSelection">
<file name="net-java-visualvm-btrace-actions-DeployBTraceScriptAction.shadow">
<attr name="originalFile" stringvalue="Actions/Other/net-java-visualvm-btrace-actions-DeployBTraceScriptAction.instance"/>
<attr name="position" intvalue="3000"/>
</file>
<file name="net-java-visualvm-btrace-actions-UndeployBTraceScriptAction.shadow">
<attr name="originalFile" stringvalue="Actions/Other/net-java-visualvm-btrace-actions-UndeployBTraceScriptAction.instance"/>
<attr name="position" intvalue="3500"/>
</file>
</folder>
</folder>
</filesystem>
Шаблоны для начала работы
Чтобы помочь вам начать работу, в дополнение к двум указанным выше примерам, есть два шаблона, которые вы должны настроить, используя API-интерфейсы Visual VM Beta 2:
- VisualVM Просмотр шаблона:
http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=6503
- Шаблон типа приложения VisualVM:
http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=6664
Эти шаблоны были опробованы в среде IDE NetBeans Beta 6.1. После этого они могут / должны работать в других версиях IDE, но никаких гарантий. При установке первого подключаемого модуля у вас будет новый мастер в IDE NetBeans для создания нового представления. По завершении работы мастера будут установлены все правильные зависимости, и у вас будут полезные заглушки для начала с представлений. Второй плагин интересен, если у вас есть приложение, которое вы хотели бы представить в VisualVM со своим собственным значком, пунктами меню, представлениями и т. Д. Он позволяет вам указать основной класс вашего приложения, а затем генерирует основные заглушки: плагин приложения для VisualVM. Как и в случае с первым плагином, он объявляет все необходимые для вас зависимости.
Связанные ресурсы JavaLobby
Следующие статьи о JavaLobby должны дать дополнительную информацию, если это необходимо, и продвигаться последовательно:
- VisualVM: бесплатное средство устранения неполадок Java с открытым исходным кодом
- Изучение подключаемости VisualVM Beta
- Портирование детектора потоков горячей Java на VisualVM
Обратная связь всегда приветствуется, см. Списки рассылки, к которым можно получить доступ с домашней страницы проекта VisualVM .