26
FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

FWP Aktuelle Technologien zur Entwicklung verteilter Java … · 2018-02-11 · Java EE Tutorial Java EE Tutorial Project auf GitHub (gesponsort von Oracle) Jez Humble, David Farley

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

2

Oracle übergibt in Absprache mit IBM und Red Hat die Weiterentwicklung von Java EE an die Eclipse Foundation

keine Abhängigkeit von einer einzelnen Partei mehr

Entwicklungsprozess soll transparenter, flexibler und agiler werden

Oracle unterstützt weiterhin aktuelle Java EE Lizenzen

Oracle setzt weiterhin auf WebLogic als Application Server

Neuer Projektname lautet Eclipse Enterprise for Java (EE4J)

Homepage unter https://projects.eclipse.org/projects/ee4j

3

Java EE Spezifikation definiert

ein Programmiermodell für Applikationen

die Eigenschaften einer Laufzeitumgebung für Applikationen (Application Server)

Hersteller liefern Application Server

Fokus auf server-seitige Applikationen mit web-basierter Benutzeroberfläche

Aktuelle Version: JavaEE 8 (September 2017)

4

Standardisierter Applikationscontainer mit essentiellen Infrastrukturdiensten

Remoting, Transaktionen, Security, Persistenz

Leichte und schnelle Entwicklung von portablen, serverseitigen Applikationen

POJO-basiertes Modell, Annotations, Convention over Configuration, Dependency Injection, AOP

Flexibler Technologiestack über Profile

Ausgelegt auf Erweiterbarkeit5

Profile ermöglichen flexiblen Technologiestack

Java EE kommt standardmäßig mit zwei Profilen

Full Profile = komplette Laufzeitumgebung

Web Profile = reduzierte Laufzeitumgebung („Tomcat mit EJBs“)

Community (Eclipse Foundation) liefert drittes Profil

Micro Profile = reduzierte Laufzeitumgebung für Microservices

6

Servlet API: Support für (HTTP-)Endpunkte

Websockets: Support für Websockets

JSF: Java Server Faces; webbasierte Uis

JAX-WS: Java API for XML Web Services (SOAP)

JAXB: Java Architecture for XML Binding; schon aus Java SE

JAX-RS: Java API for RESTful Web Services (REST)

JSON-P: Java API for JSON Processing

JMS: Java Message Service; Integration von Messaging Systemen

EJB: Enterprise Java Beans; Support für serverseitige transaktionale Komponenten

CDI: Contexts and Dependency Injection

JDBC: Java Database Connectivity; Integration von relationalen Datenbanken aus Java SE

JPA: Java Persistence API; Standard für persistente Java-Objekte

JCA: Java EE Connector Architecture; Integration von transaktionalen Enterprise Information Systemen

7

JEE Enterprise Application CDI

ServletAPI

JSF

JDBC

JAX-WS JAX-RS JMS

JPA JCA JAX-WS JAX-RS JMS

EJB

Web-sockets

JSON-PJAXB

Rolle eines JEE Application Servers und dessen Zusammenspiel mit JEE Applikationen

8

JEE Application Server stellt Laufzeitumgebung für JEE Applikationen dar

JEE Application Server muss vorgebeneSchnittstellen anbieten, damit JEE Applikationen darin laufen können

JEE Applikation muss bestimmte Schnittstellen unterstützen, damit der JEE Application Server sie ausführen kann

9

JEE Application Server

JEE Application

Konnektoren zurund Endpunkte für

Außenwelt

JEE Applikation bestehen aus Komponenten von bestimmten Typen

Pro Komponententyp gibt es eigene Container im JEE Application Server: Web-Komponenten (WC) laufen im Servlet

Container

CDI-Container verwaltet alle CDI managedBeans (CMB)

EJB-Container kontrolliert alle Enterprise Java Beans (EJB)

Container kennen sich untereinander

10

JEE Application Server

Web / Servlet Container

CDI Container

EJB Container

WC WC WC

CMB CMB CMB

EJB EJB EJB

11

