IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Enlever la méthode main


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut Enlever la méthode main
    Bonjour,

    J'ai vu sur le net une implémentation un peu spéciale, qui marche sans le moindre doute, mais je trouve ça affreux.

    Je voulais avoir vos avis, la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Sample {
        static {
            System.out.println("Hello Word !!");
        }
    }
    source : http://browntips.com/trick-java-program-with-out-main/

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Alain Defrance Voir le message
    mais je trouve ça affreux.
    Pas mieux !

    Citation Envoyé par Alain Defrance Voir le message
    qui marche sans le moindre doute,
    Cela remonte quand même une exception (main() not found)

    a++

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Cela remonte quand même une exception (main() not found)
    En effet, mais c'est encore pire, ca remonte une error : Exception in thread "main" java.lang.NoSuchMethodError: main

    Pour utiliser cette classe ca va être chaud, va vraiment falloir faire tous les appels dans le bloc static :p

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    plus fumant: un jour un stagiaire m'a demandé s'il était possible de lancer une application Java autrement que par la méthode magique "main"...
    C'est possible en modifiant le code C du lanceur, mais je me suis toujours demandé pourquoi il voulait faire ça ...

  5. #5
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Je vois pas vraiment l'intérêt. Vraiment pas. Mais alors pas du tout.
    Bref, après cette contribution du tonnerre, ...


  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    plus fumant: un jour un stagiaire m'a demandé s'il était possible de lancer une application Java autrement que par la méthode magique "main"...
    C'est possible en modifiant le code C du lanceur, mais je me suis toujours demandé pourquoi il voulait faire ça ...
    Autant créer un nouveau langage basé sur la JVM :p, ca sera encore plus simple .

  7. #7
    Invité
    Invité(e)
    Par défaut
    Juste pour apporter ma pierre a l'édifice, je ne pense pas que cette manière de faire soit plus horrible qu'une autre.

    Certes elle n'est pas du tout adaptée au langage Java, mais elle a l'avantage d'enlever ce vieil héritage venant de la programmation procédurale.

    Pourquoi diable devons nous passer par une méthode nommée "main" pour lancer notre application ?

    Une simple modification du langage pourrait nous donner quelque chose de bien plus orienté objet, et bien moins procédural.

    En poussant dans les extrêmes, on pourrait aller jusqu'à dire que l'orienté objet devrait pouvoir fonctionner sans aucune méthode.

    Donc encore une fois, la façon de procéder ici n'est pas appropriée, mais elle n'est pas si inesthétique pour autant.

    Etant donné que ce sujet a donné lieu a une petite session débat (très légère) entre Alain et moi-même voici un argument que j'ai avancé, non pas en faveur du bloc statique, mais plutôt en défaveur du main().

    Premier point, pourquoi "main", pourquoi pas quelque chose de plus souple ?
    Pourquoi toute une méthode avec des arguments bien précis, une visibilité, une valeur de retours fixés ? D'ailleurs a ce compte, pourquoi une méthode ?

    Il est certain qu'il y a quelques années lorsque l'on voulait convertir des développeurs C au java il était plus simple de leur proposer une méthode principale nommée main, prenant en paramètre les paramètres de l'application.

    Alors quitte à faire, j'apporte une possible solution.

    Pourquoi ne pas avoir au même titre qu'un bloc statique un bloc main{}.
    Faire de ce fameux main un mot clef dans des cas précis. Et si ce n'est main, autre chose ?
    Evidemment pour ce qui est du Java c'est beaucoup trop tard, mais l'idée est là.

    Ainsi avec un main{} nous pourrions avoir un point d'entrée qui ne serait pas une méthode.

    Quant aux arguments, il pourraient être disponibles depuis la classe System.
    Enfin point sur le quel je n'ai que trop peu réfléchis, serait la possibilité de mettre ce bloc en dehors d'une classe.

    Quoi qu'il en soit, sans défendre corps et âme cette idée de bloc static{} pour démarrer l'application, je trouve que c'est osé, et pourquoi pas, vu sous un certain angle, intéressant comme approche. Et peut-être, comme je disais plus tôt, élégant comme solution, bien qu'inadapté.

    Je sens d'ici les personnes qui ne vont pas se privé de me traiter d'hérétique mais bon, main() ne m'a pas l'air d'être une solution parfaite.

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/06/2007, 22h42
  2. paramêtres de la méthode main()
    Par aazize dans le forum C
    Réponses: 1
    Dernier message: 17/12/2006, 11h27
  3. [JBX] Spécifier la méthode main
    Par fafa139 dans le forum JBuilder
    Réponses: 1
    Dernier message: 15/08/2006, 12h36
  4. Débuts : classe / méthode main
    Par P@t dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/07/2004, 04h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo