# Verteilte JAVA Systeme



## private x (27. Jan 2012)

Hallo,

meine Frage bezieht sich auf die Programmierung von verteilten Systemen in JAVA. Ich möchte nämlich für meine Abteilung in der ich arbeite ein verteiltes System entwickeln. Dazu hätte ich folgende Allgemeine Fragen:

1.) Wann macht es Sinn solch ein System aufzubauen? Wenn viele Clients das Programm benutzen???
2.) Würde es ausreichen einen Rechner als Server zu benutzen und dort die Anwendungslogik sowie Datenhaltungsschicht zu realisieren? Oder müsste ich diese nochmals Trennen (3-Tier)...

Danke schon mal im Voraus!

Viele Grüße
jonny


----------



## XHelp (27. Jan 2012)

Was heißt für dich "verteiltes System"? Nur Client-Server Anwendung?
zu 1: Es macht Sinn, wenn... wenn es Sinn macht. Eine der Gründe hast du ja schon genannt. Ansonsten kann da Rechnerauslastung eine Rolle spielen, Sicherheit etc.
zu 2: Ob du dein Programm in Schichten machst oder ob du es auf verschiedene Rechner auslagerst sind 2 verschiedene Sachen.

Im Grunde hast du gefragt: "Ich will da irgendwas machen: macht das überhaupt Sinn und wie soll ich das am besten machen?". Da müsstest du schon etwas konkreter bei der Beschreibung werden.


----------



## private x (29. Jan 2012)

Hi,

danke für die Antwort.

Ja überlegt habe ich mir eine Client-/Server Anwendung. Ne GUI damit Benutzer mit dem System verschiedene Interaktionen durchführen kann (Kommunikation über RMI mit dem Server). Auf dem Server soll dann die Logik implementiert werden. Die Datenbank würde ich dann auch aufm Server drauf  packen. Ein PC beinhaltet praktisch den Server mit dem Programm und der Datenbank. Die Clients würden dann auf eine zentrale Dtbk zugreifen.


----------



## Empire Phoenix (30. Jan 2012)

Also ein MVC wo MC auffem Server leigen und C aufen Client. Gibt schon sinn.


----------



## private x (30. Jan 2012)

hi du meinst view auf dem Client oder?  ich interpretier deine Antwort ,gibt schon sinn, als nicht-ironisch  ...

LG


----------



## TheDarkRose (30. Jan 2012)

Kurz gesagt: Java EE


----------



## reNur (30. Jan 2012)

Ob die Datenbank jetzt wirklich auf dem Server liegt oder wo ganz anders, ist eigentlich egal. Ausschlaggebend für eine 3-Tier-Architektur ist, dass die Logik und die Datenhaltung klar getrennt sind - und dass ist natürlich bereits der Fall, wenn eine Datenbank im Spiel ist.

Aber der ganze Ansatz (Java-Clients greifen über RMI auf einen Java-Server zu) ist - imo - schon etwas angestaubt. Da wirst du später größere Probleme mit Skalierung, Sicherheit etc. bekommen. Schau die am besten wirklich mal JavaEE inkl. Applikationsserver an.


----------



## Landei (30. Jan 2012)

Die Frage bei Clients ist immer: Wie läuft die Maintenance? Also Erst-Installation, Updates u.s.w.

Dann kann es sinnvoll sein, einen Webclient zu bevorzugen, oder (bei kleinen, aber häufig zu updatenden Apps) Web-Start.


----------



## private x (30. Jan 2012)

Hallo zusammen,

zunächst einmal vielen Dank für die Beiträge!

Also habe mich mal ein bisschen mit JAVA EE beschäftigt. D. h. der Client kann ein einfacher Webbrowser sein über das dann die Datenbank über die Logik angesprochen wird. Im weiteren Sinn bedeutet dies, dass die Benutzungsschnittstelle ohne Swing realisiert wird sondern über HTML???

Aber im Grunde genommen könnte man es auch ohne JAVA EE implementieren. Da mir das Know-How und die Zeit für das Einarbeiten in die Materie fehlt, müsste ich dies ohne JAVA EE machen.


Viele Grüße


----------



## TheDarkRose (30. Jan 2012)

Glaub mir, das einarbeiten in Java EE (EJB, JPA, JSF/JSP) ist wertvoller als wie wenn du was mit Sockets/RMI zusammenschusterst und es dich später beim warten und updaten auf die Fresse haut.


----------



## private x (31. Jan 2012)

Hallo,

für die Datenbank würde ich eine mysql Datenbank einrichte. Die Frage ist, wenn ich diese lokal wie auf Apache installieren (damit ich die Datenbank mit phpmyadmin verwalten kann), kann ich dann überhaupt die Datenbank dann auch noch über den Applikationsserver erreichen.

Kann mir da jemand vllt. erklären wie ich am besten die Client/Server-Anwendung verteilen kann. 

Beispiel: Es befinden sich 6 PC's im LAN. 1 PC bildet der Applikationsserver mit der logischen Implementierung. 1 PC bildet den Datenbankserver mit der mySQL-Datenbank.

Frage: wie installiere ich die Datenbank und vorallem wie spreche ich die Datenbank dann an (über die IP-Adresse des Servers und dem Pfad?)


----------



## TheDarkRose (31. Jan 2012)

Ganz normal über die IP. Und man installiert keine Datenbank in einen Apache. Der Apache ist ein Webserver. Beides kann natürlich parallel auf einer Maschine laufen.



