2012-04-04 14 views
2

Ich habe eine Java-Desktop-App (mit einer Swing-GUI), die in einer LAN-Umgebung ausgeführt wird. Normalerweise betreibe ich es mit einer Reihe von Maschinen, einige spielen die Rolle von Servern, während andere als Clients fungieren.Welche Möglichkeiten gibt es, eine Netzwerk-Java-Desktop-App zu einer Web-App zu migrieren?

Jetzt möchte ich die gleiche App im Internet ausführen, wo sowohl der Server als auch die Clients auf einer Website gehostet werden, so dass die Besucher der Website in der Lage sind, als die Kunden zu laufen und miteinander zu interagieren .

Ich frage mich, welche Optionen für eine solche Migration verfügbar sind? Muss ich alles von Grund auf mit einem Java-basierten Web-Framework neu schreiben? Wenn ja, wie sollte ich mit dem GUI-Teil umgehen? Oder hostet ich die App einfach als Applet? (Irgendwie zögere ich, die Applet-Route herunterzufahren, da dies eine zusätzliche Einrichtung auf dem Computer eines einzelnen Besuchers erfordern kann, auf den ich keine Kontrolle habe und bei dem Kompatibilitätsprobleme bestehen können). Vielen Dank!

Antwort

1

Google Web Toolkit (GWT) könnte dafür nützlich sein, da Sie generischen Java-Code wiederverwenden und für die Ausführung im Browser zu JavaScript kompilieren können. In meiner App verwende ich Klassen in dem Client, den ich auf dem Server verwende. Die UI muss mit Web-Widgets neu erstellt werden, obwohl dafür WYSIWYG-Tools existieren.

Sie könnten auch Ihre rohen Sockets zu Websockets migrieren, wenn Sie eine bidirektionale Kommunikation benötigen.

+0

Das klingt vielversprechend. Zwei Hauptfragen: 1. Wie glatt/nützlich ist diese Übersetzung von Java-Code in Javascript-Code von GWT? Soweit ich weiß, ist Javascript immer noch weitgehend eine Front-End-Sprache für das Web, also wie gehe ich mit Back-End-Sachen wie Schreiben/Lesen in/aus der Datenbank um? 2. Was meinst du mit bidirektionaler Kommunikation? Meinst du die wechselseitige Kommunikation zwischen Clients und Servern? Danke vielmals! – skyork

+0

1. Sie schreiben alles in Java die ganze Zeit, GWT übersetzt es in js, wenn Sie bereitstellen, aber Sie müssen sich nicht darum kümmern. Back-End ist immer noch Java-Servlets, so dass Sie beliebige Java-Operationen (db usw.) ausführen können. 2. Normalerweise stellen Web-Apps Anfragen an Server und erhalten dann eine Antwort. Wenn Sie Daten in Ihre Web App streamen müssen, benötigen Sie Websockets. – Andrejs

1

Wenn Ihr Code dem mvc-Muster folgt, sollte es möglich sein, das Model-Zeug wiederzuverwenden. Meine Lieblings-Java-Web-Frameworks sind die aus der Quelle. Federmvc (sauberes Mvc-Design) oder Feder-Roo (mehr die Schienen-Stil mit Code-Generation usw.). Beide integrieren sich gut in das Dojo-Framework (ajax/gui stuff).

+0

Danke für den Vorschlag. Ich habe einige neuere Frameworks wie Play untersucht. Ein Hauptanliegen von mir ist die Konnektivität, die für eine solche Web-App volatiler sein kann als in einer kontrollierten Laborumgebung. Irgendwelche Vorschläge, wie Sie mit diesem Rahmenansatz umgehen können? Vielen Dank! – skyork

2

Eine Option wäre Vaadin zu verwenden. Die Programmierweise ist JavaSE Swing ziemlich ähnlich. Es ist ein GWT-Derivat auf der Client-Seite, aber die Logik ist wirklich auf dem Server JVM und das Framework kümmert sich um die Kommunikation (xhr oder Web-Sockets).

Verwandte Themen