Développement d'applications d'Entreprise sous OS X 1-ère partie

Manu

Membre expert
Club iGen
31 Mai 2000
1 744
205
56
Puteaux région parisienne
A quelques jours de l'arrivée de Mac OS X, il était bon de faire le point sur ce que nous apporte ce système dont on a vanté, dans les différents forums, tous les mérites. Pour nous développeurs il est surtout bon de savoir quelles sont les possibilités qui nous sont offertes pour développer des applications de tout genre.

Apple a, depuis le lancement de la beta publique, mis sur son site des outils de développement en téléchargement.

Certains d'entre vous ont commencé à les utiliser et à découvrir la puissance de développement que ces outils procurent.

On sait que mac OS X, au contraire de Mac OS 9 et précédent est un système ouvert et réputé pour sa puissance et sa stabilité. Il place désormais le mac dans le cercle fermé des systèmes dits industriels tant prisés par les Entreprises qui s'en servent pour batir des applications critiques pour leur Business.
Le mac nous le savons a beaucoup souffert du fait de ne jamais (à quelques exceptions près) avoir été considéré comme système sur le quel une entreprise pouvait confier ses applications critiques. Avec Mac OS X cela va changer profondément.

Comme cette suite d'articles va le montrer, mac OS X avec le lot d'éléments de développement qu'il apporte permet comme cela n'a jamais été le cas auparavant de développer de puissantes applications tant prisées par les Entreprises.

Mieux encore, ces applications utilisent des concepts inédits que l'on ne trouve sous aucune autre plate forme.

D'ailleurs vous aurez l'occasion de vous en appercevoir en comparant le comportement des applications cocoa par rapport aux applications carbon.
Les premières utilisent des apis conçues dès l'origine pour tirer pleinement partie des possibilité de l'OS alors que les apis carbon ont été modifiées pour le faire.

Aujourd'hui quand on parle d'applications puissantes on parle souvent d'architecture 3-tier ou muti-tier comprenant généralement un client, un serveur web, un serveur d'applications des serveurs connexes et des serveurs de bases de données. Les serveurs connexes pouvant être des serveurs d'authentification, ou autres.

Le développement de ce type d'applications se fait aujourd'hui quasi exclusivement en utilisant la technologie orientée objet.

Si l'orientée objet a certes apporté beaucoup dans le développement d'applications, celles-ci doivent également s'accomoder de technologies qui malheureusement n'utilisent pas les mêmes concepts objet. C'est le cas des bases de données qui uilisent le langage SQL.

Pire encore, l'utilisation de SQL varie considérablement d'un éditeur à un autre. On sait également que les contraintes engendrées par la féroce concurrence entre éditeurs est souvent en désaccord avec une standardisation exclusive.

Certes il existe des tentatives de standardisation comme les ODBC,JDBC, et autres qui ne résolvent pas de façon efficace le problème.

On doit alors faire face à la situation suivante :

- L’utilisation d’un langage orienté objet, le plus souvent C++ ou Java.
- L’utilisation également de SQL un langage non orienté objet .
- L’exigence d’une bonne connaissance du type de la base de données utilisée.

Tout ceci implique alors :

- Le besoin d’une double compétence objet et base de données.
- L’importance du code généré le rendant difficilement réutilisable.
- Le manque d’indépendance de l’application vis à vis de la source de données.
- La perte de l’avantage acquise par le mécanisme de l’encapsulation apporté par la programmation objet.
- La difficulté de produire des objets métiers plus facilement.

C’est justement pour palier à ces difficultés que les ingénieurs de NeXT hier et d’Apple aujourd’hui ont mis au point une technologie qui apporte une solution non seulement efficace et puissante, mais également très élégante.

Cette solution est implémentée sous la forme d’un Framework qui regroupe un certain nombre de classes développées à l’origine dans le langage objective_C et prochainement disponibles en Java.

