Что такое xdoclet? (с точки зрения C-программиста)

Вопрос от C-парня, которому приходится работать с некоторым java-кодом, который подключен к моему C-коду через JNI.

Мне нужно работать над системой сборки, и я пытаюсь изменить ее с сценария оболочки на правильный make-файл. Для части C это просто, но сторона Java каким-то образом связана с xdoclet.

Я еще не узнал, что такое xdoclet, и я хочу понять все это.

Я провел поиск в Google, но понятия не имею, что эта штука делает. Мне кажется, что у вас есть шанс понять официальную документацию только в том случае, если вы уже знакомы с проблемой и у вас есть 10 лет работы с Java за плечами.

Не могли бы вы - для чайников - объяснить, что делает xdoclet?

Кстати, я также упомянул C. Я также занимаюсь объектно-ориентированным программированием. Мне не нужно объяснять основы классов или наследования (если это требуется для понимания xdoclet).


Редактировать: примерно десять лет назад я задал этот вопрос для ИТ-вещей. Я до сих пор понятия не имею, что такое xdoclet, но вопрос набрал более тысячи просмотров. Я хотел бы, чтобы какой-нибудь java-парень вмешался и, наконец, прояснил ситуацию.


person Nils Pipenbrinck    schedule 19.01.2009    source источник
comment
В следующий раз не указывайте -TF   -  person noahlz    schedule 20.01.2009
comment
Будет к тому, а о каком ТФ вы говорите?   -  person Nils Pipenbrinck    schedule 20.01.2009
comment
ТФ WTF, в названии. Наверное.   -  person Adeel Ansari    schedule 20.01.2009


Ответы (1)


Вид XDoclet с высоты 10000 футов состоит в том, что это механизм генерации кода. ИМО, самое интересное в XDoclet — это как он делает то, что он делает, а не что он делает.

Существует инструмент под названием javadoc, который принимает аннотации в комментариях к исходному коду и генерирует с их помощью документацию в формате html. Это классический пример того, для чего изначально был разработан javadoc. Стремясь поддерживать различные форматы вывода, авторы javadoc сделали его подключаемым — вы можете написать «доклеты» этого подключаемого модуля в механизм javadoc. Это позволяет им использовать один и тот же парсер исходного кода и выдавать разные выходные данные документации.

XDoclet — умный хак, использующий этот движок для генерации кода вместо генерации документации.

Пример использования: разработчик вручную пишет класс, содержащий бизнес-логику, добавляет несколько аннотаций xdoclet в javadoc, и xdoclet создает дополнительный код, обеспечивающий целостность транзакций.

EDIT: Как отмечает erickson, в Java 5 добавлена ​​поддержка аннотаций как языковой функции, которую можно обрабатывается непосредственно компилятором. В результате функции, которые раньше предоставлял XDoclet, теперь могут выполняться непосредственно инструментом обработки аннотаций (apt), который поставляется с JDK. Из-за этого XDoclet в настоящее время обычно считается устаревшим.

person Sean Reilly    schedule 19.01.2009
comment
Возможно, захочется обсудить, как XDoclet является своего рода аннотациями до появления аннотаций... т. Е. Сегодня люди делают то, что они делали с xdoclet, используя стандартные аннотации. - person erickson; 20.01.2009
comment
Ладно - я ничего не понял. Насколько я понял: вы пишете документацию в стиле java-doc (без кода), а xdoclet генерирует для вас класс. Это оно? - person Nils Pipenbrinck; 20.01.2009
comment
@Нильс: Почти. Вы пишете документацию в стиле java-doc с кодом, а xdoclet генерирует дополнительный код, который делает за вас утомительные вещи. И, как упоминает @ericson, сейчас это считается устаревшей технологией. - person Sean Reilly; 20.01.2009