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.

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 concerne pas les utilisateurs du runtime JRE, mais on doit être prudent avant d'installer Java, car il y a des composants payants parmi les composants gratuits, et lesquels, ce n'est pas clair!

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);
} 

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 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 toujours de programmer en PHP, C++ aussi et d'éditer du HTML et du CSS. Mais l'objectif est la promotion de JavaFX comme concurrent à HTML 5, Silverlight et Flash pour réaliser des applications Web.

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).

Wavemaker est une EDI pour créer des applications Web, avec Java en backend. Tend à réduire la programmation en utilisant des composants. Une version gratuite est disponible.

App Inventor pour créer 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 du MIT.
Cela devrait rendre la création d'une application très rapide!

Compilateurs et outil de développement

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.