# JavaFx als Client und MySQL



## Rudolf (30. Aug 2012)

Hi Leute,

erstmal eine Kritik vorweg. Das Forum ist falsch benannt. oracle plant Swing komplett durch javaFx zu ersetzen. Es läuft bereits super in der regulären Runtime. Es ist also falsch bei JavaFX von einer JavaAlliaz anzugehen, auch wenns anfangs so schien.

Dann zu meiner eigentliche Frage. Aber eins vorweg. javaFx ist sowas von geil. Es läuft als Desktopanwendung sowie auch als Webanwendung absolut geil. Man braucht also nur eine Sprache zu lernen, Java mit seiner JavaFx Api und man beherrscht zwei Bereiche, wenn da nciht eine Frage wäre.

Da JavaFx komplett auf dem CLient ausgeführt wird, frage ich mich wie sicher Datenanbindungen sein werden. Wenn die ganze Logik im Client liegt, also ohne eine Server-Client-Kommunikation, dann liegen auch theoretisch Passwörter im javaFx Client, was ja nicht so toll ist, wenn man versucht sensible Daten auf einer server mysql ebene zu schützen.

Wie snid eure Meinungen. Ist die Befürchtung berechtigt oder gibts bereits Abhilef?


----------



## Paddelpirat (30. Aug 2012)

Also das Forum an sich ist glaub ich schon richtig benannt 
Vielleicht sollte man JavaFX 2 mal aus der Rubrik Aliens raus nehmen, aber dazu gab es ja schon mal einen Thread...

Zu deiner eigentlichen Frage: Ich glaube da hast du was falsch verstanden. Mit JavaFX kannst du, wie auch mit Swing, deine Daten nur ansprechend aufbereiten und dem Benutzer anzeigen. Sonst hat JavaFX nichts mit den Daten und deren Verarbeitung zu tun. Die ganze Logik kannst du wie sonst auch auf einen Server auslagern.


----------



## Rudolf (30. Aug 2012)

Ich weiß dass JavaFx nichts mit Persistierung direkt zu tun hat.

Ich gebe mal folgendes Beispiel. PHP wird auf dem Server ausgeführt, genauso wie Servlets. Den Code sieht der Benutzer nicht bzw sieht der Client nicht. Daher ist es sicher. JavaFx hingegen wird komplett auf der Clientseite ausgeführt und damit ist ein Server manipulierbar, wenn der Clientcode entsprechend verändert wird. Ich hoffe, es ist damit klarer geworden.


----------



## Akeshihiro (30. Aug 2012)

Dennoch hat JavaFX nix damit zu tun. Die Datenverarbeitung ist Teil der Businesslogik, das UI hat damit nichts zu tun, weder direkt noch indirekt. Wenn du deine Logik im Client ansiedelst und auslieferst, dann nennt sich das Client und nicht JavaFX.


----------



## Rudolf (30. Aug 2012)

Habt ihr noch immer nicht verstanden worauf ich hinaus möchte?

Ist doch s****** egal wie man das jetzt nennt. Es geht darum, dass der ganze Java Code im Client steckt. Wie baut man dennoch sichere Verbindungen zum Server auf?


----------



## gp (30. Aug 2012)

Im Client steckt der Code der Oberfläche. Die Daten könnten vom Server kommen - wenn es sicher sein muss zum Beispiel per HTTPS. Dann ist die Geschäftslogik da wo du sie haben willst.

Gesendet von meinem GT-P7501 mit Tapatalk 2


----------



## Akeshihiro (30. Aug 2012)

Rudolf hat gesagt.:


> Habt ihr noch immer nicht verstanden worauf ich hinaus möchte?
> 
> Ist doch s****** egal wie man das jetzt nennt.


Nop, is nich egal, wie man das nennt, denn das ist der Grund, warum du überhaupt die Frage gestellt hast, weil du das in einen Topf wirfst.



Rudolf hat gesagt.:


> Es geht darum, dass der ganze Java Code im Client steckt. Wie baut man dennoch sichere Verbindungen zum Server auf?


Gar nicht! Wie du so schön festgestellt hast, hat auch der Client seinen Code. Und den kann man jeder Zeit gegen ihn selbst verwenden, z. B. durch Dekompilieren. Deswegen kommen da auch niemals sensible Daten oder Logik rein. Das wird vom Client abgeschottet und wie das geht, hast du auch schon selbst gesagt. Serverseitige Verarbeitung, z.B. als Webservice oder wie auch immer, so dass der Client lediglich mit Daten in Berührung kommt, die er darstellen soll und mehr nicht.


----------



## Rudolf (31. Aug 2012)

OK,

mal angenommen mein JavaFx-App soll sich mit einer mySQL Datenbank verbinden. Woher soll er die Verbindungsdaten nehmen? Er muss ja den Servernamen, den mysql Benutzernamen und das mysql Passwort kennen. Wenn man das im Client abspeichert, können diese Daten herausgelesen werden. Wenn man auf diese Daten verzichtet, muss der Server den Client authentifizieren, was auch manipulierbar ist. von daher fällt mir keine Lösung ein.

Oder verschlüsselt man diese Daten mit einem Algorythmus im Client? Ich gebe zu, dass ich noch niemals einen Client programmiert habe, sei es Swing oder eine andere Desktopanwendung, die sich mit einem Server verbindet. Daher ist mir die Thematik ganz neu.


----------



## maki (31. Aug 2012)

> von daher fällt mir keine Lösung ein.


Ja, das ist der Konsens, schon öfters hier im Forum besprochen und auch hier im Thread wiederholt.

Deswegen:
Client -> AppServer -> DB

Entweder das, oder eben den User den DB Nutzernamen & Password eintippen lassen.


----------



## Paddelpirat (31. Aug 2012)

Rudolf hat gesagt.:


> Ich gebe zu, dass ich noch niemals einen Client programmiert habe, sei es Swing oder eine andere Desktopanwendung, die sich mit einem Server verbindet. Daher ist mir die Thematik ganz neu.



Dann solltest du dich wohl erst einmal mit der Thematik Client-Server-Datenbank beschäftigen, weil mit JavaFX hat das ganze einfach nichts zu tun. Aber das jetzt hier zu erklären geht echt zu weit, dafür gibt es tausend andere Threads und ganz viel Literatur.


----------

