Vous êtes sur la page 1sur 5

Prface

file:///D|/Daniel/TIJ2FR/All/Preface.htm

Traducteur : Jean-Pierre VIDAL 25.04.2001 - Version 0.2 : - Mise en forme du code html (armel). 19.08.2000 - Version 0.1 : - Dernire mise jour de la version franaise

Prface
J'ai suggr mon frre Todd, qui est en train de migrer du hardware vers le software, que la prochaine grande rvolution serait l'ingnierie gntique.
Nous crerons bientt des organismes ddis la fabrication de nourriture, de carburant, de plastique ; ils digreront la pollution et, de manire gnrale, nous permettront de matriser la manipulation du monde rel, ceci pour un cot minime compar celui d'aujourd'hui. J'ai prtendu que la rvolution informatique serait vraiment peu de chose au regard de cela. Puis j'ai ralis que j'tais en train de commettre une erreur triviale chez les auteurs de science-fiction : oublier le propos de la technologie (ce qui est videmment trs facile faire en science-fiction). Un crivain expriment sait qu'on ne raconte jamais une histoire propos de choses, mais de gens. La gntique aura un trs grand impact sur nos vies, mais je ne suis pas persuad qu'elle clipsera la rvolution informatique (qui d'ailleurs rend possible la rvolution gntique) ou au moins la rvolution de l'information. L'information, c'est essentiellement se parler les uns les autres : bien entendu, les voitures, les chaussures, et surtout les maladies gntiques sont importantes, mais en dfinitive ce ne sont que des faux-semblants. La vrai question est notre relation au monde. Ainsi en est-il de la communication. Ce livre est un cas. Une majorit d'amis pensa que j'tais soit vraiment hardi soit lgrement drang pour mettre tout cela sur le Web. Pourquoi quelqu'un voudrait-il l'acheter ? me disaient-ils. Si j'avais eu un temprament plus conservateur, je ne m'y serais pas pris de cette manire ; en ralit je ne voulais pas crire un livre supplmentaire de style traditionnel sur les ordinateurs. Je ne savais ce qui en aurait rsult si je n'avais pas agi ainsi, mais en tout cas ce fut la meilleure chose que j'ai jamais ralise avec un livre. Tout d'abord, chacun commena m'envoyer des correctifs. Ce fut un processus trs amusant, parce que mes amis avaient furet dans chaque coin et recoin et repr les erreurs techniques aussi bien que grammaticales, ce qui me permit d'liminer les fautes de toutes sortes que j'aurais laiss passer sans cela. Dans ce travail, ils ont t tout simplement formidables, commenant trs souvent par me dire bon, je ne dis pas a pour critiquer... pour me mettre ensuite sous le nez un ensemble d'erreurs que je n'aurais jamais t capable de trouver par moi-mme. Je crois que ce fut une espce de travail de groupe, et cela a rellement ajout quelque chose de spcial ce livre. Mais ensuite, j'ai commenc entendre ceci : OK, trs bien, c'est bien gentil vous avez fait une version lectronique, mais moi j'aurais prfr une version complte imprime chez un vrai diteur . Alors j'ai beaucoup travaill afin que chacun puisse l'imprimer dans un format adquat, mais cela n'a pas suffi rsorber la demande d'un livre publi . La plupart des gens n'ont pas envie de lire le livre l'cran dans son intgralit, et l'ide de transporter un paquet de feuilles volantes, mme impeccablement imprimes, ne leur conviendrait pas davantage (de plus, je pense que ce n'est pas forcment conomique en terme de toner). Aprs tout il semblerait que la rvolution informatique ne risque pas de mettre les diteurs au chmage. Un tudiant suggra toutefois que cela pourrait servir de modle pour l'dition du futur : les livres seraient d'abord publis sur le

1 of 5

7/6/01 9:30 AM

Prface

file:///D|/Daniel/TIJ2FR/All/Preface.htm