Ce Framework a pour nom EOF pour ENTERPRISE OBJECT FRAMEWORK.
Il comprent un outil de modélisation EOModeler et un ensemble de classes qui forment un middleware extrêmement puissant permettant de développer des aplications muti niveaux assez facilement.

Ils permettent au développeur, ainsi déchargé de la plomberie, de se consacrer entièrement à la logique de son application.

Sans EOF, webObjects n'aurait jamais connu le succès qu'il a aujourd'hui.

Avant de rentrer dans les profondeurs d'EOF, certains principes doivent être signalés, car ils permettent non seulement de comprendre la suite mais surtout de comprendre comment développer des applications sous cocoa de façon générale.

Comme je l'ai à maintes reprises signalé dans certains de mes articles sur les différents forums, le développement d'application sous cocoa obeit à un principe simple mais eficace le MVC ou Modèle-Vue-Contolleur.
Sous le qualificatif Modèle on regroupe généralement les éléments de base d'une application. Pour une application graphiques par exemple, ce sont des éléments graphiques comme le cercle, le carré, la couleur, etc.
Lorque ces éléments sont définis en utilisant les concepts objets, on les appelle des objets métiers.
Leur définition est éminemment importante dans un projet de développement. C'est d'ailleurs souvent la première phase qui est également la plus délicate et la plus longue.
Cette phase exige généralement la participation des personnalités qui connaissent très bien le métier et qui ne doivent pas être des informaticiens.

La seconde phase est la définition de l'élément par lequel l'utilisateur interagit avec l'application. On l'appelle souvent interface homme/machine ou simplement l'interface graphique de l'application.
Son éllaboration met souvent en collaboration, les utilisateurs, les ergonomes, les personnes chargées de l'organnisation de l'Entreprise, et d'autres. C'est généralement la phase où tout le monde contribue car tout le monde est censé utiliser cette application.

C'est une phase délicate qui demandent de faire beaucoup de compromis. En effet une mauvaise interface et votre appli même si elle a des qualités peut être rejetée.

La dernière phase, le Controlleur est de loin la moins contraignante. Outre le fait de faire le pont entre le Modèle et la vue, elle renferme ce qu'on appelle souvent la logique métier.

EOF permet justement de simplifier les choses et de les faire de manière élégante et extrèmement puissante.

Le principe sur le quel il est basé est que les éléments de base de l'Entreprise, sont stockés dans des bases de données. On peut donc s'en servir comme des objets 'Modèle'.

En fait EOF permet à l'aide de l'outil EOModeler et à partir de la table d'une base de données, de créer un Modèle sur lequel se base une application.

La base de données devenant ainsi le lieu ou ces objets persistent. En fait il y a dans une table autant d'objets que de lignes.

EOF fournit également des classes qui constituent la fondation sur laquelle s'appuie une application.

Ces classes permettent entre autre :

- L’accès aux données dans la base
- L’encapsulation de ces données en Objet.
- La gestion des objets et leur synchronisation avec la base de données.
- La gestion des accès concurrents
- La gestion des modifications faites par l’utilisateur.
- La gestion de l’affichage des données.

Dans la suite nous parleront plus longuement de cette curueuse bête qu'est EOF.

A+


[Ce message a été modifié par Manu (edited 18 Mars 2001).]
 
Salut,

J ai appris a developper en objectiveC sous OpenStep il y a deja quelques années.

Je n ai jamais retrouvé un langage orienté object alliant aussi bien puissance et elegance et simplicité
smile.gif
...

J ai attendu tres longtemps le retour d'un RAD objectiveC, et mac os X est enfin arrivé
grin.gif
... Apres avoir fait un rapide tour des outils de developpement, je cherche desesperement
frown.gif
a developper une (toute petite) application client / serveur accedant a une base de donnees...

Je trouve ton article tres allechant, mais ou trouver ce fameux ENTERPRISE OBJECT FRAMEWORK pour pouvoir enfin developper des applications sous cocoa
confused.gif
??!!

