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

Autres Java Discussion :

Ceylon : un nouveau langage pour la JVM


Sujet :

Autres Java

  1. #1
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut Ceylon : un nouveau langage pour la JVM
    Ceylon : un nouveau langage pour la JVM
    Par Red Hat, destiné à reprendre les points forts de Java sans ses défauts



    Lors d'une récente conférence à Beijing, Davin King de Red Hat, connu dans le monde Java comme étant l'auteur d'Hibernate et du framework Seam a annoncé qu'il travaillait sur un nouveau langage de programmation destiné à la JVM.

    Ce langage, baptisé Ceylon, s'inspire fortement de Java. Selon les dires de son créateur, son objectif est d'en reprendre les points forts, tout en gommant certaines lourdeurs dues entre autres à son âge avancé (environ 15 ans). Il avoue par ailleurs s'inspirer notamment de certains éléments de C# et de Scala.

    Parmi les points clefs de Ceylon, il est question de :

    • Typage statique
    • Support des closures
    • Pseudo-surcharge d'opérateur (mappage vers des fonctions)
    • Sucre syntaxique pour les propriétés
    • Support d'une forme de covariance pour les listes génériques
    • Gestion du NULL comparable à celle des Nullable value type de C# (Optional<String>))
    • Sucre syntaxique divers pour les collections, initialiseurs etc...


    Et bien plus encore.

    Il faut noter qu'à ce jour, aucun compilateur Ceylon n'est disponible, mais King estime que sa réalisation sera relativement « rapide » en raison de la forte ré-utilisation du code « Javac ».

    Les documents PDF suivants offrent plus de détails sur les différentes idées et syntaxes prévues.

    Introduction au langage Ceylon
    Système de typage de Ceylon

    Et vous ?

    Donneriez-vous une chance à un tel langage ?
    Pensez-vous qu'après l'annonce de Java 7 et 8, puis l'existence de Scala, Groovy, JRuby ou encore Jython, ce projet ait encore un avenir ?

    Source : Blog de Davin King

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    l'effort est louable, mais je ne pense pas que ce langage apporte suffisamment de nouveauté (de fait il ne fait que récupérer des idées à droite et à gauche) pour percer.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre averti Avatar de vintz72
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 154
    Points : 316
    Points
    316
    Par défaut
    C'est bon, mais Ceylon.

    Désolé...

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Encore un ? Mais ils sont numéro combien, dans la liste des langages qui cherchent à faire exactement ça ? #3 ? #4 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 263
    Points
    263
    Par défaut
    destiné à reprendre les points forts de Java sans ses défauts
    Donc un langage qui n'aura que des qualités ?
    C'est pas la premiere fois que j'entends ca ....

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    J'ai jeté un coup d'oeil rapide au document et donné mes premières impressions sur mon compte twitter, que je copie-colle ci dessous :
    Citation Envoyé par adiGuba sut twitter
    #ceylon : plus de méthode static mais des méthodes "toplevel". Beurk
    #ceylon : Aucune surcharge = des paramètres optionnels efficace. Mais en même temps c'est parfois bien pratique la surcharge...
    #ceylon : Pas de checked-exceptions (yes !) mais des "type optional" pour éviter les NPE. A voir à l'usage si c'est pas trop lourd...
    #ceylon : Attributs et variables locales sont des références immuables par défaut ! Très bon point
    #ceylon : Visibilité "shared" ou "block local" seulement. C'est un peu trop simpliste à mon gout...
    #ceylon : heu... c'est moi ou les getters/setters sont aussi lourd qu'en Java !?!
    #ceylon : Pas de "new"... c'est moche je trouve
    #ceylon : deux syntaxes d'affectations ( = ou := ) selon que le référence soient immuable ou pas ! Mais pourquoi ???
    #ceylon : Un seul constructeur, avec le code directement dans le bloc de la classe... C'est pas très joli tout ca
    #ceylon : Un type Sequence (collection immuable) avec une syntaxe intégré au langage. Pourquoi pas...
    #ceylon : Des références de méthode ! Cool mais le syntaxe n'est pas très jolie
    #ceylon : Je n'ai pas trop compris l'intérêt des méthodes à multiples listes de paramètres...
    #ceylon : Et vlan toutes les méthodes ont des paramètres nommées... avec toutes les contraintes que cela impose
    En résumé en ce qui me concerne :
    Citation Envoyé par adiGuba sut twitter
    #ceylon : de bonne intentions mais je ne suis pas vraiment convaincu pour l’instant. En tout cas pas en tant que "Java-Killer" !

    Tout ceci s'éloigne un peu trop du langage Java pour "pas grand chose" au final IMHO.


    a++

  7. #7
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    #ceylon : Pas de checked-exceptions (yes !) mais des "type optional" pour éviter les NPE. A voir à l'usage si c'est pas trop lourd...
    Pour ma part, j'admet que les checked exception peuvent être gonflantes bien souvent, principalement quand on ne sait pas que faire d'une exception qui, on le sait à l'avance, n'arrivera jamais.
    J'aurai préféré la possibilité de pouvoir simplement à l'aide d'une annotation, briser l'obligation de déclarer pour plus de souplesse.

    Par contre, pouvoir différencier entre une instance nullable ou non d'une autre me paraît un bon point. Du moins pour éviter l'ambiguïté des méthodes pouvant retourner des NULL... Même chose lors du passage d'objet en argument, l'acceptation ou non d'un paramètre NULL saute aux yeux.

    Citation Envoyé par adiGuba Voir le message
    #ceylon : Un seul constructeur, avec le code directement dans le bloc de la classe... C'est pas très joli tout ca
    C'est un choix incompréhensible pour moi. grâce aux paramètres optionnels je peux vivre sans surcharge de méthode. Au pire si les arguments sont sans rapports je peux nommer ma méthode de façon légèrement différente:

    Ainsi je pourrai avoir :
    drawRectangleAtCoord(x1 , y1 , x2, y2);
    drawRectangleAtPoints( Point a, Point b);

    au lieu d'une méthode drawRectangle surchargée, en conservant toutes les fonctionnalités.

    En revanche, si je devais me limiter à un seul constructeur utilisant soit des points, soit des entiers, ce serait plus gênant. Peut être pas dans mon exemple puisqu'il me suffirait de construire des points, mais par contre si les arguments étaient de nature différentes :

    new Parser(String text)
    new Parser(File file)
    new Parser(XmlSource source)

    ça commencerait à devenir délicat de se débrouiller avec un seul constructeur sans avoir recours à des bricolages ringards. A cela on me dira que la solution c'est plus d'héritage.

  8. #8
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    l'effort est louable, mais je ne pense pas que ce langage apporte suffisamment de nouveauté (de fait il ne fait que récupérer des idées à droite et à gauche) pour percer.
    En tant que langage basé sur la JVM, il pourrait être une alternative séduisante pour ceux qui jugent Java un peu chiant sans vouloir tomber dans un Scala ou un Ruby-like.
    Là ou c'est inquiétant, c'est cette phrase dans une interview (slashdot):

    Because we're planning a whole new SDK, Ceylon doesn't make as many concessions in the type system to Java interoperability. In some cases, Java interoperability is going to suffer as a result of that. (Hopefully not too much!) For example, there's no overloading. There are no existential types. And there's no Java-style "null" hidden anywhere in the language specification. All these things would be useful for the interoperability scenario. But they're all otherwise quite harmful in terms of complexity. Oh and, generic type arguments are going to be reified! This opens up some very cool possibilities, but also slightly harms interoperability.
    En gros, un nouveau SDK, ce qui signifie que Ceylon ne pourra peut être pas profiter du gigantesque écosystème de librairies disponibles pour java. Et souvent, à mon sens, le choix d'un langage n'est pas dicté par les simples préférences syntaxiques du développeur mais aussi par la présence de middleware et de briques réutilisables...

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _skip Voir le message
    J'aurai préféré la possibilité de pouvoir simplement à l'aide d'une annotation, briser l'obligation de déclarer pour plus de souplesse.
    Ca revient a peu près au même : l'idée étant de pouvoir traiter ou pas une exception. Actuellement c'est possible avec les unchecked-exception mais ca reste impossible avec les checked

    Citation Envoyé par _skip Voir le message
    Par contre, pouvoir différencier entre une instance nullable ou non d'une autre me paraît un bon point. Du moins pour éviter l'ambiguïté des méthodes pouvant retourner des NULL... Même chose lors du passage d'objet en argument, l'acceptation ou non d'un paramètre NULL saute aux yeux.
    Oui tout à fait le gain est indéniable dans les signatures des méthodes.
    Je crains juste que cela ne devient un peu trop contraignant à l'usage...

    Les checked-exceptions semblait parfaite dans l'idée mais à mon sens cela aboutit trop souvent à des inepties. J'ai peur que ce soit le cas pour les types nullables.

    Je n'ai pas assez de recul par rapport à cela...



    Citation Envoyé par _skip Voir le message
    En revanche, si je devais me limiter à un seul constructeur utilisant soit des points, soit des entiers, ce serait plus gênant.
    +1 je ne comprend pas trop pourquoi ils ont touchés aux constructeurs

    Citation Envoyé par _skip Voir le message
    En gros, un nouveau SDK, ce qui signifie que Ceylon ne pourra peut être pas profiter du gigantesque écosystème de librairies disponibles pour java.
    L'idée est louable car cela permet d'avoir une API plus propre, qui utiliserait toutes les nouveautés du langage. Déjà en Java il y a beaucoup de chose que l'on pourrait "nettoyer" (généraliser les enums à la places des constantes, etc.)

    Mais en effet comme tu l'indiques cela pose en effet problème quand à l'écosystème.

    Une étape primordiale passerait via la modularisation du JDK qui permettrait éventuellement de faire tourner plusieurs API en parallèle (si c'est possible).


    a++

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce qu'il y a de biens avec les Ceylon, c'est que les versions prévues sont déjà numérotées

  11. #11
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut Passage des params
    Donc en gros ils remettent en cause le passage de paramètres des constructeurs et methodes et, pourquoi pas en faire de même avec les variables... et, réinventer JavaScript

    Au final, un code qui devient illisible avec l'impossibilité de documenter le passage de paramètre... Bref, du code impossible à maintenir...

    Non franchement, quitte à revenir sur le passage des paramètres, ne serait-il pas plus juducieux de s'orienter vers une nouvelle syntaxe pour la programmation par contrat ?

  12. #12
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut De manière générale
    Citation Envoyé par _skip Voir le message
    Et vous ?
    La syntaxe amenée par Ceylon ne m'enthousiaste guère...
    La possible incompatibilité avec Java ne m'enthousiaste pas du tout...

    Pourquoi un nouvel langage généraliste qui ne semble pas révolutionner la programmation ? N'y a-t'il pas, la place pour des DSL ? la persistance des objets en base de données ne pourrait-elle pas être le domaine d'un tel langage ?

  13. #13
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ce qu'il y a de biens avec les Ceylon, c'est que les versions prévues sont déjà numérotées
    j'étais sûr que quelqu'un allait dire ça, moi aussi ça m'a fait le même coup au début.

    Citation Envoyé par Philippe Bastiani
    La syntaxe amenée par Ceylon ne m'enthousiaste guère...
    La possible incompatibilité avec Java ne m'enthousiaste pas du tout...

    Pourquoi un nouvel langage généraliste qui ne semble pas révolutionner la programmation ?
    Je trouve qu'il y a des idées qui sont valables. Perso un genre de C# amélioré sur JVM ça me dirait pas mal. Le truc c'est que l'intérêt de la JVM sans le JDK et donc sans tous les projets de librairies très variés qui sont basés dessus semble tout de même un peu moins évident, c'est indéniable.

    Ou alors on peut espérer une couche "ciment" pas trop lourde permettant l'utilisation de code java sans trop de douleur.

  14. #14
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Citation Envoyé par _skip Voir le message
    Ou alors on peut espérer une couche "ciment" pas trop lourde permettant l'utilisation de code java sans trop de douleur.
    Pour JavaFX, le bridge on l'attend encore un pont avec Java devrait être une exigence de base voire essentielle pour un langage qui repose sur la JVM !

  15. #15
    Membre régulier
    Homme Profil pro
    http://tuatini-godard.me/
    Inscrit en
    Décembre 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : http://tuatini-godard.me/

    Informations forums :
    Inscription : Décembre 2010
    Messages : 70
    Points : 93
    Points
    93
    Par défaut
    Bel effort mais je ne pense pas qu'il remplacera java. Déjà pour les libs, java en aura assimilé beaucoup trop (en 15 ans d'existence) que Celion qui vient de voir le jour. Je ne voit pas trop l'utilité d'un langage pareil si ce n'est que de se prémunir contre une éventuelle "mauvaise action" sur le langage Java par Oracle. En même temps les gens disaient la même chose sur Java à ses débuts, comparé à C++. Et maintenant Java est bien plus utilisé que C++ alors qui sait pour celion?

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si ça a du succès, je m'y mettrais.... dans 15 ans :aie

  17. #17
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 653
    Points : 3 773
    Points
    3 773
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    l'effort est louable, mais je ne pense pas que ce langage apporte suffisamment de nouveauté (de fait il ne fait que récupérer des idées à droite et à gauche) pour percer.
    C'est d'ailleurs bizarre qu'il ne parle pas du typage fort ou faible. Beaucoup se plaignent du typage fort de Java, non ?

    Citation Envoyé par jayfaze Voir le message
    Donc un langage qui n'aura que des qualités ?
    C'est pas la premiere fois que j'entends ca ....
    Toujours sur le typage fort ou faible :
    • En Java, le typage fort est mal considéré.
    • En JavaScript, le typage faible est mal considéré aussi.


    Donc même en prenant parti pour l'un ou l'autre, ça n'ira pas quand même et ce sera un défaut.

    Citation Envoyé par thelvin Voir le message
    Encore un ? Mais ils sont numéro combien, dans la liste des langages qui cherchent à faire exactement ça ? #3 ? #4 ?
    +1. Un seul de ces langages suffirait (Groovy par exemple).
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  18. #18
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 558
    Points : 15 481
    Points
    15 481
    Par défaut
    La présentation de ce langage ne m'a pas convaincu. il alterne les bonne idéees(contrôle des null, immutabilité par défaut, pas de primitifs, ...), les incompatibilités avec la syntaxe java qui n'apportent rien(propriétés, méthodes top niveau, changement de certains mots clés,...) et de vraies mauvaises idées (pas de surcharge, ...)

    Citation Envoyé par air-dex Voir le message
    C'est d'ailleurs bizarre qu'il ne parle pas du typage fort ou faible. Beaucoup se plaignent du typage fort de Java, non ?
    Au contraire, ils précisent bien que le typage statique est à leurs yeux un des plus gros avantage de Java.
    Je suis tout a fait d'accord avec eux. Pour moi le typage dynamique devrait être réservé aux langages de script (et encore).

    A part quelques débutants qui ne comprennent pas a quoi sert le typage, je n'ai jamais entendu personne se plaindre du typage statique de Java.

  19. #19
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Uther Voir le message
    et de vraies mauvaises idées (pas de surcharge, ...)
    Au niveau des constructeurs c'est une très mauvaise idée. J'ai du mal à comprendre ce que cela peut apporter si ce n'est des limitations inutiles...





    Mais au niveau des méthodes c'est différent, puisque cela simplifie grandement la résolution des appels de méthode.

    Actuellement on utilise la surcharge dans 3 principaux cas :


    • Pour simuler les paramètres optionnels (chaque méthode rajoute un paramètre supplémentaire), comme par exemple avec String.indexOf() :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      public int indexOf(String str)
      public int indexOf(String str, int fromIndex)
    • Pour accepter aussi bien les objets que les types primitifs (une méthode pour Object et une pour chaque type primitif), comme par exemple avec println() :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      public void println(boolean b)
      public void println(char c)
      public void println(int i)
      public void println(long l)
      public void println(float f)
      public void println(double d)
      public void println(Object obj)
    • Pour accepter un certains nombres de types différents et bien précis, comme par exemple pour ImageIO.read() :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      public static BufferedImage read(File input)
      public static BufferedImage read(ImageInputStream stream)
      public static BufferedImage read(InputStream input)
      public static BufferedImage read(URL input)



    En supprimant les types primitifs et la surcharge, on peut utiliser les paramètres optionnels pour couvrir les 2/3 des cas :

    • On ne simules plus les paramètres optionnels puisqu'on peut les utiliser directement :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public int indexOf(String str, int fromIndex=0)
      Et c'est plus propre au niveau de l'API (une seule méthode à définir et documenter). Et comme il n'y a pas de surcharge c'est bien plus facile à gérer et à faire évoluer...

    • On peut se contenter d'une seule et unique méthode pour accepter tout :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public void println(Object obj)
      En effet comme il n'y a plus de type primitif, plus besoin de les gérer à part



    En fait il n'y a que le dernier cas qui ne soit plus possible directement (méthode de même nom mais avec paramètre différent). Mais dans ce cas là il est tout à fait correct de renommer les méthodes sans que ce ne soit choquant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static BufferedImage readFile(File input)
    public static BufferedImage readImageStream(ImageInputStream stream)
    public static BufferedImage readStream(InputStream input)
    public static BufferedImage readURL(URL input)

    a++

  20. #20
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 558
    Points : 15 481
    Points
    15 481
    Par défaut
    En effet je parlais de la surcharge en général.

    L'absence de surcharge sur les méthodes est en effet surmontable, mais si on gère la surcharge pour les constructeurs, je ne vois pas pourquoi ne pas le faire sur les méthodes.

Discussions similaires

  1. Ceylon : le langage pour la JVM de Red Hat sort en version 1.1
    Par Hinault Romaric dans le forum Autres
    Réponses: 9
    Dernier message: 16/10/2014, 09h58
  2. Réponses: 21
    Dernier message: 30/05/2012, 17h21
  3. Ceylon : un nouveau langage pour la JVM
    Par _skip dans le forum Actualités
    Réponses: 1
    Dernier message: 14/04/2011, 06h51
  4. Réponses: 32
    Dernier message: 26/03/2010, 10h22

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