Java, pour les applications portables - pas toujours gratuit

Java Logo by Scriptol.com

Java est maintenant un des langages de programmation les plus utilisés, principalement sur les réseaux ou pour les services web.
Il est la propriété d'Oracle depuis 2009 mais a été élaboré par les programmeurs de Sun en 1995, en réaction à l'incompatibilité entre les trop nombreux systèmes et librairies utilisés par l'entreprise. La première version, dénommée Oak, était ciblée vers les systèmes embarqués, mais sans succès.L'émergence d'Internet donna au langage sa chance.

Il a été bâti sur la syntaxe de C++ pour rester familier aux programmeurs, mais supprime de nombreux défauts de ce langage. Utiliser Java plutôt que C++ améliore la productivité grâce au langage mais aussi sa collection standard complète d'APIs, graphiques et autres.
Les programmes Java sont plus lents qu'en C++, et prennent un bon moment à se charger, mais ils fonctionnent sous Windows, Linux, Mac, etc.... La vitesse de la JVM a toutefois été considérablement améliorée au cours du temps.

On peut aussi utiliser d'autres langages comme Scala ou un outil d'interface comme JavaFX pour améliorer la productivité, ils fonctionnent sur la JVM et utilisent les bibliothèques de Java.
Java n'est pas le langage le plus sûr: selon le rapport annuel de sécurité de Cisco, 91% des attaques virales sur les ordinateurs en 2013 l'on été par l'intermédiaire des logiciels en Java, mais à travers des applets dans le navigateur.

Java a été utilisé en temps en conjonction avec d'autres langages comme PHP. On pouvait Invoquer Java à partir de ce langage pour utiliser son API. Ce n'est plus possible depuis PHP 5, et par ailleurs, comme montré dans la section JavaScript, on peut faire mieux avec Node.js.

Les applications pour mobiles sous système Android se programment essentiellement en Java, où il est compilé pour la machine virtuelle Dalvik.

Donc on peut utiliser Java:

  1. Pour la portabilité, il fonctionne sur le bureau, les serveurs, les mobiles et virtuellement tout système d'exploitation.
  2. Pour la JVM qui accueille aussi de nombreux autres langages.
  3. Pour disposer d'un API très étendue.

Depuis le jugement du 9 mai 2014 du circuit fédéral des USA, l'API Java est considéré sous copyright. Un jugement qui peut s'étendre à d'autres API. On ne peut donc utiliser librement la bibliothèque sans être dépendant du propriétaire. Les API ne peuvent faire l'objet de copyright en Europe et dans la plupart des autres pays.

Un successeur de C sans les défauts de C++

Le langage a été conçu pour succéder à C en remplaçant sans les inconvénients hérités dans C++ ou ajoutés à celui-ci.

Exemple de code

Afficher les lettres d'un texte.

String s = new String("demo");
for(int i = 0; i < s.length(); i++)
{
   char c = s.charAt(i);
   System.out.print(c);
} 

Les pièges d'Oracle

En 2016, Oracle a tout à coup décidé d'auditer les utilisateurs de Java SE et certains d'entre eux ont été informés qu'ils devaient payer 30 000 dollars de droits de licence! Source The register. (Anglais).
Cela ne concernait pas les utilisateurs du runtime JRE, celui-ci n'existe plus depuis la version 11 de Java.
Il est préférable donc d'utiliser OpenJDK plutôt que le JDK fourni sur le site officiel ou par RPM, car on se rendra compte seulement après avoir ce dernier en production que c'est un logiciel payant: Les commerciaux d'Oracle viendront vous le rappeler.
L'OpenJDK est gratuite et vous pouvez utiliser différent langages sur la JVM avec cette bibliothèque. Il n'y a pas de différence entre Oracle JDK 11 et OpenJDK 11 autre que la licence.

En avril 2019, Oracle a transféré la maintenance d'OpenJDK 8 et 11 à Red Hat tout en continuant de contrôler les versions plus récentes. Red Hat ayant été auparavant rachetée par IBM, cela assure à cette dernière la pérénité de ses produits réalisés en Java. Parmi les autres entreprises importantes ayant migré sous OpenJDK, on peut citer Amazon et Alibaba.

Selon une étude réalisée par New Relic et publiée le 26 avril 2022, Java Oracle représentait 75% du parc des installation en 2020. Il ne représente que 34,5% en 2022. La distribution Amazon représente maintenant 22% des installations.


Les versions Corretto et Microsoft

En réponse aux velléités d'Oracle de faire payer les utilisateurs de Java sur le cloud, Amazon, un des premiers acteurs sur le marché avec AWS a riposté en lançant Corretto, sa propre version de la JRE (Java Runtime Environnement) basée sur OpenJDK.

Puis le procès Oracle contre Google, qui s'est terminé par une victoire de Google a ouvert la voie aux développeurs avec la clarification sans recours par la justice américaine que l'utilisation des API, Java ou autres, était équitable et donc sans droits à payer.

