<html>  	<head> 		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> 		<meta name="generator" content="Adobe GoLive 4"> 		<title>MacOS X</title> 		<style type="text/css"> 			<!--@import url("../aqua_fr.css");--> 		</style> 	</head>  	<body bgcolor="white" background="../pics/fond.gif"> 		<script language="JavaScript" src="../js/imgcache.js"></script> 		<script language="JavaScript" src="../js/frmenu.js"></script> 		<div id="fondmenu" onmouseover="hideLast();"> 		</div> 		<div id="barremenu"> 			<a name="topmenu"> 			<table border="0" cellspacing="0" cellpadding="0" bgcolor="#aaaaaa"> 				<tr> 					<td><a href="javascript:void(0)" onmouseover="hideLast();"><img border="0" src="../pics/bordgauche.gif" name="Bord Gauche"></a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menuapple'); imgChange('apple', 1);" onmouseout="imgChange('apple', 0);"><img border="0" src="../pics/apple_0.gif" name="apple"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menugeneral'); imgChange('general', 1);" onmouseout="imgChange('general', 0);"><img border="0" src="../pics/general_0.gif" name="general"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menucryo'); imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);"><img border="0" src="../pics/cryo_0.gif" name="cryo"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menumacosx'); imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);"><img border="0" src="../pics/macosx_0.gif" name="macosx"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menuoutils'); imgChange('outils', 1);" onmouseout="imgChange('outils', 0);"><img border="0" src="../pics/outils_0.gif" name="outils"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menuportage'); imgChange('portage', 1);" onmouseout="imgChange('portage', 0);"><img border="0" src="../pics/portage_0.gif" name="portage"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="hideLast();"><img border="0" width="200" height="33" src="../pics/blanc.gif"></a></td> 					<td><a href="javascript:void(0)" onmouseover="popUp('menulangue'); imgChange('francais', 1);" onmouseout="imgChange('francais', 0);"><img border="0" src="../pics/francais_0.gif" name="francais"> </a></td> 					<td><a href="javascript:void(0)" onmouseover="hideLast();"><img border="0" src="../pics/borddroit.gif" name="Bord Droit"></a></td> 				</tr> 			</table> 		</div> 		<div id="menuapple"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="94"> 							<tr> 								<td nowrap class="menu"><a href="about.html" onmouseover="imgChange('apple', 1);" onmouseout="imgChange('apple', 0);">A propos de votre ordinateur...</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="http://www.entreprises.epita.fr/stagesTC2002.html" onmouseover="imgChange('apple', 1);" onmouseout="imgChange('apple', 0);">Retour &agrave; l'index des stages</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menugeneral"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="88"> 							<tr> 								<td nowrap class="menu"><a href="general.html#introduction" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);">Introduction</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="general.html#cahier" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);">Cahier des Charges</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="general.html#results" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);">R&eacute;sultats</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="general.html#conclusion" onmouseover="imgChange('general', 1);" onmouseout="imgChange('general', 0);">Conclusion</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menucryo"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="88"> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#histoire" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">Historique</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#omni3d" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">Omni3D</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#omnisync" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">OmniSync</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#adcpm" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">ADCPM</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#hnm" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">HNM</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="cryo.html#cryogen" onmouseover="imgChange('cryo', 1);" onmouseout="imgChange('cryo', 0);">Cryogen</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menumacosx"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="88"> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#darwin" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Darwin</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#quartz" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Quartz</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#opengl" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">OpenGL</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#quicktime" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">QuickTime</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#classic" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Classic</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#carbon" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Carbon</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#cocoa" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Cocoa</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="macosx.html#aqua" onmouseover="imgChange('macosx', 1);" onmouseout="imgChange('macosx', 0);">Aqua</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menuoutils"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="94"> 							<tr> 								<td nowrap class="menu"><a href="outils.html#carbondater" onmouseover="imgChange('outils', 1);" onmouseout="imgChange('outils', 0);">Carbon Dater</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="outils.html#sourcesafe" onmouseover="imgChange('outils', 1);" onmouseout="imgChange('outils', 0);">SourceSafe</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menuportage"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="88"> 							<tr> 								<td nowrap class="menu"><a href="portage.html#cryosnd" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">CryoSnd</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#cryotext" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">CryoText</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#cryosprite" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">CryoSprite</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#cryogen" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">Cryogen</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#dspm" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">DSpM</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#misc" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">Autres librairies</a></td> 							</tr> 							<tr> 								<td nowrap class="menudisabled"><a href="javascript:void(0)" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);"> 									<hr noshade size="1"> 									</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#atlantis2" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">Atlantis II</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="portage.html#aztec" onmouseover="imgChange('portage', 1);" onmouseout="imgChange('portage', 0);">Aztec</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<div id="menulangue"> 			<table border="0" cellspacing="0" cellpadding="1" bgcolor="#aaaaaa"> 				<tr> 					<td> 						<table border="0" cellspacing="0" cellpadding="0" width="88"> 							<tr> 								<td nowrap class="menu"><a href="javascript:swapLang('fr');" onmouseover="imgChange('francais', 1);" onmouseout="imgChange('francais', 0);"><img src="../pics/flagfr.gif" width="16" height="12" hspace="5">Fran&ccedil;ais</a></td> 							</tr> 							<tr> 								<td nowrap class="menu"><a href="javascript:swapLang('us');" onmouseover="imgChange('francais', 1);" onmouseout="imgChange('francais', 0);"><img src="../pics/flagus.gif" width="16" height="11" hspace="5">English</a></td> 							</tr> 						</table> 					</td> 				</tr> 			</table> 		</div> 		<center> 			<div id="contenu"> 				<table width="100%" height="200"> 					<tr> 						<td width="16"></td> 						<td> 							<center><h3><a name="darwin">Darwin</h3></center> 							<left> 								Le Macintosh dispose depuis sa cr&eacute;ation en 1984 d&#146;un syst&egrave;me d&#146;exploitation avec une interface graphique. Celle-ci a &eacute;t&eacute; est toujours le symbole de l&#146;interface intuitive et simple tout en restant efficace. De nombreuses autres soci&eacute;t&eacute;s se sont souvent inspir&eacute;es de l&#146;interface du Syst&egrave;me Macintosh pour leurs propres produits.<br> 		<br> 		Cependant, le syst&egrave;me d&#146;exploitation en lui-m&ecirc;me a &eacute;t&eacute; con&ccedil;u &agrave; une &eacute;poque o&ugrave; les microprocesseurs &eacute;taient 16/32 bits, o&ugrave; l&#146;on ne poss&eacute;dait que peu de m&eacute;moire vive et o&ugrave; le multit&acirc;che &eacute;tait un mot absent du vocabulaire des utilisateurs normaux. De ce fait, certaines composantes ont &eacute;t&eacute; pens&eacute;es avec les limitations techniques de l&#146;&eacute;poque. Le probl&egrave;me est que la plupart de ces composantes n&#146;ont pas &eacute;volu&eacute; depuis la version 1.0 du syst&egrave;me ! On en est actuellement &agrave; la version 9.04 de MacOS et celui-ci poss&egrave;de toujours les m&ecirc;mes m&eacute;canismes de gestion de m&eacute;moire archa&iuml;ques : une m&eacute;moire virtuelle extr&ecirc;mement peu efficace, aucune protection m&eacute;moire. Le noyau m&ecirc;me du syst&egrave;me bien que continuellement am&eacute;lior&eacute; poss&egrave;de plusieurs g&eacute;n&eacute;rations de retard sur ses concurrents : il ne dispose pas de multit&acirc;che pr&eacute;emptif, ne g&egrave;re pas plusieurs microprocesseurs &agrave; la fois, poss&egrave;de un m&eacute;canisme d&#146;entr&eacute;e-sortie poussif. En bref, ce syst&egrave;me m&ecirc;me s&#146;il reste probablement le plus simple et le plus intuitif &agrave; utiliser a fini sa longue carri&egrave;re et il lui faut un successeur.<br> 		<br> 		Cette course &agrave; la succession a commenc&eacute; vers 1995, lorsque Apple a annonc&eacute; travailler sur le fameux MacOS 8 alors que la version courante &eacute;tait la version 7.5. Ce projet, nomm&eacute; &quot; Copland &quot; &eacute;tait cens&eacute; amen&eacute; tous les b&eacute;n&eacute;fices d&#146;un syst&egrave;me d&#146;exploitation moderne sur Macintosh : noyau multit&acirc;che pr&eacute;emptif, gestion de la m&eacute;moire efficace, entr&eacute;es-sorties rapides, tout en conservant les avantages ind&eacute;niables du Macintosh. Ce projet a malheureusement avort&eacute; lorsque Apple en pleine temp&ecirc;te financi&egrave;re a reconnu ne plus avoir les moyens temporels et financiers de mettre &agrave; bien ce projet. Les diff&eacute;rentes technologies d&eacute;velopp&eacute;es pour l&#146;occasion ont &eacute;t&eacute; r&eacute;utilis&eacute;es dans de futures mises &agrave; jour de MacOS dont le nouveau MacOS 8 qui n&#146;avait rien &agrave; voir avec le projet Copland.<br> 		<br> 		En 1997, Apple a rachet&eacute; NeXT, la soci&eacute;t&eacute; fond&eacute;e par Steve Jobs apr&egrave;s son d&eacute;part d&#146;Apple, et a ainsi r&eacute;cup&eacute;r&eacute; les droits sur toutes les technologies NeXT y compris le fameux NeXTStep, le syst&egrave;me d&#146;exploitation maison de NeXT bas&eacute; sur Unix BSD et comportant des outils de d&eacute;veloppement objet r&eacute;volutionnaires. Peu apr&egrave;s, Apple a annonc&eacute; travailler sur le projet Rhapsody, leur nouveau syst&egrave;me d&#146;exploitation bas&eacute; sur les fondations de NeXTStep et qui serait le successeur de MacOS. Ce projet a &eacute;t&eacute; concr&eacute;tis&eacute; en 1998 par la sortie de MacOS X Server, une sorte de portage de NeXTStep incluant une interface MacOS et quelques technologies Apple, destin&eacute; aux entreprises.<br> 		<br> 		Toutefois les d&eacute;veloppeurs n&#146;ont pas tellement accroch&eacute; &agrave; ce produit pour une raison assez simple : Apple en laissant tomber les API MacOS et en adoptant celles de NeXTStep for&ccedil;ait les d&eacute;veloppeurs &agrave; enti&egrave;rement r&eacute;&eacute;crire leurs applications. De plus, le seul langage support&eacute; &eacute;tait ObjectiveC, un langage puissant mais tr&egrave;s peu usit&eacute; ce qui a encore plus &eacute;loign&eacute; les d&eacute;veloppeurs.<br> 		<br> 		Apple a donc revu sa copie et a lanc&eacute; le d&eacute;veloppement de MacOS X, la version client du serveur, destin&eacute;e non pas aux entreprises mais au grand public. Apple a corrig&eacute; le tir en proposant plusieurs API pour programmer sous MacOS X ainsi que bien plus de compromis et de composants. A l&#146;heure actuelle, MacOS X est en phase de b&ecirc;ta-test. Une version b&ecirc;ta publique a &eacute;t&eacute; distribu&eacute;e le 13 septembre 2000 aux d&eacute;veloppeurs ainsi qu&#146;au public et la version finale devrait &ecirc;tre commercialis&eacute;e d&eacute;but 2001. Cette version b&ecirc;ta contient presque tout ce qui sera pr&eacute;sent dans la version finale m&ecirc;me si certains composants restent &agrave; terminer.<br> 			MacOS X est le fruit d&#146;une longue &eacute;volution de MacOS et d&#146;une fusion avec NeXTStep. Nous allons &agrave; pr&eacute;sent voir la fa&ccedil;on dont Apple a pens&eacute; les solutions d&#146;ing&eacute;nierie pour r&eacute;pondre aux probl&egrave;mes pos&eacute;s par les d&eacute;veloppeurs tiers. Voici &agrave; quoi ressemble l&#146;architecture logicielle de MacOS X :<br> 			<br> 			<p align="center"><img height="390" width="435" src="../pics/archi.png" alt="Architecture MacOS X"></p><br> 			<br> 			Ce diagramme montre a lui seul les efforts fait par les ing&eacute;nieurs d&#146;Apple pour concilier les d&eacute;veloppeurs et l&#146;h&eacute;ritage MacOS et les nouveaut&eacute;s apport&eacute;es par NeXTStep.<br> 			<br> 			A la base du syst&egrave;me on trouve Darwin, le noyau de MacOS X. Ce noyau est bas&eacute; sur MACH 3.0 ainsi que sur certaines extensions de MACH 4.0. Ce noyau UNIX notamment utilis&eacute; dans les diff&eacute;rentes variations de BSD a &eacute;t&eacute; d&eacute;velopp&eacute; &agrave; l&#146;universit&eacute; de Carnegie Mellon par une &eacute;quipe comprenant un certain Avadis Tevanian, qui est par ailleurs le chef de projet MacOS X. Ce noyau offre toutes les possibilit&eacute;s d&#146;un noyau moderne tout en ayant le b&eacute;n&eacute;fice d&#146;&ecirc;tre plus mature que d&#146;autres noyaux (Linux par exemple). Apple l&#146;a modifi&eacute; pour cr&eacute;er Darwin et pour s&#146;assurer d&#146;obtenir plus d&#146;adh&eacute;sion de la part des d&eacute;veloppeurs, Darwin est open-source et peut &ecirc;tre t&eacute;l&eacute;charg&eacute; sur Internet. Une communaut&eacute; s&#146;est cr&eacute;&eacute;e autour de Darwin et divers ports ont &eacute;t&eacute; entrepris comme celui de XWindow. Ainsi, il n&#146;est pas impossible de voir un jour appara&icirc;tre un syst&egrave;me d&#146;exploitation complet bas&eacute; sur Darwin, un peu &agrave; la mani&egrave;re des distributions Linux.<br>  							</left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="quartz">Quartz</h3></center> 							<left> 						Quartz est &agrave; la base de tout l&#146;affichage 2D de MacOS X. C&#146;est le moteur de rendu du syst&egrave;me. Il est bas&eacute; sur le format PDF d&#146;Adobe (MacOS X Server int&eacute;grait Display Postscript une autre technologie Adobe) ce qui lui permet d&#146;utiliser un proc&eacute;d&eacute; de rendu dit de composition : les diff&eacute;rents &eacute;l&eacute;ments de l&#146;interface sont compos&eacute;s un &agrave; un les uns avec les autres en utilisant divers effets comme des rotations, homoth&eacute;ties ou transparence. Le tout anti-alias&eacute; pour de meilleurs r&eacute;sultats. Ce moteur promet une v&eacute;ritable petite r&eacute;volution de la qualit&eacute; de l&#146;interface graphique et a fait assez parl&eacute; de lui dans la presse sp&eacute;cialis&eacute;e ces derniers temps m&ecirc;me si cette derni&egrave;re se r&eacute;f&egrave;re plut&ocirc;t &agrave; l&#146;interface Aqua en elle-m&ecirc;me.  							</left> 						   <br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="opengl">OpenGL</h3></center> 							<left> OpenGL est une API de Silicon Graphics maintenant bien connue dans le monde du rendu 3D temps r&eacute;el. Il a pour qualit&eacute; d&#146;&ecirc;tre un vrai standard (en comparaison au DirectX de Microsoft), d&#146;&ecirc;tre multi-plateforme et d&#146;avoir &eacute;t&eacute; tr&egrave;s &eacute;prouv&eacute; par le temps. Il permet aussi le rendu &agrave; distance via un r&eacute;seau et beaucoup d&#146;autres choses. Enfin, il est largement support&eacute; par les cartes acc&eacute;l&eacute;ratrices. OpenGL se trouve directement dans les niveaux les plus bas de MacOS X pour rendre son utilisation la plus facile et la plus performante possible. Il supporte notamment le rendu via de multiples processeurs. OpenGL sera probablement un acteur incontournable pour les jeux &agrave; l&#146;instar de DirectX sous Windows tout en garantissant une plus grande ouverture sur les autres plate-formes.  </left> 						   <br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="quicktime">QuickTime</h3></center> 							<left>Enfin QuickTime est l&agrave; pour s&#146;occuper de tout le contenu multim&eacute;dia. QuickTime a depuis quelques ann&eacute;es gagn&eacute; une reconnaissance internationale pour ce qui est de la gestion de la vid&eacute;o. La version 5.0 en cours de finalisation pousse cela encore plus loin. QuickTime permettra de g&eacute;rer son, vid&eacute;o, et composition vid&eacute;o de la fa&ccedil;on la plus transparente possible. QuickTime est en effet beaucoup plus qu&#146;un format vid&eacute;o, c&#146;est une v&eacute;ritable architecture multim&eacute;dia bas&eacute;e sur un syst&egrave;me de pistes permettant de combiner des sources aussi diverses que de la vid&eacute;o, du son, des panoramas QuickTimeVR &agrave; 360&deg;, des sprites, etc. </left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="classic">Classic</h3></center> 							<left> 						Classic peut se d&eacute;finir par son simple nom. Il repr&eacute;sente la compatibilit&eacute; directe avec les applications existantes d&eacute;j&agrave; sous MacOS classique. Contrairement &agrave; ce qu&#146;on pourrait penser, cette solution ne repr&eacute;sente pas le Saint-Graal de la compatibilit&eacute; absolue avec MacOS. Bien s&ucirc;r, elle permet de r&eacute;utiliser ses applications MacOS directement mais Classic est en fait une bo&icirc;te de compatibilit&eacute;, un processus MacOS X qui d&eacute;marre un MacOS et y fait passer toutes les interactions faites dans les applications Classic. Cela n&eacute;cessite beaucoup de ressources mat&eacute;rielles pour obtenir des performances aussi bonnes que sous MacOS (notamment de la RAM) et cela limite &eacute;norm&eacute;ment le champ de possibilit&eacute; des applications Classic. Ainsi, m&ecirc;me si celles-ci apparaissent de fa&ccedil;on transparente au milieu des autres applications MacOS X, elles n&#146;ont acc&egrave;s &agrave; aucun des avantages dispens&eacute;s par MacOS X comme la m&eacute;moire prot&eacute;g&eacute;e, le multit&acirc;che pr&eacute;emptif, Quartz et l&#146;interface Aqua. En somme, cela reste du MacOS &agrave; l&#146;int&eacute;rieur de MacOS X. Classic est vu par Apple comme une API de transition pour garantir l&#146;adh&eacute;sion du public &agrave; MacOS X. Elle devrait devenir de moins en moins utilis&eacute;e pour finalement devenir obsol&egrave;te dans environ 2 ans.<br> 	 					</left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="carbon">Carbon</h3></center> 							<left> 							Carbon est quant &agrave; lui, une des cl&eacute;s de vo&ucirc;te  de MacOS X. Cette API a &eacute;t&eacute; d&eacute;crite par certains chroniqueurs comme le plus bel exemple de l&#146;excellence des ing&eacute;nieurs d&#146;Apple dans le design de MacOS X. C&#146;est l&agrave; la r&eacute;ponse aux d&eacute;tracteurs du nouveau syst&egrave;me qui rechignaient &agrave; devoir r&eacute;&eacute;crire leurs application pour celui-ci. Carbon est en fait, une &eacute;volution des API Classic. Apple a soigneusement &eacute;tudi&eacute; ces derni&egrave;res, et les a &eacute;pur&eacute;es de toutes les technologies devenues obsol&egrave;tes avec le temps plus de celles qui le deviendraient avec MacOS X (comme QuickDraw 3D leur pr&eacute;c&eacute;dente impl&eacute;mentation de rendu 3D maintenant supplant&eacute;e par OpenGL). Apple a aussi modifi&eacute; certaines parties de l&#146;API Classic jug&eacute;es bancales et sans fondements pour obtenir quelque chose de plus rigoureux et plus moderne. Cette nouvelle API a &eacute;t&eacute; nomm&eacute;e Carbon et elle a la particularit&eacute; de ne proposer que des caract&eacute;ristiques accessibles en m&ecirc;me temps sous MacOS Classic et MacOS X. Cela veut dire dans un premier temps, que les sources d&#146;un programme &eacute;crit avec Carbon pourront &ecirc;tre compil&eacute;es et donner des ex&eacute;cutables sur les deux syst&egrave;mes.<br> 		<br> 		Mais Apple est all&eacute; plus loin dans cette optique : ils ont fait en sorte qu&#146;un binaire compil&eacute; en Carbon puisse sans aucune re-compilation pour un syst&egrave;me donn&eacute; fonctionner &agrave; la fois sous MacOS Classic et MacOS X tout en exploitant au mieux chaque syst&egrave;me. Carbon est pr&eacute;sent sous la forme d&#146;une librairie dynamiquement li&eacute;e au programme &agrave; l&#146;ex&eacute;cution et qui r&eacute;cup&egrave;re tous les appels &agrave; l&#146;API de la part de l&#146;application puis les aiguille vers les technologies ad&eacute;quates en fonction du syst&egrave;me. Ceci est une vision simplifi&eacute;e car bien s&ucirc;r, il existe des exceptions et des al&eacute;as avec lesquels il a fallu traiter. N&eacute;anmoins, gr&acirc;ce &agrave; ce proc&eacute;d&eacute; de directement faire correspondre un appel &agrave; son traitement natif permet aux applications Carbon d&#146;utiliser les fonctionnalit&eacute;s de MacOS X au contraire de Classic. Ainsi, une application Carbon utilise la m&eacute;moire prot&eacute;g&eacute;e, adopte l&#146;interface Aqua et Quartz, peut utiliser la plupart des services MacOS X et est totalement multit&acirc;che pr&eacute;emptif pour le peu qu&#146;elle utilise les Carbon Events : un nouveau mod&egrave;le de boucle d&#146;&eacute;v&egrave;nement con&ccedil;u pour Carbon et permettant une bien meilleure r&eacute;partition du temps processeur car il fait beaucoup moins appel au polling.<br> 		<br> 		C&#146;est Carbon qui va &ecirc;tre utilis&eacute; durant le stage car il repr&eacute;sente le meilleur compromis temps de d&eacute;veloppement/puissance. En effet d&#146;apr&egrave;s des statistiques d&#146;Apple, de mani&egrave;re g&eacute;n&eacute;rale seulement 20% d&#146;une application a besoin d&#146;&ecirc;tre modifi&eacute;e pour la mettre aux normes Carbon. Un s&eacute;rieux gain de temps et d&#146;argent ! Toutefois, Carbon a au d&eacute;part &eacute;t&eacute; vu par Apple uniquement comme une API de transition &agrave; l&#146;instar de Classic. Cette tendance ne tend pas &agrave; se confirmer car aujourd&#146;hui la plupart des soci&eacute;t&eacute;s d&eacute;veloppent en Carbon pour des raisons &eacute;videntes : Carbon permet de ne pas d&eacute;laisser la base utilisateur MacOS et permet d&#146;investir dans les nouvelles technologies avec MacOS X, le tout en conservant leurs connaissances et exp&eacute;rience acquise au fur et &agrave; mesure des ann&eacute;es de d&eacute;veloppement sous MacOS.<br> 						</left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="cocoa">Cocoa</h3></center> 							<left> 							Enfin, MacOS X poss&egrave;de sa propre API native, celle qui en est vraiment l&#146;&acirc;me : Cocoa. Cette derni&egrave;re est une &eacute;volution de l&#146;API de NeXTStep . Elle est r&eacute;solument tourn&eacute;e vers la conception objet des choses. Elle n&#146;a rien de nouveau donc vu qu&#146;elle poss&egrave;de l&#146;h&eacute;ritage NeXTStep mais elle est extr&ecirc;mement puissante. Cette API tire sa force du langage requis pour l&#146;utiliser : ObjectiveC. Sans entrer dans les d&eacute;tails, ObjectiveC est un langage objet bas&eacute; sur le C et ayant certaines similitudes avec le C++ tout en &eacute;tant beaucoup plus dynamique. Cela permet &agrave; un programme &eacute;crit en Cocoa d&#146;avoir acc&egrave;s &agrave; beaucoup d&#146;informations qui seraient perdues &agrave; la compilation avec un autre langage. Cela permet d&#146;avoir toujours acc&egrave;s &agrave; la v&eacute;ritable nature des objets &agrave; l&#146;ex&eacute;cution et donc de pouvoir agire de fa&ccedil;on beaucoup plus souple sur le logiciel. Cocoa est en r&eacute;alit&eacute; un framework, un ensemble de classes &eacute;crites en ObjectiveC permettant de g&eacute;rer tout les &eacute;l&eacute;ments d&#146;interface et services syst&egrave;mes de MacOS X et les interactions entre ces derniers. Cependant, Apple a l&agrave; encore du faire face aux critiques des d&eacute;veloppeurs qui n&#146;&eacute;taient pas pr&ecirc;ts &agrave; apprendre un nouveau langage plus une nouvelle API pour d&eacute;velopper. En effet, ObjectiveC est bien loin d&#146;&ecirc;tre &agrave; la mode et NeXT ont &eacute;t&eacute; presque les seuls &agrave; l&#146;adopter. Un effort suppl&eacute;mentaire a donc &eacute;t&eacute; fourni pour adapter Cocoa en Java et permettre ainsi &agrave; une plus large partie des d&eacute;veloppeurs d&#146;utiliser Cocoa. Le support Java n&#146;est pas aussi efficace que celui d&#146;ObjectiveC mais il donne acc&egrave;s a exactement la m&ecirc;me quantit&eacute;s de caract&eacute;ristiques.<br> 		<br> 		Cocoa est fourni avec deux outils essentiels au d&eacute;veloppement : le Project Builder et l&#146;Interface Builder. Ce dernier permet de concevoir l&#146;interface d&#146;une application de mani&egrave;re graphique un peu comme Delphi en int&eacute;grant des composants. Mais il permet aussi de d&eacute;finir d&#146;un simple clic des relations entre ces composants gr&acirc;ce au dynamisme d&#146;ObjectiveC. Par exemple, il est possible de dire que le clic sur un bouton d&eacute;clenche un d&eacute;calage vers la gauche de 10 pixels d&#146;une image. Tout se fait tr&egrave;s simplement et reste extr&ecirc;mement puissant. Le Project Builder quant &agrave; lui est l&#146;environnement de d&eacute;veloppement d&#146;Apple. Il regroupe le compilateur GCC modifi&eacute; par Apple et un &eacute;diteur de code source. Ce dernier n&#146;est pas aussi avanc&eacute; que l&#146;Interface Builder mais il montre clairement la direction &agrave; suivre pour &eacute;tablir une plate-forme de d&eacute;veloppement solide.<br>  							</left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 					<tr height="16"><td height="16" colspan="3"><hr></td></tr> 					<tr height="16"><td height="16"></td></tr> 					<tr> 					<td width="16"></td> 					<td> 							<center><h3><a name="aqua">Aqua</h3></center> 							<left> 								Pour finir, tout en haut de la pyramide logicielle de MacOS X on trouve la nouvelle interface utilisateur appel&eacute;e Aqua. Elle est synonyme comme son nom l&#146;indique d&#146;une presque fluidit&eacute; des &eacute;l&eacute;ments. Elle utilise au maximum les possibilit&eacute;s de Quartz et de Cocoa pour rajeunir l&#146;interface prim&eacute;e du Macintosh. On trouve ainsi des effets d&#146;ombres en temps r&eacute;el sous les fen&ecirc;tres, des animations multiples partout, menus translucides, fen&ecirc;tres qui se contorsionnent pour se minimiser, &#133; A part le c&ocirc;t&eacute; esth&eacute;tique, l&#146;interface a aussi &eacute;t&eacute; grandement am&eacute;lior&eacute;e en terme d&#146;accessibilit&eacute; et de productivit&eacute;. On y trouve une meilleure coh&eacute;sion des boites de dialogue vis &agrave; vis des fen&ecirc;tres dont elles sont issues (utilisation des &quot; sheets &quot;), une organisation pratique et intelligente des comptes utilisateurs, un navigateur de fichiers enti&egrave;rement personnalisable, &#133; Elle a &eacute;t&eacute; pens&eacute;e pour &ecirc;tre non seulement jolie et attirante pour l&#146;&#156;il mais aussi pour &ecirc;tre encore plus intuitive et facile d&#146;acc&egrave;s. Avec elle, on se rapproche encore plus du mythe d&#146;une communication presque parfaite entre l&#146;Homme et la Machine sans bien s&ucirc;r toutefois y parvenir. Voici un exemple de l&#146;interface Aqua : 			<p align="center"><img height="340" width="453" src="../pics/aquascreen.jpg" alt="Aqua screenshot"></p> 		Il faut savoir que la plupart des &eacute;l&eacute;ments de l&#146;interface sont redimensionnables en temps r&eacute;el pour pouvoir s&#146;ajuster &agrave; la perception et aux go&ucirc;ts de chacun. Ainsi, les ic&ocirc;nes d&#146;Aqua sont pr&eacute;vues directement en millions de couleurs et occupent 128x128 pixels. Cela permet d&#146;arriver &agrave; un niveau photo-r&eacute;aliste de l&#146;action ou de l&#146;objet &agrave; repr&eacute;senter et permet une r&eacute;elle am&eacute;lioration du confort visuel. Toutefois, de tels objets occupent une taille cons&eacute;quente &agrave; l&#146;&eacute;cran ; on peut donc les r&eacute;duire &agrave; la taille qui convient et cela sans perte de qualit&eacute; via divers algorithmes d&#146;interpolation et de lissage.<br>  							</left> 							<br><br><center><a href="#topmenu">Retour au menu</a></center> 						</td> 						<td width="16"></td> 					</tr> 					<tr height="16"><td height="16"></td></tr> 				</table> 			</div> 		</center> 	</body>  	<script language="JavaScript"><!-- 		imgLoad("apple_1.gif", "../pics/apple_1.gif", 1); 		imgLoad("general_1.gif", "../pics/general_1.gif", 1); 		imgLoad("cryo_1.gif", "../pics/cryo_1.gif", 1); 		imgLoad("macosx_1.gif", "../pics/macosx_1.gif", 1); 		imgLoad("outils_1.gif", "../pics/outils_1.gif", 1); 		imgLoad("portage_1.gif", "../pics/portage_1.gif", 1); 		imgLoad("francais_1.gif", "../pics/francais_1.gif", 1); 		onLoadFunction(); 	// --> 	</script> </html> 
