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

Débats sur le développement - Le Best Of Discussion :

Java 11 : migrer ou changer de langage


Sujet :

Débats sur le développement - Le Best Of

  1. #41
    Membre émérite
    Citation Envoyé par Anselme45 Voir le message
    Tôt ou tard avec Oracle, tout deviendra payant!
    D'ailleurs de nombreux exemples le prouvent, OpenJDK, NetBeans, GlassFish, Java EE, Java Mission Control... Ah non, en fait, c'est le contraire, Oracle a quasiment rendu open-source tout son porte-feuille Java!

    Alors, il est, me semble-t-il, inutile de vouloir se faire une formation accélérée de "juriste émérite"... Autant utiliser son temps de développeur à trouver une alternative à Java pour le futur!
    Sans chercher a comprendre l'ecosysteme et en ne se basant que sur ses impressions ou ressentiments, on manque de lucidite et on fait des mauvais choix technologiques et strategiques, qui ne sont pas rentables voire dangeureux a long terme.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  2. #42
    Modérateur

    Citation Envoyé par Mickael_Istria Voir le message
    D'ailleurs de nombreux exemples le prouvent, OpenJDK, NetBeans, GlassFish, Java EE, Java Mission Control... Ah non, en fait, c'est le contraire, Oracle a quasiment rendu open-source tout son porte-feuille Java!
    Je ne connais pas bien les dates exactes, mais il me semble bien que c'est Sun Microsystems qui a rendu tout ça open-source, avant le rachat par Oracle.


    Revenez au bon vieux C, un monde dans lequel personne ne cherchera à vous en*@!###.

    Ah non ! C'est vrai, vous ne pourriez plus.
    Je suis développeur C, donc si, je pense pouvoir. Par contre, je sais aussi reconnaître les limites d'un langage, et les interfaces web en C, c'est quand même pas la panacée.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #43
    Membre à l'essai
    D'après ce que je peux comprendre, au travers des différentes réponses postées , pas de soucis si on utilise OpenJDK (ce qui est mon cas).
    Je vais donc continuer à développer dans ce merveilleux langage

  4. #44
    Membre chevronné
    A la base je vais suivre ce que les DSI et les recruteurs voudront.

    Je me dis que C# peut être une alternative.
    J'en ai pas fait beaucoup.
    Mais les condtions boucles varriables,... ça ne change pas d'un langage à l'autre

    Le plus dur ce n'est pas de réapprendre un langage mais toutes ces API et outils spécifiques.

    Ce qui me pose problème avec Python c'est qu'il n'y a pas d'accolades
    En Java j'ai tellement l'habitude de faire l'indentation automatique avec le raccourcis clavier ctrl maj i d'Eclipse
    A la rigueur faire attention ou mettre des commentaire //fin if //fin while comme enpascal

    Ca existe pas un python avec accolades ?
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  5. #45
    Membre actif
    Citation Envoyé par CoderInTheDark Voir le message
    Ce qui me pose problème avec Python c'est qu'il n'y a pas d'accolades
    En Java j'ai tellement l'habitude de faire l'indentation automatique avec le raccourcis clavier ctrl maj i d'Eclipse
    A la rigueur faire attention ou mettre des commentaire //fin if //fin while comme enpascal

    Ca existe pas un python avec accolades ?
    Non, et en ce qui me concerne, tant mieux…

    J'ai eu la première remarque de ce type dès la première présentation de Python que j'ai faite en interne dans une SSII spécialisée Java. Ça, et le coté dynamique, le fait que les "bogues" ne se verraient pas à la compilation mais à l'exécution. Cette remarque/question, je l'ai également régulièrement en formation. Et j'ai toujours la même observation : cette demande vient d'un manque de rigueur à l'écriture du code. Rigueur à deux niveaux : maitriser ce que l'on écrit (en Python, le for/else est assez… intéressant) mais surtout écrire afin d'être relu.

  6. #46
    Expert confirmé
    L'absence des accolades est la pire excuse pour ne pas se mettre au Python.
    En Python, dire que l'on ne voit les erreurs qu'à l'exécution n'est pas tout à fait vrai.
    Le vrai problème du Python, ce sont les performances.

    Je vais détailler le deuxième point.

    Ne voir les erreurs qu'à l'exécution serait un problème embêtant, surtout quand une bête étourderie se trouve en dehors du happy path. Je fais parfois des fautes de frappe et je rejette l'argument de "y'a qu'à être rigoureux". Je fais attention à l'algorithmie mais je ne vais pas relire très lentement caractère par caractère pour être sûr qu'il ne reste pas la moindre faute de frappe.

    Heureusement, en Python, il existe des outils d'analyse statique de code. Par expérience, mypy et Pylint détectent assez bien les étourderies d'utilisation de variables ou fonctions qui n'existent pas.

    En plus, si on utilise les annotations de type, alors mypy peut vérifier les types. mypy gère aussi le sous-typage.
    Par exemple, voici un code en Python 3.6 qui s'exécute, mais qui est rejeté par mypy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import abc, os
    
    class A(metaclass=abc.ABCMeta):
    	@abc.abstractmethod
    	def foo(self, x: int) -> None: pass
    
    # Définition d'une classe B qui dérive de A :
    class B(A):
    	def foo(self, x : int) -> None:
    		print(2*x)
    	def bar(self, x : int) -> None:
    		print(5*x)
    
    if __name__ == '__main__':
    	obj : A = B()          # obj est de type A et pointe vers une instance de B.
    	obj.foo('test')        # Erreur selon mypy, car 'test' n'est pas un entier.
    	obj.foo(10)            # OK
    	obj.bar(10)            # Erreur selon mypy, car bar n'est pas une méthode de A.
    	if isinstance(obj, B):
    		obj.bar(10)        # OK : dans ce if, obj est de type B.
    	os.system('pause')

  7. #47
    Membre actif
    Citation Envoyé par Pyramidev Voir le message
    L'absence des accolades est la pire excuse pour ne pas se mettre au Python.
    Moi j'aime bien cette excuse. Elle fait tout de même que même si Python est accessible, on a une part de développeurs compétents beaucoup plus importante qu'une techno comme Java pour les projets plus complexes.

    Ne voir les erreurs qu'à l'exécution serait un problème embêtant, surtout quand une bête étourderie se trouve en dehors du happy path. Je fais parfois des fautes de frappe et je rejette l'argument de "y'a qu'à être rigoureux". Je fais attention à l'algorithmie mais je ne vais pas relire très lentement caractère par caractère pour être sûr qu'il ne reste pas la moindre faute de frappe.
    Rigueur et attention sont deux choses différentes. La plupart des fautes de frappe seront identifiées par l'analyse syntaxique. Cependant, il reste des structures qui ne peuvent être repérées par les outils d'analyse. Si ma_fonction est une fonction, value = ma_fonction n'est pas faux, mais le contenu de value ne sera pas ce qui est attendu. Idem pour les for/else sachant que si on utilise cette structure, il y a un if avant et la tentation de la correction pour avoir un if/else est grande…

    Dans ma vie d'expert Java, j'ai vu de nombreux collègues confondre compilateur et validateur.

    Enfin, je me répète, mais une rigueur d'écriture concerne également la rédaction de code lisible.

  8. #48
    Membre chevronné
    Citation Envoyé par dad3zero Voir le message
    Non, et en ce qui me concerne, tant mieux…

    J'ai eu la première remarque de ce type dès la première présentation de Python que j'ai faite en interne dans une SSII spécialisée Java. Ça, et le coté dynamique, le fait que les "bogues" ne se verraient pas à la compilation mais à l'exécution. Cette remarque/question, je l'ai également régulièrement en formation. Et j'ai toujours la même observation : cette demande vient d'un manque de rigueur à l'écriture du code. Rigueur à deux niveaux : maitriser ce que l'on écrit (en Python, le for/else est assez… intéressant) mais surtout écrire afin d'être relu.
    ****
    Je suis d'accord pour le manque de rigueur.
    C'est juste que de faire l'indentation automatique ça permet d'aller plus vite

    A ce propos je me voulais savoir
    si on ajoute une ligne à l'intérieur d'un bloque l'éditeur est-il assez malin pour faire la bonne indentation ?
    Parce que une ligne avec une tabulation en plus ou en moins dans un bloque ce ne serait pas logique
    Si oui Dans ce cas il faut juste se méfier des lignes en début et en fin de bloques alors.

    Un exemple de manque de rigueur avec accolade
    Ca m'agace le code sans accolade en Java.
    Sous prétexte qu'on peut se passer d'accolade si le bloque n'a qu'une seule ligne.
    On prend le risque qu'il y est un ajout plus tard et que le code ajouté s'éxécutte tout le temps
    On peut se faire avoir.
    Alors dans ce cas qui manque de rigueur celui qui n'a pas mis d'accolades ou celui qui ajouté la ligne sans faire attention .

    L'absence d'accolade en python c'est surtout que lorsque on ne voit pas les tabulations se contrôle surtout avec les yeux, moi je dois avoir la main droite presque en permanence sur la plage braille pour m'assurer que les tabulations sont là.

    Alors quand on saisit un if for while ....
    l'éditeur met il la tabulation qu'il faut §?

    Ce qui m'intéresse avec Python c'est que le lecteur d'écran libre NVDA, permet de développer des plugins en Python pour améliorer l'accessibilité d'un logiciel
    Il propose même une console python

    J'ai essayé rapidement avec notepad++ mais
    Pour l'instant Python n'est pas une priorité.

    J'y ai aussi pensé car j'ai fait du Perl, pour automatiser des tâches d'administration pour un site PHP
    J'ai l'impression qu'Il y a des points communs.

    J(ai trouvé la boucle for une peu verbeuse.

    Je pense que la prochaine fois je prendrai un vrai outil Python, Eclipse Python est toujours d'actualité ?
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  9. #49
    Membre actif
    Je vois deux réponses au post précédent, je commence par le cas particulier :

    Citation Envoyé par CoderInTheDark Voir le message

    moi je dois avoir la main droite presque en permanence sur la plage braille pour m'assurer que les tabulations sont là.
    Évidement, à aucun moment, je n'avais considéré le cas des mal-voyants…
    J'admet que j'ignore le comportement coté accessibilité. Ne pouvant me représenter l'usage de ces outils, mon argumentaire est évidemment axé usage de l'écran.

    En essayant de faire abstraction de l'interface


    A ce propos je me voulais savoir
    si on ajoute une ligne à l'intérieur d'un bloque l'éditeur est-il assez malin pour faire la bonne indentation ?
    […]
    Si oui Dans ce cas il faut juste se méfier des lignes en début et en fin de bloques alors.
    Les outils de type IDE ou assimilés qui prennent en charge Python gèrent évidemment l'indentation automatique tout comme la conversion tabulation/espaces (aa PEP8 impose 4 espace, important pour les outils visuels où le caractère tabulation est invisible…).

    Et évidemment, la première ligne suivant la déclaration de bloc (il n'y a pas d'accolade, mais un bloc est déclaré par une ligne se finissant par deux point () est automatiquement indentée. En fait, il ne faut faire attention qu'à la dernière ligne, mais si l'instruction suivante est évidente, cas d'un else par exemple, là aussi l'IDE désindente automatiquement.

    J'y ai aussi pensé car j'ai fait du Perl, pour automatiser des tâches d'administration pour un site PHP
    J'ai l'impression qu'Il y a des points communs.

    J(ai trouvé la boucle for une peu verbeuse.
    En se basant sur le fait que la boucle for est destinée au parcours de collections, non. Pour un comptage, oui.

    Eclipse Python est toujours d'actualité ?
    Eclipse + PyDev fait le minimum. Mais je ne connais aucun dev Python qui n'ai pas basculé sous PyCharm, la Community est suffisante.

  10. #50
    Membre confirmé
    Java payant ? Je n'ai jamais eu à payer pour utiliser Java ou produire des applications et je ne pense pas que ça risque de changer de sitôt.

  11. #51
    Modérateur

    Ce n'est pas le langage en tant que tel qui devient payant, mais le support (c'est à dire les correctifs) de la JVM d'Oracle à partir de Java 11, si tu veux rester en Java 8.

    Merci pour tous vos commentaires, j'ai clos le sujet car je pense qu'on a fait le tour de la question, mais n'hésitez pas à continuer de débattre si vous avez d'autres choses à dire
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  12. #52
    Nouveau membre du Club
    Citation Envoyé par gangsoleil Voir le message
    Ce n'est pas le langage en tant que tel qui devient payant, mais le support (c'est à dire les correctifs) de la JVM d'Oracle à partir de Java 11, si tu veux rester en Java 8.

    Merci pour tous vos commentaires, j'ai clos le sujet car je pense qu'on a fait le tour de la question, mais n'hésitez pas à continuer de débattre si vous avez d'autres choses à dire
    Oui oui...c'est pour ça que les commerciaux Oracle avec qui on fait affaire nous ont bien dit qu'en septembre , il allait annoncer que:

    -les installations des JVM oracles seront aussi soumises à licences payantes (quelque soit la situation)
    -le prix de la licence contiendra le support

    Ca veut bien dire que hors implémentation OpenSource, toute utilisation du JDK "officiel" sera payant.
    Quand on sait que certains système sont pauvre en implémentation OpenJDK (windows par exemple), ça laisse peu de choix pour utiliser les dernières nouveauté du langage ! Dans ce cas, le raccourcis "java=payant" est largement vrais

    Heureusement qu'il reste quelques implémentations OpenSource (je migre en ce moment vers la version Azul)

  13. #53
    Nouveau membre du Club
    Citation Envoyé par Matthieu76 Voir le message
    Je ne code plus en Java depuis longtemps mais je pense vraiment que language le plus proche de Java est le C#. Personnellement, je ne vois quasiment aucune différence entre ces 2 langages à s'exception que C# n'est utilisable pratiquement que sous Windows mais bon pour faire des logicielles d'entreprise ou perso cela fait largement l'affaire, je préfère même au java.

    Beaucoup de gens se plaignent que le C# est propriétaire Microsoft mais en vrai cela ne change pas grand-chose.
    J'aimais bien le C#....mais depuis que j'ai connu certaines API java, dur de s'en passer.

    Si quelqu'un a un équivalent à du Spring boot pour du microservice dans un autre language (avec les facilités de design , annotation, etc...) je suis preneur...

  14. #54
    Membre émérite
    toute utilisation du JDK "officiel" sera payant.
    C'est justement cette perception qu'il faut changer. Depuis OpenJDK, l'OracleJDK n'est pas du tout le JDK officiel.

    Quand on sait que certains système sont pauvre en implémentation OpenJDK (windows par exemple)
    Sur https://adoptopenjdk.net/ , on voit que les 3 dernieres version d'OpenJDK (avec les 2 variantes Hotspot/OpenJ9) fournissent un build Windows. Le support est le support communautaire via les bug trackers d'OpenJDK et d'AdoptOpenJDK.
    Il y a aussi Zulu comme tu l'a mentionne
    Sur https://developers.redhat.com/produc...njdk/download/ , il y a aussi un build Windows gratuit pour les environnements de dev.
    Il me semble que si tu deploies sur Azure, Microsoft fournit un JDK sur ses noeuds Windows.

    Ca fait quand meme beaucoup de solutions, et a mon avis bien trop pour dire que l'offre sur Windows est pauvre! Il faut juste se sortir de la tete que Java == Oracle et d'un coup un univers merveilleux apparait.

    Rien ne t'empeche de faire ton build d'OpenJDK. D'ailleurs, si tu tournes toujours le meme genre d'applis sur le meme genre de machine, c'est pas si mal en fait.
    Et aussi, il ne faut pas oublier https://hub.docker.com/_/openjdk/ , qui est une distribution OSS et sans contrainte d'un build OpenJDK; raison de plus pour utiliser Docker!
    Et celles que tu trouves dans la plupart des distros Linux, raison de plus pour utiliser Linux!

    Dans ce cas, le raccourcis "java=payant" est largement vrai
    Bah non du coup.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  15. #55
    Membre averti
    Citation Envoyé par Tagashy Voir le message
    OWL2+python
    effectivement on trouve pas je connais même pas ce que c'est cette chose mais ça se trouve.
    Peut-être que si tu avais passé 2 minutes à te documenter https://www.w3.org/TR/owl2-overview/ tu aurais compris que les résultats du moteur de recherche montrent qu'il n'existe rien en python dans ce domaine.
    Il y a une grosse différence entre simplement représenter la donnée dans un format OWL-XX et raisonner dessus. Les différences sont encore plus grandes entre les types de raisonnements OWL-XX.
    OWL-RL ne permet pas de faire ce que OWL2 (OWL-DL) permet.

    La recherche Google que tu proposes met en avant : https://pypi.org/project/Owlready2/ .
    Essentiellement de l'interprétation RDF-Sparql, est bien en dessous de OWL2.
    Cette lib utilise Hermit (raisonneur 100% java) pour faire le boulo (http://www.hermit-reasoner.com/java.html)

    Hermit n'est en compétition que avec d'autre libs en Java (JFact, Pellet/Openllet) et une lib en C++ et là je viens de faire le tour des outils dispo.


    Je ne dit pas que RDF/Sparql sont de mauvais outils, ils ont leur propre points forts et je les utilises aussi en complément des raisonneurs OWL2 (notamment Virtuoso/Jena/Rdf4j).

  16. #56
    Invité
    Invité(e)
    Cool. Pas de panique. Pas de parano.
    1/ Pour une implémentation Java Oracle, seule une version LTS déprécie une autre version LTS (pas de quoi fouetter un chat, c'est souvent le cas chez des boites qui font de l'open source de faire payer le support, certaines même dès la première version cf. Redhat,). Quoi qu'il en soit de grosses sociétés sont souvent intéressées de pouvoir bénéficier d'un véritable support, certes payant mais qui ne repose pas sur le bon vouloir de qq généreux contributeurs, mais sur un véritable contrat de service. Donc tant mieux pour elles.

    2/ Pour les autres, il existe depuis plusieurs années Open JDK, une version Open Source (GPL) de Java qui est de plus l'implémentation de référence.
    Comme dans n'importe quel projet Open Source, rien n'empêche les développeurs de reporter si nécessaire les patchs récents dans les plus anciennes versions de Java
    C'est d'autant plus vrai, que c'est déjà le cas - https://icedtea.classpath.org/wiki/Main_Page (supporté entre autres par RedHat)

    3/ Et pour les plus grincheux, qui n'aiment ni Oracle, ni l'Open Source, il existe aussi d'autres implémentations plus ou moins open source de Java (ibm, azul, etc)

    Dans ma boite on est Open JDK depuis 2 ans. Cela fonctionne très bien depuis la v8. Il n'y a donc aucune raison changer à cause de la license vers un autre langage open source.

    Pour Microsoft (c#). Même combat. Pas plus confiance en Oracle qu'en Microsoft.
    Donc utilisez uniquement de l'open source avec des contributeurs multiples.

  17. #57
    Membre régulier
    Hello,

    Concernant le support payant, ça veut surtout dire que rester sur des versions dépréciées va commencer à couter de l'argent. Ce sera donc un bon argument pour nous développeurs/architecte d'obtenir des budgets pour porter nos applications en temps et en heurs vers les versions récentes de Java. Cela forcera la disparition des versions dépréciées beaucoup plus rapidement.

  18. #58
    Membre éclairé
    Normalement , ta source écrite en Java 1.2 , est comprise par le compileur Java 10 . Il faut juste la mettre au gout du jour du fait des fonctionnalités apparu entre temps , TON BUDGET , n 'est pas justifiable

  19. #59
    Expert confirmé
    Citation Envoyé par darklinux Voir le message
    TON BUDGET , n 'est pas justifiable
    Faut quand même:

    -Installer sur les postes des devs
    -Valider que ça compile (vu que les récentes JRE ont retiré des packages, JAXB par exemple)
    -Installer et modifier la configuration des CIs
    -Planifier l'installation pour gérer en temps de maintenance.
    -Déployer la jre sur les machines
    -Faire un minimum de tests de régression
    -Faire des tests de perf
    -Et accessoirement former les devs sur les nouvelles fonctionnalités.

    Tout ça n'est pas gratuit
    Play50HZ, le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  20. #60
    Modérateur

    Citation Envoyé par darklinux Voir le message
    Normalement , ta source écrite en Java 1.2 , est comprise par le compileur Java 10
    Justement non, ils ont enlevé des choses (corba, applets, java web start, ...), ce qui fait que si tu les utilises, tu es obligé de changer ton code. Et vu le chemin qu'ils prennent, il ne serait pas surprenant que ce genre de surprises arrive sur d'autres LTS dans le futur, donc si, il y a des chances pour que les budgets doivent suivre, que ce soit pour payer les licences ou bien faire le portage.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

###raw>template_hook.ano_emploi###