Pour concurrencer Amazon, plus qu'Oracle qui est un fournisseur mineur, Microsoft a décidé de lancer en avril 2021 sa propre version de Java sous le nom de Microsoft Build of OpenJDK. Cette distribution est entièrement gratuite pour les entreprises et disposera d'un support à long terme.

EDIs et outils pour Java

Depuis sa version 3.7 Eclipse intégre un nouveau système de création d'interface utilisateur graphique, racheté par Google et offert à la fondation, WindowBuilder.
Comme Dreamweavers, WindowBuilder dispose de la génération de code bi-directionelle, autrement dit ce que l'on construit en mode visuel se traduit en dans le code source et ce que l'on écrit dans le code source se traduit en mode graphique, cela instantanément sans avoir à réafficher la page. Il supporte SWT et Swing.

Depuis la 6.9 Apache NetBeans offre un designer visuel pour JavaFX. Ce langage est conçu pour créer facilement des interfaces graphiques en Java, avec une approche plus visuelle. La nouvelle version de l'éditeur NetBeans lui offre un outil de développement graphique.
Elle permet aussi de programmer en PHP, C++, JavaScript et même d'éditer du HTML 5 et du CSS.

IntelliJ IDEA est similaire à NetBeans, il offre plusieurs licences selon le type d'application. C'est un outil simple et complet pour Java, JavaFX et autres langages, et applications mobiles. Assistance à la programmation HTML 5 et autres dont Node.js. Gratuit et open source. (Windows, Mac, Linux).

App Inventor du MIT permet de créer plus facilement des applications Android sans programmation. C'est un outil de développement visuel comme Visual Studio où chaque composant correspondant à une fonction sur téléphone Android à un block que l'on peut paramétrer et insérer dans l'interface que l'on construit.
Il est basé sur la librairie Java OpenBlocks.

Compilateurs et outil de développement

L'OpenJDK fournie sans support par Oracle est délaissée par les entreprises et remplacée par d'autres distributions notamment sur le cloud. Il n'y plus de raison d'utiliser Oracle JDK de nos jours, même Android utilise une version d'OpenJDK..

Autres outils

Forum

Information inexacte sur Java

26-07-2011 14:27:54

Gouessej

Bonjour

La page suivante comporte un renseignement inexact sur Java : https://www.scriptol.fr/programmation/langages-populaires.php

"Applications multi-plateformes (mais plus lentes que les applications natives). "

Les applications Java écrites correctement ne sont généralement pas plus lentes voire même plus rapides que les applications natives d'après plusieurs chercheurs d'IBM spécialisés dans le domaine du calcul haute performance. Java dispose d'optimisations dynamiques inconcevables pour des langages purement compilés et d'une plus grande liberté pour optimiser l'utilisation de la mémoire (comme il ne dispose pas de pointeur) ce qui lui permet d'avoir des appels à méthodes et des allocations mémoire 2 à 4 fois plus rapides que C++ d'après Brian Goetz. L'utilisation d'OpenGL en Java avec JOGL est notamment au moins 70% plus rapide qu'avec OpenTk en C#, les appels JNI coûtent environ une dizaine de nanosecondes ce qui explique que le portage de Quake 2 en Java soit 15% plus rapide que l'original écrit en C/C++ et 30% plus rapide que le portage .NET.

Enfin, quand on regarde de près votre liste, le seul langage dont vous dites qu'il est lent est Java alors que JavaScript l'est bien plus pour des traitements comparables (calculs, affichage 3D). Le seul langage qui a le droit à une critique dans cette liste est Java, le seul langage à avoir droit à un terme à connotation péjorative est Java, c'est franchement à la limite du dénigrement. Je vous prie donc de bien vouloir retirer la mention "mais plus lentes que les applications natives" afin de ne pas porter atteinte aux développeurs Java dont certains ont du mal à vivre de leur passion à cause de tels préjugés, je pense notamment aux développeurs de jeux vidéo comme moi qui subissent sans cesse des railleries du même niveau que ce bout de phrase déplacé. Je vous prie d'agréer mes salutations distinguées.

26-07-2011 14:36:55

webmaster

Bonjour

Je n'ai d'a-priori contre aucun langage de programmation. L'article en question a été écrit en 2006 et à l'époque, un programme Java était nettement plus lent à l'exécution qu'un autre compilé en code binaire.
L'écart s'est réduit entretemps du fait des optimisations que vous évoquez.

Cependant, même de nos jours, charger un logiciel écrit en Java comme Netbeans avec les fichiers d'un projet prend 1 minute 30 sur une configuration moyenne, donc Java est bien plus lent pour cela au moins qu'un logiciel natif.

L'article a été modifié pour être actualisé malgré tout.
Mise à jour: En 2013, JavaScript est devenu plus rapide que Java.