1962 : Apparition du premier langage objet, Simula : le but était d'en faire un outil de description de système d'événements discrets ou de réseau, et un langage de programmation de simulation. Il était conçu comme une extension au langage Algol. Ce langage universel introduisait les notions de bases des langages objet : la notion de classes, de sous-classes et d’objets instances des classes et de méthodes associées aux objets.
1972 : Naissance de Smalltalk : Alan Kay et le Software Concept Group du centre de recherche de Xerox de Palo Alto (PARC) veulent fournir un environnement pour les enfants qui commencent à apprendre à programmer. Ils inventent Smalltalk, un langage totalement orienté objet qui fonctionne à l'intérieur d'un environnement graphique, avec fenêtre et souris.
Années 80 : les langages objets sont intégrés dans les langages, outils et matériels de l’intelligence artificielle comme moyens de représentation des connaissances complémentaires des représentations des connaissances à base de règles. Ils sont donc naturellement intégrés aux différentes souches du langage Lisp et sur les machines Lisp : Flavors est le langage objet sur les machines Lisp Symbolics, Loops celui des machines Lisp Xerox, puis CLOS est intégré au Lisp américain Common Lisp, Telos est la couche objet du Lisp français Le-Lisp (v16) et européen EuLisp. Au-delà du langage Lisp les machines Lisp sont des environnements de développement objet sur lesquels l’interface homme-machine, les process, etc. sont vus comme des objets. Les outils de développement de systèmes experts KEE d’Intellicorp, ART d’Inference ou Kool de Bull ont chacun leur couche objet. Cette période est caractérisée par la profusion des langages et représentations objet qui ont été autant de tests en vraie grandeur de ses concepts objet. Leur utilisation reste cependant limité à la communauté IA.
Ces mêmes années 80, voient arriver Ada, un langage de programmation orienté objet à typage statique, modulaire et offrant une syntaxe claire inspirée de Pascal qui a été normalisé en 1983 après avoir été conçu en réponse à un cahier des charges conçu par le DOD (département de la Défense) des États-Unis. Ada est un langage qui compte tenu de ce contexte militaire et de sa vocation à être utilisé pour des applications temps réel pousse à la rigueur en matière de développement et de tests et va naturellement conduire à des réflexions de génie logiciel : la méthode OOD (Object Oriented Design) de G. Booch est conçue à la demande du Ministère de la Défense des USA pour préparer de façon rigoureuse la structuration des programmes écrits principalement en langage Ada. Les premières formations à OOD apparaissent en 88. A partir de cette époque les méthodes objets se multiplient chacune avec leur formalisme : OOD, OOA, Schlaer & Melor, OMT, OOSE, HOOD, etc. Ada et les méthodes objets vont permettre la diffusion des concepts objet dans la communauté « génie logiciel ».
Au milieu des années 80 apparaît également C++ : C++ est fondé sur le langage C, langage de « bas niveau », conçu pour le système Unix et censé permettre au programmeur d'utiliser au mieux les ressources de son installation. En réalité, C++ inclut C dans son intégralité (hormis des cas d’importance secondaire, le code de tout programme en C reste donc le même en C++) et grâce à plusieurs ajouts, ce dérivé de C prend en charge la programmation orientée objet. Bjarne Stroustrup, l'auteur de C++, est conscient des défauts de C, mais considère qu'il offre néanmoins de multiples avantages : souplesse, efficacité, portabilité, disponibilité sur un grand nombre de plates-formes, etc. Dans son esprit, C++ doit rester compatible avec C tant que cette compatibilité n'empêche pas d'atteindre les objectifs fixés : simplifier le travail des programmeurs en enrichissant C de facilités permettant l'abstraction de données et la programmation par objets. Cette approche pragmatique fera le succès de C++ en permettant de démocratiser les technologies objet et de diffuser C++ auprès d’une population beaucoup plus large que ne l’avait fait jusqu’alors Smalltalk, les langages de l’IA et Ada : la communauté des développeurs Unix.
À la même époque, en 1984, une autre version orientée objet de C - Objective C - est inventée par Brad Cox et fut utilisée sur le défunt ordinateur Next pour réaliser le système d'exploitation NextStep et son environnement graphique.
Remarque : A l’inverse d’un langage comme Smalltalk, C++ ou Objective C ont cependant un défaut : il est facile à un développeur C qui n’a pas bien assimilé les concepts « objet » de développer dans ces langages sans bénéficier des concepts objet (héritage, polymorphisme, etc.) mais ces langages moins « purs » étaient sans doute nécessaire à la diffusion des concepts « objet ».
1991 : l’OMG publie les premières spécifications de CORBA (Common Object Request Broker Architecture) qui définissent une architecture orientée objet pour applications distribuées ou plus précisément une architecture et infrastructure permettant à des applications informatiques écrites dans des langages différents (préférentiellement orientés objet) et s’exécutant sur des machines différentes et des OS différents de fonctionner ensemble à travers un ou des réseaux. L'interopérabilité résulte de l’utilisation du langage de définition d'interface IDL, et des protocoles normalisés GIOP et IIOP. Dans les années 90, plusieurs ORB (Object Request Broker) respectant la norme CORBA et interopérant entre eux apparaissent : Orbix (Iona), Visibroker (Visigenic), SOM (IBM), ObjectBroker (Digital), etc. A la même époque Microsoft propose en 1996 une technologie propriétaire concurrente, DCOM (Distributed Component Object Model), limité au monde des applications PC sous Windows, qui est l'élargissement du concept COM sous forme d'objets distribués. COM était quant à lui une évolution de OLE, une technologie permettant aux applications Windows d'interagir entre elles.
1995 : Java, un langage est conçu au départ pour être embarqué sur des objets électroniques commerciaux. Il se révélera comme le langage objet adapté à Internet et surtout porté par Internet. Java est en effet orienté réseau et objet, et sa syntaxe est dérivée de celle du C++. Son principal avantage est d'être entièrement portable (donc multiplate-forme) et une des raisons de son succès est sa possibilité d'insertion au sein d'un document HTML sous forme d'applet (ou « Appliquettes » en français), par le biais d'une machine virtuelle Java (Java Virtual Machine), moyennant une politique de sécurité assez stricte.Les débuts de Java remontent à 1991 et à un projet baptisé « Green » voué à la réalisation d'applications électroniques commerciales. L'équipe Green était libre de faire ce qu'elle voulait. Sa première mission fut de créer un appareil capable de contrôler plusieurs équipements électroniques à la fois. Un langage fut créé par James Gosling à cette intention, le langage Oak . Le nom Oak, trop proche d'une autre marque, fut rebaptisé Java en 1995. Le projet initial fut dissous. Un peu plus tard, James Gosling présente Green lors d’une conférence. L’équipe technique de Netscape est présente et s'enthousiasme. Le projet est repris et en 1995 la Java Virtual Machine est intégrée dans Netscape Navigator, ce qui permet au browser d'exécuter des programmes Java : c’est la naissance des applets qui conduit a un engouement général pour Java d’abord sur la partie client avant que son apport s’avère tout aussi intéressant sur la partie serveur. L’ensemble de la communauté des développeurs qui s’intéresse à Internet va s’intéresser à Java.
JavaSoft, une filiale de Sun Microsystems développe Java RMI (Remote Method Invocation), une plate-forme de communication faisant partie intégrante de la plate-forme Java, développée pour ne faire communiquer sur un réseau que des programmes et objets Java entre eux.
Fin 1999 : Sun propose les spécifications de « Java 2 Enterprise Edition (J2EE) » la nouvelle mouture de Java qui est à la base de sa plateforme technologique Sun ONE, mais également par exemple de Websphere (IBM) et Weblogic(BEA) : Il permet de développer des applications en associant des composants métier Java appelés EJB (Enterprise JavaBeans).
1997 : Autour de Grady Booch et de la société Rational, depuis peu rachetée par IBM, naît UML (Unified Modeling Language) né de la fusion des trois méthodes qui ont le plus influencé la modélisation objet au milieu des années 90 : OMT, Booch et OOSE. UML est standardisé par l’OMG en 1997 et devient un standard de modélisation indépendant des langages et accepté par l’ensemble des acteurs du marché Plus tard, UML est complétée par Rational par une méthode itérative et incrémentale, pilotée par les cas d'utilisation (« use cases »), centrée sur l'architecture et fondée sur la production de composants : Unified Process (UP) ou Rational Unified Process (RUP). D’autres éditeurs et acteurs du marché proposent des alternatives à ce processus (méthodes agiles comme eXtreme Programming en particulier.
2002 : C# de Microsoft : (prononcé « C Sharp ») est un langage de programmation orienté objet associé au nouveau serveur d’application de Microsoft .NET. C# veut combiner C++ et la simplicité d'emploi de Visual Basic. Le couple C# & .NET est la réponse propriétaire de Microsoft au couple Java & J2EE : .NET est la plate-forme de Microsoft qui permet de développer des applications en associant des composants C# appelés « Assembly ».
Les architectures orientés services, les « Web Services », apparaissent à la fois sur les plates-formes J2EE et .NET. Ils sont en train de succéder aux architectures Corba, DCOM ou RMI. Ils sont basés sur le couplage lâche (« loosely coupling ») entre services et sur trois technologies clef :
- WSDL, le langage de description fondé sur XML qui permet de décrire l’interface d’un Service Web (d’une application)
- SOAP, le protocole d’interaction des Services Web fondé également sur XML, et
- UDDI, le service d’annuaire dédié à la découverte et la spécification de Service Web.
Nées pour de préoccupations de simulation et de facilité d’apprentissage de la programmation, les technologies objets ont donc bénéficié dans un premier temps du mariage avec les technologies de l’IA. Celles-ci, du fait des besoins en représentation des connaissances, ont amené la communauté scientifique à tester des représentations objet plus ou moins complexes notamment en matière d’héritage et de relations entre objets. Ada a conduit à des réflexions en terme de génie logiciel et de méthodes objets qui ont débouché plus tard sur UML. Parallèlement le mariage avec un langage de « bas niveau » comme C, puis l’explosion Internet avec Java ont popularisé la programmation objet au sein d’une large communauté de développeurs. Des composants objets de différentes natures sont aujourd’hui disponibles sur le marché en particulier sur les plates-formes J2EE et .NET. Les réflexions sur les architectures orientées objet pour les applications distribuées Corba, DCOM, ou RMI ont débouché sur les architectures orientées service des « Web Services » avec le support de XML.
Les commentaires récents