Open Source Frameworks codecentric GmbH Mirko Novakovic
Agenda 1. Vorteile von Open Source 2. Framework-Kategorien 3. Open Source Frameworks 4. Empfehlungen 1
1. Vorteile von Open Source 1.1 Offenheit 1.2 Community 1.3 Unabhängigkeit & Kosten 2
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
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
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 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
2. Framework-Kategorien 2.1 Framework Kategorien 6
2.1.1 Framework Kategorien Webframeworks Model-View-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
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 (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 Support unterschiedlicher Datenbank Systeme und Dialekte 8
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
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
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
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
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 Übersetzung der Anwendung in pures Javascript und HTML Kompatibel mit Standard-Browsern Debugging und JUnit Testing in Java möglich RPC Mechanismus für Kommunikation mit Java (Servlet Technologie) 13
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
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
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
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
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
3.4.1 O/R-Mapping - Hibernate http://www.hibernate.org Hibernate O/R-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
3.4.2 O/R-Mapping - ibatis http://ibatis.apache.org/ ibatis Einfaches Datenmapping-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
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, WS-Policy, 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
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, WS-Addressing, WS- Coordination und WS-Atomic Transaction 22
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
3.6.1 Utility Frameworks Apache Commons Logging Bietet eine einheitliche Schnittstelle für Logging in Java- Anwendungen Definiert Log-Level Level (ERROR, WARN, INFO, etc.) Implementierung des Loggings durch Konfiguration bestimmbar Standard-Java-API, Log4J, WebSphere-Logging, JBoss Cache Implementiert Caching von Java-Objekten über JVM-Grenzen hinweg Synchronisationsmechnismen und Protokolle konfigurierbar Basis für das JBoss-Clustering 24
3.6.2 Utility Frameworks Apache Xalan/Xerces Xerces : XML-Parser Xalan : XSLT-Engine Hoher Verbreitungs- und Bekanntheitsgrad XML-Processing des IBM-JDKs basiert auf Xalan/Xerces Opensymphony Quartz Bietet Scheduling-Mechanismen für Java Einsetzbar in Java SE und EE Konfiguration ähnlich wie cron itext Framework zur Erstellung und Manipulation von PDFs 25