Voila le code commenté :

Fichier Test.java :

class Test {
	
	/*
	 * Point d'entree du programme
	 */
	
	public static void main(String args[]) {
		// Initialisation de la valeur de la phrase ("no message" par defaut)
		String msg = "no message";
		// On prend en compte le premier parametre s'il est renseigne
		if (args.length > 0 && args[0] != "") {
			msg = args[0];
		}
		// Initialisation du nombre d'affichage a effectuer (1 par defaut)
		int n = 1;
		// On prend en compte le second parametre s'il est renseigne
		if (args.length > 1 && args[1] != "") {
			// Transtypage du type chaine -> entier pour ce second parametre
			n = new Integer(args[1]);
			n = n > 0 ? n : 1;
		}
		Printer p = new Printer();
		p.printnmsg(msg, n);
	}
	
}
 
class Printer {
	
	/*
	 * Envoi d'une chaine str vers la sortie, n fois
	 */
	
	public void printnmsg(String msg, int n) {
		for (int i=0; i<n; i++) {
			System.out.println(msg);
		}
	}
	
}

La compilation se fait ainsi :

$ javac Test.java

Et le test :

$ java Test "J'aime les brocolis !" 10

Je constate que Java est un langage vraiment strict, ça change drôlement de PHP ou d'actionScript... Mais c'est pas desagréable, ça oblige à être très rigoureux et la qualité du code doit à mon avis en être améliorée :)

M'enfin bon, la route est encore longue... :-/