powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Корректировка байт-кода на лету.
19 сообщений из 19, страница 1 из 1
Корректировка байт-кода на лету.
    #37728848
drewha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
...
Рейтинг: 0 / 0
Корректировка байт-кода на лету.
    #37728857
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewha,
полиморфизма не хватает?
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Корректировка байт-кода на лету.
    #37728863
drewha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм?
...
Рейтинг: 0 / 0
Корректировка байт-кода на лету.
    #37728866
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewhaНужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм?
ничего личного, просто смешная задача :)
...
Рейтинг: 0 / 0
Корректировка байт-кода на лету.
    #37728873
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Точно так же можно корректировать и во время работы.
...
Рейтинг: 0 / 0
Корректировка байт-кода на лету.
    #37728906
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)?
Если разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close).

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

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

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

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

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

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

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

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

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

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

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

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

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


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