Explication de la méthode Java main ()

1. Vue d'ensemble

Chaque programme a besoin d'un endroit pour commencer son exécution; parler de programmes Java, c'est la méthode principale . Nous sommes tellement habitués à écrire la méthode principale lors de nos sessions de code, que nous ne prêtons même pas attention à ses détails. Dans cet article rapide, nous analyserons cette méthode et montrerons d'autres façons de l'écrire.

2. Signature commune

Le modèle de méthode principale le plus courant est:
public static void main(String[] args) { }

C'est ainsi que nous l'avons appris, c'est ainsi que l'EDI complète automatiquement le code pour nous. Mais ce n'est pas la seule forme que cette méthode peut prendre, il existe des variantes valides que nous pouvons utiliser et tous les développeurs ne prêtent pas attention à ce fait.

Avant de plonger dans ces signatures de méthode, examinons la signification de chaque mot-clé de la signature commune:

  • public - modificateur d'accès, ce qui signifie visibilité globale
  • statique - la méthode est accessible directement depuis la classe, nous n'avons pas besoin d'instancier un objet pour avoir une référence et l'utiliser
  • void - signifie que cette méthode ne renvoie pas de valeur
  • main - le nom de la méthode, c'est l'identifiant que JVM recherche lors de l'exécution d'un programme Java

Quant au paramètre args , il représente les valeurs reçues par la méthode. C'est ainsi que nous passons des arguments au programme lorsque nous le démarrons pour la première fois.

Le paramètre args est un tableau de String s. Dans l'exemple suivant:

java CommonMainMethodSignature foo bar

nous exécutons un programme Java appelé CommonMainMethodSignature et passons 2 arguments: foo et bar . Ces valeurs sont accessibles à l'intérieur de la méthode principale comme args [0] (ayant foo comme valeur) et args [1] (ayant bar comme valeur).

Dans l'exemple suivant, nous vérifions les arguments pour décider de charger les paramètres de test ou de production:

public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }

Il est toujours bon de se rappeler que les IDE peuvent également transmettre des arguments au programme.

3. Différentes façons d'écrire une méthode main ()

Vérifions différentes manières d'écrire la méthode principale . Bien qu'elles ne soient pas très courantes, ce sont des signatures valides.

Notez qu'aucun de ceux-ci n'est spécifique à la méthode main , ils peuvent être utilisés avec n'importe quelle méthode Java mais ils sont également une partie valide de la méthode main .

Les crochets peuvent être placés près de String , comme dans le modèle commun, ou près des arguments de chaque côté:

public static void main(String []args) { } 
public static void main(String args[]) { }

Les arguments peuvent être représentés sous forme de varargs:

public static void main(String...args) { }

Nous pouvons même ajouter strictfp pour la méthode main () , qui est utilisée pour la compatibilité entre les processeurs lorsque vous travaillez avec des valeurs en virgule flottante:

public strictfp static void main(String[] args) { }

synchronized et final sont également des mots-clés valides pour la méthode principale mais ils n'auront aucun effet ici.

D'autre part, final peut être appliqué sur les arguments pour empêcher la modification du tableau:

public static void main(final String[] args) { }

Pour terminer ces exemples, nous pouvons également écrire la méthode principale avec tous les mots-clés ci-dessus (que, bien sûr, vous n'utiliserez probablement jamais dans une application pratique):

final static synchronized strictfp void main(final String[] args) { }

4. Avoir plus d'une méthode principale ()

Nous pouvons également définir plusieurs méthodes principales dans notre application.

En fait, certaines personnes l'utilisent comme technique de test primitive pour valider des classes individuelles (bien que les frameworks de test comme JUnit soient bien plus indiqués pour cette activité).

Pour spécifier la méthode principale que la JVM doit exécuter comme point d'entrée de notre application, nous utilisons le fichier MANIFEST.MF . À l'intérieur du manifeste, nous pouvons indiquer la classe principale:

Main-Class: mypackage.ClassWithMainMethod

Ceci est principalement utilisé lors de la création d'un fichier exécutable .jar . Nous indiquons quelle classe a la méthode principale pour démarrer l'exécution, via le fichier manifeste situé dans META-INF / MANIFEST.MF (encodé en UTF-8).

5. Conclusion

Ce tutoriel a décrit les détails de la méthode principale et d'autres formes qu'elle peut prendre, même celles qui ne sont pas très communes à la plupart des développeurs.

Gardez à l'esprit que, bien que tous les exemples que nous avons montrés soient valides en termes de syntaxe, ils ne servent qu'à des fins éducatives et la plupart du temps, nous nous en tiendrons à la signature commune pour faire notre travail.