Подтвердить что ты не робот

Программная запись Java

Мне было интересно, есть ли уже библиотека для программной записи класса или метода Java?

Я ищу библиотеки, способные записывать новый исходный код в существующие файлы или расширять уже существующие файлы.

4b9b3361

Ответ 1

Посмотрите Eclipse JDT.

Eclipse Java Development Tools (JDT) предоставляет API-интерфейсы для доступа и использования исходного кода Java. Он позволяет получать доступ к существующим проектам в рабочей области, создавать новые проекты и изменять и читать существующие проекты.

В частности, вы можете создавать новые элементы Java, например. проектов, пакетов, классов с использованием Java Model API, а затем вы можете создавать/изменять содержимое типа, например. методы, инструкции через AST (Абстрактное дерево синтаксиса)

Вы должны увидеть это article, а также этот учебник.

Ответ 2

Что вы хотите, это система преобразования программ. Такие инструменты читают исходный код, строят структуры данных компилятора, позволяют кодировать пользовательские анализаторы/преобразования на этих структурах и выплевывать исходный код, соответствующий структурам данных компилятора; это дает вам возможность "расширить файл". Создание нового кода выполняется путем простого создания соответствующих структур данных компилятора, а затем выплескивания соответствующего кода.

Наш DMS Software Reengineering Toolkit - именно такая система. Он читает источник Java, строит структуры данных компилятора, такие как абстрактные деревья синтаксиса и таблицы символов (он может создавать графики потока управления, деревья вызовов и потоки данных), позволяет вам перебирать эти структуры с процедурным кодом или писать "источник-источник" преобразования ", используя поверхностный синтаксис языка (в данном случае Java), а затем он может генерировать действительный код Java из этих структур данных компилятора.

Он был использован для реализации различных инструментов анализа и преобразования Java, которые вы можете увидеть на веб-сайте. Самый простой способ понять - с помощью программных преобразований для создания инструмента для тестирования.

Ответ 3

Apache Byte Code Engineering Library очень интересно работать, хотя это не то же самое, что манипуляция с исходным кодом Java.

Однако вы можете использовать его для:

  • проверить существующий байт-код;
  • изменить существующий байт-код;
  • сгенерировать байт-код и запустить его.

Пользовательские языки, предназначенные для JVM (например, Scala), часто используют манипуляции с байт-кодом для создания классов Java.

С некоторыми усилиями вы можете расширить эту библиотеку, чтобы выполнить "мета-программирование": запись исходного кода Java во время выполнения.