# Java Projekt, GUI, DB, Multiuser Anwendung



## uppss (13. Okt 2014)

Liebe Forumsmitglieder,

ich habe ehrlich gesagt nicht so viel Erfahrung mit java, muss aber in diesem Semester ein Java Projekt machen, also eine GUI Anwendung entwickeln.

GUI werde ich mit swing realisieren, da habe ich ein bisschen Erfahrung
DB, keine Ahnung, ich brauche da ein paar Tipps von Ihnen, was und wo ich nachforschen muss.
-Ich darf mysql, am Besten aber MS Access db.
Multiuser, hier habe ich auch keine Ahnung, wie das funktionieren sollte.

Das Programm muss dann aus einer XML-Datei Informationen abholen, in einer Tabelle Darstellen, diese Informationen muss man dann filtern können und in einer db abspeichern.
Die Tabelle muss nicht nur feste Felder haben, sonder auch vom Hand editierbare und auch als dropdown auswählbare Felder haben.

XML-Dateien haben bestimmte Namen und liegen auf dem Server, die muss man dann per verschlüsselte (login und pw) http Abfrage irgendwie abholen, durchparsen und dann die richtige xml-Dateien mit den benötigen Informationen runterladen und die Tabelle in der GUI füllen.

Ich brauche ein paar Tipps, wo ich durchforschen (*Themen, Begriffe, Abkürzungen*) muss!!!
Erfahrung habe ich nicht viel, will aber mit diesem Projekt meine Java Kenntnisse erweitern!

Für die Tipps bedanke ich mich im Voraus!
Daniel


----------



## Joose (13. Okt 2014)

Swing für die UI zu verwenden ist hier sicher richtig, einerseits besteht ja schon etwas Erfahrung darin außerdem reicht es vollkommen für das Vorhaben aus.

Datenbank: Aus Erfahrung kann ich nur von MS Access abraten, vor allem wenn die Anwendung wirklich Multiuserfähig sein soll.
Setze lieber auf MySQL, das ist leicht aufzusetzen und dazu gibt es auch viele Hilfen in diversen Foren und Tutorials.

Multiuser: Normale werden Anwendungen die Multiuserfähig sein müssen mit einer zentralen Serveranwendung realisiert.
Sprich die Serveranwendung nimmt Verbindungen der Clients entgegen und bekommt Anfrage. Diese werden verarbeitet (Daten aus DB lesen, ändern usw.) und das Ergebnis an den Client geliefert.
Der Client hat nur noch die Aufgabe die Verbindung zum Server herzustellen und die Daten hübsch anzuzeigen 
Hier gibts die Stichwörter: T3 Schichtenmodell

Sprich auf dein Beispiel bezogen:

Der Client verbindet sich mit dem Server und verlangt das XML "XYZ". Dieses wird vom Server gelesen und geparst. Das Ergebnis wird an den Client geschickt und dieser füllt mit den Daten seine Tabelle.

Tipps:
Erstelle deine Anwendung Schritt für Schritt und fang nicht alles auf einmal an.
Also zuerst die Serveranwendung schreiben (XML laden/parsen, DB Verbindung aufbauen etc.).
Dummy Konsolenclient um die Verbindung zu Server herzustellen
und am Ende erst die GUI


----------



## uppss (13. Okt 2014)

vielen Dank für die schnelle Antwort!

Eine Frage bzgl. Datenbank:
Ich habe schon etwas mit mysql-connector-java probiert, komme aber nicht weiter, weil ich nicht weiß, womit ich eine mysql db erstellen kann, ohne irgendwelche software zu installieren, geht das vlt. mit eclipse ? so wie z.B. mit visual studio.

D.h. man schreibt ein Driver und erstellt eine Verbindung zur sqlDB, erst lokal auf dem Rechner. Hier braucht man eine Server und eine Client Version sockets ect.

*Geht das irgendwie anders ?
Man hat eine Anwendung, diese Anwendung holt immer aktuelle Daten aus einer Datei, die auf einem Netzwerklaufwerk liegt, und ist gut so.
- Das Ist erst keine Multiuser-Anwendung, kann ich mir erst dann aber Gedanken machen, wenn schon das funktionieren würde!*

VIELEN - VIELEN DANK!!!
Daniel


----------



## JavaMeister (13. Okt 2014)

> Geht das irgendwie anders ?



Ja klar geht das auch anders. Vielleicht mal 1 oder 2 Tuts lesen und konkretere Fragen stellen?



> Man hat eine Anwendung, diese Anwendung holt immer aktuelle Daten aus einer Datei, die auf einem Netzwerklaufwerk liegt, und ist gut so.



Ja das wäre ein sinnvoller Anfang. Aber von dr Schwierigkeit nicht gerade leichter, als eine Relationale DB. Dann kannst du besser SQLLite verwenden oder sowas.


----------



## chalkbag (14. Okt 2014)

Wie musst du die Anwendung / das Ergebnis in der Uni abgegeben werden?
Wenn die Anwendung beim Prof auch laufen soll, dann brauchst du eine portable Datenbank. Dafür wäre Access DB oder sqlLite dann besser. Wenn der Prof Access DB bevorzugt, dann nimm die... es ist egal ob die Lösung "sexy" ist.




> Das Ist erst keine Multiuser-Anwendung, kann ich mir erst dann aber Gedanken machen, wenn schon das funktionieren würde!


Du musst dir jetzt schon Gedanken machen, sonst setzt du die Anwendung 2x um. Ich denke du musst dich hier primär um Themen wie Deadlocks, wer schreibt zuerst, was passiert wenn Datensätze von mehreren Personen "gleichzeitig" bearbeitet werden (z.B. optimistic lock..) usw. kümmern.

Ich nehme an hier handelt es sich um das Praktikum zur Vorlesung "Verteilte Systeme". Da interessiert es eigentlich nicht, welche Datenbank du verwendest. Hier geht es primär um das Problem verteilte Systeme / Multi-User-Betrieb. Die restlichen Themen sollten schon bekannt sein.


----------



## uppss (14. Okt 2014)

Ganz genau, ob die Lösung "sexy" ist, ist mir völlig wurst.
Ich will aber etwas vernünftiges dabei lernen!

Ich muss am Ende des Semesters auf einem Netzwerklaufwerk eine Datei ablegen, die Funktionalität einer db erfüllt und es muss unbedingt portabel sein!

sqlite
mysql db ect.
ms acess

Der Prof bevorzugt natürlich ms access!


----------

