Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Корректировка байт-кода на лету. / 19 сообщений из 19, страница 1 из 1
29.03.2012, 09:39:44
    #37728848
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
При помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
...
Рейтинг: 0 / 0
29.03.2012, 09:44:50
    #37728857
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewha,
полиморфизма не хватает?
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
29.03.2012, 09:46:53
    #37728863
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
Нужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм?
...
Рейтинг: 0 / 0
29.03.2012, 09:48:52
    #37728866
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewhaНужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм?
ничего личного, просто смешная задача :)
...
Рейтинг: 0 / 0
29.03.2012, 09:53:14
    #37728873
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Точно так же можно корректировать и во время работы.
...
Рейтинг: 0 / 0
29.03.2012, 10:06:22
    #37728906
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Если разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close).

Иначе надо знать задачу шире. Варианты разные - начиная от AOP и заканчивая изменения byte-кода в runtime.
...
Рейтинг: 0 / 0
29.03.2012, 10:23:20
    #37728950
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
BlazkowiczdrewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Точно так же можно корректировать и во время работы.

Можно немного подробней про это?
Если при старте - вешается агент (ClassFileTransformer) и в методе public byte[] transform (ч/з который проходят все классы) изменяется байткод. Как сделать подобное в произвольный момент?
...
Рейтинг: 0 / 0
29.03.2012, 10:35:09
    #37728979
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
Instrumentation.redefineClasses() в любой момент можно вызвать.
...
Рейтинг: 0 / 0
29.03.2012, 10:38:19
    #37728985
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
LeonidvdrewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Если разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close).

Иначе надо знать задачу шире. Варианты разные - начиная от AOP и заканчивая изменения byte-кода в runtime.

Не заложили. Программа писалась давно, авторов нет, плюс она обфусцирована (все что осталось - это jar'ы). Функциональности там много, изменения нужны небольшие, т.ч. заново переписывать не эффективно.
...
Рейтинг: 0 / 0
29.03.2012, 10:57:43
    #37729030
rrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
BlazkowiczInstrumentation.redefineClasses() в любой момент можно вызвать.

И не забыть включить эту фичу в манифесте javaagent jar. Есть мнение, что включение этой штуки тормозит сервер примерно так же как и -Xdebug, но точных данных нет.
...
Рейтинг: 0 / 0
29.03.2012, 11:02:57
    #37729045
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
rrrrrrrrИ не забыть включить эту фичу в манифесте javaagent jar. Есть мнение, что включение этой штуки тормозит сервер примерно так же как и -Xdebug, но точных данных нет.

В доке оба способа описаны:
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html

Вообще интересно как jvisualvm классы инструментирует для профилирования. Свободно ведь цепляется к JVM с дефолтными настройками.
...
Рейтинг: 0 / 0
29.03.2012, 15:01:16
    #37729589
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
LeonidvЕсли разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close).
Для Hot Code Replace как-то ортогонально был ли язык ООП-типа или нет. Это другое направление IMHO.
...
Рейтинг: 0 / 0
29.03.2012, 15:03:53
    #37729600
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
maytonLeonidvЕсли разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close).
Для Hot Code Replace как-то ортогонально был ли язык ООП-типа или нет. Это другое направление IMHO.
Речь шла не об этом.
...
Рейтинг: 0 / 0
30.03.2012, 10:03:54
    #37730861
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
А как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()?
...
Рейтинг: 0 / 0
30.03.2012, 10:10:13
    #37730871
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewhaА как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()?
через агента:
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html
...
Рейтинг: 0 / 0
30.03.2012, 10:51:46
    #37730956
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
BlazkowiczdrewhaА как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()?
через агента:
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html

А можно чуть подробнее, что-то я так и не понял. Через агента - это, как я понял, при старте jvm. А как после, в нужное время?
...
Рейтинг: 0 / 0
30.03.2012, 11:25:50
    #37731030
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
drewhaBlazkowiczпропущено...

через агента:
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html

А можно чуть подробнее, что-то я так и не понял. Через агента - это, как я понял, при старте jvm. А как после, в нужное время?

Тем более метод Instrumentation.redefineClasses() не public. Что-то я совсем запутался. Может у кого-нибудь похожий код есть (чтобы сделать инструментирование 2-й раз)?

Заранее спасибо.
...
Рейтинг: 0 / 0
30.03.2012, 12:11:23
    #37731132
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
...
Рейтинг: 0 / 0
31.03.2012, 11:16:26
    #37732652
drewha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректировка байт-кода на лету.
Valery Shiskin,

Спасибо. То что нужно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Корректировка байт-кода на лету. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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