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

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth Tutorial: Eigene Module und Extensions entwickeln Version: 0.1 Autor: Anja Beuth Inhaltsverzeichnis 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Architektur im Kontext der Cloud: Patterns und Best Practices 62. Logging. Auswirkung moderner Architektur auf den Betrieb 32

Architektur im Kontext der Cloud: Patterns und Best Practices 62. Logging. Auswirkung moderner Architektur auf den Betrieb 32 Architektur im Kontext der Cloud: Patterns und Best Practices 62 JAVA Mag Sonderdruck 11.2014 magazin Java Architekturen Web www.javamagazin.de Apache DeltaSpike Portabilität und Community 16 Der Rest

Mehr

New Features Oracle Forms 11g Nichts Neu für Forms?

New Features Oracle Forms 11g Nichts Neu für Forms? New Features Oracle Forms 11g Nichts Neu für Forms? Perry Pakull Technology Manager perry.pakull@trivadis.com Zürich, 20.04.2010 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br.

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

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

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

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

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

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

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

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

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

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

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

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

Softwareentwicklung in der industriellen Praxis

Softwareentwicklung in der industriellen Praxis Softwareentwicklung in der industriellen Praxis Cloud-Systeme: Besonderheiten bei Programmierung und Betrieb Steffen Gemkow / Paul Fritsche - ObjectFab GmbH 26.11.2012 Simple is beautiful Don t repeat

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

Konfiguration von Fabasoft Mindbreeze Enterprise für IBM Lotus

Konfiguration von Fabasoft Mindbreeze Enterprise für IBM Lotus Konfiguration von Fabasoft Mindbreeze Enterprise für IBM Lotus Installation und Konfiguration Version 2013 Spring Release Status: 09. März 2013 Copyright Mindbreeze Software GmbH, A-4020 Linz, 2013. Alle

Mehr

Java Beans. http://java.sun.com/beans/

Java Beans. http://java.sun.com/beans/ Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit

Mehr

Deutschland 8,50. Contexts and Dependency Injection. Präsentation mit Models GUI leicht gemacht » 52

Deutschland 8,50. Contexts and Dependency Injection. Präsentation mit Models GUI leicht gemacht » 52 inkl. JAVA Mag CD Transparenz und Qualitätskontrolle in agilen Projekten Deutschland 8,50 Österreich 9,80 Schweiz sfr 16,80 Contexts and Dependency Injection Framework-Integration HTML5 Keynote von Chris

Mehr

Jakarta Lucene. Eine Java-Bibliothek zur Suchindex-Erstellung. Seminararbeit Tilman Schneider

Jakarta Lucene. Eine Java-Bibliothek zur Suchindex-Erstellung. Seminararbeit Tilman Schneider Jakarta Lucene Eine Java-Bibliothek zur Suchindex-Erstellung Seminararbeit Tilman Schneider 2004 Tilman Schneider Seminararbeit: Jakarta Lucene Folie 1 Agenda Definition: Suchmaschine Vorstellung von Jakarta

Mehr

Pflichtenheft. 1 Zielbestimmungen 2 1.1 Musskriterien... 2 1.2 Wunschkriterien... 2 1.3 Abgrenzungskriterien... 2

Pflichtenheft. 1 Zielbestimmungen 2 1.1 Musskriterien... 2 1.2 Wunschkriterien... 2 1.3 Abgrenzungskriterien... 2 Pflichtenheft Inhaltsverzeichnis 1 Zielbestimmungen 2 1.1 Musskriterien........................................ 2 1.2 Wunschkriterien....................................... 2 1.3 Abgrenzungskriterien...................................

Mehr

Kommunikation ist alles

Kommunikation ist alles Kommunikation in verteilten Systemen mit Kommunikation ist alles >> alexander ziegler In einem verteilten System müssen die Anwendungsbestandteile miteinander interagieren nur so funktioniert ein großes

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

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl. Vorbereitungen Download AVO-Übung ICE Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS005 Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009 JBoss Seam Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009 Inhalt Einführung Warum Seam? Zentrale Konzepte Demo Validierung Abschliessende Gedanken 04.02.2009 Infopoint - JBoss Seam - Jörg

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

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

Dehnbarer Begriff Verteiltes Suchen mit Elasticsearch

Dehnbarer Begriff Verteiltes Suchen mit Elasticsearch Dehnbarer Begriff Verteiltes Suchen mit Elasticsearch Dr. Halil-Cem Gürsoy halil-cem.guersoy@adesso.de www.adesso.de ...über mich 15 Jahre Entwicklung und Beratung 'Software Architect' bei adesso AG, Dortmund

Mehr

White Paper. Konfiguration und Verwendung des Auditlogs. 2012 Winter Release

White Paper. Konfiguration und Verwendung des Auditlogs. 2012 Winter Release White Paper Konfiguration und Verwendung des Auditlogs 2012 Winter Release Copyright Fabasoft R&D GmbH, A-4020 Linz, 2011. Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen

Mehr

PostgreSQL und memcached

PostgreSQL und memcached Building a Query Cache imos GmbH 11.11.2011 / PGconf.DE Outline Einführung 1 Einführung 2 3 Szenario Einführung Webapplikation Pro Request viele, größtenteils einfache, Queries Einteilung von Caches Tradeoff

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