Open Source Frameworks

Werbung
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
Herunterladen