java2html è stato sviluppato sotto Linux, utilizzando lex, yacc e C++, ed è stato poi portato sotto Windows utilizzando il DJGPP (il gcc per Windows della Delorie: http://www.delorie.com). Essendo un programma free (GPL), viene fornito con i sorgenti (~50k) e, per Windows, se non avete voglia di compilarlo potete anche scaricare direttamente l'eseguibile (~80k).

Installazione

Se si vogliono compilare i sorgenti (operazione necessaria se si utilizza un sistema Unix, mentre per Windows viene fornito anche direttamente l'eseguibile), si deve seguire la classica procedura tipica della maggior parte del software GNU: una volta scompattato il file .tar.gz, si deve lanciare il comando

./configure

che creerà un Makefile adatto per il vostro sistema e, a quel punto, se non si sono avuti errori nella fase precedente, digitare:

make

Il comando lancerà la compilazione del programma; alla fine di questa operazione, se non si sono avuti errori, sarà stato creato l'eseguibile java2html, che potete mettere nella vostra directory preferita. A quel punto si possono cancellare i sorgenti (se si hanno problemi di spazio), oppure cancellare almeno i file intermedi della compilazione lanciando il comando

make clean

Per ulteriori informazioni guardate il file INSTALL distribuito insieme ai sorgenti.

Utilizzo

È bene specificare che java2html esegue solo un'analisi lessicale del sorgente e quindi si suppone che il programma Java passato sia corretto sintatticamente; altrimenti, probabilmente, si avrà un output un po' bizzarro ;-)

Per eseguire il programma si utilizza la seguente sintassi:

java2html <input file (a java prog)> <output file (an html)>

In questo modo si ottiene un file di testo dal quale si può copiare il contenuto. Ad esempio, dato il seguente Hello.java:

/*
  This is a classical Hello program
  to test java2html.
  to have an html translation type
  java2html Hello.java Hello.html
  Lorenzo Bettini
  lorenzo.bettini@penteres.it
*/
import java.io.*;
public class Hello {
  int foo = 1998;
  boolean b;
  public static void main(String args[]) {
    // just some greetings ;-)
    System.out.println("Hello from java2html :-)");
    System.out.println("by Lorenzo Bettini");
    System.out.println("lorenzo.bettini@penteres.it");
  }
}

si impartisce il seguente comando:

java2html Hello.java Hello.txt

In Hello.txt è contenuto il listato HTML che produce il seguente listato "colorato":

/*
  This is a classical Hello program
  to test java2html.
  to have an html translation type
  java2html Hello.java Hello.html
  Lorenzo Bettini
  lorenzo.bettini@penteres.it
*/
import java.io.*;
public class Hello {
  int foo = 1998;
  boolean b;
  public static void main(String args[]) {
    // just some greetings ;-)
    System.out.println("Hello from java2html :-)");
    System.out.println("by Lorenzo Bettini");
    System.out.println("lorenzo.bettini@penteres.it");
  }
}

Specificando anche l'opzione -doc:

java2html Hello.java Hello.html -doc

si ottiene un vero file HTML (con titolo uguale al nome del listato), il file Hello.html.

Le varie opzioni per la colorazione e per il grassetto, sottolineato e corsivo sono contenute nel file tags.j2h, che deve essere presente nella directory corrente e la cui sintassi può essere compresa tranquillamente guardando quello distribuito insieme al pacchetto:

keyword blue u;
type green;
string red;
comment brown i;
number purple;

Come potete notare la sintassi è molto semplice:

  • b = grassetto (bold)
  • i = corsivo (italics)
  • u = sottolineato (underline)

Si possono anche specificare più opzioni separate da virgole, ad esempio keyword blue u, b.

Potete vedere i possibili colori nel file colors.html: se il file tags.j2h non è presente nella directory corrente saranno utilizzati dei colori di default; in pratica si otterrà un output simile a quello illustrato.

Feedback

Fatemi sapere cosa ne pensate del programmino, che potete utilizzare per formattare i vostri listati, ad esempio per metterli nei vari articoli di MokaByte :-D Inoltre comunicatemi ogni bug via e-mail.

Il software si trova anche sui seguenti siti: