magazin Social Media Was Java-Entwickler API JAVA Mag Apache Maven Java EE 6 ausgepackt CD-INHALT wissen sollten»48 Mule ESB 3.0 Die neuen Features»19

Größe: px
Ab Seite anzeigen:

Download "magazin Social Media Was Java-Entwickler API JAVA Mag Apache Maven Java EE 6 ausgepackt CD-INHALT wissen sollten»48 Mule ESB 3.0 Die neuen Features»19"

Transkript

1 JAVA Mag inkl. CD CD-INHALT Mule ESB 3.0 Die neuen Features»19 magazin Java Architekturen SOA Agile Apache Wicket World Wide Wicket Das Tutorial»38 Deutschland 8,50 Österreich 9,80 Schweiz sfr 16, Hazelcast Open Source In-Memory Data Grid» Alle Infos im Heft ab Seite für Softwarearchitekten Video von der W-JAX 2009 in voller Länge HIGHLIGHTS Social Media Was Java-Entwickler API wissen sollten»48 Hazelcast 1.9 Activiti 5.0 Beta WEITERE INHALTE Apache libcloud Apache Commons Lang Apache MyFaces Orchestra Core uvm. Alle CD-Infos ab Seite 3 Apache Maven Dependency-Magie» 100 Java EE 6 ausgepackt Bean Validation» 74 Liferay Portal Grundlagen» 56

2 Enterprise Grid Computing Open Source In-Memory Data Grid Hazelcast Die Skalierbarkeit und Ausfallsicherheit von Anwendungen ist mit steigendem Daten- und Benutzeraufkommen in den letzten Jahren immer relevanter geworden. In diesem Zusammenhang tauchen häufig Begriffe wie Data Grid und Grid Computing auf. Diese stehen im Wesentlichen für die Verteilung von Daten und Verarbeitungsprozessen in einem Cluster. Das leichtgewichtige Open-Source-Framework Hazelcast positioniert sich genau in diesem Problemfeld. von Matthias Ebbing und Christian Lambert Große Geschäftsanwendungen stellen Entwickler immer wieder vor die gleichen Probleme: Wie stelle ich die Antwortzeiten bei hoher Nutzlast sicher? Wie kann ich die zur Verfügung stehenden Ressourcen optimal ausnutzen? Wie verarbeite ich sehr große Datenmengen effizient? Wie erfülle ich meine Service Level Agreements und minimiere die Ausfallzeiten meiner Anwendung? Um diese Anforderungen an hochskalierbare Anwendungen erfüllen zu können, sind generell folgende Aspekte zu beachten: Dynamisches Clustering Ausfallsicherheit und Lastverteilung Partitionierung und Verteilung von Daten Parallele Verarbeitung von Geschäftsprozessen Hazelcast ist ein Open-Source-Java-Framework, das unter der Apache-Lizenz veröffentlicht ist und somit auch in kommerziellen Projekten kostenlos eingesetzt werden kann. Es bietet dem Anwendungsentwickler ein auf die Thematik hochskalierbare Datenverarbeitung passend zugeschnittenes Feature-Set und zeichnet sich insbesondere durch seinen leichtgewichtigen Ansatz und die einfache Benutzbarkeit aus. Hazelcast realisiert ein In-Memory Data Grid mittels eines Peer-to-Peer-Ansatzes. Da durch diese Architektur kein zentraler Master-Knoten existiert, gibt es auch keinen Single Point of Failure. Cluster-Knoten können dynamisch zur Laufzeit hinzugefügt und entfernt werden. Das Backup von Daten im Cluster und die Wiederherstellung dieser Daten im Fehlerfall erfolgt automatisch und bedarf keiner weiteren Programmierung oder Konfiguration. Weiterhin bietet Hazelcast spezialisierte Datentypen von Java-Basistypen wie zum Beispiel Map, Set und Queue, für die eine automatische Datenverteilung im Cluster übernommen wird. Eine Unterstützung für Messaging und Event Handling sowie die einfache Möglichkeit, Verarbeitungsprozesse im Cluster zu verteilen, runden den Funktionsumfang ab. Start Hazelcast kann in seiner aktuellen Version von [1] heruntergeladen werden. Die Sourcen sind unter [2] zu finden. Das Deployment ist denkbar einfach: Das hazelcast.jar muss dem Classpath hinzugefügt werden, weitere Abhängigkeiten zu anderen Bibliotheken bestehen nicht. Somit kann das Framework in jedem Java-Umfeld (Standalone, Spring, JEE etc.) eingesetzt werden. Um einen ersten Eindruck von den Funktionen zu bekommen, empfiehlt es sich, die Beispielanwendung auszuprobieren (run.bat bzw. run.sh). Das Programm besitzt ein Command-Line-Interface, wobei eine Übersicht über alle Kommandos mit help angezeigt wird. Wenn die Beispielanwendung nun parallel in mehreren Shells ausgeführt wird, ist zu erkennen, dass die einzelnen JVM-Instanzen automatisch einen Cluster bilden. Eine besondere Konfiguration ist hierfür nicht notwendig. Standardmäßig erfolgt der Discovery-Prozess mithilfe von Multicast (falls das nicht zur Verfügung steht, kann auch TCP/IP konfiguriert werden). Dabei hat ein Cluster einen Namen und ist durch ein Passwort geschützt. Distributed Map Als einfaches Beispiel soll in unserer Anwendung pro User ein UserState-Objekt (Listing 1) in einer Map abgelegt werden. Um diese von Hazelcast im Cluster verwalten zu lassen, reicht der folgende Aufruf: java.util.map<string, UserState> map = com.hazelcast.core.hazelcast.getmap("userstatemap"); Die erhaltene Map ist vom Typ com.hazelcast.imap, der java.util.concurrent.concurrentmap erweitert. Der Zugriff erfolgt wie bei einer ganz normalen Map: 80 javamagazin

