370 likes | 463 Vues
Learn about open architecture principles, open standards, and open-source software in Java. Explore the ecosystem of freedom, autonomy, and competition. Understand the importance of open specifications, reference implementations, and compliance testing. Discover how Java's extensive APIs allow for stable foundations and interlacing components from diverse origins. Gain insights into licensing models, strategic points, and comparisons between open source philosophies. Find out about popular Java development tools, application servers, databases, and J2EE infrastructure. Stay updated on the latest in Java technologies and community initiatives.
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