Introduction à Java
Sa vie, son oeuvre...
Sa vie, son oeuvre...
(ce n'est qu'une intro ... il n'y aura donc aucun code pur)
Bienvenue dans ce nouveau tutoriel, consacré cette fois au langage JAVA ! Et oui, cette brave bête a fait énormément de chemin depuis quelques années. On le retrouve un peu de partout, dans les applets IRC, des petits Jeux ou encore dans le fameux Azureus (logiciel de gestion Bittorrent) et dans Eclipse (IDE multi-lingue), voire même dernièrement dans vos téléphones portables.
Pourtant savez-vous que c'est un des langages les plus difficiles à manipuler et à comprendre. Pas que son langage ne soit pas clair, mais sa structure en soi est très très ... révolutionnaire diront certains ... je dirais pour ma part (évidemment), passionnante !
I. Un peu d'histoire
Le saviez-vous ? Java n'est pas vieux, mais pas du tout, il est loin de son lointain parent C (bien qu'il n'y ai pas de lien direct de parentée :p).
En effet, il est né en 1995 (le 23 mai exactement), dans les locaux de Sun Microsystems par James Gosling et Patrick Naughton. Il fut crée par la forte demande des 4 critères principaux suivant :
- Être orienté objet (concept que nous verrons par la suite)
- Être multiplateforme, i.e. : vous le mettez sur n'importe quel ordinateur, il marche, ce qui est une des principale défaillance du C.
- Pouvoir fournir des bibliothèques pour le réseau
- Pouvoir éxecuter un code source externe de façon rapide et sécurisé
Surrement, ces termes semblent un peu ... inutiles ... voire incompréhensible :D, mais je vous assure qu'ils sont fondamentaux dans le développement, en particulier la portabilité du langage.
Jusqu'en 1997, Java 1 (i.e. 1.0 et 1.1) vit des jours heureux, mais difficile, la portabilité est faible car l'environnement d'éxecution (JRE : Java Runtime Environnement) n'est pas par défaut sur les machines publiques standards, et seuls certains développeurs s'encouragent à l'apprendre et à récupérer l'environnement de développement (JDK : Java Development Kit)
Mais en 1998, il y eu la grande révolution du JDK 1.2, que l'on appella Java 2, de nouvelle librairies apparaissent, le graphisme est fortement amélioré (apparition de Swing).
Pour en avoir vécu l'expérience en 1997 lorsque j'ai commencé sur Java 1, la gestion est complètement différente et même en 2000 pour trouver un professeur suffisament connaisseur en la matière, ce fut dur (c'était un étudiant).
Par la suite de multiples modules ont étés développés J2SE (classique), J2EE (pour applications serveurs), J2ME (pour mobile) ...
II. Présentation du langage (par principe)
L'avantage de Java est qu'il a une portabilité d'exécution monstreuse, pas seulement par les plateformes, mais aussi par la diversité d'applications concevables. En effet, il a d'abord attiré l'attention des développeurs web, car le langage peut être porté sous la forme d'applets, genre de petit programme intégré à une page web. Un des premier à utiliser ce principe d'applet, est bien sûr ce bon vieux Caramail avec ses salons de discutions. Ce que vous ne savez peut-être pas c'est que même derrière ça, tout le système de Caramail n'était que Java, ou plus précisement en JSP (Java Server Page), une sorte de Php en Java (sans en détailler plus, loin de là , de plus je suis totalement inculte en JSP :D !!!).
Le neuf ? L'objet !! C'est une méthode assez récente de programmation et de conception de langage. Tout est maintenant rassemblé en une seule entité logique (que l'on appelle classe), qui contient un ensemble de données et de fonctions qui y sont raccroché. Le code y est plus clair, et très ordonné, car il est ainsi modulaire (de façon intrinsèque bien sûr). Vous ne comprenez pas ? Vous n'avez jamais vu d'POO (Programmation Orientée Objet) ? Dans ce cas, ne vous affolez pas ! C'est un concept dur à comprendre, mais une fois qu'il est intégré, tout va bien dans le meilleur des mondes !!! Bien sûr de nouveaux langages sont apparus (et existaient avant pour certains) ayant le même principe de POO, pour ne citer que les plus connus je dirais :
Ada (langage pionnier de la POO), C++, C#, Common Lisp, Delphi, Eiffel, Python, Ruby, OCaml (cas un peu à part) ou Visual Basic (mal implémenté je trouve).
Une autre chose qui semble assez anodine en apparence mais qui est magnifique une fois que l'on a un peu d'expérience dans la programmation. Cette chose s'appelle le Garbage Collector, si vous parlez un peu anglais vous pourrez traduire ça par Ramasseur d'ordure, les français appellent ça le Ramasse-miettes (désolé je trouve ça ridule), on l'appellera le GC par la suite hein ... Son principe : passer derrière l'exécution de code et libérer la mémoire qui n'est plus utilisé, par exemple, vous utilisez une variable, vous n'en avez plus besoin, monsieur GC passe par là et la supprime de la mémoire tout seul comme un grand. Pourquoi est-ce si puissant ? Car dans le Java, la gestion de la mémoire, on s'en fiche royalement... On affecte de nouvelles variables, on cesse de les utiliser sans se préocupper de leur taille en mémoire, chose qu'il faut ABSOLUMENT maîtriser en C par exemple. Attention, je ne dénigre pas que le C est moins sur ce point, mais il exige une rigueur de programmation que le Java ne demande pas (ou du moins pas aux mêmes endroits), mais en C au moins, on sait ce que l'on fait, on maîtrise tout ... A vous de voir ce qui est le mieux. Globalement je pense que l'on pourrait dire que la gestion de mémoire est donc plus simple et plus sûre que dans C.
Mais cela a un prix tout de même, depuis avec Java 5 (1.5 - Tiger) cela s'améliore, mais Java reste gourmand (très) en mémoire, à cause de justement cette POO. Pour exécuter un "Hello World" classique, java requiert de créer un objet, en appeller un autre, ouvrir un flux et imprimer "Hello World". Alors que le C demande ceci : va voir dans le flux de sorti et imprime ...
III. Comment qu'on fait marcher Java ?
C'est là où le Java implémente sa faiblesse. Je vous explique, lorsque vous voulez développer en Java, il vous faut télécharger le JDK (c.f. ci-dessus) sur le site de Sun pour ensuite faire une petite installation (maintenant très simple).
Mais Java est un langage compilé ! Kézako ? Cela veut dire que l'on passe le code source dans une machine, et qu'on en sort un code machine prêt à fonctionner. Bon, d'accord, exécutons notre petit (en ligne de commande, bash ou terminal, comme vous voulez :D) :
- Code: Tout sélectionner
javac test.java
Le code source (test.java ici) va être compilé et va fournir un test.class, le fichier binaire de votre programme. Mais mais mais, comment faire pour lancer mon programme maintenant ? Voilà la faiblesse et la force en même temps. Dans le JDK vous avez le JRE (que l'on peut télécharger à part (moins lourd)) qui vous permet de lancer des binaires java. Pourquoi est-ce une force ? Tout simplement parce que c'est là qu'est le multiplateforme. Sun a développé des JRE pour CHAQUE plateforme, PC-Win32(64), PC-Linux, PPC-Mac, PPC-Linux, Sparc, Solaris et autres... C'est une faiblesse car pour lancer un programme (en ligne de commande, je ne parle pas d'applet) il faut faire :
- Code: Tout sélectionner
java test
Remarquez qu'il n'y a pas de .class derrière test, car java lance le programme test, c'est comme ça qu'il s'appelle, après la compilation, il a acquis une raison de vivre :D.
IV. Conclusion
Cette introduction est maintenant terminée, je sais je n'ai fait que de l'anecdotique mais je pense qu'il fallait le faire puisque le langage est suffisament proche (en
synthaxe) et en même temps très éloigné (en concept) des langages communs comme le C ou C++. Pour conclure, je dirais que pour en faire depuis que j'ai l'âge de 11 ans (c'est à dire il y a 8 ans maintenant), je peux dire que ce langage vaut vraiment le détour, bien que beaucoup de mauvaise langues me contrediront ... eh oui, les accros C sont toujours présents 34 ans après sa création...
Il est tard à présent (wow 2h du matin), je vous souhaite une bonne nuit,
Loïc WydD Petit






