JavaSpaces

Status
Nicht offen für weitere Antworten.

Peter@Pan

Aktives Mitglied
Hi @ll,

hat sich jemand von euch schonmal mit JavaSpaces beschäftigt?
In der neuen iX ist dazu ein Artikel aber ich habe ganz ehrlich verstanden wobei es eigentlich bei JavaSpaces geht, wie es Funktioniert und in welchen Anwendungsszenarien es sinnvoll ist.
Kann mir jemand von euch ein bisschen Grundlegendes zu JavaSpaces erzählen oder einen kurzen Erfahrungsbericht posten?

Gruß,
Andreas
 

SilentJ

Bekanntes Mitglied
JavaSpaces unterstützt das verteilte Rechnen. Sofern ich mich richtig erinnere, können Objekte in Räume (Spaces) eingestellt werden, auf die interessierte Beobachter - Java Programme - zugreifen können. Ein Anwendungsfall ist z.B. das Rendern von Graphiksequenzen. Ein Sequenz kann als Reihe von Frames in den JavaSpace eingestellt werden. Geeignete Beobachter übernehmen das Rendern der Frames und stellen das Ergebnis wieder in den JavaSpace ein.

In gewisser Weise kann man bei JavaSpaces also von einem Marktplatz sprechen, wo verteilte Anwendungen miteinander in Verbindung treten.

Schaue Dir auch mal Jini an, ist eine verwandte Technologie. ;-)

Michael
 

AlArenal

Top Contributor
Der Artikel ist in der Tat sehr dröge und theoretisch gehalten. Was fehltist zumindest die Erwähnung einer praktischen Anwendung, von einem Code-Beispiel ganz zu schweigen. Es ist nichtmal erwähnt wie das Ganze praktisch zu integrieren ist.

Hat Spaces nen eigenen Serverdienst, oder wird es als WebService in einen App-Server integriert? Man weiß es nicht.. ;)

Ganz so blöde war der Autor des Artikels aber nicht. Man beachte den blauen Kasten mit der Überschrift "Onlinequellen".
 

SilentJ

Bekanntes Mitglied
JavaSpaces kann man auch als tote Technologie bezeichnen. Was sich nach zehn Jahren nicht durchgesetzt hat, setzt sich nicht mehr durch - zumindest im IT-Umfeld bezogen auf Java.
 

AlArenal

Top Contributor
SilentJ hat gesagt.:
JavaSpaces kann man auch als tote Technologie bezeichnen. Was sich nach zehn Jahren nicht durchgesetzt hat, setzt sich nicht mehr durch - zumindest im IT-Umfeld bezogen auf Java.

Das hat man nach dem Tod von NeXT auch gesagt. Manche Dinge sind ihrer Zeit auch einfach zu weit voraus. Und mit dem "Durchsetzen" ist es ja immer so eine Sache. Wie bewertet man den Erfolg einer Technologie? Ist sie erst erfolgreich wenn sie allgegenwärtig ist? Sind KI und Neuronale Netze allgegenwärtig? Nö. Aber tot sind sie auch nicht, stattdessen kommen sie so langsam aber sicher...
 

foobar110

Mitglied
Bei JavaSpaces geht es um einen Space, in den Objekte übertragen werden. Alle beteiligten Clients können Objekte aus diesem Space lesen, schreiben und entnehmen, einen Listener an diesen Space hängen, der nach interessierenden Objekten lauscht und diese dann liest bzw. entnimmt (anhand eines Objekt-Templates). Der Vorteil ist das Distributed Computing. Zudem werden ganze Objekte (bzw. Kopien dieser) in dem Space abgelegt, auf die nicht direkt, sondern nur indirekt zugegriffen werden kann. D.h. man kann nicht wie bei RMI remote entsprechende Methoden aufrufen, sondern entnimmt ganze Objekte.

Ich würde ganz gerne an diesen Thread anknüpfen, da mich das Thema bzw. das Konzept dahinter auch echt interessiert.

Mich würde interessieren, welche aktuellen Implementierungen der Technologie noch lauffähig sind und welche Technologien eingesetzt werden. Weiß darüber hier jemand Bescheid?

Wozu ist der Webserver bei den Implementierungen nötig? Einfach um eine Netzwerkschnittstelle herzustellen? Was hängt noch daran und wozu wird es benötigt?

Warum ist der Hype um JavaSpaces so schnell vergangen? Ich finde im Netz auch größtenteils nur veraltete Quellen aus den Jahren 1999, 2000.
 
M

maki

Gast
>> Warum ist der Hype um JavaSpaces so schnell vergangen? Ich finde im Netz auch größtenteils nur veraltete Quellen aus den Jahren 1999, 2000.

Wie, es soll Hypes geben in Java? ;)
 

foobar110

Mitglied
Zudem noch die Frage: Was steht eigentlich an Erkenntnissen oder wesentlichen Inhalten in diesem Artikel der iX? - Der umfasst ja immerhin vier Seiten.
 

dyrathror

Mitglied
Ich habe den Artikel nicht gelesen aber JavaSpaces basiert auf der Jini Technologie und wenn Du Dir das StarterKit runterlädst ist die JavaSpaces Implementierung mit dabei.

Mit Bäumen hat das eigentlich nichts zu tun und einen Webserver benötigst Du dazu eigentlich auch nicht. Die Jini Technologie stellt eine verteile Service Architektur auf einem lokalen Netz zur Verfügung die sich in der Regel weitestgehend selbst konfiguriert. JavaSpaces ist als Jini Service implementiert und alle Rechner im gemeinsamen Netz werden zum selben Space zusammengeschaltet, wenn nicht anders konfiguriert.

