Загрузчики классов и инструментация байткода
Курс
Лекция 1. Загрузчики классов в Java: коллекция граблей
Модель динамической загрузки классов является одной из основных особенностей платформы Java. Загрузчик классов позволяет загружать исполняемый код в JRE не перезагружая основное приложение. Сервера приложений, модульные системы, многие веб-фреймворки используют загрузчики классов для внесения динамических особенностей в свою функциональность.
В этом докладе мы рассмотрим основные положения в механизме загрузки классов, а так же разберём основные проблемы возникающие в приложениях изза особенностей поведения загрузчиков. Будут рассмотрены причины возникновения типичных ошибок ClassNoDefFoundError, IncompatibleClassChangeError, LinkageError, и др, а так же способы диагностики и пути к решению этих ошибок.
Лекция 2. Java-агенты, Instrumentation API и Javassist
Пакет java.lang.instrument был добавлен в Java уже давно, в версии 1.5. На простых примера рассмотрим основные возможности Instrumentation API и поговорим о том, как и для чего можно сделать своего Java-агента. Картинка была бы неполной без упоминания инструментов для манипуляций с байткодом — для этого мы посмотрим на возможности Javassist и увидим, что с этим со всем можно сделать.