3 Grid Computing Enterprise map.put("user007", userstate); UserState userstate = map.get("user007"); Der wichtige Unterschied zu einer herkömmlichen Hashmap liegt darin, dass Hazelcast die Daten der Map im Cluster verteilt. Datenpartitionierung im Cluster Dabei müssen folgende Aspekte beachtet werden: Gleichmäßige Verteilung der Daten auf die Cluster- Knoten Schneller Zugriff auf die verteilten Daten Kein Datenverlust bei Ausfall von Knoten Datenumverteilung bei Veränderungen des Clusters Wie adressiert Hazelcast diese Anforderungen? Die Daten werden anhand ihres Hash-Werts beziehungsweise bei einer Map anhand des Hash-Werts des jeweiligen Schlüssels, gleichmäßig über die Cluster-Knoten verteilt. Die Implementierung einer sinnvollen Hash-Funktion für Objekte, die man in eine verteilte Datenstruktur einfügen will, ist dementsprechend besonders wichtig. Der schnelle Zugriff auf die Daten ist dadurch gewährleistet, dass Hazelcast für jeden Hash-Wert weiß, auf welchem Cluster-Knoten sich das zugehörige Objekt befindet. Somit ist von jedem Cluster-Knoten ausgehend maximal ein Remote-Zugriff notwendig, um ein gewünschtes Objekt zu erhalten. Die Datensicherheit wird dadurch gewährleistet, dass im Standardfall für jeden Knoten der jeweils nächste Cluster-Knoten ein vollständiges Backup der Daten hält. Falls ein Knoten ausfällt, werden die Daten der übrigen Knoten neu verteilt und gespiegelt. Zu Datenverlusten kann es also nur kommen, wenn zwei aufeinander folgende Knoten gleichzeitig ausfallen. Bei höheren Anforderungen an die Ausfallsicherheit kann eine höhere Anzahl an Backup-Knoten eingestellt werden. Dies hat dann natürlich entsprechende Auswirkungen auf die Performance von Datenänderungen und den Speicherverbrauch. Fällt ein Cluster-Knoten aus oder wird ein neuer Knoten dem Cluster hinzugefügt, dann erfolgt automatisch eine Datenumverteilung, sodass am Ende wieder eine Gleichverteilung der Daten und Datenbackups erreicht wird. Beispiel: Wenn ein aus 10 Knoten bestehender Cluster 10 Millionen Objekte enthält, dann hält jeder Knoten 2 Millionen Objekte: 1 Million eigene und 1 Million als Backup für den Vorgängerknoten. Wenn 10 Knoten dazu geschaltet werden, was zur Laufzeit geschehen kann, werden die Daten ad hoc neu verteilt und jeder Knoten enthält schließlich 1 Million Objekte: eigene und als Backup. Weitere verteilte Datenstrukturen Neben der bereits vorgestellten Map unterstützt Hazelcast noch die verteilten Datenstrukturen MultiMap, Set und List. Eine MultiMap ist eine Map, die mehrere Werte zu einem Key speichern kann. Bei Set und List handelt es sich um Erweiterungen von den aus java.util bekannten Interfaces. Für List gilt hier die Besonderheit, dass indexbasierte Operationen nicht unterstützt werden, da sie im Cluster zu teuer zu realisieren wären. Der Zugriff auf die verteilten Datenstrukturen erfolgt über die zentrale Factory-Klasse com.hazelcast.core.hazelcast. Für jede Datenstruktur gibt es eine entsprechende get-methode, der als einziger Parameter ein Name als Identifier übergeben wird. Falls im Cluster zu diesem Namen bereits eine Instanz der Datenstruktur existiert, wird diese zurückgeliefert, andernfalls wird eine neue erzeugt. Damit die Daten, die in eine solche Datenstruktur eingefügt werden, zwischen den Cluster-Knoten übertragen werden können, müssen sie das Interface java. io.serializable implementieren. Aufgrund der Verteilung der Daten über die Knoten kann jede Operation auf den Datenstrukturen zu einem Remotezugriff führen. Query Gerade bei großen Datenmengen werden effektive Möglichkeiten benötigt, Elemente nach beliebigen Selektionskriterien zu ermitteln. Angenommen, man möchte alle UserStates finden, deren zugehörige User einen Namen haben, der mit M anfängt und die älter als 18 Jahre sind. Bei einem naiven Ansatz würde der ausführende Thread über alle Einträge in der Map iterieren und für den als Value gespeicherten UserState überprüfen, ob die Bedingungen erfüllt sind. Dieses Vorgehen hätte aber zur Folge, dass alle entfernt gespeicherten Einträge übertragen werden müssten, was äußerst ineffizient wäre. Für Listing 1 public class UserState implements Serializable { private String userid; // unique identifier private boolean refreshrequired = false; private List<Notification> notifications = new ArrayList<Notification>(); // Notification implements Serializable private String username; private int userage; // getter/setter // Listing 2 IMap<String, UserState> map = Hazelcast.getMap( userstatemap ); Collection<UserState> values = map.values(new com.hazelcast.query.predicate() public boolean apply(mapentry mapentry) { UserState userstate = (UserState) mapentry.getvalue(); return userstate.getuserage() > 18 && userstate.getusername().startswith( M ); ); ; javamagazin

4 Enterprise Grid Computing eine Notification zu einem UserState-Objekt hinzu. Dabei ist zu beachteten, dass das modifizierte Value-Objekt wieder in die Map zurückgeschrieben werden muss: map.lock(userid); try { UserState userstate = map.get(userid); userstate. addnotification(notification); userstate.setrefreshrequired(true); map.put(userid, userstate); finally { map.unlock(userid); Abb. 1: Monitoring-Tool diese Problematik bietet Hazelcast eine passende Lösung: Jeder Knoten durchsucht seine lokalen Elemente nach Treffern und nur diese werden an den anfragenden Knoten gesendet. Daraus resultieren zwei Vorteile: Zum einen wird das Netzwerk entlastet, da nur die relevanten Einträge übertragen werden. Zum anderen verbessert sich die Antwortzeit, da die Suchanfrage parallel auf allen Knoten ausgeführt wird (Listing 2). Neben der Möglichkeit, die Bedingung wie eben gezeigt zu implementieren, bietet Hazelcast noch die elegante Alternative, SQL-ähnliche Abfragen zu formulieren: Collection<UserState> values = map.values(new com.hazelcast.query.sqlpredicate("username like M% and userage > 18")); Hierbei erfolgt der Zugriff auf die Attribute per Reflection durch Aufruf des zugehörigen Getters, alternativ kann das Attribut auch als public deklariert werden. Eine Weiternavigation über Beziehungen, um dort weitere Kriterien auszuwerten, ist nicht möglich. Um die Suche weiter zu optimieren, können die Einträge wie bei einer relationalen Datenbank indiziert werden. Dabei wird der Performancegewinn bei der Suche durch etwas höhere Kosten bei Schreiboperationen erkauft, da der Index aktualisiert werden muss. Ein Index kann wie folgt zu einem beliebigen Zeitpunkt erzeugt werden: map.addindex("userage", true); Locks Gerade bei verteilten Systemen besteht die Gefahr, dass Daten von verschiedenen Prozessen/Threads gleichzeitig geändert werden, wobei nur die letzte der konkurrierenden Änderungen gespeichert würde, während die anderen verloren gehen. Um diese Lost-Updates zu vermeiden, besteht die Möglichkeit, zu bearbeitende Einträge exklusiv zu sperren. Hier fügen wir beispielsweise Neben der Synchronisation von Datenänderungen ist es wie auch in der Thread-Programmierung innerhalb einer JVM oft nötig, Programmabläufe Cluster-weit zu synchronisieren. Dafür steht eine verteilte Implementierung des java.util.concurrent.locks.lock-interface zur Verfügung. Einen Lock erhält man über den Aufruf Hazelcast.getLock("mylock"). Executor Service Genauso wichtig wie die Verteilung von Daten ist die Verteilung der Verarbeitung im Cluster. Angelehnt an das in Java 1.5 neu eingeführte Executor Framework [3] realisiert Hazelcast einen Distributed Executor Service. Wie im Java Executor Service müssen ausführbare Tasks die Interfaces java.util.concurrent.callable oder java.lang.runnable implementieren, je nachdem, ob ein Rückgabewert benötigt wird oder nicht. Zusätzlich muss ein Hazelcast Task noch Serializable sein, da er potenziell auf einem entfernten Cluster-Knoten ausgeführt wird. Um einen Task, der hier beispielsweise das Vorkommen bestimmter Wörter auf einer Website zählt, auf einem beliebigen Cluster-Knoten auszuführen, werden lediglich folgende Zeilen benötigt: java.util.concurrent.executorservice executorservice = com.hazelcast.core.hazelcast.getexecutorservice(); Future<String> future = executorservice.submit(new CountTask("www.java-magazin.de", "hazelcast")); // Wartezeit überbrücken. Long result = future.get() Hazelcast bietet verschiedene Möglichkeiten für die Ausführung von Tasks: Auf einem Cluster-Knoten, den Hazelcast bestimmt Auf einem, allen oder einem Teil der Cluster-Knoten Auf dem Cluster-Knoten, der einen angegebenen Key besitzt Der letzte Punkt ist hierbei besonders interessant, da er einen neuen Ansatz erlaubt. Statt die Daten an den Ort zu holen, an dem sie verarbeitet werden sollen, schickt man den Verarbeitungsprozess zu den Daten. Das be- 82 javamagazin

5 Grid Computing Enterprise reits genannte Beispiel für das Hinzufügen einer Notification zu einem UserState-Objekt wurde in Listing 3 als Task realisiert. Um diesen Task auf dem Cluster-Knoten auszuführen, der das UserState-Objekt verwaltet, muss er in einen DistributedTask eingepackt werden, der als zusätzlichen Parameter den Schlüsselwert des gewünschten Objekts erhält: Callable<Boolean> task = new AddNotificationTask(notification); executorservice.submit(new DistributedTask<Boolean>(task, notification.getreceiveruserid())); Was bringt diese Änderung im Detail? Die Implementierung führt zu vier Remote-Zugriffen, wenn der Task nicht auf dem Knoten ausgeführt wird, auf dem der Eintrag gespeichert ist, nämlich für die Operationen lock, get, put und unlock auf der Map. Zudem werden bei get und put jeweils das UserState-Objekt und die damit möglicherweise assoziierten Objekte, wie zum Beispiel ein User-Objekt, übertragen. Wird hingegen die Call- Methode auf dem richtigen Knoten ausgeführt, ist lediglich ein Remotecall notwendig, und es muss nur einmal das Notification-Objekt übertragen werden. Der ExecutorService bietet somit eine gute Möglichkeit, die Verarbeitung zu parallelisieren und Netzwerk-Traffic zu minimieren. Events und Messaging Um über Datenänderungen informiert zu werden, können für einzelne Einträge oder ganze Datenstrukturen EventListener registriert werden. Im Fall einer Map ist ein com.hazelcast.core.entrylistener und für Set, List und Queue ein com.hazelcast.core.itemlistener zu verwenden. Der Listener wird bei jeder Änderung benachrichtigt, dabei spielt es keine Rolle, welcher (entfernte) Knoten den Eintrag speichert. Neben den allgemeinen Datenstrukturen bietet Hazelcast auch noch verteilte Queues und Topics, um einen leichtgewichtigen Messaging-Mechanismus zu realisieren. Wie von JMS bekannt, kann man ein Topic definieren, auf das sich beliebige MessageListener an beliebigen Cluster-Knoten registrieren können: ITopic<Serializable> topic = Hazelcast.getTopic("MySampleTopic"); topic.addmessagelistener(new MessageListener<Serializable>() public void onmessage(serializable message) { System.out.println("message received: " + message); ); Das Versenden einer Nachricht geschieht via topic. publish("eine Nachricht"). Hazelcast sieht bislang keine Möglichkeit vor, Nachrichten persistent zu speichern. Insofern ist die Messaging-Unterstützung nicht mit einer vollwertigen JMS-Implementierung zu vergleichen beziehungsweise kann sie nicht ersetzen. Persistenz Bislang wurde gezeigt, wie Hazelcast Daten im Speicher verteilt und verwaltet und wie man diese Daten wiederfindet und effizient verarbeitet. Dabei ging es immer um Daten, die im Speicher gehalten werden. Was passiert aber, wenn der gesamte Cluster ausfällt oder auch nur (weit weniger dramatisch) wegen einer neuen Softwareversion neu gestartet werden soll. Es ist fast immer nötig, wichtige Daten einer Anwendung persistent zu hinterlegen. Hazelcast bietet hierfür die Möglichkeit, mittels selbst implementierter Loader- und Store-Klassen die Einträge einer Map zu speichern. Dazu müssen lediglich die Interfaces com.hazelcast.core.maploader und com.hazelcast. MapStore implementiert werden und in der hazelcast. xml, die die Konfiguration enthält, für die gewünschte Map im map-store-element angegeben werden. Mittels write-delay-seconds kann konfiguriert werden, ob die Schreibvorgänge synchron (write-through) oder alle n Sekunden asynchron (write-behind) erfolgen sollen. Letzteres hat in der Regel einen Performancevorteil, da die Anwendung nicht auf die Persistierung eines Eintrags warten muss und es möglich ist, mehrere Änderungen gesammelt zum Beispiel per Bulk-Insert in eine relationale Datenbank zu schreiben. Der Nachteil des asynchronen Schreibens liegt in der Datensicherheit, da alle Änderungen, die in den Sekunden zwischen den Speichervorgängen erfolgen, verloren gehen können. Da dies aber nur geschehen kann, wenn ein Cluster-Knoten Listing 3 public class AddNotificationTask implements Callable<Boolean>, Serializable { private Notification notification; public AddNotificationTask(Notification notification) { this.notification = public Boolean call() throws Exception { IMap<String, UserState> map = Hazelcast.getMap(Sample.sUserStateMap); String userid = notification.receiveruserid; map.lock(userid); try { UserState userstate = map.get(userid); if (userstate!= null) { userstate.addnotification(notification); userstate.setrefreshrequired(true); map.put(userid, userstate); return Boolean.TRUE; else { return Boolean.FALSE; finally { map.unlock(userid); javamagazin

6 Enterprise Grid Computing und alle seine Backup-Knoten in dieser Zeit ausfallen, ist das Risiko in der Regel akzeptabel. Wenn synchron geschrieben wird, stellt Hazelcast sicher, dass die Änderungen an den persistenten Daten durchgeführt werden, bevor die Daten der Map und die Backup-Einträge aktualisiert werden. Der MapLoader wird immer dann aufgerufen, wenn die Anwendung einen Key anfragt, der noch nicht in der Map enthalten ist. Transaktionen Hazelcast bietet ebenfalls die Möglichkeit, Transaktionen abzubilden. Zum einen existiert ein einfach gehaltenes Transaction-Interface, über das beliebige Aktionen auf den verteilten Datenstrukturen von Hazelcast zu einer Transaktion zusammengefasst werden können. In einem JEE-Kontext kann Hazelcast zum anderen über einen Resource Adapter (JCA) in die eigene Anwendung eingebunden werden und somit an Standard- JTA-Transaktionen teilnehmen. In diesem Kontext darf allerdings nicht vergessen werden, dass durch die Verteilung der Daten schon die Änderung eines Map-Eintrags dazu führen kann, dass mehrere Cluster-Knoten an einer Transaktion beteiligt sind und somit verteilte Transaktionen entstehen, die einen Two-Phase-Commit erforderlich machen. Um diese sehr teuren Operationen zu verhindern, sollte darauf geachtet werden, Transaktionen so klein wie möglich zu halten, falls nicht ganz auf transaktionales Verhalten verzichtet werden kann. Monitoring In der Hazelcast-Distribution ist bereits ein Monitoring-Tool als Webapplikation enthalten, das in einem beliebigen Webcontainer (z. B. Tomcat) deployt werden kann. Nachdem man sich mit dem Cluster-Namen und Passwort sowie IP und Port eines Knotens eingeloggt hat, erhält man eine Übersicht über alle Knoten und Datenstrukturen im Cluster (Abb. 1). Für eine konkrete Alternative Frameworks Sowohl Open Source als auch kommerziell gibt es viele interessante Produkte, die im Bereich Data Grid beziehungsweise Grid Computing angesiedelt sind. Sie alle haben im Kern ein ähnliches Feature-Set, setzen aber teilweise unterschiedliche Schwerpunkte. Hier eine kleine Aufzählung der Bekannteren: OpenSource Apache Hadoop GridGain DAC JBossCache/JGroups/Infinispan Commercial Oracle Coherence GigaSpaces IBM extreme Scale Gemstone Terracotta Datenstruktur werden dann die Größe, die Anzahl der durchgeführten Operationen sowie deren Zeitverbrauch pro Knoten und insgesamt angezeigt. Weitere Features Zu den weiteren Features von Hazelcast zählen u. a. folgende: Hibernate 2nd Level Cache: Entitäten und Suchergebnisse werden verteilt im Cluster gespeichert Http Session Cluster: Verteiltes Speichern der HTTP- Session und Session Failover. Cluster Clients: Java-Clients, die wie jeder Knoten auf den Cluster zugreifen können, aber keine eigenen Daten speichern. Security: Die Kommunikation zwischen Knoten kann auf Socket-Ebene, basierend auf der Java Cryptography Architecture, sowohl symmetrisch als auch asymmetrisch verschlüsselt werden. Fazit Mit Hazelcast liegt eine frei verfügbare Lösung vor, um hochskalierbare verteilte Software zu entwickeln. Es bietet auf Standard-Java-Datentypen basierende verteilte Datenstrukturen, ein an den Executor Service angelehnten Dienst zur Verteilung von Tasks im Cluster sowie eine einfache Pub/Sub-Messaging-Lösung. Durch die Verwendung bekannter Java-Konstrukte ist die Einstiegshürde gering, und da auch Konfiguration und Deployment sehr einfach sind, kann schon nach kurzer Zeit produktiv mit Hazelcast gearbeitet werden. Bestehende Anwendungen lassen sich mit überschaubarem Aufwand skalierbarer gestalten. Neben Hazelcast gibt es noch eine ganze Reihe sowohl kommerzieller als auch Open-Source-Frameworks mit gleichem oder ähnlichem Fokus (Kasten: Alternative Frameworks ). Diese bieten teilweise mehr Features und sind in bestimmten Einsatzgebieten zweifellos überlegen, benötigen allerdings eine meist erheblich höhere Einarbeitungszeit und haben in der Regel auch größeren Einfluss auf die Softwarearchitektur und die Systemlandschaft. Christian Lambert ist Diplom-Informatiker und seit 2000 für die adesso AG tätig. In Kundenprojekten entwickelt er als Berater und Softwarearchitekt große Geschäftsanwendungen basierend auf JEE. Matthias Ebbing arbeitet als Softwarearchitekt für die adesso AG. Seine Schwerpunkte sind modellgetriebene Softwareentwicklung und der Entwurf von Java-basierten Geschäftsanwendungen. Links & Literatur [1] [2] [3] ExecutorService.html 84 javamagazin

COPPER Best Practices

COPPER Best Practices COPPER Best Practices Version 1.0.1 Wann sollte man überhaupt COPPER verwenden? Allgemein genau dann, wenn man von der COPPER Notation oder den COPPER-Features profitieren kann. Ein wesentliches Feature

Mehr

Caching. Hintergründe, Patterns &" Best Practices" für Business Anwendungen

Caching. Hintergründe, Patterns & Best Practices für Business Anwendungen Caching Hintergründe, Patterns &" Best Practices" für Business Anwendungen Michael Plöd" Senacor Technologies AG @bitboss Business-Anwendung!= Twitter / Facebook & co. " / kæʃ /" bezeichnet in der EDV

Mehr

JBoss 7 als Plattform für hochverfügbare Anwendungen

JBoss 7 als Plattform für hochverfügbare Anwendungen JBoss 7 als Plattform für hochverfügbare Anwendungen Orientierungspunkt 04/2013 24.05.2013, OIO Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld Java EE seit 1998 Konzeption und Realisierung

Mehr

EHCache und Terracotta. Jochen Wiedmann, Software AG

EHCache und Terracotta. Jochen Wiedmann, Software AG EH und Terracotta Jochen Wiedmann, Software AG Autor Perl-Contributor DBD::mySQL 2, DBI::Proxy, DBI::Shell, DBD::CSV, Net::Daemon, RPC::Pl(Client Server) (Autor) DBI (Developer) ASF-Member (Apache Software

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

SaaS-Referenzarchitektur. iico-2013-berlin

SaaS-Referenzarchitektur. iico-2013-berlin SaaS-Referenzarchitektur iico-2013-berlin Referent Ertan Özdil Founder / CEO / Shareholder weclapp die Anforderungen 1.000.000 registrierte User 3.000 gleichzeitig aktive user Höchste Performance Hohe

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Java Message Service im J2EE-Kontext

Java Message Service im J2EE-Kontext Java Message Service im J2EE-Kontext Im Folgenden soll kurz das Konzept der nachrichtenorientierten Kommunikation mit Hilfe von Messaging Services vorgestellt, und im Anschluss deren Einsatzmöglichkeiten

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Clustering von Application Servern am Beispiel von JBoss 3.2

Clustering von Application Servern am Beispiel von JBoss 3.2 Clustering von Application Servern am Beispiel von JBoss 3.2 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com Agenda Clustertechnik allgemein Was ist Clustering? Gründe

Mehr

Message Oriented Middleware am Beispiel von XMLBlaster

Message Oriented Middleware am Beispiel von XMLBlaster Message Oriented Middleware am Beispiel von XMLBlaster Vortrag im Seminar XML und intelligente Systeme an der Universität Bielefeld WS 2005/2006 Vortragender: Frederic Siepmann fsiepman@techfak.uni bielefeld.de

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Next generation open source BPM JBoss jbpm 4 Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Bernd Rücker / bernd.ruecker@camunda.com / 2 Guten Morgen Berater, Trainer, Coach Softwareentwickler

Mehr

HighQSoft GmbH www.highqsoft.de 21.05.2015. AVALON Distributor. Skalierbarkeit und Ausfallsicherheit. Dieter Müller

HighQSoft GmbH www.highqsoft.de 21.05.2015. AVALON Distributor. Skalierbarkeit und Ausfallsicherheit. Dieter Müller Distributor Skalierbarkeit und Ausfallsicherheit Dieter Müller 1 Übersicht 1) Motivation zur Erstelllung des Distributors 2) Anforderungen für die Implementierung 3) Systemarchitektur Distributor 4) Konfiguration

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Java EE Projektseminar

Java EE Projektseminar Java EE Projektseminar Daniel Alberts & Sonja Subicin Sprachliche Informationsverarbeitung Universität zu Köln Sommersemester 2010 Sitzung Organisatorisches zum Seminar Java EE Projektplanung Defi nition

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Hibernate Das Praxisbuch für Entwickler

Hibernate Das Praxisbuch für Entwickler Sebastian Hennebrüder 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Hibernate Das Praxisbuch für Entwickler Galileo

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK und dem Zugriff auf Web Services vertraut. Der Web Service

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

3 Programmiermodelle für parallele und verteilte Systeme

3 Programmiermodelle für parallele und verteilte Systeme 3 Programmiermodelle für parallele und verteilte Systeme Das vorherrschende Programmiermodell für parallele und verteilte Systeme ist das Client Server Modell. Das Client Server Modell ist unabhängig von

Mehr

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de AS 7 / EAP 6 - Clustering heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de Was ist die EAP 6? EAP6!= EAP5 +1 JBoss Enterprise ApplicaBon PlaCorm 6 Stabile und unterstützte Pla>orm Basiert auf

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS)

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS) Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Automatisierung, Betrieb, Middleware Einleitung Der Oracle Fusion Middleware Stack beinhaltet eine leistungsstarke

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Schedulingund Thread-Ausführer

Schedulingund Thread-Ausführer Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Mobile Anwendungen Google Cloud Messaging

Mobile Anwendungen Google Cloud Messaging Mobile Anwendungen Google Cloud Messaging 1. Allgemeines zu Google Cloud Messaging (GCM): - 60% der Top 100 Apps nutzen Google Cloud Messagging - 200.000 Messages pro Sekunde = 17 Milliarden Messages pro

Mehr

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1 s Aufgaben des Cachings Datenbank

Mehr

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 WebSphere Application Server Teil 4 Leistungsverhalten el0100 copyright W. G. Spruth,

Mehr

Neue Ansätze der Softwarequalitätssicherung

Neue Ansätze der Softwarequalitätssicherung Neue Ansätze der Softwarequalitätssicherung Googles MapReduce-Framework für verteilte Berechnungen am Beispiel von Apache Hadoop Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R2: Administration II

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R2: Administration II Ora Education GmbH www.oraeducation.de info@oraeducation.de Lehrgang: Oracle Application Server 10g R2: Administration II Beschreibung: Die Teilnehmer lernen verschiedene Topologien des Oracle Application

Mehr

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth Tutorial: Eigene Module und Extensions entwickeln version: 0.1 Author: Anja Beuth Table of contents 1 2 2.1 2.2 2.3 2.4 3 4 4.1 4.2 4.3 5 5.1 6 6.1 6.2 Notwendigkeit prüfen... Ein Projekt in Visual Studio

Mehr

SE2-10-Entwurfsmuster-2 15

SE2-10-Entwurfsmuster-2 15 Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Loadbalancing und Clustering mit Tomcat 6

Loadbalancing und Clustering mit Tomcat 6 Loadbalancing und Clustering mit Tomcat 6 Java Forum Stuttgart 3. Juli 2008 Michael Heß ORDIX AG, Paderborn mhe@ordix.de www.ordix.de Agenda Zielsetzung des Vortrags Webserver Integration Loadbalancing

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

PRAXISBUTLER ANPASSUNG DER VORLAGEN

PRAXISBUTLER ANPASSUNG DER VORLAGEN Praxisbutler Anpassung der Vorlagen 1 PRAXISBUTLER ANPASSUNG DER VORLAGEN Die Vorlagen werden hauptsächlich in den Bereichen Klienten und Fakturierung benutzt. Die Anpassung dieser Vorlagen ist wichtig,

Mehr

dsmisi Storage Lars Henningsen General Storage

dsmisi Storage Lars Henningsen General Storage dsmisi Storage dsmisi MAGS Lars Henningsen General Storage dsmisi Storage Netzwerk Zugang C Zugang B Zugang A Scale-Out File System dsmisi Storage Netzwerk Zugang C Zugang B Zugang A benötigt NFS oder

Mehr

Lightweight Java in der Automatisierungstechnik

Lightweight Java in der Automatisierungstechnik 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

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

IBM SPSS Collaboration and Deployment Services (C&DS) version 7

IBM SPSS Collaboration and Deployment Services (C&DS) version 7 Dieses Handbuch richtet sich an Systemadministratoren, die IBM SPSS Modeler Entity Analytics (EA) für die Ausführung mit einem der folgenden Produkte konfigurieren: IBM SPSS Collaboration and Deployment

Mehr

RAC auf Sun Cluster 3.0

RAC auf Sun Cluster 3.0 RAC auf Sun Cluster 3.0 Schlüsselworte RAC, OPS, Sun Cluster, Performance, Availability Zusammenfassung Oracle hat mit dem Real Application Cluster (RAC) aus einer Hochverfügbarkeitslösung eine Höchstverfügbarkeitslösung

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de Fortgeschrittene Servlet- Techniken Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Servlet Initialisierung Attribute und Gültigkeitsbereiche Sessions

Mehr

Benutzerdokumentation Web-Portal

Benutzerdokumentation Web-Portal GRUPP: SWT0822 Benutzerdokumentation Web-Portal Yet Another Reversi Game Martin Gielow, Stephan Mennicke, Daniel Moos, Christine Schröder, Christine Stüve, Christian Sura 05. Mai 2009 Inhalt 1. Einleitung...3

Mehr

mitho -Framework für plenty PHP-Framework zur Anbindung an die plenty API

mitho -Framework für plenty PHP-Framework zur Anbindung an die plenty API PHP-Framework zur Anbindung an die plenty API Inhaltsverzeichnis 1 Kurzbeschreibung...3 2 Integration...4 3 Möglichkeiten...5 3.1 Artikel...5 3.2 Aufträge...5 3.3 Kunden...5 4 Interne Funktionsweise...7

Mehr

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik ARFA ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik Ralf Leipner Domain Architect Analytics, Risk Management & Finance 33. Berner Architekten

Mehr

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration IBM SPSS Entity Analytics - Erweiterte Konfiguration Einführung Die vorgesehene Zielgruppe für dieses Handbuch sind Systemadministratoren, die IBM SPSS Entity Analytics (EA) für die Ausführung in einer

Mehr

So (un)sicher ist Mac OS Teamwork: Xcode und CocoaPods. Xtext. GWT Asynchrone Requests richtig handeln. Graphendatenbanken. Die wichtigsten HTML5-APIs

So (un)sicher ist Mac OS Teamwork: Xcode und CocoaPods. Xtext. GWT Asynchrone Requests richtig handeln. Graphendatenbanken. Die wichtigsten HTML5-APIs Alle Infos zur JAX ab S. 39 Deutschland 6,50 Österreich 7,00 Schweiz sfr 13,40 www.entwickler-magazin.de Juli /August 4.2011 März/April 2.2013 0QFO(- t 41. t (SBQIFOEBUFOCBOLFO t 7JSUVBMJTJFSVOH t )5.-

Mehr

ploinmailfactory Robert Reiz

ploinmailfactory Robert Reiz ploinmailfactory Robert Reiz Problem ploinmailfactory PostOffice-Pattern Templating Map mail.properties Internationalisierung Sonderzeichen Sonderfaelle Problem Eine Applikation soll E-Mails verschicken.

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

IBM SPSS Data Access Pack Installationsanweisung für Windows

IBM SPSS Data Access Pack Installationsanweisung für Windows IBM SPSS Data Access Pack Installationsanweisung für Windows Inhaltsverzeichnis Kapitel 1. Übersicht.......... 1 Einführung............... 1 Bereitstellen einer Datenzugriffstechnologie.... 1 ODBC-Datenquellen...........

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

PowerBridge MSSQL Beta

PowerBridge MSSQL Beta SoftENGINE PowerBridge MSSQL Beta Dokumentation Thomas Jakob 17.04.2011 Inhalt Einrichtung der SQL Umgebung... 3 SQL-Server Installieren... 3 BüroWARE Installieren... 3 PowerBridge-SQL Modus einrichten...

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

5.1 Bestehende Projekte bearbeiten 79 5.2 Neue Projekte erstellen 85

5.1 Bestehende Projekte bearbeiten 79 5.2 Neue Projekte erstellen 85 Projekte per DOM bearbeiten KAPITEL 5 5.1 Bestehende Projekte bearbeiten 79 5.2 Neue Projekte erstellen 85 Bisher haben wir uns angesehen, wie List & Label mit Ihren Daten bekannt gemacht werden kann und

Mehr

Installation des edu- sharing Plug- Ins für Moodle

Installation des edu- sharing Plug- Ins für Moodle Installation des edu- sharing Plug- Ins für Moodle [edu-sharing Team] [Dieses Dokument beschreibt die Installation und Konfiguration des edu-sharing Plug-Ins für das LMS Moodle.] edu- sharing / metaventis

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org Apache Lucene Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org 1 Apache Apache Software Foundation Software free of charge Apache Software

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services

Mehr

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

Module für eine Java-Administrationsschulung

Module für eine Java-Administrationsschulung Module für eine Java-Administrationsschulung Schulungsmodule 1 Java Administration allgemein...2 1.1 Java und die Virtual Machine...2 1.2 Java EE Bestandteile...2 1.3 Java Management Extensions...2 1.4

Mehr

Asynchrone Webservices mit Axis 1.x in Java

Asynchrone Webservices mit Axis 1.x in Java Asynchrone Webservices mit Axis 1.x in Java 1. Übersicht Architektur Da Webservices nach relativ kurzen Timeouts Anfragen abgearbeitet haben müsse, sind komplexe Anfragen wie sie in der Bioinformatik üblich

Mehr

JMS Java Message Service

JMS Java Message Service JMS Java Message Service TK3 - WS03/04 Dipl.-Ing. Erwin Aitenbichler Abt. Telekooperation TU Darmstadt 1 JMS: Java Message Service Messaging Lose gekoppelte verteilte Kommunikation RMI: Eng gekoppelt Sender

Mehr

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Web-Content-Management-Systeme () dienen dazu, komplexe Websites zu verwalten und den Autoren einzelner Webseiten möglichst

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Enterprise Softwarearchitekturen in Java

Enterprise Softwarearchitekturen in Java Enterprise Softwarearchitekturen in Java Dauer: 5 Tage 1. Tag: Vorbereitungstag...2 Der erste Tag richtet sich an alle, die bislang wenig Praxiserfahrung mit der Programmiersprache Java haben. Die Teilnehmer

Mehr

Synchronisation des Temperatur-Loggers

Synchronisation des Temperatur-Loggers Synchronisation des Temperaturloggers Juni 10, 2010 1 / 7 Synchronisation des Temperatur-Loggers Einführung Zwei oder mehr Installationen der Temperaturlogger-Software können so zusammen geschaltet werden,

Mehr

Swetlana Stickhof. Universität Heidelberg 03.02.2013

Swetlana Stickhof. Universität Heidelberg 03.02.2013 Modellierung einer Testdokumentation mit Suchfunktionen in Semantic MediaWiki und Implementierung einer Jira-Anbindung als Semantic MediaWiki Extension Universität Heidelberg 03.02.2013 1 Inhalt Motivation

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Oracle Coherence für Dummies In-Memory Computing für Einsteiger

Oracle Coherence für Dummies In-Memory Computing für Einsteiger Oracle Coherence für Dummies In-Memory Computing für Einsteiger Gabriele Jäger Oracle Deutschland B.V. & Co.KG Geschäftsstelle Düsseldorf Schlüsselworte Oracle Coherence, In-Memory Data-Grid, Cluster,

Mehr

BigTable. 11.12.2012 Else

BigTable. 11.12.2012 Else BigTable 11.12.2012 Else Einführung Distributed Storage System im Einsatz bei Google (2006) speichert strukturierte Daten petabyte-scale, > 1000 Nodes nicht relational, NoSQL setzt auf GFS auf 11.12.2012

Mehr

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Frithjof Kurtz Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Vortragsgliederung Motivation Java Grundlagen JMangler Grundlagen Transformationen Algorithmen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Java 2, Enterprise Edition Einführung und Überblick

Java 2, Enterprise Edition Einführung und Überblick Universität aiserslautern AG Datenbanken und Informationssysteme Seminar Datenbank-Aspekte des E-Commerce Java 2, Enterprise Edition Einführung und Überblick m_husema@informatik.uni-kl.de Vortragsinhalte

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

TECHNISCHE PRODUKTINFORMATION CARUSO

TECHNISCHE PRODUKTINFORMATION CARUSO 1111 TECHNISCHE PRODUKTINFORMATION CARUSO TECHNISCHE PRODUKTINFORMATION Seite 0/7 Inhalt 1 Systemdefinition............2 2 Technische Details für den Betrieb von CARUSO......2 2.1 Webserver... 2 2.2 Java

Mehr

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen Java Beans Enterprise Java Beans Eine kurze Einführung in die Welt der Bohnen Java Beans Einführung Stefan Sauer Was ist ein Java Bean? Beans sind Komponenten. Einmal schreiben Überall wiederverwerten

Mehr

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes Hadoop Eine Open-Source-Implementierung von MapReduce und BigTable von Philipp Kemkes Hadoop Framework für skalierbare, verteilt arbeitende Software Zur Verarbeitung großer Datenmengen (Terra- bis Petabyte)

Mehr