Im Space werden Objekte verteilt verwaltet. Man kann an einem Rechner ein Objekt mit einer write() Operation in den Space schieben und an einem anderen Rechner mittels eines Template dieses Objekt suchen und wieder aus dem Space holen (read() oder take()). Damit dies funktionieren kann haben Objekte public Attribute anhand derer sie später wiedererkannt werden können. Um ein schnelles Erkenne der Objekte zu ermöglichen werden diese mit einem speziellen marshalling Algorythmus serialisiert wenn sie in den Space geschrieben werden. Um ein Objekt oder eine Gruppe von Objekten im Space zu suchen erzeugst du ein Objekt der selben Klasse und belegt einen Teil oder alle öffentlichen Attribute. Dieser Identifikationsteil wird jetzt gegen die Objekte im Space gematched und die matchenden Objekte zurückgeliefert.

Die Jini Technologie sorgt für die Abstraktion auf Netzebene und der JavaSpaces Service für die Verteilung und Verwaltung der Objekte.

Es bleibt einfach die Frage der entsprechenden Anwendung offen. Verteilte Datenhaltung wird zwar benötigt aber in der Regel spielen hier dann auch Dinge wie Datensicherheit, Zugriffsschutz und Performance eine Rolle die alle nicht gerade die Stärken von JavaSpaces sind.

D.
 

foobar110

Mitglied
Danke für deine Antwort!

Dann verstehe ich aber nicht wozu z.B. GigaSpaces einen Webserver startet, wenn die Umgebung aufgebaut wird. Soweit ich weiß gehören immer die Komponenten http server, rmi activation daemon, lookup service, transaction manager sowie der javaspace service zu einer JavaSpaces Architektur dazu! Ich bin mir da aber nicht 100% sicher, von daher weiß vielleicht jemand hier das besser!? Und wozu dient der http server sonst, wenn nicht als Netzwerkschnittstelle? Was macht ein RMI activation daemon genau (in a nutshell)?

Kann man wirklich nur innerhalb eines LANs auf Objekte zugreifen? Prinzipiell müsste das doch auch über WANs/Internet laufen können?

Dann bleiben noch die Fragen offen:
Welche Implementierungen der Technologie sind noch lauffähig und welche Technologien werden heute eingesetzt?

Warum ist der Hype um JavaSpaces so schnell vergangen?
 

dyrathror

Mitglied
Ein rmid kommt mit jeder Java Distribution auf Deinen Rechner. Das ist so etwas wie der inetd für Java Klassen. Hier kannst Du Objekte die das Remote Interface implementieren und Activatable sind registrieren. Der rmid legt die Objekte dann schlafen bis ein Request für das Remote Interface der Klasse ankommt, aktiviert das Objekt dann und sorgt für die rmi Verbindung zum Aufrufer.

Mit dem Lookup Service ist wahrscheinlich die Jini Umgebung gemeint die genau dies mitbringt. Du kannst einfach deinem lokalen Jini Knoten eine Handvoll Attribute für einen gewünschten Service übergeben und der sucht dann ob im Netz ein Service mit diesen Eigentschaften angemeldet ist und übergibt Dir die Verbindung. Die Informationen welche Services zur Verfügung stehen werden per Lookup zwischen den einzelnen Jini Knoten ausgetauscht und mit einer Lease versehen. Hat sich der Service innerhalb der Lease Zeit nicht als noch verfügbar gemeldet fliegt er aus der Liste und steht nicht mehr zur Verfügung.

Transaction Manager und JavaSpace Service sind die Bestandteile des JavaSpaces die auf Deinem Rechner laufen und mit denen Du dann lokal kommunizierst.

Ich könnte mir vorstellen das der HTTP-Server dazu da ist um zwischen verschiedenen Subnetzen eine RMI/HTTP Verbindung herzustellen. Der Lookup von Jini funktioniert über einen Multicast-Call und diese sind in der Regel in den Routern geblockt, daher auch die 'Beschränkung' auf das lokale Subnetz.

Aber ehrlich gesagt sind meine Infos schon 10 Jahre alt :) Ich kann nicht behaupten das ich die letzte Entwicklung bei Jini und den JavaSpaces mitbekommen habe. Die aktuelle Entwicklung findest Du mit Sicherheit auf den Sun Webseiten.

D.
 

foobar110

Mitglied
Danke!

Der HTTP Server dient zum Klassenladen. So kann man Klassen schnell für alle teilnehmenden Clients verfügbar machen. Der Lookup Service identifiziert den JavaSpace Service sowie alle anderen Services, die im Jini Umfeld registriert sind, richtig, und gibt diese als Objekt zurück. Ich habe bisher leider nur die Referenzimplementierung (RI, Outrigger von JINI) zum Laufen bekommen (neben GigaSpaces). Würde gerne Blitz testen und dessen Vorteile auskundschaften, aber ich krieg's nicht gebacken, da schon beim Start >=3 Fehler aufpoppen. Interessant ist weiterhin auch, inwiefern man Redundanz mit der RI erreichen kann und wo die Grenzen liegen.
 

foobar110

Mitglied
Hat sich schonmal jemand hier an SemiSpace(.org) gewagt?

Über Google finden sich keine Ergebnisse bezüglich Erfahrungen o.a. mit dieser TupleSpaces Impl. :?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben