Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Инструментирование в Java. Теория и примеры / 14 сообщений из 14, страница 1 из 1
12.11.2012, 15:37:25
    #38034828
Инструментирование в Java. Теория и примеры
Возможно кому-то интересна эта тема. Т.к. у меня ушло заметное время на то, чтобы разобраться в предмете, я решил облегчить эту задачу тем, кому тема тоже интересна.

Написал статью и примеры трансформации классов в Java. В статье рассказывается о том что такое инструментирование и трансформация классов в Java, какие механизмы существуют в Java Platform SE для инструментирования, рассматриваются примеры трансформации классов. Все примеры готовы к запуску и вам не потребуется ничего кроме установленной JRE для их запуска.

Статья и примеры рассчитаны на читателя, который знаком с языком Java и представляет что такое JRE, но при этом он может совершенно не иметь представления о том что такое инструментирование. Целью статьи являтся агрегирование основных сведений, чтобы даже полностью незнакомый с инструментированием классов человек, после прочтения и изучения примеров, мог самостоятельно работать в этом направлении.

Домашняя страница проекта: http://code.google.com/p/java-instrumentation/.
Читать статью
Онлайн документация к примерам
...
Рейтинг: 0 / 0
12.11.2012, 15:49:18
    #38034853
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Загрузка загрузчиком загружаемого класса. Попросили бы кого вычитку сделать.
...
Рейтинг: 0 / 0
12.11.2012, 15:50:35
    #38034861
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
"загрузчик-ребёнок" по-русски "дочерний загрузчик"
...
Рейтинг: 0 / 0
12.11.2012, 15:55:35
    #38034871
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
А никаких специальных разрешений не нужно чтобы java.* инструментировать?
...
Рейтинг: 0 / 0
12.11.2012, 16:51:45
    #38034990
Инструментирование в Java. Теория и примеры
BlazkowiczА никаких специальных разрешений не нужно чтобы java.* инструментировать?
нет, вообще ничего. Подозреваю что для запрета нужно самостоятельно настраивать безопастность.

Blazkowicz"загрузчик-ребёнок" по-русски "дочерний загрузчик"
спасибо, поправил

BlazkowiczЗагрузка загрузчиком загружаемого класса
а это где?, не смог найти похожего текста:)
...
Рейтинг: 0 / 0
12.11.2012, 16:53:27
    #38034995
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Коваленко ВалентинBlazkowiczЗагрузка загрузчиком загружаемого класса
а это где?, не смог найти похожего текста:)
вся первая половина статьи. Как-то стоило обдумать и минимизировать эту тавтологию. Почти в каждом приложении один и тот же корень минимум два раза.
...
Рейтинг: 0 / 0
12.11.2012, 16:57:58
    #38035004
Инструментирование в Java. Теория и примеры
спасибо, попробую посмотреть и перефразировать неприятные места.

А по поводу содержимого, были ли замечены ошибки/неточности?
...
Рейтинг: 0 / 0
12.11.2012, 17:00:55
    #38035010
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Коваленко ВалентинА по поводу содержимого, были ли замечены ошибки/неточности?
Я бегло прочитал, так как большую часть этого знаю. Особых ляпов не нашел. Если делать вычитку, то там много неточных фраз, которые можно переформулировать.

Заинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно?
...
Рейтинг: 0 / 0
12.11.2012, 17:03:58
    #38035018
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Я бы слово "загрузчик" вообще почти везде заменил на ClassLoader. Во-первых это снизит тавтологию. Во-вторых разработчики в общении друг с другом чаще используют именно слово ClassLoader, а не "загрузчик".
...
Рейтинг: 0 / 0
12.11.2012, 17:07:36
    #38035026
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Зачем в статье про CGLib и Proxy. Да, они решают схожую задачу - реализуют AOП. Но к самой инструментации отношения, ведь, не имеют. Про AOП, кстати, ни слова.
...
Рейтинг: 0 / 0
12.11.2012, 17:14:45
    #38035034
Инструментирование в Java. Теория и примеры
BlazkowiczЗаинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно?
Я не пробовал, потому сказать не возьмусь. Скажу лишь что в документации упоминаний того, что CDS влияет на возможность трансформации, я не видел. И интуитивно, я бы скорее ожидал что влияния быть не должно, т.к. CDS можно рассматривать как низкоуровневый оптимизационный механизм, о котором Java-код ничего не знает и соответственно было бы очень странно, если бы такой механизм влиял на поведение Java-кода.
...
Рейтинг: 0 / 0
12.11.2012, 17:17:24
    #38035036
Инструментирование в Java. Теория и примеры
BlazkowiczЗачем в статье про CGLib и Proxy. Да, они решают схожую задачу - реализуют AOП. Но к самой инструментации отношения, ведь, не имеют. Про AOП, кстати, ни слова.
Они используются в примерах только для того, чтобы сделать примеры более интересными. Принципиальной необходимости в импользовании динамических прокси конечно нет. В описании примера В я так и написал, что отношения к тебе статьи не имеет, но для общего развития решил добавить в пример
...
Рейтинг: 0 / 0
12.11.2012, 20:58:14
    #38035343
Инструментирование в Java. Теория и примеры
BlazkowiczЗаинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно?
Усомнился в своих догадках высказанных выше и решил проверить

-Xshare:on require using shared class data, otherwise fail.

запускаю пример из статьи:
Код: plaintext
java -Xshare:on -javaagent:agent-d.jar -jar main.jar -ex d
результат:
Код: plaintext
1.
2.
3.
An error has occurred while processing the shared archive file.
 Tool agent requires sharing to be disabled. 
Error occurred during initialization of VM
Unable to use shared archive.

Правильный вопрос вас заинтересовал, нужно в статье его отразить:)
...
Рейтинг: 0 / 0
13.11.2012, 16:45:54
    #38036609
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инструментирование в Java. Теория и примеры
Коваленко ВалентинПравильный вопрос вас заинтересовал, нужно в статье его отразить:)Можете ещё добавить, что, как минимум "в венде", CDS фатально уменьшает допустимые значения -Xms/-Xmx для 32-разрядных jvm и не может использоваться при -Xms, превышающем 4G в 64-разрядных.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Инструментирование в Java. Теория и примеры / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]