Lightweight Java in der Automatisierungstechnik Erfahrungen aus dem Anlagenbau Dr. Markus Eiglsperger eig@zuehlke.com
Business Driver im Anlagenbau Kosten Modularisierung Vernetzung Agilität
Paradigmenwechsel Integriert Breites Aufgabenspektrum Verteilt IT System Isoliert Begrenzte Aufgabe Lokal Prozessgerät
Inhalt Anforderungen an die SW Architektur J2EE als Plattform für ein Automatisierungssystem Ereignis-getriebene Architekturen Lightweight Java als Alternative
Fallstudie: Logistiksystem Isolierte Lösung
Fallstudie: Logistiksystem Teilintegrierte Lösung Backend
Fallstudie: Logistiksystem Vollintegrierte Lösung
Anforderungen an die SW Architektur im integrierten Paradigma Robustheit/Fehlertoleranz Skalierbarkeit Flexibilität Integrierbarkeit Echtzeitfähigkeit
Verwendung von COTS Komponenten und Standards als Ausweg Hardware Betriebssystem Datenspeicherung Middleware Bibliotheken Komponentenframework
Der Aufstieg der Java Plattform 1991 Initiales Design Set Top Boxen 1995 Java Applets Unterstützung in Netscape 1998 Release der Java-2-Plattform 2001 J2EE 1.4 2008 JDK 6 und JEE 5
Java Popularität
Java 2 Enterprise Edition (J2EE) Schichtenmodell Web Browser JSP Servlets JCA WS MDB EJB J2EE Container Java Virtual Machine (JVM)
J2EE als Architekturbasis Anforderung Robustheit/Fehlertoleranz Skalierbarkeit Flexibilität Integrierbarkeit Echtzeitfähigkeit J2EE Konzept Clustering Clustering Komponenten (EJBs) JMS/Webservices/JCA Realtime VM
JVM und Echtzeit Anforderungen Herausforderung mit Standard Java Vitual Machine (JVM) Class Loading Just in Time (JIT) Compilierung Garbage Collection Thread Management Produkte die Probleme der Standard JVM adressieren: SUN Java Real-Time System 2.0 IBM WebSphere Real Time BEA WebLogic Real Time 2.0 Javolution
Fallstudie: Logistiksystem Integriertes System mit J2EE Anweisungen Messwerte Web Browser Überwachung Anlagen-Steuerung Status Regelwerk Data Warehouse Leitstand Manuelle Bearbeitung Ergebnisse Algorithmik
Bewertung Projekt wurde erfolgreich realisiert Geforderte Performance wurde erreicht (max. 600.000 Stück Systemdurchsatz pro Stunde) Kurze Failover Zeiten Geschätzte HW Ressourcen waren ausreichend
Zu berücksichtigen Performance Tuning Garbage Collection Container Magic Cluster Cluster Kommunikation Failover Repräsentation globaler Applikationszustände
Merkmale der J2EE Architektur Web Browser JSP Servlets JCA WS MDB Request/Reply Paradigma Session Konzept Kein Konzept für applikationsweite Zustände EJB J2EE Container Java Virtual Machine
Merkmale des Logistiksystems Regelwerk Data Warehouse Leitstand Manuelle Bearbeitung Ergebnisse Algorithmik
Architektur Annahmen Informationssystem Anfragegesteuert Security/Transaktionen High Footprint Symmetrisch ausgelegt Viele Clients/Geringer Durchsatz Automatisierungssystem Ereignisgesteuert Echtzeitanforderungen Low Footprint Asymmetrisch Wenige Clients/Hoher Durchsatz
Alternative: Ereignis-Getriebene Architekturen Event-Quelle (z.b. Sensor) Event-Verarbeiter (z.b. Workflow-Engine) Event Event-Senke (z.b. Aktor)
Eigenschaften Ereignis-Getriebener Architekturen Viele gleichzeitige Empfänger Aktualität Feine Granularität Ontologie Komplexe Ereignisse G. Hohpe: Programmieren ohne Stack, Ereignis-Getriebene Architekturen, ObjectSpektrum 2/2006
Implementierung mit J2EE Proxy Legacy EJB EJB JDBC MDB JCA EJB Enteprise Java Beans MDB MDB JMS J2EE Container Deployment Descriptor JMS
Implementierung mit Lightweight Java (LWJ) Komponenten als Java Beans (POJOs) Verwendung von Message Queues (JMS) Kopplung über Lightweight Komponentenframework Explizite Verwaltung der Abhängigkeiten Konfiguration Lifecycle Managment Beispiele: Inversion of Control Container: Spring Framework, Guice, Pico, Hivemind OSGi
Laufzeitumgebung Dienste werden als Infrastrukturkomponenten integriert Komponenten abstrahieren Ressourcen der Laufzeitumgebung Datenbank Message Queues Verzeichnisdienst Caches
Entkoppelung von Sender und Empfänger durch Queues JDBC Legacy Legacy POJO POJO POJO POJO POJO POJO JMS Komponentenframework
Vergleich LWJ vs. J2EE LWJ J2EE!"# Komponentenframework J2EE Container
Mechanismen für Skalierbarkeit und Fehlertoleranz Datenbank Verteilter Cache Verschiedene Topologien (all-to-all, partitioned, clientserver) Beispiele: ORACLE Coherence, GigaSpaces, GemStone Messaging Platform MQ Series, TIBCO Rendevouz
Lightweight Java Architektur im Vergleich Anforderung LWJ Konzept J2EE Konzept Robustheit/ Fehlertoleranz Middleware/ Distributed Cache Clustering Skalierbarkeit Middleware Clustering Flexibilität Komponentenframework Komponenten (EJBs) Integrierbarkeit Komponentenframework JMS/Webservices/ JCA Echtzeitfähigkeit Realtime JVM Realtime VM
Beispiel: BEA Event Server See: http://dev2dev.bea.com/pub/a/2007/09/event-server-caching.html
Zusammenfassung Auf Basis der J2EE Plattform können erfolgreich Echtzeit-Systeme erstellt werden Spezifische nichtfunktionale Anforderungen müssen sorgfältig berücksichtigt werden Lightweight Java Architekturen in Kombination mit J2EE sind eine vielversprechende Erweiterung zu klassischen n-tier-architekturen
Vielen Dank für Ihre Aufmerksamkeit Fragen? Fragen? Fragen? Fragen? Fragen? Fragen? $ Fragen?