|
|
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Возможно кому-то интересна эта тема. Т.к. у меня ушло заметное время на то, чтобы разобраться в предмете, я решил облегчить эту задачу тем, кому тема тоже интересна. Написал статью и примеры трансформации классов в Java. В статье рассказывается о том что такое инструментирование и трансформация классов в Java, какие механизмы существуют в Java Platform SE для инструментирования, рассматриваются примеры трансформации классов. Все примеры готовы к запуску и вам не потребуется ничего кроме установленной JRE для их запуска. Статья и примеры рассчитаны на читателя, который знаком с языком Java и представляет что такое JRE, но при этом он может совершенно не иметь представления о том что такое инструментирование. Целью статьи являтся агрегирование основных сведений, чтобы даже полностью незнакомый с инструментированием классов человек, после прочтения и изучения примеров, мог самостоятельно работать в этом направлении. Домашняя страница проекта: http://code.google.com/p/java-instrumentation/. Читать статью Онлайн документация к примерам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 15:37:25 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Загрузка загрузчиком загружаемого класса. Попросили бы кого вычитку сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 15:49:18 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
"загрузчик-ребёнок" по-русски "дочерний загрузчик" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 15:50:35 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
А никаких специальных разрешений не нужно чтобы java.* инструментировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 15:55:35 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА никаких специальных разрешений не нужно чтобы java.* инструментировать? нет, вообще ничего. Подозреваю что для запрета нужно самостоятельно настраивать безопастность. Blazkowicz"загрузчик-ребёнок" по-русски "дочерний загрузчик" спасибо, поправил BlazkowiczЗагрузка загрузчиком загружаемого класса а это где?, не смог найти похожего текста:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 16:51:45 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Коваленко ВалентинBlazkowiczЗагрузка загрузчиком загружаемого класса а это где?, не смог найти похожего текста:) вся первая половина статьи. Как-то стоило обдумать и минимизировать эту тавтологию. Почти в каждом приложении один и тот же корень минимум два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 16:53:27 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
спасибо, попробую посмотреть и перефразировать неприятные места. А по поводу содержимого, были ли замечены ошибки/неточности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 16:57:58 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Коваленко ВалентинА по поводу содержимого, были ли замечены ошибки/неточности? Я бегло прочитал, так как большую часть этого знаю. Особых ляпов не нашел. Если делать вычитку, то там много неточных фраз, которые можно переформулировать. Заинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:00:55 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Я бы слово "загрузчик" вообще почти везде заменил на ClassLoader. Во-первых это снизит тавтологию. Во-вторых разработчики в общении друг с другом чаще используют именно слово ClassLoader, а не "загрузчик". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:03:58 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Зачем в статье про CGLib и Proxy. Да, они решают схожую задачу - реализуют AOП. Но к самой инструментации отношения, ведь, не имеют. Про AOП, кстати, ни слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:07:36 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЗаинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно? Я не пробовал, потому сказать не возьмусь. Скажу лишь что в документации упоминаний того, что CDS влияет на возможность трансформации, я не видел. И интуитивно, я бы скорее ожидал что влияния быть не должно, т.к. CDS можно рассматривать как низкоуровневый оптимизационный механизм, о котором Java-код ничего не знает и соответственно было бы очень странно, если бы такой механизм влиял на поведение Java-кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:14:45 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЗачем в статье про CGLib и Proxy. Да, они решают схожую задачу - реализуют AOП. Но к самой инструментации отношения, ведь, не имеют. Про AOП, кстати, ни слова. Они используются в примерах только для того, чтобы сделать примеры более интересными. Принципиальной необходимости в импользовании динамических прокси конечно нет. В описании примера В я так и написал, что отношения к тебе статьи не имеет, но для общего развития решил добавить в пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:17:24 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЗаинтересовал вопрос с CDS (class data sharing). Если класс загружается через CDS, тогда его невозможно инструментировать при загрузке? Или возможно? Усомнился в своих догадках высказанных выше и решил проверить -Xshare:on require using shared class data, otherwise fail. запускаю пример из статьи: Код: plaintext Код: plaintext 1. 2. 3. Правильный вопрос вас заинтересовал, нужно в статье его отразить:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 20:58:14 |
|
||
|
Инструментирование в Java. Теория и примеры
|
|||
|---|---|---|---|
|
#18+
Коваленко ВалентинПравильный вопрос вас заинтересовал, нужно в статье его отразить:)Можете ещё добавить, что, как минимум "в венде", CDS фатально уменьшает допустимые значения -Xms/-Xmx для 32-разрядных jvm и не может использоваться при -Xms, превышающем 4G в 64-разрядных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 16:45:54 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38035018&tid=2130578]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
54ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 275ms |
| total: | 471ms |

| 0 / 0 |
