Open Source Frameworks codecentric GmbH Mirko Novakovic © 2007 codecentric GmbH Agenda 1. Vorteile von Open Source 2. Framework-Kategorien 3. Open Source Frameworks 4. Empfehlungen 1 © 2007 codecentric GmbH 1. Vorteile von Open Source 1.1 Offenheit 1.2 Community 1.3 Unabhängigkeit & Kosten 2 © 2007 codecentric GmbH 1.1 Vorteile von Open Source - Offenheit Offenheit der Sourcen – Besseres Verständnis für die Funktion eines Frameworks – Debugging der Frameworks – Eigene Erweiterungen und Patches Offenheit des Entwicklungsplans – Keine Marketing Releases – Planungssicherheit – Möglichkeiten der Mitbestimmung Offenheit des Fehler- und Changemanagement Systems – Schnelle Suche bei Fehlern – Direktes Feedback der Entwickler – „Voting“ für Priorisierung 3 © 2007 codecentric GmbH 1.2 Vorteile von Open Source – Community Foren und Mailinglisten – Schnelles Feedback bei Fragen und Problemen – Erfahrung: Lösungen innerhalb von 24h - meistens Antworten innerhalb einer Stunde – Direkter Kontakt zu Entwicklern Community Dokumentation – Wikis mit Tips & Tricks – Viele Bücher und Artikel über Open Source Frameworks Hohe Qualität durch hohe Nutzung – Teilweise > 1.000.000 Downloads von Frameworks – Hoher Verbreitungsgrad und Nutzung führen zu viel Feedback bei Fehlern und Changes und zu einer hohen Qualität – Offenheit der Sourcen mit viel Feedback 4 © 2007 codecentric GmbH 1.3 Vorteile von Open Source – Unabhängigkeit & Kosten Freie Wahl des Support und Service Dienstleisters – Großes Angebot an Service, Support und Schulungen – „Comitter“-Unternehmen Unternehmen mit hoher Qualität und Developer Support Kosten sind auch ein Faktor – Open Source Frameworks haben keine Anschaffungskosten – Kosten für Einarbeitung, Support und Schulungen sind aber trotzdem vorhanden 5 © 2007 codecentric GmbH 2. Framework-Kategorien 2.1 Framework Kategorien 6 © 2007 codecentric GmbH 2.1.1 Framework Kategorien Webframeworks – – – – – – Model-View-Controller Controller (MVC) Komponenten View Komponenten Library Request Parser und Validierung Flow Konfiguration Templating AJAX Support Dependency Injection Frameworks – Umsetzung eines Inversion of Control Containers – Wireing und Konfiguration von Komponenten – Management von Transaktion, Security, etc. 7 © 2007 codecentric GmbH 2.1.2 Framework Kategorien Business Frameworks – Business Rule Engines für eine einfache Pflege, Verwaltung und performante Ausführung von Geschäftsregeln – Business Process Engines für die Modellierung und Ausführung von Geschäftsprozessen. Insbesondere auch Task-Listen Task (Postkörbe) und asynchrone Verarbeitung von Prozessen. O/R Mapper – – – – – Mapping von Objekten auf ein relationales Datenbank Modell Unterstützung von Relationen und Vererbungen CRUD Funktionalität Caching, Fetching Strategien, Typ-Mapping Typ Support unterschiedlicher Datenbank Systeme und Dialekte 8 © 2007 codecentric GmbH 2.1.3 Framework Kategorien SOA Frameworks – – – – Remoting Frameworks, insbesondere SOAP Unterstützung Service Komponenten Frameworks Enterprise Service Bus Registry Utility Frameworks – – – – Logging Timer Caching XML Verarbeitung 9 © 2007 codecentric GmbH 3. Open Source Frameworks 3.1 Web Frameworks 3.2 Dependency Injection Frameworks 3.3 Business Frameworks 3.4 O/R Mapper 3.5 SOA Frameworks 3.6 Utility Frameworks 10 © 2007 codecentric GmbH 3.1.1 Webframeworks – Struts http://struts.apache.com Apache Projekt mit sehr hoher Verbreitung – Version 1.x – klassisches Action basiertes MVC Framework – Version 2.x – Fusion mit WebWork zu einem modernen und erweiterbaren MVC Framework Große Auswahl an Template Technologien – JSP, Freemarker, Velocity,… Sehr gute Integration mit anderen Frameworks – Spring – Hibernate/EJB3 11 © 2007 codecentric GmbH 3.1.2 Webframeworks – SEAM http://labs.jboss.com/jbossseam/ Ein Java EE 5 Framework – Mehr als ein MVC Framework. Füllt die Lücke zwischen JSF und EJB3 im Java EE 5 Standard – Annotation basiertes Dependency Injection Framework – Eingebauter Support für AJAX (RichFaces) Integration vieler Standards und Frameworks – – – – – – – EJB3/Hibernate jBpm JBoss Rules JSF/Facelets/RichFaces Groovy Support Caching (JBoss Cache) iText, WebServices, Email, Security 12 © 2007 codecentric GmbH 3.1.3 Webframeworks – GWT http://code.google.com/webtoolkit/ AJAX basiertes Rich Internet Application Framework – – – – – Entwicklung komplette in Java auf Basis einer Komponenten-Library Komponenten Übersetzung der Anwendung in pures Javascript und HTML Kompatibel mit Standard-Browsern Browsern Debugging und JUnit Testing in Java möglich RPC Mechanismus für Kommunikation mit Java (Servlet Technologie) 13 © 2007 codecentric GmbH 3.1.4 Webframeworks – Alternativen Apache MyFaces http://myfaces.apache.org/ – JSF 1.2 Implementierung mit hoher Anzahl Komponenten Tapestry http://tapestry.apache.org/ – Komponentenbasiertes Framework – Erweiterung von HTML Tags – Seiten bleiben durch Designer editierbar Spring MVC http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html – Action basiertes Framework auf Basis des Springframeworks – Spring Web Flow Erweiterung einfach Steuerung von Anwendungen 14 © 2007 codecentric GmbH 3.2.1 Dependency Injection Frameworks – Spring http://www.springframework.org/ Alternatives Framework zu Java EE – – – – POJO (Plain Old Java Object) basiert Inversion of Control – Container Technologie XML basiertes Konfiguration und Wireing Defacto Standard im Java Enterprise Bereich 15 © 2007 codecentric GmbH 3.2.2 Dependency Injection Frameworks – Guice http://code.google.com/p/google-guice/ Google Guice – – – – – Annotation basiertes Dependeny Injection Framework Programmatisches Binding der Service Implementierungen Unterstützung von Scopes (Singleton, Session, etc.) Lazy Loading von Singletons AOP Support für Transaktionen, Security etc. 16 © 2007 codecentric GmbH 3.3.1 Business Frameworks – Drools http://labs.jboss.com/drools/ Drools – – – – – Business Rule Management System und Rule Engine Deklaratives Programmieren Editierbare Regeln durch fachlichen Anwendern inkl. GUI Separierung von Logik und Daten Hoch performant (Rete Algorithmus) und skalierbar 17 © 2007 codecentric GmbH 3.3.2 Business Frameworks – jBpm http://labs.jboss.com/jbossjbpm/ JBoss jBpm – – – – – – – Workflow Engine Grafischer Designer für Prozesse XML basierte Definition (jPDL) WS-BPEL Unterstützung Task Management (Postkorb) Synchrone und asynchrone Prozesse Integrierbar in eigenen Anwendungen 18 © 2007 codecentric GmbH 3.4.1 O/R-Mapping - Hibernate http://www.hibernate.org Hibernate – O/R-Mapper Mapper mit Unterstützung von Vererbung, Polymorphismus, Assoziationen, etc. – „Tansparent Persistence“ : Der Entwickler programmiert unabhängig von der Persistenz gemäß OO-Paradigmen – Eigene Abfragesprache HQL, SQL wird generiert – Caching, Lazy Loading – Implementiert JPA (Java Persistence Management API) – Basis von EJB 3 19 © 2007 codecentric GmbH 3.4.2 O/R-Mapping - iBatis http://ibatis.apache.org/ iBatis – Einfaches Datenmapping-Frameworks Frameworks – kein kompletter O/R-Mapper – Mapping auf SQL / Stored Procedures in einer XML-Konfiguration – Caching, Lazy Loading – Unterstützt auch .NET und Ruby 20 © 2007 codecentric GmbH 3.5.1 SOA Frameworks – XFire/CFX http://incubator.apache.org/cxf/ XFire/CFX CFX ist Zusammenlegung von Xfire und IONA Celtix ESB Service Framework für Entwicklung von WebServices Protokolle: SOAP, XML/HTTP, RESTful HTTP und CORBA Standards: WS-Adressing, Adressing, WS-Policy, WS WS-RM, WS-Security, JAX-WS Sehr gut Erweiterbar und Integrierbar Hohe Performance Intuitive und einfach Benutzbarkeit Code Generatoren für WSDL, XSD, … Spring Integration RESTful Services über HTTP Binding 21 © 2007 codecentric GmbH 3.5.2 SOA Frameworks – Axis2 http://ws.apache.org/axis2/ Axis2 WebService Engine mit hoher Verbreitung auch in kommerziellen Application Servern SOAP und ReST Unterstützung POJO Unterstützung für WebServices WS-Security, WS-ReliableMessaging, ReliableMessaging, WS-Addressing, WS WSCoordination und WS-Atomic Atomic Transaction 22 © 2007 codecentric GmbH 3.5.3 SOA Frameworks – Mule http://mule.mulesource.org/ Mule ESB Enterprise Service Bus Synchrone und asynchrone Kommunikation Erweiterbares und offenes Konzept Unterstützung von POJOs, Spring, HiveMind und PicoContainer Transports: AS400 DQ, Email, File, Ftp, Imap, Multicast, JMS,VM, Servlet, SOAP, TCP, UDP, … Support durch MuleSource http://www.mulesource.com Offene Transport Entwicklung in MuleForge http://www.muleforge.org/ 23 © 2007 codecentric GmbH 3.6.1 Utility Frameworks Apache Commons Logging Bietet eine einheitliche Schnittstelle für Logging in JavaJava Anwendungen Definiert Log-Level Level (ERROR, WARN, INFO, etc.) Implementierung des Loggings durch Konfiguration bestimmbar Standard-Java-API, API, Log4J, WebSphere-Logging,… WebSphere JBoss Cache Implementiert Caching von Java-Objekten Java über JVM-Grenzen hinweg Synchronisationsmechnismen und Protokolle konfigurierbar Basis für das JBoss-Clustering Clustering 24 © 2007 codecentric GmbH 3.6.2 Utility Frameworks Apache Xalan/Xerces Xerces : XML-Parser Xalan : XSLT-Engine Hoher Verbreitungs- und Bekanntheitsgrad XML-Processing des IBM-JDKs JDKs basiert auf Xalan/Xerces Opensymphony Quartz Bietet Scheduling-Mechanismen Mechanismen für Java Einsetzbar in Java SE und EE Konfiguration ähnlich wie „cron“ iText Framework zur Erstellung und Manipulation von PDFs 25 © 2007 codecentric GmbH