Architecture ouverte:standards et logiciels ouverts
en JavaRobert 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 2
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 3
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 4
Standards ouverts
• Spécifications techniques
• Implémentation de référence
• Tests de conformité
Architecture ouverte: standards et logiciels ouverts en Java 5
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 6
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 7
Comparaison
Architecture ouverte: standards et logiciels ouverts en Java 8
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 9
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 10
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 11
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 12
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 13
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 14
Serveur Web léger d’entreprise
• Standard Servlet et JSP• Tomcat
– Avec Apache
– JBOSS ou autres
Architecture ouverte: standards et logiciels ouverts en Java 15
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 16
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 17
Canevas applicatifs
• Modèles de présentation- MVC
• Applications légères
• Applications complexes
Architecture ouverte: standards et logiciels ouverts en Java 18
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 19
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 20
Open symphony
• Composants– WebWork
An 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 21
Applications spécialisées
Architecture ouverte: standards et logiciels ouverts en Java 22
Système de gestion de contenu
• Standards pertinents– JSR 168 - Portlet– JSR 170 – “Content Repository”
Architecture ouverte: standards et logiciels ouverts en Java 23
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 24
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 25
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 26
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 27
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 28
Un canevas d’entreprise
• Riche et complexe
• Open for Business Project– http://www.ofbiz.org/
Architecture ouverte: standards et logiciels ouverts en Java 29
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 30
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 31
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 32
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 33
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 34
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 35
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 36
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 37
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)