03 marzo 2006

Los doclet de javadoc

Investigando con javadoc, nuevamente java me deja asombrado con su versatilidad y posibilidades.

Resulta que javadoc recoge la información de los ficheros java que le pasamos y le pasa dicha información a una clase java llamada Doclet. El J2SE lleva un Doclet por defecto y esta clase es la que genera la documentación html que conocemos de javadoc.

Sin embargo, es posible cambiar esta clase Doclet por defecto por otra nuestra hecha a medida. Es tan sencillo como hacerse dicha clase y llamar a javadoc de esta manera

$ javadoc -doclet <miclasedoclet> -docletpaht <pathdemiclasedoclet> <fichero.java>

En http://www.doclet.com hay un montón de clases Doclet (unas gratuitas y otras no) que modifican javadoc para generar la documentación de otra forma. Unos se comportan como el Doclet standard de java, pero generan los diagramas de clases y los insertan en la documentación, otros generan la documentación en pdf, en rtf, etc, etc.

Y, ¿por qué debe generar un Doclet documentación?. El Doclet recibe la información de los ficheros java, pero no tiene por qué generar documentación. Hay Doclets que generan los esqueletos para test de JUnit de las clases que le pasemos, otros nos formatean el código dejándolo bonito, otros lo revisan para ver si cumplimos las convenciones de código y otros, pasándoles un bean de java, son capaces de generar los EJBs necesarios para J2EE.

Finalmente, podemos hacernos nuestros propios Doclet. Un Doclet que simplemente saca un listado de clases por pantalla es tan tonto como esto (copiado de http://java.sun.com/j2se/1.3/docs/tooldocs/javadoc/overview.html):

import com.sun.javadoc.*;

public class ListClass {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (int i = 0; i < classes.length; ++i) {
System.out.println(classes[i]);
}
return true;
}
}

En fin, una nueva pequeña maravilla de java que nos abre un montón de posibilidades....

No hay comentarios: