Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


projects:lock_free_testing:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
students:lock_free_testing:start [2020/02/16 17:35] ashahovstudents:lock_free_testing:start [2020/04/14 10:18] kel
Line 3: Line 3:
  
 ---- ----
-[[Lin-Check]]+ 
 +===== Варианты модификации сущеcтвующего байт-кода ===== 
 +  - Подмена ClassLoader`a 
 +     - Создать свой кастомный:  
 +       * Create a custom system(java -Djava.system.class.loader=com.example.MyCustomClassLoader) 
 +     - Использовать библиотеки 
 +       * https://www.osgi.org/ 
 +       * https://github.com/kamranzafar/JCL 
 +     * Плюсы: 
 +       * Это довольно просто 
 +     * Минусы: 
 +       * Не понятно, как управлять, кроме как через параметры jvm 
 +       * Только статическая инициализация 
 +       * Распостраняется на все использования данного класса в программе 
 +  - Java instrument 
 +    * Java Agent - позволяет менять байт-код 
 +    * Javassist - позволяет генерировать байт-код 
 +    * Attach API(https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html) - позволяет менять его на лету  
 +    * Плюсы: 
 +          * Динамическая замена байт-кода(возможно даже в конкретном потоке) 
 +          * Классический способ для подмены реализации класса(см. jRebel) 
 +     * Минусы: 
 +       * Много лишних действий для получения результата 
 +     * Ссылки: 
 +       * https://www.baeldung.com/java-asm 
 +       * https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html 
 + 
 + 
 + 
projects/lock_free_testing/start.txt · Last modified: 2020/04/14 10:19 by kel