Web, et, condition qu'ils rencontrent un certain intrt, on les coucherait sur papier. Actuellement, une grande majorit de livres reprsentent des dsastres financiers, et cette nouvelle approche pourrait peut-tre rendre l'industrie de l'dition plus rentable. Ce livre a t par ailleurs une exprience enrichissante pour moi. Ma premire approche de Java fut juste un nouveau langage de programmation , ce qu'il est de fait par ailleurs. Mais, le temps passant, et au fur et mesure que je l'tudiais plus en profondeur, je commenais m'apercevoir que son propos fondamental tait diffrent de celui de tous les langages que j'avais connu auparavant. Programmer, c'est grer la complexit : complexit du problme que l'on veut rsoudre, superpose la complexit de la machine sur laquelle il va tre rsolu. Bien des projets de programmation ont avort cause de cette complexit. Je voudrais maintenant dire que, de tous les langages de programmation que je connaisse, aucun n'a t conu pour grer la complexit du dveloppement et de la maintenance de programmes [1]. Bien entendu, dans la conception des langages, beaucoup de dcisions ont t prises en gardant la complexit prsente l'esprit, mais, dans chaque exemple et partir d'un certain moment, d'autres problmes ont surgi qui furent considrs comme essentiels et par suite intgrs la mixture. Fatalement, ces nouveaux problmes furent de ceux qui envoyrent finalement les programmeurs droit dans le mur avec ce langage. Par exemple, C++ se devait de possder une compatibilit ascendante avec C (afin de favoriser la migration des programmeurs C), ainsi qu'une certaine efficacit. Ces deux buts taient trs utiles et ont grandement particip au succs de C++, mais dans le mme temps ils ont gnr une complexit supplmentaire qui a eu pour rsultat d'empcher certains projets d'arriver terme (bien entendu, vous pouvez toujours vous en prendre la responsabilit des programmeurs et/ou de leur encadrement, mais, si un langage pouvait vous aider reprer vos erreurs, pourquoi ne le ferait-il pas ?). Autre exemple, Visual Basic (VB) tait li BASIC, lequel n'tait pas vraiment conu comme un langage extensible, et par suite toutes les extensions superposes VB se sont traduites par une syntaxe vraiment horrible et impossible maintenir. Perl a une compatibilit ascendante avec Awk, Sed, Grep ainsi que d'autres outils Unix qu'il tait cens remplacer, le rsultat est qu'il est souvent accus de produire du code--crire-seulement (c'est dire qu'on est incapable de se relire quelques mois plus tard). D'un autre ct, C++, VB, Perl, et d'autres langages comme Smalltalk, de par leur conception, ont abord le problme de la complexit, et par l se rvlent remarquablement efficaces dans la rsolution de certains types de problmes. Ce qui m'a le plus frapp alors que je commenais comprendre Java est quelque chose qui s'apparente l'incroyable finalit de diminuer la complexit pour le programmeur. Un peu comme si l'on disait rien n'est important, mis part rduire le temps et la difficult pour produire un code robuste . Dans les premires versions de Java, cette finalit s'est traduite par un code qui ne tournait pas trs vite (bien que l'on ait fait de nombreuses promesses concernant la vitesse de Java) mais il n'empche que cela a rduit le temps de dveloppement de manire stupfiante : la moiti, ou moins, du temps ncessaire la cration d'un programme quivalent en C++. Ce seul rsultat pourrait dj se traduire par une incroyable conomie de temps et d'argent, mais Java ne s'arrte pas l. Il s'attache encapsuler toutes les tches complexes qui ont pris de l'importance, comme le multithreading et la programmation rseau, au moyen de fonctionnalits du langage ou de bibliothques rendant parfois ces tches triviales. Et pour finir, il traite quelques problmes d'une relle complexit : programmes multi-plate-forme, changements dynamiques de code, sans oublier la scurit, chacun d'entre eux pouvant s'adapter votre gamme de difficults, depuis un obstacle jusqu' un point bloquant . Ainsi, malgr les problmes de performance que nous avons vus, les promesses de Java sont normes : il est capable de faire de nous des programmeurs encore plus productifs. Le Web est l'un des lieux o cela se rvle le plus. La programmation rseau a toujours t difficile, et Java la rend facile (et les concepteurs du langage Java travaillent la rendre encore plus facile). La programmation rseau, c'est ce qui fait que nous parlons entre nous de manire plus pertinente et meilleur march que nous ne l'avons jamais fait avec le tlphone (l'email lui seul a rvolutionn bien des entreprises). Alors que nous nous parlons de plus en plus, des choses sensationnelles commencent merger, peut-tre plus incroyables que celles promises par l'ingnierie gntique.

2 of 5

7/6/01 9:30 AM

Prface

file:///D|/Daniel/TIJ2FR/All/Preface.htm

Dans tous les cas en crant des programmes, en travaillant en groupe pour crer des programmes, en concevant des interfaces utilisateur permettant aux programmes de dialoguer avec l'utilisateur, en faisant tourner des programmes sur diffrents types de machine, en crivant facilement des programmes qui communiquent au travers de l'Internet Java accrot la bande passante de la communication entre les gens. Je pense que le but de la rvolution de la communication n'est certainement pas de transmettre de grandes quantits de bits ; la vraie rvolution sera l lorsque nous serons tous capables de nous parler plus facilement : de personne personne, mais aussi en groupe, et, pourquoi pas, sur la plante entire. J'ai entendu dire que la prochaine rvolution verra l'mergence d'une espce d'esprit global associant un grand nombre de personnes un grand nombre d'interconnexions. Il se peut que Java soit, ou pas, l'outil de cette rvolution, mais en tout cas cette possibilit m'a fait comprendre qu'il n'tait pas insens de tenter d'enseigner ce langage.

Prface la 2me dition


Les lecteurs de la premire dition de ce livre ont fait normment de commentaires logieux son propos, ce qui m'a t trs agrable. Toutefois de temps autres l'un ou l'autre s'est plaint, et l'une des critiques rcurrentes est le livre est trop gros . Dans mon esprit, je dois dire que si trop de pages est votre seule plainte, c'est une faible critique (on se souvient de l'empereur d'Autriche se plaignant du travail de Mozart : trop de notes ! , mais n'allez pas penser que je cherche d'une manire ou d'une autre me comparer Mozart). De plus, je peux seulement supposer qu'une telle demande provient d'une personne qui en est encore prendre conscience de l'tendue du langage Java lui-mme, et qui n'a pas encore vu ou lu les autres livres traitant du sujet par exemple, ma rfrence favorite, Core Java de Cay Horstmann & Gary Cornell (Prentice-Hall), qui a tellement grossi qu'on a d le scinder en deux volumes. Malgr cela, une des choses que j'ai essay de faire dans cette dition a t d'liminer les parties obsoltes, ou tout au moins non essentielles. Je n'ai pas eu de scrupules en faisant cela car l'original existe toujours sur le site Web ainsi que sur le CD ROM qui accompagne ce livre, sous la forme de la premire dition du livre, librement tlchargeable (http://www.BruceEckel.com). Si c'est l'ancienne version qui vous intresse, elle existe encore, et ceci est un merveilleux soulagement pour un auteur. Par exemple, vous pouvez remarquer que le dernier chapitre de l'dition originale, Projects , a disparu ; deux des projets ont intgr d'autres chapitres, et le reste n'avait plus d'intrt. Pareillement, le chapitre Design Patterns , devenu trop gros, a fait l'objet d'un livre spar (galement tlchargeable sur le site Web). Ainsi, logiquement, le livre devrait tre plus mince. Mais, hlas, il n'en sera pas ainsi. Le plus gros problme est le continuel dveloppement du langage Java lui-mme, et en particulier l'extension de l'API qui nous promet de nous procurer une interface standard pour tout ce que nous pourrions imaginer (et je ne serais pas surpris de voir paratre une API JCafetiere pour couronner le tout). Le propos de ce livre n'est certainement pas de parler de ces API, d'autres auteurs se chargeront de cette tche, mais certaines questions ne peuvent tre ignores. Parmi les plus importantes, Java ct serveur (principalement les Servlets et les Java Server Pages, ou JSP), qui reprsentent rellement une excellente solution au problme du World Wide Web, pour lequel nous avons dcouvert que les divers navigateurs Web ne sont pas suffisamment consistants pour traiter la programmation ct client. En outre, un problme reste entier, celui de crer facilement des applications qui se connectent des bases de donnes, qui supervisent des transactions, qui grent la scurit, etc., ce que traitent les Enterprise Java Beans (EJBs). Ces sujets se retrouvent dans le chapitre anciennement nomm Programmation Rseau , appel maintenant Informatique Distribue , un sujet qui est en passe de devenir essentiel. Ce chapitre a galement grossi afin d'inclure une vue d'ensemble de Jini (prononcez djini , ce n'est pas un acronyme, mais un nom), qui est une technologie de pointe permettant de concevoir diffremment les interconnexions entre applications. Et, bien entendu, le livre a volu pour utiliser tout au long des exemples la bibliothque de composants graphiques Swing (GUI, Graphics User Interface, Interface Graphique Utilisateur, NdT). Ici aussi, si vous vous intressez aux anciennes versions Java 1.0/1.1, vous les trouverez dans le livre que vous pouvez tlcharger gratuitement http://www.BruceEckel.com (et qui est

3 of 5

7/6/01 9:30 AM

Prface

file:///D|/Daniel/TIJ2FR/All/Preface.htm

galement inclus dans le CD ROM fourni avec cette nouvelle dition ; vous en saurez davantage ce sujet un peu plus tard). Outre les quelques nouvelles fonctionnalits du langage Java 2 et les corrections effectues dans tout le livre, un autre changement majeur est le chapitre sur les collections (chapitre 9), qui met maintenant l'accent sur les collections Java 2 utilises tout au long du livre. J'ai galement amlior ce chapitre pour traiter plus en profondeur certaines facettes des collections, entre autres expliquer comment fonctionne une fonction de hashing (afin que vous sachiez comment en crer une convenablement). Il y a eu d'autres changements, tels que la rcriture du Chapitre 1, la suppression de quelques appendices ainsi que d'autres parties qui ne me paraissent plus indispensables pour le livre imprim, mais ce fut le plus gros des suppressions. D'une manire gnrale, j'ai essay de tout revoir, d'enlever de cette 2e dition tout ce qui n'tait plus indispensable (mais que l'on peut trouver sous la forme lectronique de la premire dition), de traiter les modifications, et d'amliorer tout ce qui pouvait l'tre. Comme le langage continue d'voluer mais toutefois pas la mme allure vertigineuse qu'auparavant il ne fait pas de doute que de nouvelles ditions de ce livre verront le jour. Je dois m'excuser auprs de ceux qui persistent dans leur critique propos de la taille du livre. Que vous me croyiez ou non, j'ai travaill dur pour le rendre plus mince. Malgr sa taille, je pense qu'il existe assez d'alternatives pour vous satisfaire. D'une part, le livre existe sous forme lectronique (sur le site Web, ainsi que sur le CD ROM accompagnant ce livre), ainsi lorsque vous prenez votre ordinateur portable vous pouvez galement emporter le livre sans supplment de poids. Si vous tes rellement partisan de la minceur, il existe des versions Palm Pilot (quelqu'un m'a dit qu'il lirait le livre au lit sur l'cran rtro-clair de son Palm afin de ne pas dranger sa femme. Je ne peux qu'esprer que cela l'aidera glisser dans les bras de Morphe). Si vous le prfrez sur papier, je connais des personnes qui impriment un chapitre la fois et l'emmnent dans leur attach-case afin de le lire dans le train.

Java 2
Alors que j'cris ceci, la sortie de la version 1.3 du Java Development Kit (JDK) de Sun est imminente, et les modifications proposes pour le JDK 1.4 ont t publies. Bien que ces numros de version soient encore dans les uns , la manire standard de se rfrer une version du JDK 1.2 ou suprieur est de l'appeler Java 2 . Ceci souligne les modifications significatives entre le vieux Java qui possde beaucoup de verrues, ce que je critiquais dans la premire version de ce livre et la nouvelle version du langage, amliore et plus moderne, comportant bien moins de verrues et beaucoup de complments, ainsi qu'une conception agrable. Ce livre est crit pour Java 2. J'ai la grande chance de dominer l'ancien langage et de n'crire que pour le nouveau langage amlior, parce que l'ancienne information existe encore dans la 1re dition sur le Web et sur le CD ROM (ce qui reprsente votre source d'information si vous utilisez une version antrieure Java 2). D'autre part, et parce que n'importe qui peut librement tlcharger le JDK depuis java.sun.com, cela signifie qu'en crivant sur Java 2 je n'oblige personne une contrainte budgtaire leve en lui imposant une mise jour. Il y a toutefois une nuance. JDK 1.3 possde quelques amliorations que j'aimerais rellement utiliser, mais la version de Java actuellement fournie pour Linux est le JDK 1.2.2. Le systme Linux (voir http://www.Linux.org) est un dveloppement trs important en conjonction avec Java, parce qu'il est en train de devenir rapidement la plus importante plate-forme serveur rapide, fiable, robuste, scurise, bien maintenue, et gratuite, une vraie rvolution dans l'histoire de l'informatique (je ne me souviens pas avoir jamais rencontr l'ensemble de ces fonctionnalits dans aucun outil auparavant). Et Java a trouv une trs importante niche dans la programmation ct serveur sous la forme des Servlets, une technologie qui est une norme amlioration de la programmation CGI traditionnelle (ceci est dcrit dans le chapitre Informatique Distribue ). Aussi, malgr le fait que j'aimerais n'utiliser que les toutes nouvelles fonctionnalits de Java, il est essentiel que

4 of 5

7/6/01 9:30 AM

Prface

file:///D|/Daniel/TIJ2FR/All/Preface.htm

l'ensemble puisse tre compil sous Linux, et donc que lorsque vous installerez le code source et que vous le compilerez sous cet OS (avec le dernier JDK) vous puissiez constater que l'ensemble peut tre compil. Toutefois, vous verrez que le texte est parsem et l de notes propos des fonctionnalits du JDK 1.3.

Le CD ROM
Un autre bonus de cette dition est le CD ROM que vous trouverez la fin du livre. J'ai nagure rejet cette ide, pensant que mettre quelques Ko de code source sur cet norme CD n'tait pas justifi, et prfr cela que les gens le tlchargent depuis mon site Web. Cependant, vous allez voir tout de suite que ce CD ROM reprsente autre chose. Le CD contient le code source que l'on trouve dans le livre, mais il contient aussi l'intgralit du livre, sous diffrents formats lectroniques. Mon prfr est le format HTML, parce qu'il est rapide et compltement index vous cliquez simplement sur une entre de l'index ou de la table des matires et vous vous retrouvez immdiatement l'endroit voulu dans le livre. Toutefois la plus grande partie des 300 Mo du CD consiste en un ensemble multimdia complet nomm Thinking in C : Foundations for C++ & Java. A l'origine, j'avais dlgu Chuck Allison la cration de ce sminaire sur CD ROM en tant que produit part entire, puis j'ai dcid de l'inclure dans les secondes ditions de Thinking in C++ et de Thinking in Java aprs avoir vcu, lors d'un sminaire, l'arrive de personnes dpourvues de connaissances suffisantes en langage C. Leur propos tait apparemment je suis un bon programmeur et je n'ai pas envie d'apprendre le C, mais plutt C++ ou Java, c'est pourquoi je compte passer rapidement sur C pour aller directement C++/Java . Peu aprs leur arrive au sminaire, ils prennent conscience que le prrequis de la connaissance de la syntaxe du C se trouve l pour d'excellentes raisons. En incluant le CD ROM dans le livre, nous nous assurons que chaque participant un sminaire a une prparation suffisante. Le CD permet galement d'largir l'audience du livre. Mme si le chapitre 3 (Contrle du flux de programme) traite de parties fondamentales de Java provenant du langage C, le CD est une introduction en douceur, et l'inverse du livre suppose de la part de l'tudiant une moindre connaissance de la programmation. Le CD tant inclus dans le livre, j'espre que davantage de personnes intgreront le cercle de la programmation Java.

[1]j'ai enlev ceci de la 2 me dition : je pense que le langage Python est trs proche de faire exactement cela. Voir
http://www.Python.org.

5 of 5

7/6/01 9:30 AM