Glassfish• Open Source Referenz Implementierung• Aktuelle Version: 5.0 (JEE 8)• Webseite: https://javaee.github.io/glassfish/

Payara• Glassfish Klon mit kommerziellem Support• Aktuelle Version: 4.1 (JEE 7), 5 Beta (JEE 8)• Webseite: https://www.payara.fish/

WebLogic• Kommerzielles Server-Flagschiff von Oracle• Aktuelle Version: 12.c (JEE 7)• Webseite: https://www.oracle.com/de/middleware/weblogic/index.html

WebSphere• Kommerzielles Server-Flagschiff von IBM• Aktuelle Version: 9 (JEE 7)• Webseite: https://www.ibm.com/de-de/marketplace/java-ee-runtime

JBoss EAP• Kommerzieller Server von Red Hat• Aktuelle Version: 7.1 (JEE 7)• Webseite:

https://www.redhat.com/de/technologies/jboss-middleware/application-platform

WildFly• Open Source Community Server von Red Hat• Aktuelle Version: 11 (JEE 7)• Webseite: http://wildfly.org/

Aufbau von JEE Applikationen

12

Eine typische Java EE Applikation wird durch ein Enterprise Application Archive (EAR) repräsentiert

ZIP-Datei mit standardisiertem Inhalt

In sich vollständige Installationseinheit

Ein EAR besteht im allgemeinen

aus einer Webapplikation (WAR), die die Benutzeroberfläche repräsentiert

aus einem EJB JAR mit Enterprise Java Beans, die die Businesslogik der Applikation repräsentieren

aus einem EJB Client JAR, welches die Interfaces zu den EJBs zur Verfügung stellt

aus mehreren Utility JARs, die Querschnittsfunktionalität für alle Module zur Verfügung stellt (Frameworks, Security, Logging…) (/lib)

13

Web UI

Service Facades

Enterprise Application (EAR)

Web Application (WAR)

EJB (JAR)

EJB Client (JAR)

Utility (JAR)

DD

DD

DD

Utility (JAR) Utility (JAR)

${appName}.ear│├ ${webModName}.war├ ${ejbClientModName}.jar├ ${ejbModName}.jar│├ /META-INF│ ├ application.xml│ └ glassfish-application.xml│└ /lib

├ ${utilityModName}.jar├ ${utilityModName}.jar└ …

14

Applikationsmodule: Web Application Module (WAR), EJB Client Module (JAR), EJB Module (JAR)

Deployment Deskriptoren (optional):application.xml = Standard-Deskriptorglassfish-application.xml = Hersteller-spezifischer Deskriptor

Alle Utility-JARs, die keine Web Application Module, keine EJB (Client) Module sind

Eine typische Java EE Web-Applikation wird durch ein Web Application Archive (WAR) repräsentiert

ZIP-Datei mit standardisiertem Inhalt

In sich vollständige Installationseinheit

Ein WAR besteht im allgemeinen

aus kompilierten Java-Klassen (/WEB-INF/classes)

