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

Java Discussion :

Java 8 est disponible, la plate-forme se met aux expressions lambdas


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Citation Envoyé par tomlev Voir le message
    Sauf que tu peux implémenter plusieurs interfaces, alors que tu ne peux hériter que d'une seule classe...
    +1
    Sans oublier que les classes abstraites peuvent avoir un état via leurs attributs, alors que les méthodes par défaut ne peuvent que se baser sur le contrat de l'interface.


    Bref les interfaces continueront toujours de définir un contrat.
    Les méthodes par défaut pourront proposer des implémentations partielles basé sur ce contrat.

    Les classes (abstraites ou pas) permettent toujours de définir une implémentation concrète, en gérant un état via les attributs...




    Maintenant c'est sûr que les méthodes par défaut pourront remplacer avantageusement certains classes abstraites qui ne géraient pas d'état (je pense pas exemple à AbstractCollection).




    L'autre force des méthodes par défaut, c'est surtout de pouvoir faire évoluer les interfaces existantes !
    L'interface Map gagne une bonne dizaine de méthode

    a++

  2. #2
    Membre éprouvé
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 505
    Billets dans le blog
    3
    Par défaut
    Java 8, je te passe la bague au doigt... Enfin j'aimerais, mais hélas je dois faire attention à ce que mes programmes tournent encore sous Java 6 au boulot... Mais bon Dieux ce que ça me démange d'y passer ! {>.<}
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 919
    Billets dans le blog
    54
    Par défaut
    Le JDK 8 u5 est disponible depuis le 15 avril. Cette mise à jour ne contient que des correctifs liés à la sécurité.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Par défaut Types fonctionnels
    L'usage des interfaces comme types fonctionnels introduit malgré tout une certaine lourdeur syntaxique lors de l'appel d'une fonction. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function<String, String> laPuissanceDeLaFonc = String::toUpperCase;
     
    System.out.println( laPuissanceDeLaFonc.apply("tion") );    // TION
    C'est le passage par cette méthode intermédiaire qui n'est pas trop naturel. (cf. argumentation détaillée sur http://au.arena.free.fr/blog/index.p...fonctionnelles )

    On aurait plutôt attendu qqch comme laPuissanceDeLaFonc("tion") comme en CAML ou Scala par exemple. Mais bon... en contrepartie les méthodes par défaut des interfaces du package 'java.util.function' apportent des mécanismes intéressants comme des types composés (ex: méthodes andThen ).

  5. #5
    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
    Citation Envoyé par aurelien360 Voir le message
    C'est le passage par cette méthode intermédiaire qui n'est pas trop naturel. (cf. argumentation détaillée sur http://au.arena.free.fr/blog/index.p...fonctionnelles )

    On aurait plutôt attendu qqch comme laPuissanceDeLaFonc("tion") comme en CAML ou Scala par exemple.
    Je peux comprendre que cela puisse "choquer" si on est habitué à utiliser des langages comme CAML ou Scala qui intègre ces notions...

    Tu peux peut-être trouver cela "pas trop naturel", mais c'est juste la manière dont on appelle une méthode en Java.
    Ton laPuissanceDeLaFonc("tion") est peut-être plus court, mais il en devient aussi plus ambigüe...


    Ce choix d'implémentation est justement un des points que j'apprécie particulièrement dans les lambda de Java :
    • Très peu de modification syntaxique (si ce n'est la déclaration de la lambda en elle même bien sûr).
    • Pas de "type-fonction", donc pas de nouveau type à gérer, et pas de distinction entre un "type-fonction" et un objet.
    • Et donc une rétrocompatibilité implicite avec un grand nombre de librairie existante, puisque le concept d'interface fonctionnelle existait déjà même si on ne le nommait pas.



    a++

  6. #6
    Nouveau candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Ce choix d'implémentation est justement un des points que j'apprécie particulièrement dans les lambda de Java :
    • Très peu de modification syntaxique (si ce n'est la déclaration de la lambda en elle même bien sûr).
    • Pas de "type-fonction", donc pas de nouveau type à gérer, et pas de distinction entre un "type-fonction" et un objet.
    • Et donc une rétrocompatibilité implicite avec un grand nombre de librairie existante, puisque le concept d'interface fonctionnelle existait déjà même si on ne le nommait pas.
    1)Assez d'accord avec les points ci-dessus. Il est certain que "en contexte" (contraintes de compatibilité, introduction d'un nouveau paradigme sur un paradigme existant...), ces choix se défendent probablement. J'ajouterai encore et en plus l'intérêt des méthodes par défaut qui embarquées au niveau des types fonctionnels.

    2)Dans l'absolu cette fois, ce n'est pas tant la comparaison syntaxique avec d'autres langages comme Scala ou CAML mais plutôt la divergence conceptuelle avec la théorie derrière (lambda calcul ou simplement en math). Une fonction n'est pas définie et manipulée de cette manière.

    CONCL: Je pense que ces deux remarques se défendent de manière légitime.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par aurelien360 Voir le message
    L'usage des interfaces comme types fonctionnels introduit malgré tout une certaine lourdeur syntaxique lors de l'appel d'une fonction. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function<String, String> laPuissanceDeLaFonc = String::toUpperCase;
     
    System.out.println( laPuissanceDeLaFonc.apply("tion") );    // TION
    C'est le passage par cette méthode intermédiaire qui n'est pas trop naturel. (cf. argumentation détaillée sur http://au.arena.free.fr/blog/index.p...fonctionnelles )

    On aurait plutôt attendu qqch comme laPuissanceDeLaFonc("tion") comme en CAML ou Scala par exemple. Mais bon... en contrepartie les méthodes par défaut des interfaces du package 'java.util.function' apportent des mécanismes intéressants comme des types composés (ex: méthodes andThen ).
    Je développe en C#, où les delegates s'utilisent aussi avec la syntaxe laPuissanceDeLaFonc("tion") (en réalité c'est juste un raccourci syntaxique pour laPuissanceDeLaFonc.Invoke("tion")), mais l'approche choisie par Java ne me choque pas. C'est un peu moins concis, mais ça a l'avantage de montrer clairement ce que fait la fonction, même si le développeur a choisi un nom de variable pas très clair.

Discussions similaires

  1. Quelle API Java pour un jeu de plate forme 2D ?
    Par dawadam dans le forum API graphiques
    Réponses: 0
    Dernier message: 16/06/2011, 22h25
  2. [java] Moteur de jeu de plate-forme
    Par luckyvae dans le forum Projets
    Réponses: 12
    Dernier message: 15/08/2007, 22h06
  3. Message: 'ce symbole est propre à une plate-forme'
    Par neho88 dans le forum Delphi
    Réponses: 4
    Dernier message: 18/10/2006, 15h14

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