Présentation au DIRO 12 décembre 2003 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 12 décembre 2003
Architecture ouverte: standards et logiciels ouverts en Java 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
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
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
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
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
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
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 applicatifs Infrastructure 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
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
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
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
Architecture ouverte: standards et logiciels ouverts en Java Open symphony Composants WebWork An MVC framework that stresses simplicity and interoperability. SiteMesh A page layout and decoration engine OSCache A web-tier caching framework OSWorkflow A flexible workflow engine that can be plugged in to almost any need or existing application. OSUser A user and group management component with pluggable storage and application server integrations. OSAccess An 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
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
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
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
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
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
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