1.05k likes | 1.21k Views
Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details. Entwicklung von Java. 1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OO-Sprache, insbesondere für Embedded Systems 1994: Erkenntnis, dass Sprache für Web-Anwendungen geeignet ist Kompakter Code
E N D
Rolle von JavaVerteilte Verarbeitung mit JavaJ2EE ÜbersichtJ2EE Details
Entwicklung von Java • 1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OO-Sprache, insbesondere für Embedded Systems • 1994: Erkenntnis, dass Sprache für Web-Anwendungen geeignet ist • Kompakter Code • Interpreter Konzept • Plattform-unabhängig • 1995: Namensgebung Java; Vorstellung der Sprache • 1996: Große Akzeptanz für Programmierung im Internet • 1997: JDK 1.1; Unterstützung durch viele vorgefertigte Klassen • 1998: JDK 1.2 • Java IDL und RMI • Swing (GUI Bibliothek) • Gegenwärtige Version: 1.3.1 (Bestandteil von J2SE) • J2SE (mit SDK) 1.4 im Beta 3 (seit 11/01; Release in Q1/2002)
Rolle von Java • Java: Portable objekt-orientierte Programmierumgebung • Programmiersprache (an C++ angelehnt) • Compiler (erzeugt Bytecode) • Java Virtual Machine (JVM): interpretiert Bytecode • JIT (Just in Time) Compiler übersetzt Bytecode in Maschinencode • Java ist die Sprache des Internet • Konzept Interpreter (JVM) mit Bytecode ideal für verteilte Systeme • Der gleiche Code kann in allen Stufen benutzt werden • Write Once Run Anywhere (WORA)
Java Entwicklung und Ausführung Java SourceCodes Class Loader Java Compiler ByteCode Verifier Laden vom Filesystem oder über das Netz Just in Time Compiler Java ByteCodes Java Virtual Machine Java Developers Kit IDE´s Binary Code IDE: Integrated Development Environment z.B. JBuilder von Borland Java Platform
Java Plattformen • Java 2 Platform, Standard Edition (J2SE) • Standard Java Konfiguration • Enthält alle Kern-Klassen • Enthält JDK • Java 2 Platform, Enterprise Edition (J2EE) • Enthält J2SE • Zusätzliche API´s und Services für unternehmens-kritische Anwendungen (z.B. Transaktionen, Komponentenmodell EJB) • PersonalJava • Teilmenge von J2SE • Java Card • Teilmenge von PersonalJava • Bestimmt für Smart Cards
Java in .NET (JUMP) Ca. 20 Sprachen Class Loader Visual Baisc Visual J# .NET C# Compiler Compiler Compiler Laden vom Filesystem oder über das Netz Common Language Runtime CLR JUMP Converter MSIL Java ByteCodes Visual Studio .NET .NET Framework MSIL: Microsoft Inrtermediate Language JUMP: Java User Migration Path (to Microsoft .NET) - Nur Sprache - Keine Unterstützung für API´s wie RMI
Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung • ORB ist Basis • Java IDL, um Stubs und Skeletons zu generieren • Wenn Verteilung über Internet, dann zusätzlich IIOP • Fall 2: Anwendung Java basiert Verteilung im LAN • Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen • Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen
CORBA Generiert aus Interface beschrieben in IDL Client Server Client Stub Server Skeleton Object Request Broker (ORB) • Client und Server können • in beliebigen • auch unterschiedlichen • Sprachen geschrieben sein CORBA/IDL sorgt für Mapping der Interfaces
CORBA; Client in Java Generiert aus Interface beschrieben in IDL Client Java Server bel. Sprache Client Stub Server Skeleton Object Request Broker (ORB) • Standardfall für CORBA • Interface in IDL notwendig • Client Stub für Java geniert aus IDL
CORBA; Server in Java Generiert aus Interface in Java Generiert aus Interface beschrieben in IDL Client bel. Sprache Server Java Client Stub Server Skeleton Object Request Broker (ORB) • Standardfall für CORBA • Interface in IDL notwendig; generiert aus Java • Server Skeleton für Java geniert aus IDL
IIOP CORBA über Internet Generiert aus Interface beschrieben in IDL Generiert aus Interface beschrieben in IDL Client Server Client Stub Server Skeleton ORB-1 ORB-2 • Client und Server können • in beliebigen • auch unterschiedlichen • Sprachen geschrieben sein CORBA/IDL sorgt für Mapping der Interfaces IIOP – Internet Inter-ORB Protocol
Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung • ORB ist Basis • Java IDL, um Stubs und Skeletons zu generieren • Wenn Verteilung über Internet, dann zusätzlich IIOP • Fall 2: Anwendung Java basiert Verteilung im LAN • Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen • Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen
RMI – Remote Method Invocation Client (Java) Server (Java) Client Stub Server Skeleton Java 2 Platform Standard Edition (J2SE) • Client und Server sind beide in Java geschrieben • Separate IDL ist nicht nötig. Java übernimmt die Rolle der IDL • J2SE übernimmt die Rolle des ORB • Stub und Skeleton werden von J2SE generiert
Verteilte Verarbeitung mit Java (Beispiel) Web Browser Applet Lädt Applet HTTP RMI Remote Method Invocation Web Server EJB File System Application Server DB
Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung • Fall 2: Anwendung Java basiert Verteilung im LAN • Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen • Nutzung von JNI (Java Native Interface) • Verbindung von Java Programmen mit Programmen in anderen Sprachen • Sowohl: Java ruft andere Sprachen auf; als auch: andere Sprache ruft Java auf • Details zu JNI hier nicht behandelt • Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen
Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung • Fall 2: Anwendung Java basiert Verteilung im LAN • Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen • Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen • Java Plattform mit IIOP Option • Kombination Java Plattform mit anderen Sprachen
J2SE J2SE IIOP RMI über IIOP Server (Java) Client (Java) Server Skeleton Client Stub • Wie Standard RMI • Benutzung des IIOP Protokolls • Damit Verteilung über das Internet
Verteilte Verarbeitung mit RMI über IIOP (Beispiel) Web Browser Internet Inter-ORB Protocol Applet Lädt Applet HTTP RMI über IIOP Web Server Nur Java zu Java EJB File System Application Server DB
J2SE IIOP Kooperation RMI und CORBA (Java Client) Generiert aus Interface beschrieben in IDL Client (Java) Server (bel. Sprache) Client Stub Server Skeleton ORB • Client ist in Java und Server in beliebiger Sprache (von CORBA unterstützt) geschrieben • Interfacebeschreibung in IDL wird aus Interface in Java generiert(oder auch umgekehrt?)Achtung Beschränkung bei existierenden Server Programmen möglich • J2SE kommuniziert über IIOP mit beliebigem ORB • Stub wird von J2SE (aus Java) und Skeleton von ORB (aus IDL) generiert
Verteilte Verarbeitung mit CORBA (Beispiel) Web Browser Applet Lädt Applet HTTP • IIOP – Kommunikationzwischen J2SE und ORBs verschiedener Hersteller • Einbindung unterschiedl.Sprachen möglich IIOP Web Server File System Object Request Broker Java C++ Andere Sprachen DB
ORB IIOP Kooperation RMI und CORBA (Java Server) Generiert aus Interface beschrieben in IDL Client (bel. Sprache) Server (Java) Client Stub Server Skeleton J2SE • Server ist in Java und Client in beliebiger Sprache (von CORBA unterstützt) geschrieben • Interfacebeschreibung in IDL wird aus Interface in Java generiertJ2SE kommuniziert über IIOP mit beliebigem ORB • Skeleton wird von J2SE (aus Java) und Stub von ORB (aus IDL) generiert
Vorteile RMI gegenüber RPC und CORBA • Objekt-orientiert: Argumente und Returnwerte können Objekte sein • Klassen können übertragen werden • Beispiel: Methoden, die auf dem Server implementiert sind, können zum Client übertragen werden, um dort direkt ausgeführt zu werden • Performance Vorteil • RMI basiert auf Java Sicherheitsmechanismen • Leicht zu schreiben und zu benutzen • Alles in Java, keine separate IDL • Beispiel Remote Interface für Client:import java.rmi.*;public interface ExpenseServer extends Remote { Policy getPolicy() throws RemoteException; void submitReport (ExpenseReport report) throws RemoteException, InvalidReportexception;} • Verteiltes Garbage Collection • RMI unterstützt Multi Threading
Java 2 Platform, Enterprise Edition • Java Plattform für Business Anwendungen • Enterprise Edition: Robuste Plattform für unternehmensweite, geschäfts-kritische Anwendungen • Einbindung in Unternehmensinfrastruktur • Transaktions-Unterstützung • Datenbank Zugriff • Plattform für E-Business Anwendungen • Mehrstufigen Architekturen • Zwei Typen von Anwendungsarchitekturen • Web basiert • Traditionelle Client/Server Architektur
Database ERP Systems Legacy Systems Application Component J2EE Stufen Architektur Tiers fat Client Web Browser Client Container Client HTML Applet Appl. Client Web Container J2EE Platform Web JSP Servlets J2EE Server EJB Container Business Entity EJB´s Session EJB´s Message-Driven EJB´s Enterprise Information System J2EE Container J2EE Platform
J2EE • J2EE Platform Specification • API´s • Release Level, um Kompatibilität, Portabilität und Integration zu sichern • J2EE Compatibility Test Suite • Hersteller können damit ihre Produkte auf Komformität mit der Spezifikation testen • J2EE Reference Implementation • Operationelle Definition der J2EE Plattform • J2EE Application Model • Guide • Beispiele und Design Patterns
J2EE API´s (1) • Die Nummern kennzeichnen die aktuellen Versionen im Herbst 2001 • Enterprise JavaBeans Technology 2.0 (EJB) • Komponententechnologie • Genutzt für Business Logik • EJB laufen in Container • Drei Arten • Session Beans • Entity Beans • Message-driven Beans • JDBC API 2.0 • API zum Zugriff auf relationale Datenbanken • Java Server Pages Technology 1.2 (JSP) • Textseiten (z.B. HTML oder XML) mit enthaltenem Java Code • Aus JSP Seiten werden Servlets generiert
J2EE API´s (2) • Java Message Services 1.0 (JMS) • API zum Erzeugen, Senden, Empfangen und Lesen von Messages • Java Transaction API 1.0 (JTA) • Klammerung von Datenbankoperationen zu einer Einheit • JavaMail Technology (1.2) • Versenden von Mails • Java API for XML Processing 1.1 (JAXP) • Lesen und Bearbeiten von XML Files • J2EE Connector Architecture 1.0 (JCA) • Technologie zur Integration von anderen Anwendungen • EAI Technologie von J2EE • Java Authentication and Authorization Services 1.0 (JAAS) • Authentifizierung und Autorisierung von Benutzern un Gruppen • Java Naming and Directory Interface API (JNDI)
Firewall Portal Server Verzeichnis Schnittstellen Benutzer-Schnittstellen Komponenten Business Komponenten Integrations Services Datenbank-Zugriffe Referenzarchitektur HTTP LAN Verzeichnis Services Geschäfts Partner Sicherheit Messaging Services Content Management Prozess-Management Transaktions-Management ERP Systeme Alt-Anwend. Datenbanken Datenbanken
Firewall Referenzarchitektur mit J2EE Komponenten Blaue Schrift in gestreiften Boxen kennzeichnen Komponenten der J2EE Definition HTTP LAN Portal Server Verzeichnis Services JNDI JSP Servlet Geschäfts Partner JAAS JMS - JavaMail Content Management Prozess-Management JTA Enterprise JavaBeans JAXP ERP Systeme JCA WebServices JDBC API Alt-Anwend. Datenbanken Datenbanken
Java 2 Platform, Enterprise EditionDetails Christian Menk Software Architektur Berater Softlab GmbH
J2EE im Detail • Java Servlet APIJava • Java Server Pages Technology 1.2 (JSP) • Java Authentication and Authorization Services 1.0 (JAAS) • Java Naming and Directory Interface API (JNDI) • Java Remote Method Invocation Enterprise (RMI) • JavaBeans Technology 2.0 (EJB) • JDBC API 2.0 • Java Message Services 1.0 (JMS) • Java Transaction API 1.0 (JTA) • JavaMail Technology (1.2) • Java API for XML Processing 1.1 (JAXP) • J2EE Connector Architecture 1.0 (JCA) • Java Native Interface (JNI)
Java Servlet API • Servlet • Begriff für ein Java Programm auf dem Server, es erweitert den Webserver um Funktionalität. • Ähnlich wie CGI Scripts, sie sind jedoch schneller und brauchen weniger Ressourcen, weil nicht wie beim CGI ein neuer Prozeß gestartet wird, sondern bei jeder Anfrage nur ein lightweight-Thread erzeugt wird. • Ein Servlet kann wie ein Applikationsserver agieren, d.h. ein Websserver kann ein Servlet wie einen Service behandeln. Z.B. kann eine DB-Verbindung aufrechterhalten werden, so dass Anfragen an die DB von einem Java Programm nicht immer wieder neu aufzubauen sind. • Benötigt wird ein Webserver auf dem die JVM läuft und die Servlet API unterstützt wird. • Bietet ein Server unabhängiges API
Java Servlet API 2 HTTP Server Java VM HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response); HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response); HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response);
Java Servlet API 3 HTTP Server Java VM request HTTPServlet request HTTPServlet request HTTPServlet request HTTPServlet thread CGI Process request CGI Process request request request CGI Process CGI Process
Servlet Beispiel private void doGet(HttpServletRequest request, HttpServletResponse response) { try{ Enumeration e = request.getParameterNames(); String submitter = request.getParameter("SUBMITTER"); ArrayList optionsList = new ArrayList(); while (e.hasMoreElements()){ String id = e.nextElement().toString(); logTO(id + "::" +request.getParameter(id)); HttpSession session = request.getSession(); if (id.equals("model")) session.putValue("model",request.getParameter(id)); //if (id.equals("color")) //session.setAttribute("color",request.getParameter(id)); if (submitter!=null){ session.putValue("SUBMITTER",submitter); } ...
Java Server Pages (JSP) • Java Server Pages (JSP) • Ähnlich wie Microsofts Active Server Pages erlauben Suns Java Server Pages, Programmcode in HTML-Dokumente einzubetten. • Eine Technologie, um serverseitig HTML-Seiten zu generieren. • Aus einer JSP wird vom Server ein Servlet erzeugt. • JSP können andere Java Objekte benutzen (JSP-Beans)
Java Server Pages (JSP) 2 HTTP Server 5:response Java VM + JSP Engine 1:request 1 HTTPServlet 6:request 2-n 5:response 4:Kompiliert und lädt 2:lädt 3:erzeugt JSP Seiten (HTML+JAVA) Servlet Source
JSP Beispiel <jsp:useBean id="ordering" scope="session" class="com.bmw.ivs.jsp.OrderBean" /> <TR VALIGN="top" ALIGN="left"> <TD COLSPAN=2 HEIGHT =22></TD> <TD WIDTH=56 COLSPAN=2><INPUT id="FormularTextfeld1" TYPE="text" NAME="ho" VALUE="<%= request.getParameter("ho")%>" SIZE=7 MAXLENGTH=10 ></TD> <TD></TD> </TR> <TR VALIGN="top" ALIGN="left"> <TD HEIGHT =24></TD> <TD WIDTH=27 COLSPAN=2><SELECT id="FormularKombinationsfeld5" NAME="auftragsart" > <option value="0„ <%=ordering.checkSelection(request,"auftragsart","0")%>> 0 – Kunde </option> <option value="1„ <%=ordering.checkSelection(request,"auftragsart","1")%>> 1 – Lager </option> </SELECT></TD> </TR>
Java Authentiction and Authorization Service (JAAS) • Standard erweiterung der Java 2 Plattform • Authentifizierungs-Framework • Pluggable authentication • User basierte Autorisierung Application Login Context API Konfig. LoginModul Kerberos Smart Card Biometric
Java Authentiction and Authorization Service (JAAS) 2 • ** • * Example Java 2 Security Policy Entry • */ • grant Codebase "www.sun.com", Signedby "duke" { • FilePermission "/cdrom/-", "read"; • } • /** • * Example JAAS Security Policy Entry • */ • grant Codebase "www.sun.com", Signedby "duke", • Principal com.sun.Principal "charlie" { • FilePermission "/cdrom/charlie/-", "read"; • MyPermission “DOSOMETHING"; • }
Java Naming and Directory Interface (JNDI) • JNDI (Java Naming and Directory Services) • Bietet einen standardiersierten Zugriff auf Verzeichnisdienste, um Objekte und Ressourcen anzufordern. So werden die Enterprise-Javabeans-Komponenten-Schnittstellen über JNDI angefordert. • Teil des Java Enterprise API. JNDI ist eine Java Standard Extension. Die API gibt Java Anwendungen eine einheitliche Schnittstelle zu verschiedenen Naming und Directory Services Funktionalitäten in Unternehmen. • Mit JNDI können Java Anwendungen Java Objekte jeden Typs gespeichert und eingelesen werden, sowie Standard Directory Operationen wie das Assoziieren von Attributen mit Objekten oder das Suchen nach Objekten über ihre Attribute ausgeführt werden.
Java Naming and Directory Interface (JNDI) 2 LDAP Directory EJB Store Role src EJB Home A User a.java EJB Home B User b.java EJB Home C Role doc User Tut.txt JNDI Lookup Lookup Lookup Java Application EJB Servlet
Java Remote Method Invocation RMI • RMI ( Remote Method Invocation ) • Erstellung von verteilten Java-Anwendungen ( Java-to-Java ). • Methoden eines remote Java Objekts werden von einer JVM aufgerufen, die auf einem anderen Host läuft. Ein Java Programm kann ein remote Objekt aufrufen sobald es eine Referenz des remote Objekts erhalten hat, entweder über den Bootstrap Naming Service von RMI oder über ein (Aufruf-) Argument bzw. einen Rückgabewert. Ein Client kann ein remote Objekt in einem Server aufrufen, wobei der Server wiederum ein Client aus remote Objekte sein kann. • RMI verwendet die Java Objekt Serialization zum Speichern und Zurückholen von Java Objekten, indem ihr Zustand serialisiert über einen Stream geschrieben und gelesen wird (wie in eine Datei). • Für Basis-Kommunikationsmechanismen stehen in Java Sockets zur Verfügung.
Java Remote Method Invocation RMI Ablauf JNDI Stub 1: lookup Java VM Java VM 2: get Java Applikation 4: call Skeleton 8: result 3: call • Netz Skeleton 6: return result 5: call OBJ Java Object Stub 7: result to Stub
Java Remote Method Invocation RMI over IIOP • RMI-IIOP (Remote Method Invocation - Internet Inter-ORB Protocol) • Kommunikation von RMI über das Corba-Protokoll IIOP. • Mittels dieser Brücke ist es möglich, Enterprise Javabeans direkt zu integrieren, beispielsweise in Visual Basic Clients - und umgekehrt • IIOP (Internet Inter-ORB Protocol) • Kommunikationsprotokoll von CORBA. • Standard-Protokoll, das von jedem ORB unterstützt wird. • Besteht aus GIOP und TCP/IP.
Enterprise Java Beans was ist das ? • Enterprise Java Beans (EJB) • In EJB’s wird die Business-Logik abgebildet. Sie ist ein Begriff für eine serverseitige Komponente. • Komponentenmodell für die Entwicklung und Verteilung von Java Komponenten in einer verteilten Multi-Tier-Umgebung. • EJBs sind portabel und protokollneutral und somit unabhängig von einem bestimmten Webserver. • EJBs werden oft mit den Java Beans der Client-Seite verwechselt. Beides sind jedoch unterschiedliche Technologien. Gemeinsam ist nur die Sprache Java und dass es sich um Komponenten handelt. • EJBs können nicht nur mit Java-Clients und Java-Server-Komponenten kommunizieren, sondern über DCOM mit Windows-Programmen und über IIOP mit CORBA Servern und somit mit allen Arten von Anwendungen die via CORBA kommunizieren können.
Enterprise Java Beans Prinzip JNDI...MyBeanHome... 1 Client...lookUpcreate or find on EJB Home OBJcast to EJB remote OBJinvoke Method... EJB Container 3a 2 EJB OBJ 3c 3b 6 Remote Stub 5 Server Skeleton 4 7 9 8
Enterprise Java Beans aus Client Sicht try { //get naming context Properties properties = null; properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, "t3://localhost:7301"); properties.put(Context.SECURITY_PRINCIPAL, „user“); properties.put(Context.SECURITY_CREDENTIALS, „PWD“); Context ctx = new InitialContext(properties); //look up jndi name Object ref = ctx.lookup("com.bmw.ivsr.server.bpro.orderentryenquiry.OrderEntryEnquiryBPrOHome"); //cast to Home interface OrderEntryEnquiryBPrOHome orderEntryEnquiryBPrOHome = (OrderEntryEnquiryBPrOHome) PortableRemoteObject.narrow(ref, OrderEntryEnquiryBPrOHome.class); OrderEntryEnquiryBPrO orderEntryEnquiryBPrO = createBPro(); orderEntryEnquiryBPrO.createOrder(orderentry); catch (Exception e){ }