Javassist Vs. API Java Compiler - PullRequest
       11

Javassist Vs. API Java Compiler

4 голосов
/ 03 августа 2010

В проекте, над которым я сейчас работаю, мне нужно генерировать классы Java во время выполнения. Мне также нужно избегать использования отражения при использовании этих классов позже.

Я искал текущие решения для этого и нашел Javassist и Java 6 Java Compiler API.

Я в замешательстве, хотя:

  1. Что Javassist использует для генерации классы? Использует ли это отражение или что-то?

  2. Я написал несколько тестов и нашел его довольно легко генерировать байт-код из исходного кода, а затем загрузить классы из сгенерированного байт-кода. Каковы преимущества использования Джавассист за это решение?

1 Ответ

6 голосов
/ 03 августа 2010

Javassist имеет несколько опций, одна из которых является небольшим включенным компилятором, позволяющим вам преобразовывать фрагменты Java в байт-код, облегчая вставку, например, «System.out.println (....)» или «log.debug (...) "Заявление в существующих классах.

Я недавно написал статью об этом, которая показывает, как это можно сделать.См. http://blogs.oracle.com/CoreJavaTechTips/entry/add_logging_at_class_load. Примечание. Для производственных параметров этот подход не следует использовать - тогда вам следует рассмотреть возможность использования Аспектно-ориентированного программирования в вашем приложении.

...