<html>     <head>         <title>Le langage Java</title> 		<META http-equiv="Content-Language" content="fr">         <META Name="Author" Content="Dominique LIARD"> 		<META Name="keywords" Content="infini,encyclopdie,encyclopedie,informatique,langages,langage,programmation,liard,dominique,java,applet,web,rmi,jni,beans,bean,javadoc,jdbc,j2se,j2ee,javac,awt,swing,servlets,jsp,cours,tutoriaux,formation"> 		<META Name="Description" content="Une encyclopdie sur l'informatique et la programmation">          <script Language="javascript" Src="../../../../../Javascript/squeleton.js"></script>         <script Language="javascript">         <!--             document.parentPage = "../index.html";             document.nextPage = "firstApplication.html";             document.lastModification = "07/03/2003";                          document.applyStandardStyle();         //-->         </script>     </head>     <body>         <script Language="javascript">         <!-- 			pageNumber = 0;             document.insertHeader();         //-->         </script>                  <table border="0" cellspacing="0" cellpadding="0">             <tr>                 <td width="230" valign="top"> 					<SCRIPT language="Javascript" src="menu.js"></SCRIPT> 				</td> 				<TD width="10">&nbsp;</TD>                 <td>              <img Src="Graphics/duke.gif" Align="Right" width="55" height="68">          <a Name="a1"><h2>Prsentation</h2></a><!----------------------------------------------------------------------------->      <p>Qui n'a pas encore entendu parler de Java ? Personne, c'est normal ! Ce       nouveau langage connat un succs qu'aucun autre langage n'avait encore connu. Mais quels en sont les       raisons? A mon avis c'est une multitude de petits (ou gros) dtails qui font que finalement Java       est une bonne solution, et ce quelque soit le problme. En effet, tout d'abord, Java est portable : un       programme, une fois compil fonctionnera aussi bien sous des stations Unix, que sous Windows ou       autre. Au point de vue du langage, il intgre tous ce que l'on sait faire de mieux en matire de       langage de programmation, tout en vacuant les erreurs fates sur les langages dont il est issu       (<a Href="../C/index.html" Target="_top">C</a> et <a Href="../CPlusPlus/index.html" Target="_top">C++</a>) :       je pense notamment aux macro C, la gestion de la mmoire n'est plus  votre charge (pas trop tt), ...       Son API (<u>A</u>pplication <u>P</u>rogramming <u>I</u>nterface) est trs riche : diffrents packages       permettent d'accder au rseau, aux entres/sorties, aux diffrents composants graphiques       ... Et bien d'autres points encore. Finalement, on pourra grce  Java programmer tout ce que l'on       voudra : gestionnaires de fichiers, traitements de texte, applications rparties, jeux, ...     </p>      <p>Une des caractristiques principales de ce langage est que le code       Java sera compil pour une machine dite virtuelle (c'est--dire qui n'a pas forcment       d'existence physique, mais son concept peut tre reproduit sur une machine cette fois-ci relle) : le       code machine rsultant est nomm ByteCode.       Lors de l'excution le code machine produit sera transform en un code machine comprhensible       par le <a Href="../../../informatique.html#Microprocesseur" Target="_top">microprocesseur</a> que vous utilisez. La raison de       ce choix est que Java se veut portable : le programmeur ne souhaite plus faire des adaptions pour que son programme       puisse fonctionner sur telle ou telle machine. Si ce choix  des points avantageux, sachez qu'il en a aussi un       qui l'est beaucoup moins : convertir une instruction de la JVM (<u>J</u>ava <u>V</u>irtual <u>M</u>achine) en une       instruction comprhensible par la machine o s'excute le programme, prend du temps. Pour palier       ce problme, deux solutions ont t proposes. La premire, c'est       d'inclure dans le compilateur, la possibilit de compiler du code natif (pour une machine spcifique).       La seconde est plus complexe : l'interprte de la JVM, inclue un <b>JIT</b> (<u>J</u>ust <u>I</u>n <u>T</u>ime       compiler). Le JIT est charg de traduire le code JVM d'un classe (<a Href="programmationObjet.html#Classe">nous       expliquerons ce terme plus tard</a>) directement en code natif, et ce ds la premire utilisation de la       classe. Cette phase de traduction prend certes un peu de temps, mais une fois celle-ci effectue, et ce       jusqu' la fin de l'excution du programme, plus aucune traduction de code (sur la classe       considr) ne sera refaite. Cette technique amliore considrablement la rapidit       d'excution des programmes, bien qu'une phase de traduction persiste. Une troisime solution fera       peut-tre son apparition dans un proche avenir. Elle consisterait  intgrer une puce Java       (comprenant le code de la JVM) dans les processeurs des machines. Mais cette solution, n'est pas encore       d'actualit.     </p>      <p>Ce langage est un vrai langage de programmation : il intgre tous ce que l'on sait       faire de mieux en matire de langage de programmation, tout en y enlevant ce qui s'est avr       tre des erreurs du pass. Java est un <a Href="programmationObjet.html">langage orient objet</a> :       la brique de base du programme est donc l'<a Href="programmationObjet.html#Objet">objet</a>, instance d'une       <a Href="programmationObjet.html#Classe">classe</a> (<a Href="programmationObjet.html">on expliquera tout cela en       dtails dans le chapitre concern</a>). La gestion de la       mmoire n'est plus  la charge du programmeur, enfin : en effet, des techniques de dsallocation       automatise de la mmoire existent depuis plus de 20 ans, elles sont trs efficaces, et       seuls quelques langages les intgrent (je pense notamment  <a Href="../../Fonctionnels/Scheme/scheme.html" Target="_top">       Scheme</a>, et les autres langages fonctionnels). Il n'y a pas, dans Java, de mcanisme de       macro-gnration de code, comme c'est le cas en <a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/C/index.html" Target="_top">C</a> ou en       <a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/CPlusPlus/index.html" Target="_top">C++</a>, ainsi que pour d'autres langages. La syntaxe,       ainsi que quelques points de smantique, sont inspirs de <a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/CPlusPlus/index.html" Target="_top">C++</a>       et donc, par consquent, de <a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/C/index.html" Target="_top">C</a>. Ce dernier point, est  mon sens une       bonne chose : ces langages sont dsormais rods, ils ont fait leur preuve, et compte dsormais       de nombreux adeptes de leurs trs clbres oprateurs (<tt>variable++;</tt> par exemple).       Mais cela ne plat pas  tout le monde. Java est aussi <a Href="threads.html">multithread</a>,       distribu, robuste et sr (sur ce point beaucoup de choses ont t faites), ...     </p>      <p>Java possde une API (<u>A</u>pplication <u>P</u>rogramming <u>I</u>nterface)       		extrmement riche.. En effet, sans celle-ci, Java n'est rien. C'est par elle que le programmeur       va pouvoir accder  toutes les ressources de la machine, et celles du rseau Internet. Cette vaste librairie est divise  			en packages : des ensembles de classes. Voici en       quelques points, les grands packages (certains c'entre eux ont des noms de code) qui sont fournis en standard avec Java :     </p>       <ul> 	<li><p>Pour la <A href="InterfacesGraphiques/index.html">mise en oeuvre d'interfaces graphiques</A>, deux packages  			principaux vous sont offerts : <A href="InterfacesGraphiques/Awt/index.html">java.awt</A> et 			<A href="InterfacesGraphiques/Swing/index.html">javax.SWING</A>.</p>        <ul> 	<LI><p align="justify"><a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/Java/InterfacesGraphiques/Awt/index.html">L'<u>AWT  			(A</u>bstract <u>W</u>indow <u>T</u>oolkit</a>) fournie des mthodes d'accs            toutes les ressources graphiques de la machine. Les lments graphiques utiliss sont ceux du           systme d'exploitation hte. Cependant,  les concepteurs de l'AWT se sont assurs que tous les comportements 	  proposs au sein de cette librairie (ce package) soient supports par tous les environnements           pouvant supporter Java.</p>  	</LI> 	<LI><p align="justify">La librairie <A href="InterfacesGraphiques/Swing/index.html">Swing</A>, quand  elle, propose des  			composants graphiques totalement pris en charge et dessins par la JVM. Cela permet de garantir que l'applicatif  			aura le mme look visuel, ce quelque soit le systme d'exploitation hte. En consquence, SWING et plus riche que l'AWT,  			mais aussi moins efficace et terme de temps d'excution.</p>  	</LI>       </ul>      <li><p><a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/Java/applets.html">Le package java.applet</a> : vous trouverez dans ce package, tous ce dont vous       aurez besoins pour raliser des applets (application pouvant s'excuter dans un navigateur Internet. Il doit           tre utilis conjointement avec l'<a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/Java/InterfacesGraphiques/Awt/index.html">AWT</a> : en effet, dans un           <a Href="../../../Reseaux/Internet/WorldWideWeb/Html/index.html">document HTML</a>, l'applet occupera une zone graphique.  	</p>  	<li><p><a Href="beans.html">Le package java.beans</a> : tout pour la programmation oriente composants. Les Java Beans sont  			des composants logiciels rutilisables et visuellement manipulables dans un atelier de programmation (Comme NetBeans  			ou JBuilder notamment).</p>  	<li><p>Le package java.lang : fournit un maximum de classes lies au langage : manipulation de chanes de caractres,  			manipulations des types de bases, rcupration de mtaclasses, prise en charge des flots standards de  			l'applications. On y trouve aussi la classe <I>Object</I> : classe mre de tout objet Java. Ce package est par  			dfaut directement accessible, contrairement aux autres packages, qu'il vous faudra explicitement importer.</p>  	<li><p><A href="Io/index.html">Le package java.io</A> : un ensemble incroyable de classes pour grer toutes vos 	  oprations d'entres/sorties. Il y a vraiment de quoi s'y perdre. 	</p>  	<li><p><a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/Java/Jdbc/index.html">Le package java.sql (JDBC : Java DataBase Connectivity)</a> : ce package regroupe toutes les 	  fonctionnalits permettant d'accder  des bases de donnes diverses. L'utilisation 	  en est trs simple, mais quelques bases en SQL (Structured Query Language) sont requises. 	</p>  	<li><p><A href="Rmi/index.html">Le package java.rmi</A> (Remote Method Invocation) : ce package permet (relativement facilement) 	  de mettre en place des applications rparties. Dans de telles applications, le code n'est pas localis sur           une unique machine, mais au contraire, dploy sur plusieurs. 	</p>       </ul>      <p>Et encore pleins d'autres packages : <A href="net.html">java.net</A>, JNDI, <A href="jaxp.html">JAXP</A>, 			<A href="ServletsJSP/index.html">les servlets et pages JSP</A>, ... Dans tous les cas, nous verrons en dtails tous ces packages,  			et d'autres, dans les       chapitres qui leur sont consacrs.     </p>      <p>De plus Java, est simple (relativement aux autres langages orients objets :       <a Href="../../../../../Sciences/Informatique/Langages/Imperatifs/CPlusPlus/index.html">C++</a>  notamment)  apprhender, car il offre, comme nous       l'avons dit, tous les mcanismes ncessaires  un langage orient objets, tout en       tant dbarrass de mcanismes souvent sources d'erreurs. Il apparat donc au terme       de cette petite prsentation, que Java est une solution aux problmes informatiques du moment. De plus,       comme il est encore jeune, il devrait facilement pouvoir s'adapter aux volutions futures de l'informatique.     </p>      <a Name="a2"><h2>Historique</h2></A>      <p>Le langage Java trouve ses origines dans les annes 1990. A cette poque, quelques ingnieurs       (innovateurs) de SUN Microsystems ont commencs  parler d'un projet d'environnement indpendant       du hardware pouvant facilement permettre la programmation d'appareils aussi varis que les tlviseurs,       les magntoscopes,... James Grosling (un ingnieur de SUN Microsystems) dveloppa un premier       langage permettant de programmer dans cet environnement : <index>Oak</index>. En 1992, tout tait prs       pour envahir le march avec cette nouvelle technologie : ce fut en chec.     </p>      <p>Un homme sauva malgr tout le projet : Bill Joy (co-fondateur de SUN Microsystems). En effet, devant la       monte en puissance d'Internet, il lui a sembl intressant de proposer un tel langage (et       un tel environnement). Effectivement, Les principaux problmes rencontrs sur Internet sont lis        l'htrognit des machines et des logiciels utiliss.     </p>      <p>Ds lors tous s'acclre. Oak est renomm (en 1995) en Java et il est soumit  la       communaut Internet grandissante. Une machine virtuelle, un compilateur ainsi que de nombreuses       spcifications sont donnes gratuitement et Java attaque une conqute fulgurante. Aujourd'hui,       aprs de nombreuses amliorations (parfois modifications) Java n'est plus uniquement une solution       lie  Internet : de plus en plus de socits (ou de particuliers) utilise ce langage pour       leurs dveloppements (de toutes sortes).     </p>      <a Name="a3"><h2>Les environnements de dveloppement</h2></A>      <p>Il existe un grand nombre d'environnements de dveloppement pour Java (surtout sous PC). Ils prsentent       un grand nombre de points communs : diteur intgr, compilateur, dbugger       sophistiqu, nombreux gnrateurs de code (surtout pour ce qui touche aux interfaces       graphiques). Le plus souvent, ils sont payants.     </p>      <p>Par contre, la socit SUN propose un environnement minimal mais suffisant (un compilateur et une       machine virtuelle) : le <b>JDK</b>. Ce dernier est gratuit et se tlcharge directement        partir de l'adresse <a Href="http://java.sun.com">http://java.sun.com</a>. Pour dbuter, il est       trs bien. Mais si vous dsirez poursuivre avec Java, il faudra alors acqurir un environnement       plus adapt.     </p>      <p>Pour la suite de ce cours, on considrera que vous utilisez le JDK de SUN.       En consquence, les ordres de compilations, et autres seront donns pour pour cet environnement. Si vous       en utilisez un autre, il sera alors a votre charge de dterminer les actions correspondantes. Il est bien       entendu, que pour tout ce qui relve du langage, il n'y aura bien sr pas de modification.     </p>      <a Name="a4"><h2>Quelques pointeurs utiles</h2></A>     <ul>        <li><p>Le site de Sun Microsystems :<BR> 			&nbsp; <A href="http://java.sun.com"><TT>http://java.sun.com</TT></A></p> 	   </LI>        <li><p>Les tutoriaux de Sun Microsystems (en anglais) :<br>             &nbsp; <a Href="http://java.sun.com/docs/books/tutorial/"><tt>http://java.sun.com/docs/books/tutorial/</tt></a> </p>        </LI>        <li><p>Les spcifications des diffrentes versions de l'API Java :             <br>&nbsp; <a Href="http://java.sun.com/products/jdk/1.1/docs/api/index.html"><tt>http://java.sun.com/products/jdk/1.1/docs/api/index.html</tt></a>             <br>&nbsp; <a Href="http://java.sun.com/products/jdk/1.2/docs/api/index.html"><tt>http://java.sun.com/products/jdk/1.2/docs/api/index.html</tt></a>             <br>&nbsp; <a Href="http://java.sun.com/products/jdk/1.3/docs/api/index.html"><tt>http://java.sun.com/products/jdk/1.3/docs/api/index.html</tt></a>             <br>&nbsp; <a Href="http://java.sun.com/products/jdk/1.4/docs/api/index.html"><tt>http://java.sun.com/products/jdk/1.4/docs/api/index.html</tt></a>        </li>     </ul>                  </td>             </tr>         </table>         <script Language="javascript">         <!--             document.insertFooter();         //-->         </script>     </body> </html> 
