Technische Universität Ilmenau Fakultät für

Werbung
Technische Universität Ilmenau
Fakultät für Elektrotechnik und Informationstechnik
Hauptseminararbeit
Java-JMS für Smarthphones und mobile Geräte
vorgelegt von:
eingereicht am:
Aalbrecht Alby Irawan
01. 07. 2011
geboren am:
Studiengang:
Studienrichtung:
Ingenieurinformatik
Multimediale Informations- und
Kommunikationssysteme
Anfertigung im Fachgebiet:
Kommunikationsnetze
Fakultät für Elektrotechnik und Informationstechnik
Verantwortlicher Professor:
Wissenschaftlicher Betreuer:
Prof. Dr. rer. nat. habil. Jochen Seitz
Dipl.-Ing. Karsten Renhak
Kurzfassung
Diese Hauptarbeit befasst sich mit Java Messaging Service. Am Anfang wird die
Unterschiede zwischen 3 Java Platformen definiert. Dann wird über JMS erklärt und
die Leistung verschiedener JMS-Provider verglichen.
Inhaltsverzeichnis
i
Inhaltsverzeichnis
1 Einleitung
1.1 Verschiedene Java Platformen . . . . . . . . . . . . . . . . . . . . . . .
1.2 Java-VMs für Smartphones und mobile Geräte . . . . . . . . . . . . . .
2 Java-JMS
2.1 Übersicht . . . . . . . . . . . . . . . . . . . .
2.1.1 Message Oriented Middleware . . . . .
2.1.2 Java Message Service . . . . . . . . . .
2.2 Vergleich Java-JMS-Clientimplementierungen
2.2.1 Prüfbedingungen . . . . . . . . . . . .
2.2.2 Hardware- und Software-Konfiguration
2.2.3 Test-Szenarien . . . . . . . . . . . . . .
2.2.4 Testdauer . . . . . . . . . . . . . . . .
2.2.5 Testergebnisse . . . . . . . . . . . . . .
2.2.6 Auswertung . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
5
5
5
6
9
10
10
11
12
13
17
Literaturverzeichnis
18
Abbildungsverzeichnis
19
Tabellenverzeichnis
20
Abkürzungsverzeichnis und Formelzeichen
21
Erklärung
22
Hauptseminararbeit Aalbrecht Alby Irawan
1 Einleitung
1
1 Einleitung
1.1 Verschiedene Java Platformen
Java Platform kann in 3 Bereiche aufgeteilt werden:
Java 2 Standard Edition ist die Grundlage aller andere Java Platformen. Darin enthält sich die benötigte JVM und Bibliotheken, die beim normalen PC oder Workstation gebraucht wird.
Java 2 Enterprise Edition ist die J2SE mit Addition von mehreren API, Container
und Komponenten, die zur Entwicklung von Enterprise-Applikationen gebraucht
werden. Die dient dazu, eine Leistung von Serverdienste zu ermoglichen. J2EE
betriebene Server können web-basierte mobile Anwendungen (z.B. WML oder
xHTML) dienen.
Java 2 Micro Edition ist für mobile Geräte gedacht. Gehören dazu sind speziell angefertige VM und nur allerwichtigste oder eine leichtere Version von herkommlichen
J2SE Bibliotheken
Obwohl heutzutage die Smartphones oder PDA wesentlich größere Spezifikationen
haben als in den vergangenen Jahren (und somit der Einsatz von J2SE ermögliche),
benutzt man immer noch J2ME für moble Geräte. Laut einer Gartner Studie vom
Jahr 2002 liegt die Totalentwicklungkosten von Smartphones etwa einzhentel billiger
als die von Wireless Laptop und einviertel als die von Wireless PDA. Aufgrund der
weltverbreiten Anwendungen gehört J2ME zu den wichtigsten mobile Platform.
J2ME
Um Portabilität mit Leistung und Durchführbarkeit, enthält J2ME mehrere Komponenten wie Konfiguration, Profil und optionale Pakete. Jede gültige Kombination aus
Konfiguration und Profil ist auf einer bestimmten Art von Gerät gezielt. Die Konfiguration bietet die grundlegende und allgemeine Sprachfunktionalität. Das Profil hingegen
Hauptseminararbeit Aalbrecht Alby Irawan
1 Einleitung
2
Abbildung 1.1: Java 2 Platform [Yuan04]
basiert auf Konfigurationen und unterstützt erweiterte APIs wie grafische Benutzeroberfläche, Speicherung, Sicherheit und Netzwerk-Konnektivität.
Die zwei wichtigste J2ME Konfigurationen sind:
Connected Limited Device Configuration CLDC ist für kleine Geräte mit limitierten Rechenleistung und Arbeitsspeicher, braucht jedoch mindestens 160 KB Arbeitsspeicher und 16/32 Bit Prozessor. CLDC hat eingeschränkte math, string
und I/O Funktion. Nur ein kleine Anteil von J2SE Kernbibliotheken kann vom
CLDC Virtual Machine (in diesem Fall KVM oder Kilobyte Virtual Machine)
eingestützt werden.
Connected Device Configuration CDC ist für leistungsfähigere Geräte mit mindestens 2 MB Arbeitsspeicher und 32 Bit Prozessor. Im Gegensatz zu CLDC, CDC
verfügt über Java VM und somit kann fast alle J2SE Bibiliotheken unterstützen.
Das am meisten verwendeten Profil der J2ME ist Mobile Information Device Profile (MIDP), basiert auf CLDC und somit für Handys gut geeignet. Als MIDP v1.0
veröffentlich wurde, gab es noch viele Probleme, besonders bezüglich der Sicherheit
und Benützeroberfläche. MIDP v2.0 bietet allerdings eine verbesserte Benutzeroberfläche, Multimedia und Spiel Möglichkeit, gesteigerte Konnektivität und Ende-zu-EndeSicherheit.[Yuan04]
1.2 Java-VMs für Smartphones und mobile Geräte
Anders als andere Programmiersprache, wird nicht direkt Maschinencode erzeugt beim
Kompilieren, sondern sogenannten Bytecode. Dieser Bytecode ist unabhänging von
Hauptseminararbeit Aalbrecht Alby Irawan
1 Einleitung
3
Abbildung 1.2: J2ME Komponente [Yuan04]
Hardware und vergleichbar mit Mikroprozessorcode für einen Prozessor, der Anweisungen wie arithmetische Operationen, Sprünge und weiteres kennt. Der Java-Compiler
von Sun und der Java-Compiler der Entwicklungsumgebung Eclipse sind selbst in Java
implementiert und generieren diesen Bytecode.
Damit der Programmcode des virtuellen Prozessors ausgeführt werden kann. führt
nach der Übersetzungsphase die Laufzeitumgebung (auch Runtime-Interpreter genannt),
die Virtual Maschine (VM), den Bytecode aus. Somit ist Java eine compilierte, aber
auch interpretierte Programmiersprache von der Hardwaremethode einmal abgesehen.
[Ulle09]
Für bestimmte Endgeräte gibt es auch bestimmte Konfiguration, die dafür spezifischen Anforderungen erfüllen. Man teilt dabei die VM in drei verschiedene Kategorien
ein:
Java Virtual Machine JVM ist die leistungsfähigste Virtual Machine und findet ihren Einsatz auf Servern, Workstations und Desktop PCs bzw. Notebooks. Auf
diesen Systemen stehen ausreichend Ressourcen bereit, sodass eine vollständige Implementierung der JVM Spezifikation möglich ist. JVM unterstützt J2EE,
J2SE und J2ME CDC.
Kilobyte Virtual Machine KVM ist für die JVM Implementierung wichtig. Wegen
des kleine Speicherplatzes werden manche Datentypen wie floats und doubles
nicht unterstützt. Außerdem gibt es nur die wichtigsten Klasse wie java.lang,
java.io und java.util. Ein weiteres Mittel, um den Speicherbedarf zu reduzieren
Hauptseminararbeit Aalbrecht Alby Irawan
1 Einleitung
4
ist, dass Programme statt als Classdatei auch als Java Archiv (JAR) gespeichert
werden können. Dies ermöglicht eine um 30 bis 50 Prozent höhere Kompression.
Card Virtual Machine CardVM setzt sich dabei aus 1kB RAM und 24kB ROM zusammen. CardVM unterstützt sogar einen 8- oder 16-bit Prozessor. Um mit diesen extremen Speichereinschränkungen umzugehen werden nur boolean, byte,
short, optional int und eindimensionale Arrays unterstützt. Auch alle für die
Objektorientierung von Java notwendigen Features (z.B. Vererbung, Überladung
von Methoden und dynamische Objek- terstellung) wurden implementiert. Die
CardVM verfügt aber nicht mehr über den Class Loader, den Security Manager, Garbage Collector (meistens jedenfalls) und kennt auch keine Strings und
Threads mehr. Auf einigen professionellen Java Cards ist jedoch ein Garbage
Collector implementiert, welcher die Lebenszeit einer Karte deutlich erhöht. Karten ohne Garbage Collector können unbrauchbar werden, wenn irgendwann tote
Objekte den Speicher belegen und keine neuen Objekte mehr erstellt werden
können.[Menz04]
Abbildung 1.3: Übersicht der derzeit verfügbaren Virtual Machine [Sun 03]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
5
2 Java-JMS
2.1 Übersicht
Mobile Nachrichtenvermittlungapplikationen haben sich extrem erfolgreich durchgesetzt, person-to-person Kommunikation zu unterstützen. Allerdings ist Nachrichtenvermittlung viel mehr als nur zwischen-menschliche Kommunikation. Die breite Nutzung
von nachrichtenorientierte Middleware (engl. message oriented middleware MOM), wie
z.B. Java Messaging Service (JMS), hat Nachrichtenvermittlung zu einer der wichtigsten modernen Enterprise-Anwendungen.
2.1.1 Message Oriented Middleware
Message Oriented Middleware (MOM) ist eine Software- oder Hardware-Infrastruktur
für das Senden und Empfangen von Nachrichten zwischen verteilten Systemen. MOM
erlaubt, dass Programm-Module über heterogene Plattformen verteilt werden und reduziert die Komplexität der Entwicklung von Anwendungen, die mehrere Betriebssysteme und Netzwerk-Protokolle umfassen. Die Middleware schafft eine verteilte Kommunikationsschicht, dass der Anwendungs-Entwickler von den Details der verschiedenen Betriebssystem-und Netzwerk-Schnittstellen isoliert. APIs, die über verschiedene
Plattformen und Netzwerke auszuweiten werden typischerweise durch MOM vorgesehen.
MOM bietet eine Client / Server-Architektur und unterstützt in der Regel asynchrone Aufrufe zwischen Client und Server-Anwendungen. MOM reduziert die Beteiligung
von Entwicklern mit der Komplexität der Master-Slave-Charakter der Client / ServerMechanismus. MOM sollte die folgenden Eigenschaften haben:
• mehrere Client-Protokolle bedienen können
• Point-to-Point oder Publish-Subscribe Modelle
• Nachrichten speichern und weiterleiten
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
6
• Nachrichtenübermittlung bestätigen
• Schnittstelen für J2ME bieten
Die fehlende Normung für die Verwendung von MOM kann allerdings Probleme
verursachen. Alle großen Hersteller haben ihre eigenen Implementierungen mit jeweils
ihrem eigenen API und Management-Tools. Die J2EE Programmierumgebung liefert
zwar Standard-API namens Java Message Service (JMS), die von den meisten MOM
Anbietern umgesetzt wird, aber JMS definiert nicht das Format der Nachrichten die
ausgetauscht werden. Deshalb kann essein, dass JMS-Systeme nicht immer miteinander
kompatibel sind.
2.1.2 Java Message Service
JMS definiert eine API für den Zugriff auf die Dienste eines Messaging-Anbieter. Es
definiert eine Standard-Schnittstelle für Java-Programme um Nachrichten zu erstellen,
senden, empfangen und lesen. JMS ist eng mit der J2EE-Plattform gekoppelt. Die
J2EE-Plattform besteht aus einer Reihe von Diensten, APIs und Protokolle, die die
Entwicklung einer mehrstufigen Architektur unterstützen. Die Einbeziehung von JMS
in J2EE bedeutet nicht, dass JMS nur mit J2EE basierten Anwendungen verwendet
werden. Die Dienstleistungen des Messaging-Anbieter sind zugänglich für jede JavaAnwendung. [Yusu04]
JMS definiert zwei Messaging-Domänen, Point-to-Point und Publish-Subscribe, zur
Unterstützung der beiden üblichen Muster von Nachrichtenvermittlung. Eine Reihe von
Schnittstellen sind für jede Domäne definiert, erben ihre Attribute und das Verhalten
von einer Basis von Schnittstellen (Tabelle 2.1). Eine Anwendung wählt in der Regel
eine Gruppe von Schnittstellen (Point-to-Point oder Publish-Subscribe), mit der sie
arbeiten möchte.
Common (Parent)
ConnectionFactory
Connection
Destination
Session
MessageProducer
MessageConsumer
Point-to-Point
QuueueConnectionFactory
QueueConnection
Queue
QueueSession
QueueSender
QueueReceiver
QueueBrowser
Publish-Subscribe
TopicConnectionFactory
TopicConnection
Topic
TopicSession
TopicPublisher
TopicSubscriber
Tabelle 2.1: Messaging Domäne Schnitstelle [Yusu04]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
7
Point-to-Point Hier schickt der Sender die Nachricht zu einer bestimmten Warteschlange und der Empfänger bekommt die Nachricht von derselben Warteschlange. Hier kennt der Sender das Ziel der Nachricht. Mehrere Sender und Empfänger
können in eine Warteschlange angekoppelt sein, aber jede Nachricht wird nur einmal verbraucht. Sobald eine Nachricht an einem Empfänger übermittelt wird, ist
sie von der Warteschlagen entfernt. Der Sender muss nicht gerade aktiv sein als
die Nachricht empfängt wird und der Empfänger muss auch nicht gerade aktiv
sein als die Nachricht gesendet wird.
Point-to-Point ist in der Regel angenommen, wenn eine Applikation mit einer
einzelnen Applikation oder eine kleine Anzahl von bekannten Applikationen komuniziert. Falls der Sender mehrere Empfänger erreichen will, muss er auch mehrere male die Nachricht senden. In den meisten Szenarien gibt es jedoch nur eine
einzelne Empfänger.
Abbildung 2.1: Point-to-Point Modell [Yuan04]
Publish-Subscribe Hier ist das Ziel eine Topics. Das Thema definiert eine Katogerie
oder eine Gegenstand, damit die Nachrichten in Verbindung gebracht werden
können und die Empfänger soll vorher ihre Interesse an einem bestimmten Thema abonnieren. Gesendete Nachrichten zu einem Thema werden dupliziert und
an alle Abbonenten dieses Thema weitergeleitet. Wenn ein Teilnehmer vorübergehend nicht verfügbar ist, wird der Server die Nachricht halten und versucht
später noch einmal. Ein Sender kann ein neues Thema starten oder Nachricht
senden zu einem schon vorhandenen Thema.
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
8
Publish-Subscribe wird normalerweise verwendet, wenn Daten an mehrere Subscriber kommen sollen, die dynamisch ändern können. Die Verwendung ist auch
sehr eng mit Event-gesteuerte Szenarien verbundet. In diesem Modell kennt außerdem weder Publisher noch Subscriber über einander. Es kann auch passieren,
dass niemand die Nachricht erhält, falls ein Thema null Subscriber hat. Die Subscriber muss ständig aktiv bleiben, um Nachrichten zu empfängen. Verpasste
Nachricht kommt nicht wieder, außer der Publisher eine dauerhafte (engl. durable) Abonnement eingeführt hat. In diesem Fall wird veröffentliche Nachrichten,
die während eine Abbonenten abwesend ist, umverteilt wenn die Abbonenten
wieder aktiv ist.
Abbildung 2.2: Publish-Subscribe [Yuan04]
JMS definiert eine Reihe von Schnittstellen für Nachrichten. Diese Schnitstelle entspricht die Grundformen von Daten, die gesendet oder empfängt werden. Die definierten Nachrichtentypen sind:
• BytesMessage: speichert Daten als eine Folge von Bytes, unterstützt die grundlegendsten Darstellung von Daten und kann somit verschiedene Payloads enthalten.
• TextMessage: speichert Daten als String.
• StreamMessage: speichert Dateng als eine Folge von Feldern. Z.B. JohnDoe33,
wird als Folge von 2 strings (John, Doe) und 1 integer (33) definiert.
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
9
• MapMessage: speichert Daten als eine Reihe von Schlüssel-Wert-Paar. Der Schlüssel ist ein String und der Wert ist beliebig. Z.B. Alter:27, Alter ist hier der
Schlüssel und 27 ist der integer Wert.
• ObjectMessage: speichert eine Java-Object.
JMS-Nachricht besteht aus drei grundlegenden Teilen zusammengesetzt
• Header: Enthält Attribute (Felder), mit der die Nachricht identifiziert und weitergeleitet werden kann. Die Attribute werden mit JMS vorangestellt. Beispiele
sind JMSMessageID, die eindeutig die Nachricht identifiziert. JMSDestination,
die das Ziel zu dem die Nachricht gesendet wird enthält. JMSDeliverymode, die
eine Meldung definiert als persistent oder nonpersistent.
• Properties: Enthält Nachrichtenzusatzinformationen als Attribute in Form von
Schlüssel-Wert-Paar. Ein möglicher Verwendungszweck dieser Attribute ist Filterung der Nachrichten bei den Empfängern.
• Body: Enthält die eigentliche Nachricht. Wie bereits erwähnt, der Typ der JMSNachrichten ist vorher definiert.
2.2 Vergleich Java-JMS-Clientimplementierungen
Um JMS zu nutzen, wird ein JMS-Provider (MOM) benötigt, der die Topics, Queues
und Sessions verwaltet. Die untenstehende Tabelle 2.2 führt ein paar JMS-Provider
auf, die sowohl kommerzielle als auch freie Software sind.
Name
ActiveMQ
FioranoMQ
iBus//Mobile
JBoss
SonicMQ
Sun MQ
Tibco EMS
WebSphere
Firma
Apache
Fiorano
Softwired
Redhat
Progress Software
Sun Microsystems
TIBCO
IBM
Lizenz
Open Source
kommerziell
kommerziell
Open Source
kommerziell
Open Source
kommerziell
kommerziell
Für J2ME geeignet
Nein
Nein
Ja
Nein
Nein
Nein
Nein
Ja
Tabelle 2.2: JMS-Provider
Es ist ganz schwer zu feststellen, welche JMS-Provider die Beste ist. Fiorano hat
einen Bericht veröffentlich, in dem verschiedene JMS-Provider getestet und verglichen
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
10
werden. Natürlich wird FioranoMQ als die Beste dargestellt, trotzdem bekommt man
grobe Überblick, welche Resultät rauskommen wird wenn die einzelne JMS-Provider
eingesetzt ist. Ein Beispiel von einem anderen unabhängigen Bericht [techa] kann man
finden auf http://www.capitalware.biz/dl/docs/krissoft_jms_performance.pdf
2.2.1 Prüfbedingungen
Alle Tests wurden unter folgenden Bedingungen durchgeführt.
• Jeder Client läuft auf einem separaten JMS-Verbindung.
• Alle Prüfergebnisse werden aufgezeichnet, nachdem der Client-Verbindungen hergestellt wurden und Publishers-Subscribers und andere Objekte geschaffen wurden.
• Alle Test wurden mehrfach ausgeführt wurden, um die Wiederholbarkeit zu gewährleisten.
• Leistung war unter maximaler Belastung gemessen. So viele Nachrichten wie
möglich wurde erzeugt unter Verwendung der Standardeinstellung des Servers
damit diese maximale Belastung erreicht.
• Während der Tests waren keine anderen Anwendungen laufen.
• Alle Server wurden in der Standardmodus getestet.
2.2.2 Hardware- und Software-Konfiguration
Server System:
• GNU/Linux 2.6.18-92.el5xen
• 4 CPU Intel(R) Xeon(R) CPU 5160 @ 3,00 GHz
• 64 bit 8 GB RAM
Client System:
• Microsoft Windows Server 2003 R2
• 4 CPU Intel(R) Xeon(R) Cpu 5160 @ 3,00 GHz
• 64 Bit 8 GB RAM
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
11
Network Setting:
• Server und Client waren in demselben Netzwerk
• Netzwerkgeschwindigkeit 1 GBPS
Software-Konfiguration:
• Java 2 Runtime Environment, Standard Edition (build 1.5.0 18-b02)
• FioranoMQ v 9.1.1
• SonicMQ v 7.6
• Tibco EMS v 4.4.0
• ActiveMQ v 5.3.0
• JBoss 1.4.4
• SunMQ 4.3
• IBM WebSphere 7.0
2.2.3 Test-Szenarien
Die Tests wurden für die meist verwendeten Messaging-Modelle mit Topics (PublishSubscribe) durchgeführt:
Non-persistent Publisher und Non-durable Subscriber Diese Modell ist in der Regel verwendet, wenn der Austauschvolume von Nachrichten hoch ist und minimale Latenz gefördert wird.
Persistent Publisher und Durable Subscriber Diese Modell wird eingesetzt, wenn viele Redundanz gebraucht wird und es versichert werden muss, dass mindestens
eine Nachricht unabhängig von Server- und Client-Status kommt.
Die folgenden Tests wurden durchgeführt, basierend auf typischen Kunden Use-Cases:
• Topic Skalierbarkeit Tests: Es wird die Leistungsmerkmale des JMS-Servers beobachtet mit unterschiedlicher Anzahl von Publisher-/Subscriber-Client in einem
festen Anzahl von Topic. Die Ergebnisse veranschaulichen die Skalierbarkeit von
JMS-Server als mehrere Clients eingesetzt (alle arbeiten mit dem gleichen JMSTopic).
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
12
• Server Skalierbarkeit Tests: Es wird die Leistungsmerkmale des JMS-Servers beobachtet mit unterschiedlicher Anzahl von Topics in einem festen Anzahl von
Publisher-/Subscriber-Client. Die Ergebnisse veranschaulichen die Skalierbarkeit
von JMS-Server als mehrere Clients eingesetzt (jeder arbeitet mit ungleichen
JMS-Topics).
• Persistent Publisher, mehrere durable Subscriber: Diese Tests beachten Leistungsmerkmale des JMS-Servers, wenn ein persistent Publisher Nachrichten zu
mehreren durable Subscriber sendet.
• Non-persistent Publisher, mehrere non-durable Subscriber: Diese Tests beachten
Leistungsmerkmale des JMS-Servers, wenn ein non-persisten Publisher Nachrichten zu mehreren non-durable Subscriber sendet.
Es gibt einen feinen Unterschied zwischen durable JMS-Nachricht und persistent
JMS-Nachricht. Eine durable JMS-Nachricht gilt nur für Publish-Subscribe und eine
persistent JMS-Nachricht gilt sowohl für Point-to-Point und Publish-Subscribe.
Durable : JMS-Server hält eine Nachricht, wenn der Teilnehmer ist vorübergehend
nicht aktiv. So ist die Haltbarkeit von dem Topic-Subscriber und dem JMS-Server
definiert. Damit dies geschehen, müssen sich Subscriber mit seinem eindeutigen
Client ID registrieren.
Persistent : JMS-Server speichert jede Nachricht in einem sekundären Speicher. Die
gespeicherte Nachricht wird erst entfernt, wenn Subscriber die Nachricht erfolgreich empfängt hat. Dies wird von dem Publisher und JMS-Server definiert.
2.2.4 Testdauer
Alle Test-Szenarien wurden für insgesamt acht Minuten durchgeführt. Jede Test umfasste acht, sechzig-Sekunden-Intervallen. Die ersten beiden und letzten Intervalle wurdn
als Ramp-up und Ramp-down vorgesehen.
Ramp-up Intervalle sind Zeiten, in denen die Systeme ihre Nachrichten-HandlingKapazitäten aufsteuern in Reaktion auf die neu eingeführten Client.
Ramp-down Intervalle sind Zeiten, in denen die Systeme ihre Nachrichten-HandlingKapazitäten herabsetzen in Reaktion auf die Reduzierung der Client. Die Restlichen
fünf Intervalle sind die Messzeiten, während der Steady-State-Leistung erreicht wurde.
Steady-State ist der Zustand, in dem sich Nachrichtenrate geringfügig verändert.
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
13
2.2.5 Testergebnisse
Abbildung 2.3: Topic Skalierbarkeit [techb]
Abbildung 2.4: Topic Skalierbarkeit [techb]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
14
Abbildung 2.5: Server Skalierbarkeit [techb]
Abbildung 2.6: Server Skalierbarkeit [techb]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
15
Abbildung 2.7: Persistent Publisher, Durable Subscriber [techb]
Abbildung 2.8: Persistent Publisher, Durable Subscriber [techb]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
16
Abbildung 2.9: Non Persistent Publisher, Non Durable Subscriber [techb]
Abbildung 2.10: Non Persistent Publisher, Non Durable Subscriber [techb]
Hauptseminararbeit Aalbrecht Alby Irawan
2 Java-JMS
17
2.2.6 Auswertung
Die Testszenarien stellen Bedingungen für realen Anwendungen, wo eine einzelne Message Broker viele Publisher und Subscriber unterstützen soll. Verschiedene Konfigurationen von JMS-Broker oder Änderungen an Test-Defitionen können zu andere Durchsatzleistungen herbeiführen.
FioranoMQ und SonicMQ liefern relativ hohe Durchsatzrate und kommen als “Sieger” von dem oben genannten Test. Aber mehr Ingenieur benutzen ActiveMQ oder
JBoss für ihre Systeme. Es liegt einfach daran, dass die beiden Programme kostenlos
erwerbbar sein.
Wenn die Server und die Clients als eine “Gesamtpaket” betrachtet sein soll, um die
Interoperabilität zwischen J2EE und J2ME zu gewährleisten, wird in vielen Bücher
IBus Mobile oder IBM WebSphere empfohlen. Alternative Variante ist JORAM (Java
Open Reliable Asynchronous Messaging), da JORAM eine Open-Source-Software ist.
Hauptseminararbeit Aalbrecht Alby Irawan
Literaturverzeichnis
18
Literaturverzeichnis
[Menz04] Stefan Menz. Die Java Virtual Machine. Technischer Bericht, Uni Ulm,
2004.
[Sun 03] Sun Microsystems, Inc., http://java.sun.com/products/cdc/wp/
cdc-whitepaper.pdf. CDC WhitePaper, 2003.
[techa]
Java Performance Comparison. Technischer Bericht, Krissoft Solutions.
[techb]
Java Performance Comparison.
Technischer Bericht, Fiorano Software Technologies Pte Ltd, http://www.fiorano.com/whitepapers/
java-message-service/JMS-performance-comparison.php.
[Ulle09]
Christian Ullenboom. Java ist auch eine Insel. Galileo Press. 1475 Seiten,
8. Auflage, 2009.
[Yuan04] Michael Juntao Yuan. Enterprise J2ME. Prentice Hall. 452 Seiten, 4. Auflage, 2004.
[Yusu04] Kareem Yusuf. Enterprise Messaging Using JMS and IBM Websphere. Pearson Education. 329 Seiten, 1. Auflage, 2004.
Hauptseminararbeit Aalbrecht Alby Irawan
Abbildungsverzeichnis
19
Abbildungsverzeichnis
1.1
1.2
1.3
Java 2 Platform [Yuan04] . . . . . . . . . . . . . . . . . . . . . . . . . .
J2ME Komponente [Yuan04] . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht der derzeit verfügbaren Virtual Machine [Sun 03] . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
Point-to-Point Modell [Yuan04] . . . . . . . . . .
Publish-Subscribe [Yuan04] . . . . . . . . . . . .
Topic Skalierbarkeit [techb] . . . . . . . . . . . . .
Topic Skalierbarkeit [techb] . . . . . . . . . . . . .
Server Skalierbarkeit [techb] . . . . . . . . . . . .
Server Skalierbarkeit [techb] . . . . . . . . . . . .
Persistent Publisher, Durable Subscriber [techb] .
Persistent Publisher, Durable Subscriber [techb] .
Non Persistent Publisher, Non Durable Subscriber
Non Persistent Publisher, Non Durable Subscriber
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
[techb]
[techb]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
3
4
7
8
13
13
14
14
15
15
16
16
Hauptseminararbeit Aalbrecht Alby Irawan
Tabellenverzeichnis
20
Tabellenverzeichnis
2.1
2.2
Messaging Domäne Schnitstelle [Yusu04] . . . . . . . . . . . . . . . . .
JMS-Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
9
Hauptseminararbeit Aalbrecht Alby Irawan
Abkürzungsverzeichnis und Formelzeichen
21
Abkürzungsverzeichnis und
Formelzeichen
CDC . . . . . . . . . . . . . . .
CLDC . . . . . . . . . . . . . .
JMS . . . . . . . . . . . . . . .
JVM . . . . . . . . . . . . . . .
KVM . . . . . . . . . . . . . .
MIDP . . . . . . . . . . . . . .
Connected Device Configuration
Connected Limited Device Configuration
Java Messaging Service
Java Virtual Machine
Kilobyte Virtual Machine
Mobile Information Device Profile
Hauptseminararbeit Aalbrecht Alby Irawan
Erklärung
22
Erklärung
Die vorliegende Arbeit habe ich selbstständig ohne Benutzung anderer als der angegebenen Quellen angefertigt. Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten Quellen entnommen wurden, sind als solche kenntlich gemacht. Die Arbeit ist
in gleicher oder ähnlicher Form oder auszugsweise im Rahmen einer oder anderer Prüfungen noch nicht vorgelegt worden.
Ilmenau, den 01. 07. 2011
Aalbrecht Alby Irawan
Hauptseminararbeit Aalbrecht Alby Irawan
Herunterladen