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
students:lock_free_testing:start [2020/02/16 17:35] ashahovprojects:lock_free_testing:start [2020/04/14 10:19] (current) – ↷ Page moved from students:lock_free_testing:start to projects:lock_free_testing:start 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.1581863703.txt.gz · Last modified: 2020/02/16 17:35 by ashahov