java blog jAbLoK

... řekněte Javě Ja!

/** * @author Pavel Kolesnikov * @date 29.4.2004 v 20:15 */

Struts Wiki a Struts Catalog

Vývojáři Struts si před časem pořídili oficiální Strutsí Wiki web (nevíte-li, co to takové "wiki" vlastně je, dozvíte se to na Wikipedii nebo v češtině třeba na weblogu Mraveniště).

Z publikovaných informací si dovolím vypíchnout Struts catalog — přehled Strutsích Design Patterns a sem tam i vyslovených Best Practices. Pro každého vývojáře ve Strutsech nezbytný zdroj informací, samozřejmě až na ty, kteří si dané informace našli jinde či k nim dokonvergovali vlastními mentálními silami. A pro ty vlastně taky, protože Wiki je živý web a Strutsí Wiki rychlým tempem narůstá.

/** * @author Pavel Kolesnikov * @date 27.4.2004 v 10:59 */

Java pro špunty

Jednou se za jedním Java-pedagogem přiřítil jeho 10-ti letý syn a oznámil mu, že se chce naučit programovat, aby mohl psát počítačové hry. A protože žádná literatura pro takovouto cílovou skupinu nebyla k mání, nezbylo mu, než napsat knihu vlastní — Java Programming for Kids, Parents and Grandparents.

Pár postřehů z výuky a ukázek z knihy najdete v článku Even Younger Kids Can Learn Java na www.sys-con.com.

/** * @author Tomáš Zvěřina * @date 26.4.2004 v 09:36 */

DocBook a Java třída

DocBook je užitečný nástroj na psaní dokumentace. Jeho DTD pamatuje na všeliké zvláštnosti, kterými se vyznačují programátorské příručky a dokumentace — názvy tříd, metod, souborů, příklady, kusy kódu, atd. Tím se ale také dostáváme k hlavní nevýhodě DocBooku. Je hrozně složitý a psát ho jen tak v ruce (tedy ve vim, nebo jEditu) je pěkná fuška. Abych si to alespoň trochu usnadnil, napsal jsem si prográmek, který jako argument bere jméno třídy (interface), a pro všechny její metody vygeneruje její popis v DocBooku. Následuje ukázka popisu metody "containsAll" z interface "java.util.Collection".

<methodsynopsis>
        <type>boolean</type>
        <methodname>containsAll</methodname>
        <methodparam><type>java.util.Collection</type></methodparam>
</methodsynopsis>

Nepochybuju o tom, že je podobná utilitka už někým napsaná. Verze, kterou vám níže předkládám je tak minimalistická jen jen bylo únosné, nějaké ostré nasazení a stovky ušetřených hodin se nedají očekávat. Navíc si neumí poradit s návratovou hodnotou nebo parametrem typu Array.

Berte ji tedy, prosím, jednak jako ukázku užití reflexe a jednak jako motivaci pro studium DocBooku.


import java.lang.reflect.*;

public class ClassToDocbook {

    public static void main(String [] args) throws ClassNotFoundException {
        if (args.length!=1) {
            System.err.println("Usage: java ClassToDocbook classname");
        }
        Class toAnalyze = Class.forName(args[0]);
        Method[] allMethods = toAnalyze.getMethods();
        for (int a=0; a<allMethods.length; a++) {
            printMethod(allMethods[a]);
            System.out.println();
        }
    }

    private static void printMethod(Method method) {
        System.out.println("<methodsynopsis>");
        Class returnType = method.getReturnType();
        if (returnType.equals(Void.TYPE)) {
            System.out.println("\t<void/>");
        } else {
            System.out.println("\t<type>"+returnType.getName()+"</type>");
        }
        System.out.println("t<methodname>"+method.getName()+"</methodname>");
        Class[] parameters = method.getParameterTypes();
        for (int a=0; a<parameters.length; a++) {
            System.out.println("\t<methodparam><type>"+parameters[a].getName()+"</type></methodparam>");
        }
        System.out.println("</methodsynopsis>");
    }

}


Updated: Zdá se, že jsem nesrozumitelný, tedy ještě drobné dovysvětlení. Uvedený postup samozřejmě nesupluje funkci javadocu, uplatnění najde především při psaní delších vysvětlujících textů a analýz, ve kterých právě budete (při použití DocBooku) potřebovat výše zmíněné XML konstrukce.