title: WebObjects
text: # WebObjects
  
  WebObjects est un outil informatique de développement rapide de sites Web dynamiques. Développé à l'origine par NeXT, en 1997 il est commercialisé par Apple. Il fonctionne sur Mac OS X v10.2 et + (développement et déploiement), Microsoft Windows 2000 SP3 et + (développement et déploiement) et Sun Solaris 8 et HP-UX (déploiement uniquement). Le déploiement sous Linux est aisé mais non officiellement supporté. La dernière version (5.4) est fournie avec Xcode, l'environnement de développement intégré d'Apple.
  
  Tout d'abord utilisant le langage Objective C comme langage de développement, Apple migra petit à petit vers le java à partir de la version 4, pour finalement supprimer la compatibilité Objective C à partir de la version 5.
  
  En mai 2016, Apple annonce officiellement l'abandon de $WebObjects^,.$
  
  ## Détail
  
  WebObjects, sorti en 1996, gère :
  
  * le dialogue Web (boucle requête/réponse) ;
  * une séparation entre la présentation (les WebObjects) et le code de gestion (en java maintenant) ;
  * une couche objet d'abstraction de la base de données : Enterprise Objects Framework (EOF) ;
  * la distribution de charge.
  
  La couche de présentation utilise une technique proche des taglibs de JavaServer Pages. Chaque partie dynamique de la page HTML est représentée par un WebObject. Cet objet est composé d'un fichier de présentation généralement en HTML, d'une API de description des paramètres (.wod) et d'un fichier Java de gestion. L'application Webobjects Builder permet de fabriquer graphiquement des pages HTML à partir de ces objets.
  
  L'accès aux données se fait à travers la couche objet EOF. Le programme EOModeler permet de décrire la base de données et ses différentes entités. Pour chacune de ces entités on génèrera une classe Java de gestion. Cette classe aura la charge d'effectuer les contrôles et les transformations sur les données. Deux types de relation entre entités sont gérés : les relations du type to one ou du type to many. EOF gère un cache très fin permettant de descendre les relations sans devoir accéder à chaque fois à la base de données. Les données lues sont maintenues dans un contexte qui a la charge de noter les modifications apportées afin de mettre éventuellement à jour la base de données.
  
  Il n'est cependant pas exempt de défauts. Il est méconnu et peu poussé par son éditeur actuel, Apple.
  
  