Cordialement...
 
En fait actuellement EOF est livré avec WebObjects.

La version utilisant Objective-C est la 4.5.1, la version réecrite entièrement en Java est la nouvelle mouture WebObjects 5.

Tu pourras trouver ici : http://developer.apple.com/techpubs/webobjects/DiscoveringWO/index.html

une doc que je teconseillerai de la lire pour découvrir ce serveur d'Applications que personnellement je trouve nettement plus élégant,plus puissant et plus simple que les websphere et weblogic qui font tant de bruit actuellement.

Je te conseille également de lire l'overview pour découvrir la facette Java Client de webObjects qui est une trouvaille très interressante et qui n'a aucun concurrent actuellement.

En fait Apple conseille aux développeurs d'utiliser cette technologie pour le développement d'applications client/serveur sur OS X.

J'ai utilisé chez certains de nos clients les serveurs d'applications J2EE (websphere, weblogic, iPlanet et autres) et je peux t'assurer qu'aucun ne fait aussi bien que WO.

Si tu connais bien OpenStep, immagines l'application des concepts et paradigmes objets qui y sont développés au contexte Web, et tu auras une idée de la puissance des framework de WO.

N'hesite pas à m'envoyer un mail pour avoir de plus amples renseignements.

Salut.
 
Salut,

merci pour ces quelques renseignements, désolé de ne pas avoir répond plus rapidement.

j'ai une question complémentaire, j'aimerais savoir si apple se donne moyens de vendre WebObject auprès des utilisateurs et en particulier des professionnels. Par exemple existe t il un service s'occupant du support du logiciel ? L'excellence de WO et en général des outils ayant été développés sous NextStep n'est plus à démontrer. Cependant ce n'est pas pour autant que ceux-ci (et d'autres) ont emergé. On a souvent vu des produits moins efficaces devenir leader sur le marché car offrant autour de leurs produits les services attendus par les utilisateurs.

Ensuite à propos de "mais ou trouver ce fameux ENTERPRISE OBJECT FRAMEWORK", j ai un début de solution car une mise à jour du kit de développement sur Mac OS X vient de sortir et si l'on prend la peine de télécharger la MAJ complète (190 mo), on peut tester WO et EOF jusque fin septembre
grin.gif


Du coup je suis en train de lire et tester les exemples de la doc "Discovering WebObject" que tu m'as recommandé (qui est très bien faite et à mettre entre toutes les mains). Mais les exemples sont tout de même assez limités, saurais-tu ou en trouver d'autre ?? (En fait je suis à la recherche de tout exemples developpés sous cocoa (java / objectiveC)).

A+
 
Bonjour,

Mais comment se positionne WO par rapport aux serveurs d'applications actuels ? Quelle est sa part de marché ?? Fonctionne il sous d'autres plateformes que MacOS X ? (A part les autres MacOS) .. Peut on en faire des cluster.. . ??

Ca a l'air interessant tout ca, mais je me demande si WO n'est pas entrain d'inventer un autre monde ?

Sur quelle technologie middleware est basée WO... c'est quoi, du Corba, du RMI.. autre chose ???

Je reconnais que le EJB ne sont pas toujours une tres bonne chose (on passera sur les aspects philosophiques).. mais voila ils sont standards aujourd'hui (ou demain matin). Qu'en est il du support EJB dans WO ? Sans compter toutes les autres technologies qui courrent dans le meme sens.. quid de JMS, SOAP ?

Et si je comprend bien WO est entrain d'etre reecrit en Java non ?? Ou alors juste une API ?? Ils implementent EJB 2.0 ???

Allez.. j'ai pas encore essayé de faire tourner JBoss sur mon iBook, vous pouvez encore me convertir ;-)

Laurent
 
salut laurent,

je penses que la plus part des reponses à tes questions se trouvent là :
http://www.apple.com/fr/webobjects/

Le déploiement de WO peut être fait sur des systèmes Windows NT, Solaris ou Mac OS X Server. En fait le runtime WebObjects est entièrement écrit en Java, ce qui vous permet de le faire fonctionner sur toute plate-forme Java 2 et possède un système de répartition automatique des charges rendant particulièrement simple l'ajout d'autres machines.

Mais là je ne fais que paraphraser ce qui est écrit sur l'url ci-dessus...
smile.gif

Jetes y un coup d'oeil

A++


[Ce message a été modifié par olivier06 (edited 21 Juin 2001).]
 
En fait pour répondre à tes questions je dirai tout simplement ceci:
WO a été lancé en 1996 alors que l'on ne parlait pas encore de serveurs d'applications. S'il est un environnement qui a donné à ce terme une meilleure signification c'est bien WO.
D'ailleurs quand tu vois bien, tout ce que WO implémente depuis toujours a été repris par SUN ( Les gars de SUN n'ont d'ailleurs jamais caché leur admiration pour WO et de tout ce que faisait NeXT en général) d'ailleurs dans Java on retrouve beaucoup de concepts des frameworks de NeXT et donc de cocoa. L'implémentation dans Java est à mon avis un peu bancale et compliqué.
Ce qu'on appelle en termes ronflants EJB ou Beans, sous OpenStep on le fait il y a plus de 10 ans.
Tout cela pour dire que J2EE n'a rien inventé et que sous WO on peut utiliser des EJB sans problème.
Les frameworks de WO en fait implémentent les fonctionnalités de bas niveau comme la persistance, l'accès aux bases de données, etc. Le développeur s'occupe presque exclusivement de l'implémentation de la logique de son application et non de la plomberie. On peut aisément utiliser CORBA, IIOP, etc.
En définitive plus tu utilises WO plus tu t'apperçois que toute la standardisation faite à travers les specs J2EE, servlets, etc... a pour unique but d'insufler le design et l'architecture applicative de WO.
D'autre part le langage Objective C qui est celui qui a servi à l'origine a pas mal d'atout pour ce genre de développement.
Je te conseille de lire les articles ci-après
http://www.wosource.com/ObjCvsJava.html

http://db.tidbits.com/getbits.acgi?tbart=06465

Salut.






[Ce message a été modifié par Manu (edited 21 Juin 2001).]
 
Manu,

toutes mes excuses j’ai parlé un peu trop vite en disant à propos de discovering WO « les exemples sont tout de même assez limités » :

si les premiers chapitres répondaient à mes attentes et ne m’ont pas fait réagir plus que ça (la gestion des cessions ainsi que la communication entre objets est très proche des méthodes utilisées en JSP), le reste des chapitres laisse rêveur…

En particulier les outils de gestion d’accès aux bases de données et EOF en général. L’élégance et l’efficacité allié à la simplicité est la première réflexion que l’on se fait…

Et puis ensuite on réalise à peine la puissance et la redoutable complexité de la chose… Il doit falloir pratiquer un bon moment avant de se faire une assez bonne idée de tout ça…
Bon allez j’y retourne !!!
grin.gif


Amicalement…
 
En fait tu découvriras que la chose la plus allucinante avec EOF c'est qu'on peut développer son appli sans savoir quelle base de données va recceuillir vos données que dis je ... vos objets métiers.
Et que une fois votre appli finie vous pouvez la livrer à votre client.
Pendant tout ce temps vous avez juste bosser avec un Modèle généré par EOModeler.
.... Et que n"importe quelle base fera l'affaire et le client est content.
Je ne vais pas déflorer le sujet de mon prochain article.
Continues de le découvrir je crois que tu seras soufflé par la puissance et la simplicité d'EOF.
En bref, c'est un gros truc et je te parie que tu ne trouveras rien de mieux ailleurs.
Et dire que ça date des années 90!!!!!!!!!!!!!

Bonne aventure

Bienvenu au paradis EOF.

Manu