370 likes | 458 Views
Architecture ouverte: standards et logiciels ouverts en Java Robert Gérin-Lajoie, Cirano http://www2.cirano.qc.ca/~gerinlar/fr/MaPagePublique/. Présentation au DIRO 1 2 décembre 2003. Architecture ouverte. Standards ouverts Logiciels et documents ouverts Les 2 produisent un écosystème
E N D
Architecture ouverte:standards et logiciels ouvertsen JavaRobert Gérin-Lajoie, Ciranohttp://www2.cirano.qc.ca/~gerinlar/fr/MaPagePublique/ Présentation au DIRO 12 décembre 2003
Architecture ouverte • Standards ouverts • Logiciels et documents ouverts • Les 2 produisent un écosystème • Liberté • Autonomie • Choix • Compétition Architecture ouverte: standards et logiciels ouverts en Java
Exemple • Standard TCP/IP • Logiciel libre TCP/IP avec BSD • Maintenant intégré dans beaucoup de produits propriétaires • Disponible avec les logiciels libres Architecture ouverte: standards et logiciels ouverts en Java
Standards ouverts • Spécifications techniques • Implémentation de référence • Tests de conformité Architecture ouverte: standards et logiciels ouverts en Java
Logiciels libres et ouverts • Voir définitions, 2 organismes • http://opensource.org/licenses/index.php • http://www.gnu.org/philosophy/free-sw.fr.html • Résumé • La liberté d'exécuter le programme, pour tous les usages • La liberté d'étudier le fonctionnement du programme, et de l'adapter à vos besoins • Pour ceci l'accès au code source est une condition requise. • La liberté de redistribuer des copies. • La liberté d'améliorer le programme et de publier vos améliorations, pour en faire profiter toute la communauté Architecture ouverte: standards et logiciels ouverts en Java
Point stratégique • Les licences à la BSD et à la Apache • Les modifications aux codes sources peuvent rester propriétaires • Pour Apache, les droits d’auteurs sont transférés à la fondation • Copyleft (sous gauche d’auteur) • Présent dans la licence GPL • Ceci veut dire que chaque copie du logiciel, même si elle a été modifiée, doit être un logiciel libre. • GPL Vs LGPL • GPL oblige que toute l’application soit libre • LGPL permet la co-existance d’un composant libre avec un composant propriétaire Architecture ouverte: standards et logiciels ouverts en Java
Comparaison Architecture ouverte: standards et logiciels ouverts en Java
Position de Tim O’Reilly • Logiciel libre • Une vision plus philosophique sur les droits des développeurs et des utilisateurs • Logiciel ouvert • Une vision plus centrée sur les bénéfices « économiques » du partage des codes sources et de la réutilisation des composants • GNU.org Versus OpenSource.org • http://www.oreilly.com/pub/a/oreilly/ask_tim/2003/gnusource_0703.html Architecture ouverte: standards et logiciels ouverts en Java
Et Java? • Java est un standard ouvert • Voir définition • Description, implémentation de référence et test • Contrôlé • Par Sun, IBM, BEA, Oracle et le Java Community Process • Modifications par plusieurs dizaines de comité d’experts • Java Specifications Request • Vendeurs, membres de la communauté des logiciels ouverts Architecture ouverte: standards et logiciels ouverts en Java
Java n’est pas un « standard libre » • Stabilité et évolution contrôlé • Énorme avantage pour la communauté de logiciel libre • On peut bâtir sur des fondations stables • On peut entrelacer des composantes de diverses origines • Avec la richesse des API de Java • Permettent des applications de haut niveau Architecture ouverte: standards et logiciels ouverts en Java
Logiciels libres et ouverts en Java • Ils couvrent un large éventail de fonctionnalité • Outils développeurs • Infrastructures J2EE d’entreprise • Applications spécialisées • Basés sur les standards de Java • Open source threatens Java servers • http://news.zdnet.co.uk/software/developer/0,39020387,2130500,00.htm Architecture ouverte: standards et logiciels ouverts en Java
Quoi? • Livre “Java Open Source Programming” • Outils développeurs • JavaDoc, Xdoclet, Ant, • Environnements de développement • Eclipse, Netbeans • Outils UML • ArgoUML • Outils de tests • Junit, • HttpUnit Architecture ouverte: standards et logiciels ouverts en Java
Standards applicatifsInfrastructure basé sur J2EE • Serveur Web léger • Base de donnée • Serveur J2EE complet (presque) Architecture ouverte: standards et logiciels ouverts en Java
Serveur Web léger d’entreprise • Standard Servlet et JSP • Tomcat • Avec Apache • JBOSS ou autres Architecture ouverte: standards et logiciels ouverts en Java
Base de données • Connecteurs basé sur le standard JDBC • Vers mySQL, PostgreSQL • Hypersonic SQL, une base de données SQL légère en Java • http://hsqldb.sourceforge.net/ • Traduction Objets-Relationnels et persitance • Hibernate • http://www.hibernate.org/ Architecture ouverte: standards et logiciels ouverts en Java
Contenants J2EE • Jboss 3.1 • http://www.jboss.org/index.html • Jonas • Voir http://jonas.objectweb.org/ • OpenEJB • Voir http://openejb.org/ • Geronimo, de Jakarta • Départ en lion, disponible en 2004 Architecture ouverte: standards et logiciels ouverts en Java
Canevas applicatifs • Modèles de présentation- MVC • Applications légères • Applications complexes Architecture ouverte: standards et logiciels ouverts en Java
Modèles de présentation • Standard Java Server Pages et JSTL • Struts, Tiles • Velocity • WebWork, un canevas de présentation MVC • http://www.opensymphony.com/webwork • Java Server Faces • Standard final très proche, en 2004, • encore en discussion • Version Open Source • Voir http://www.jsfcentral.com/ Architecture ouverte: standards et logiciels ouverts en Java
Canevas Java pour les applications Web simple d’entreprise • OpenSymphony: un canevas réputé • Voir http://www.opensymphony.com/ • Expresso • Voir http://www.jcorporate.com/index.html • Turbine • Voir http://jakarta.apache.org/turbine/ Architecture ouverte: standards et logiciels ouverts en Java
Open symphony • Composants • WebWorkAn MVC framework that stresses simplicity and interoperability. • SiteMeshA page layout and decoration engine • OSCacheA web-tier caching framework • OSWorkflowA flexible workflow engine that can be plugged in to almost any need or existing application. • OSUserA user and group management component with pluggable storage and application server integrations. • OSAccessAn entitlement security engine for fine grain security access. Architecture ouverte: standards et logiciels ouverts en Java
Applications spécialisées Architecture ouverte: standards et logiciels ouverts en Java
Système de gestion de contenu • Standards pertinents • JSR 168 - Portlet • JSR 170 – “Content Repository” Architecture ouverte: standards et logiciels ouverts en Java
Publication Web et de cycle de mise à jour • OpenCMS • http://www.opencms.org/opencms/en/ • Lutece • Mairie de Paris • Red Hat CMS • http://www.redhat.com/pdf/rhea/Red_Hat_Enterprise_Content_Management_System_Overview.pdf Architecture ouverte: standards et logiciels ouverts en Java
Portails • Intégration de contenu provenant de sources diverses • Personnalisation de la présentation selon l’utilisateur • Récents standards • JSR 168 - Portlets • Web Services Remote Portlet (WSRP) de Oasis Architecture ouverte: standards et logiciels ouverts en Java
Exemples de portails ouverts • uPortal • Effort massif de collaboration inter-université • Repris par le projet MILLE • Exo Platform • http://exo.sourceforge.net/ • Red Hat Portal • Jetspeed 2.0 de Jakarta • Réalisation en conformité au standard futur Architecture ouverte: standards et logiciels ouverts en Java
Indexation plein texte • Lucene de Jakarta • Voir jakarta.apache.org/lucene • Rapide, souple, sophistiqué • Meilleur que bien des outils commerciaux Architecture ouverte: standards et logiciels ouverts en Java
Environnements collaboratifs • Communautés virtuelles • SnipSnap: Blog et Wiki dans un! • http://snipsnap.org/space/start • Javalobby Community Platform (JLCP) • http://www.jlcp.org/index.do, version 0.5 • Nuke sur JBoss Architecture ouverte: standards et logiciels ouverts en Java
Un canevas d’entreprise • Riche et complexe • Open for Business Project • http://www.ofbiz.org/ Architecture ouverte: standards et logiciels ouverts en Java
Flux de tâches • Permet d’externaliser le séquencement des opérations et des événements sur de longue période (heures, jours, semaines) • « Workflow » d’exécution des composants • Caractéristiques souhaitées • Standardisation des descriptions de workflow (XPDL, WfXML) • Interface pour la création et l’édition des workflows • Mécanisme de persistence de l’état des workflows (Mémoire, Sérialization, JDBC, EJB) • Exemple: • OS Workflow • OfBiz Workflow Architecture ouverte: standards et logiciels ouverts en Java
Règles d’entreprises • Les règles d’entreprises permettent d’externaliser la logique d’affaire et de l’enlever du code • Les moteurs de règles, • héritiers des systèmes experts des années 80, • sont la technologie appropriée pour encoder les règles d’affaires • Critères propres aux moteurs de règles • Résolution par chaînage avant ou chaînage arrière • Performance • Standardisation du langage de définition de règles (RuleML) • Compatibilité avec le JSR94 • Type de langage de définition de règles (ex: XML, Lisp-like) • Interface pour la création et l’édition des règles Architecture ouverte: standards et logiciels ouverts en Java
Outils ouverts et spécialisés pour les moteurs de règles • Drools • Chaînage avant • Voir http://www.drools.org/ • Mandarax • Chaînage arrière • http://mandarax.org/ • Bien d’autres, plus des outils de recherche • Rules ML Architecture ouverte: standards et logiciels ouverts en Java
Application de gestion d’entreprise et de relation client • Compiere • http://www.compiere.org/ • Offre ces fonctions de base • Quote to Cash • Requisition to Pay • Customer Relations Management • Partner Relations Management • Supply Chain Management • Performance Analysis • Web Store Architecture ouverte: standards et logiciels ouverts en Java
Comment choisir? Critères de sélection et d’évaluation de la technologie « Open-Source » • Type de license (p. ex. Apache, LGPL, GPL, etc.) • Compagnie(s) supportant(s) le projet • Prix du support externe • Qualité de la documentation • Coût de compréhension • (démo en-ligne, exemple(s) de code, FAQ, guide de l’utilisateur, javadoc en-ligne, tutoriel, livre(s)) • pour le développeur • pour l’administrateur • pour l’opérateur Architecture ouverte: standards et logiciels ouverts en Java
Qualité intrinsèque du projet • Nombre de committers • Trafic sur les principaux mailing lists • Références sur des sites reconnus • (ex: JavaWorld, OnJava.com, TheServerSide.com) • Dépendances • Nombre de jars externes requis • Facilité d’installation • Extensibilité • Flexibilité Architecture ouverte: standards et logiciels ouverts en Java
Qui? • Communauté Jakarta de Apache • Financé par IBM, Sun, et autres • Soutenu par une communauté de développeurs • Entrepreneurs offrant un service en complément à leur logiciel ouvert • Sourceforge • Bien d’autres Architecture ouverte: standards et logiciels ouverts en Java
Acteurs de la communauté des logiciels ouverts • Utilisateurs • personnel • PME • Grande entreprise • Gouvernements • Développeurs • solutions génériques • services clefs en main • Opérateurs de services Architecture ouverte: standards et logiciels ouverts en Java
Modèles commerciaux • Distribution • Intégration du logiciel • Intégration du matériel (IBM, ventes 1.5 Milliard) • Support • Publications • (O’Reilly) • Contrats de développement • Version à valeur ajoutée commerciale • OpenOffice Vs StarOffice • Licenses doubles • Produits spécialisés • (Firewall basé sur Linux) Architecture ouverte: standards et logiciels ouverts en Java