aus Web-Ressourcen wie (X)HTML, Grafiken, CSS, JavaScript (/*)

aus JSF-Ressource-Bibliotheken(/resources/${libraryName}/*

aus mehreren Utility-JARs (/WEB-INF/lib)

Enterprise Java Beans (EJB) werden auch unterstützt(EJB Lite = EJB ohne Remote Interfaces)

15

Web Application (WAR)

Utility (JAR)

DD

Utility (JAR) Utility (JAR)

Kompilierte Java-Klassen(/WEB-INF/classes)

Web-Ressourcen(/*, /resources/${libraryName}/*)

${webAppName}.war│├ [static web resources]│└ /WEB-INF

├ web.xml├ glassfish-web.xml├ beans.xml├ faces-config.xml├ persistence.xml│├ /classes│ └ [compiled classes].class│└ /lib

├ ${utilityModName}.jar├ ${utilityModName}.jar└ … 16

Statische Web-Ressourcen (HTML, CSS, JS, Bilder) mit beliebiger Verzeichnisstruktur

Deployment Deskriptoren und Konfigurationsdateien (optional):web.xml = Standard-Deskriptorglassfish-web.xml = Hersteller-spezifischer Deskriptorbeans.xml = CDI-Konfigurationsdateifaces-config.xml = JSF-Konfigurationsdateipersistence.xml = JPA-Konfigurationsdatei

Alle Utility-JARs

Bereitstellung von Apps zur Ausführung in einem App Server

17

18

Application Server Host(z.B Linux VM / Docker Container)

Database Host

Java Virtual Machine (JVM)JEE Application Server

(z.B. Glassfish)

JEE Application(EAR/WAR)

RDBMS

Schema

DSJEE

Application(EAR/WAR)

Deploy

• Deployment Unit ist JEE Applikation

• JEE Application Server muss getrennt angelegt, konfiguriert und betrieben werden

DataSource als Beispiel für JNDI-

Ressourcen

Docker Host

Docker ContainerDocker Image

19

Database Host

Java Virtual Machine (JVM)JEE Application Server

(z.B. Glassfish)

JEE Application(EAR/WAR)

RDBMS

Schema

DS

Java Virtual Machine (JVM)JEE Application Server

(z.B. Glassfish)

JEE Application(EAR/WAR)

DS

• Deployment Unit ist Docker Image mit JEE Application Server plus Applikation

• JEE Application Server wird gemeinsam mit Applikation angelegt und konfiguriert

Deploy / Run

Manuell über

IDE (lokal)

Admin Konsole des App Servers

Command Line Interface (CLI) des App Servers

Automatisiert über

Maven Plugin

Build Step im Continuous Integration Server (Jenkins u.ä.)

20

Commit Stage

•Wird durch Commit angestoßen

•Checkt Code aus

•Kompiliert Code

•Führt Unit-Tests durch

•Analysiert Code

•Erstellt Artefakt (Deployment Unit)

Integration Test Stage

•Deployt Artefakt auf Integrations-Umgebung

•Führt System-Tests aus

•Rollt bei Problemen automatisch auf Vorgängerversion zurück

User Acceptance Test Stage

•Deployt Artefakt auf User-Acceptance-Test-Umgebung

•Führt System-Tests durch

•Tester führen manuelle Abnahme-Tests durch

•Product Owner gibt Artefakt für Produktion frei

•Rollt bei Problemen automatisch auf Vorgängerversion zurück

Capacity Test Stage

•Deployt Artefakt auf Capacity-Test-Umgebung

•Führt System-Tests durch

•Führt Last- und Stress-Tests durch

Production Stage

•Deployt Artefakt auf Produktions-Umgebung

•Führt System-Tests durch

•Rollt bei Problemen automatisch auf Vorgängerversion zurück

21

22

ContinuousIntegration Server

Code Quality Analyzer

Integration Test

User Acceptance

Test

CapacityTest

Production

Build Tool

Version Control System

deploy artifact,run tests

run analysis

build artifact

deploy artifact,run tests

deploy artifact,run tests

deployartifact,run testsArtifact

Repository

push/pull artifact

Drone

Jenkins

Test Tools

test artifact

Gitea

trigger build

23

24

Java Platform Enterprise Edition (Java EE)http://www.oracle.com/technetwork/java/javaee/overview/index.htmlOffizielle Homepage für Java EE von Oracle

Eclipse Enterprise for Java (EE4J)https://projects.eclipse.org/projects/ee4j/Offizielle Homepage für Java EE der Eclipse Foundation

Java EE Tutorialhttps://javaee.github.io/tutorial/Java EE Tutorial Project auf GitHub (gesponsort von Oracle)

Jez Humble, David FarleyContinuous Delivery: Reliable Software Releases Through Build, Test, and Deployment AutomationPearson Professional; Auflage: 01 (27. Juli 2010)ISBN: 978-0321601919

25

Michael TheisLehrbeauftragter Hochschule München

email [email protected] + 49 170 5403805web http://www.tschutschu.de/Lehrauftrag.html

26