```
Clients <-> Applicationserver <-> Datenbankserver
```


----------



## reNur (31. Jan 2012)

private x, ich glaub du musst dir erst mal ein paar Grundlagen anlesen bevor du da irgendwas installierst und programmierst und später dann nur Ärger damit hast.
"Verteilte Systeme" von Tannenbaum/Steen ist ein sehr gutes Buch und hat mir auch geholfen.Und dann würd ich mich, wenn du bei Java bleiben willst, wirklich in JavaEE einarbeiten. Wenn du anfängst, mit RMI und Sockets einen eigenen "Applikationsserver" anzusprechen, und dann auch noch nativ eine Datenbank - das hat keine Zukunft und ist eigentlich nur Zeitverschwendung.


----------



## DerFeivel (31. Jan 2012)

Als erstes, solltest du uns vielleicht mal sagen, was genau du vorhast.

Konkrete Hinweise zu einer vagen Vorstellung sind....nun ja, nicht unbedingt immer zielführend.


Trotzdem ein paar konkrete Sachen:


Die Datenbank kann auch auf dem gleichen Server laufen. Wenn du bspw. Xampp benutzt, kannst du da ja auch einen Apache starten und gleichzeitig einen MySql-Server. 
Der Apache ist dann über Port: 80 erreichbar und der MySql-Server glaube ich über Port: 3306.


----------



## private x (1. Feb 2012)

Hallo,

während dem Studium gabs schon so ein ähnliches Projekt. Da wurde das ganze System entkoppelt, d. h. eigener Applikationsserver, eigener Datenbankserver und eben die Clients. Das ganze wurde dann mit RMI für die Netzwerkkommunikation und JDBC für den Datenbankzugriff realisiert. Hat eigtl. auch ganz gut geklappt (Java ee kenn ich ja noch nicht, ist das wirklich so viel besser??). Ist auch ein weilchen her und des war mir alles nicht mehr so richtig im Kopf .

Ich wollte eigtl. nur nochmal einen Überblick über das Gerüst der verteilten Systeme erhalten. Also 3-tier Architektur, RMI, JDBC, im Grunde genommen den Zusammenhang. Ich habe nämlich vor ein Programm mit solch einer Struktur zu realisieren. Genauer gesagt ein Fahrzeugreservierungssystem mittels Java.

LG


----------



## Landei (1. Feb 2012)

private x hat gesagt.:


> Java ee kenn ich ja noch nicht, ist das wirklich so viel besser??



Es versteckt die ganzen Klempner-Arbeiten besser, übernimmt Routine-Aufgaben und bietet verschiedene Services wie Transaktionalität, Object-Pooling, Timer, Message-Queues u.s.w. Die Vorgänger-Versionen des aktuellen EJB 3 Standards (der wiederum Teil von JEE ist) waren deutlich _schlechter _als andere Ansätze (insbesondere Spring/Hibernate), aber das hat sich inzwischen sehr gebessert.


----------



## reNur (2. Feb 2012)

private x hat gesagt.:


> Das ganze wurde dann mit RMI für die Netzwerkkommunikation und JDBC für den Datenbankzugriff realisiert. Hat eigtl. auch ganz gut geklappt



Ich nehme an, dein Studium ist dann schon eine Weile her  Soweit ich das Überblicken kann, wird so etwas nicht mehr gemacht. Besonders direkte JDBC-Zugriffe durch einen Applikationsserver - da gibt es sehr viele bessere Lösungen (Stichwort OR-Mapping), die z.B. von JavaEE angeboten werden.

Natürlich könntest du eine Client-Server Architektur bzw. 3-Tier auch mit RMI und JDBC realisieren - das ganze hat dann aber heutzutage keine Zukunft mehr, und für alles was über einen Prototyp hinausgeht würd ich so etwas auch nicht mehr einsetzen.


----------



## private x (2. Feb 2012)

Hi renur, 

ich denke das sollte anfangs auch als Prototyp dienen. Hatte jemand schon Erfahrungen über derartige Systeme? Welche Funktionalitäten wären denn außer Reservierung verwalten, Stammdaten verwalten denn noch sinnville Funktionen?

LG


----------



## areafo (3. Feb 2012)

@private

Der Funktionsumfang hängt von den Wünschen der Benutzer ab , befrag sie dazu einfach.

Schreib dir dann ein kleines Pflichtenheft, diskutiere Umsetzungsvarianten mit den Benutzern usw.

Soll es tatsächlich nur auf Desktops benutzt werden oder wäre der Chef nicht begeistert mit seinem Blackberry oder Tablet das in der Badewanne durchzuführen ^^.

Denk auch an neue Architekturen, Laufzeit und Zukunftssicherheit. Nicht nur immer hier und jetzt und ganz schnell irgendwas


----------



## private x (3. Feb 2012)

Hi,

ja um ne Anforderungsdefinition komme ich nicht rum. Ich dachte mir vllt. gibts  noch ein paar Stammfunktionen die unentbehrlich sind ...Ja das wär mal interessant, das ganze auch mobil anzubieten. Was braucht man denn alles dafür bzw. wie programmiert man das??

Grüße


----------



## Empire Phoenix (4. Feb 2012)

Wenn es etwas einfacher sein soll kann man noch ganz gut GWT + JPA(oder eigene querys) nehmen


----------



## marroni (5. Feb 2012)

JINI ?


----------

