Как я упоминал в предыдущем посте , я недавно заметил, что утилита 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 есть два различных пути:
- Создание нового инструмента, который вы хотите сделать доступным для VisualVM, инструмента, который будет доступен для анализа любого Java-приложения.
- Предоставление плагина для уникального типа приложения и использование VisualVM для предоставления инструментов, специфичных для этого типа приложения.
То, что мы сделали в этом «Hello World», является примером № 1 выше, представленным в форме новой вкладки. Если вы сделаете это, вы вряд ли будете использовать что-то уникальное в каком-либо приложении, о котором вы сейчас думаете, о мониторинге — эта версия VisualVM предоставит новую вкладку для всех приложений Java, к которым она подключена.
Какой тип вы выберете, вероятно, будет зависеть от того, какой проект в данный момент вас интересует, и ваших общих мотивов. Например, кажется, что каждый проект, над которым я работаю, действительно может использовать плагин VisualVM для конкретного приложения. Обычно я использую VisualVM в каждом проекте, над которым я работаю, но я должен признать, что я не вижу много других пользователей (к сожалению, потому что я думаю, что это отличный инструмент). В производственной ситуации персонал технической поддержки обычно знаком с небольшим набором инструментов, специфичных для их среды. Например, в магазине WLS есть вспомогательный персонал, который знаком с консолью WLS; переключиться на JBoss в таком магазине гораздо сложнее, чем просто убедить кого-то в технических достоинствах одной платформы над другой. Также есть проблема с обучением и поддержкой. Кроме того, я не знаю
ни одноговспомогательный персонал, который использует VisualVM.
Как бы я ни хотел предоставить уникальный плагин для приложений, с которыми я сейчас работаю, это было бы большой инвестицией для чего-то, что не получило бы широкого распространения (и было бы бесполезным практически для любого другого приложения). Поэтому я, вероятно, был бы более заинтересован в создании модуля общего назначения или в создании модуля, который можно было бы легко настраивать для любого приложения.
У меня есть идея именно для такого проекта; Я поделюсь этим позже. Таким образом, если я отвлекся на гитару или
буду практиковать португальский язык и никогда не буду заниматься этим, у меня не будет 404-х из моего блога. Но если мне удастся обойти это, я обновлю эту запись,
как только сделаю!Тем временем, я надеюсь, что каждый, кто увидит это, будет мотивирован добавить некоторый ценный контент в VisualVM. Больше позже.
С http://wayne-adams.blogspot.com/2011/10/visualvm-extensions.html