# Welche Oberfläche empfehlt ihr mir?



## Verjigorm (5. Feb 2008)

Hallo,

ich bin grade an meiner Diplomarbeit dran und wir gehen grade die Anforderungen durch, was die Software am Ende leisten soll.
Es wird eine Webapplikation mit Java - Webservices.
Nun ist die Frage der grafischen Ausgabe, da ich einen "Untergrund" für selbstgezeichnete Objekte etc. brauche.

Es gäbe da 3 mögliche Kandidaten:

Java-Client in Swing
Vorteile:
 - Arbeite seit Jahren mit Swing, kaum Einarbeitungszeit erforderlich
 - Guter Zeichenhintergrund mit vordefinierten Zeichenobjekten
 - keine Browserabhängigkeit
Nachteile:
 - Client muss auf Rechner installiert werden, eventuell noch eine JRE


JSP/JSF:
Vorteile+Nachteile
Von JSP/JSF habe ich bisher noch garkeine Ahnung, habe nichtmal eine einzige JSP selbst geschrieben 
Vorteil wäre, dass sich das ganze ohne Installation realisieren lässt.
Ich weiss auch nciht wirklich, was mit JSP/JSF so alles möglich ist, so wie ich das verstehe, soll das GUI-Bauen wie bei Desktop-Programmen möglich sein. Man "zeichnest" eine HTML Oberfläche, Erstellst Actions, Actioncode, usw. - Der JSF-fähige Compiler erstellt daraus ein ziemlich heftiges Konglomerat aus HTML, Javascript und Servlets.
Außerdem muss man dann mindestens mal 2 große Browserhersteller einplanen, eventuell sogar mehr.


Als dritte Möglichkeit wären da noch Applets, aber von denen hört man ja immer mehr, dass sie am Aussterben sind.
Ist sowas für moderne Anwendungen noch zeitgemäß?
Außerdem hat man da wohl wieder das Problem mit den Browserversionen und Herstellern, damit das immer alles kerrekt angezeigt wird.

Gibts da sonst noch ne Alternative, die ich bisher vergessen habe?
Ich habe für das ganze noch 3-4 Monate Zeit, was würdet ihr mir denn da empfehlen?
Wäre über jeden Tipp/Anregung dankbar.

PS: Nur weil ich mit Swing am meisten gearbeitet habe, heisst das nicht, dass ich mich nicht in JSP/JSF einarbeiten würde. Jedoch ist halt immer die Frage, wielange ist die Einarbeitungszeit ....

mfg Erik


----------



## Gelöschtes Mitglied 5909 (5. Feb 2008)

es gibt noch webstart und aus deiner beschreibung werd ich nicht ganz schlau was du bauen willst, aber hört sich eher nach desktop app an als nach webapp


----------



## Wildcard (5. Feb 2008)

<--- Webstart Fan
Aber solange du uns nicht erklärst was die Anwendung machen soll, kann man nicht viel dazu sagen.
Schließlich besteht ein gewisser unterschied zwischen einer serverseitigen- und einer clientseitigen Anwendung.


----------



## byte (5. Feb 2008)

Es gibt noch eine Alternative, die für Dich u.U. attraktiv sein könnte: ein AJAX-Framework wie GWT. Vorteil: Du kannst ne Webanwendung entwickeln ohne Dich dabei in JSP/JSF und Co. einarbeiten zu müssen. Natürlich musst Du Dich erstmal in GWT einarbeiten, aber die Lernkurve ist da viel steiler, wenn man Swing-Erfahrungen hat, als wenn man ohne Vorkenntnisse JSP/JSF lernt. Die GUI-API von GWT ist der von Swing sehr ähnlich, so dass man sich schnell zurecht findet. Man programmiert prinzipiell nur Java-Code (+ ein wenig CSS) und nicht wie bei JSP/JSF eine Mischung aus Java, XML, CSS und JavaScript.
Aber ohne zu wissen, was Du wirklich umsetzen willst, kann man da schlecht was empfehlen.


----------



## Verjigorm (5. Feb 2008)

Naja Thema ist:

Konzeption und Realisierung eines internetbasierten Streckenverwaltungstools (SVT) basierend auf der Anwendung SIS (Streckeninformationssystem) und BauSysControl.


Beschreibung:
Die Ingenieurbauwerke entlang einer Eisenbahnstrecke müssen in regelmäßigen Abständen inspiziert werden. Eventuelle Schäden werden aufgenommen und nach einer Kostenbetrachtung werden Maßnahmen zur Instandsetzung eingeleitet.
Die modulare Anwendung BausysControl verwaltet die Stammdaten, Schäden und Instandhaltungsmaßnahmen der Ingenieurbauwerke (Tunnel, Brücken, Erdbauwerke) der Deutschen Bahn AG und der Tunnelbauwerke der Schweizer Bundesbahn SBB.

Die Anwendung SIS ist ein Informationssystem um Daten streckenbezogen darzustellen.
Diese werden in Bändern organisiert, die verschiedene Perspektive auf eine Strecke und ihre Bauwerke darstellen. (Geometrische Daten, Instandhaltungskosten, Organisationsspezifische Daten etc)
Die Anwendung SVT soll Aspekte beider Anwendung in einer wesentlich verschlankten Version abbilden und hat als Zielgruppe Private Bahnbetreiber im Focus.
Ziel ist ein Prototyp der als Basis zur Präsentation und eventuellen Weiterentwicklung dienen soll.
Zur Entwicklung des Prototypen ist ein Konzept zu erstellen und der Prototyp ist zu realisieren.


Im Endeffekt heisst das:
- Irgendwie zum Server connecten (username/passwort)
- Daten aus Datenbank auslesen
- Eventuell erst  Be- oder Verarbeiten
- Anzeigen wie im Beispielbild
- Eventuell verändern
- Wieder abspeichern
- ...

mal ein Beispielbild von der alten Anwendung


----------



## HeRaider (5. Feb 2008)

Also wenn ich mir das so anschaue dann wage ich mal zu bezweifeln, dass das im Browser so gut laufen könnte. 
Ich kann mir solche Anwendungen immer besser als Applikation vorstellen. 
Daher würde ich eher auf Swing (oder vielleicht auch SWT wenns in Frage kommt) setzen. 
Ich finde sowieso, dass normale Applikationen mit Java viel zu selten sind. Man kann mit Swing ja durchaus sehr ansprechende GUIs bauen.

Übrigens zu dem Nachteil den du da aufgeführt hast:
Stellt das überhaupt ein Problem dar? (Dazu hast ja nix gesagt) Wenn nicht dann würde ich einfach sagen setz auf Swing wenn du dich gut damit auskennst.


----------



## Verjigorm (5. Feb 2008)

Nein kein wirklicher Nachteil, mir fiel sonst nix anderes ein und ich wollte doch nicht nur Vorteile von Swing auflisten


----------



## Verjigorm (6. Feb 2008)

Es kam gestern noch eine Idee auf:

Die Grafiken per Java erstellen, auf JSP einbinden und mit HotSpots zu arbeiten. (natürlich vollautomatisch)
Wie wäre da denn der Aufwand für?


----------



## homer65 (6. Feb 2008)

@byto
Wie kann man sich den am einfachsten in GWT einarbeiten? Gibt es dazu brauchbare Dokumentation?


----------



## byte (6. Feb 2008)

Der Developers Guide auf der offiziellen Seite ist ziemlich gut. Einfach mal die ersten drei Kapitel durchlesen (Fundamentals, User Interfaces, Remote Procedure Calls), das ist schon genug Basiswissen für die erste GWT-Anwendung. Alles weitere klärt sich dann eigentlich beim Arbeiten und mit Hilfe der GWT-API und von GWT Groups.

Empfehlenswert sind auch noch folgende Seiten:
- Sehr wertvolle Tipps: http://www.javaworld.com/javaworld/jw-04-2007/jw-04-gwt.html?page=1
- GWT-Beispiel: http://www.javaworld.com/javaworld/jw-12-2006/jw-1213-gwt.html
- Ein GWT-Wiki: http://google.wikia.com/wiki/Google_Web_Toolkit
- Übersicht verschiedener GWT-Themen: http://www.ociweb.com/mark/programming/GWT.html


----------



## NTB (7. Feb 2008)

Mal ne ganz andere Frage: Du hast noch drei bis vier Monate Zeit für die gesamte Arbeit oder für das Programmieren? Wenn Du in der Zeit auch noch schreiben musst, hast Du gar nicht mehr genug Zeit, Dich noch woanders einzuarbeiten.

Wie ist denn Dein Anspruch? Willst Du die Arbeit einfach nur fertig haben? Dann würde ich das nehmen, was am schnellsten für Dich umzusetzen ist. Wenn Du eine besonders gute Note haben willst oder es Dir auch wichtig ist, dass weiterverwendet wird, was Du da baust, dann sind die Gedanken sehr gut.

Das bringt jetzt nicht direkt weiter, ist aber vielleicht ein Denkanstoss


----------



## Verjigorm (7. Feb 2008)

insgesamt hab ich noch knapp 5 Monate, bis zum 30.Juni

Die reine Programmierzeit liegt bei geplanten 3 bis 3 1/2 Monate (je nach noch benötigter Einarbeitungszeit)
Der Rest ist für Planung bzw Schreiben der eigentlichen Arbeit vorgesehen. Wobei die Vorplanungen schon relativ weit fortgeschritten sind. Sobald ich alle nötigen Komponenten zusammengereimt habe, kommen dann Klassendiagramme etc und dann sollte es Ende Februar/Anfang März losgehen.


----------



## NTB (7. Feb 2008)

Ich kenne Deine Arbeitsweise nicht, weiß also nicht, ob Du eher Sachen vor Dir her schiebst oder sehr fleissig bist. Aber Du kannst rechnen, dass Du pro Arbeitstag etwa eine Seite schreibst. Bei einer 60 Seite DA brauchst Du bei fleissigem Arbeiten also drei Monate zum reinen Schreiben. 

An Deiner Stelle würde ich daher versuchen, den Programmieraufwand gering zu halten. Daher würde ich mich für das Entscheiden, womit ich sofort loslegen kann, sofern das zur Umgebung passt.


----------



## Verjigorm (7. Feb 2008)

Die ersten 30 Seiten der DA stehen bereits und wurden als gut befunden, grade heute zurückbekommen.

Zudem habe ich noch einen Softwareentwickler an der Seite, der mir etwas Arbeit drumherum abnimmt (Server, Datenbank, usw.).

Die wirkliche Softwareanforderung die erstellt wurde, wird auf 8 Wochen geschätzt, die restlichen 4-6Wochen wurden bereits als Puffer einberechnet.
Das ganze soll ja auch nur ein Prototyp sein, der 3 von derzeit 14 geplanten Aspekten wiederspiegelt. das ganze ist auf etwa 1,5Jahre ausgelegt, wobei der Prototyp klären soll, ob das produkt letzendlich fertiggestellt wird)


----------



## NTB (7. Feb 2008)

Okok... dann sieht das natürlich wieder ganz anders aus. Das ging aus den bisherigen Informationen nicht hervor, daher wollte ich das eigentlich nur nebenbei zu bedenken geben, weil das natürlich auch mit in die Entscheidung einfliessen sollte. So hast Du natürlich wirklich freie Wahl.

Also als Applet würd ich das definitiv nicht machen. Eine schicke Swing Anwendung kann man daraus durchaus machen. GWT wäre sehr hip, wenn sich das damit lösen lässt, ein sehr schicke Sache.


----------



## Verjigorm (7. Feb 2008)

Ich werds wohl bei Swing belassen, je nachdem wie mein Chef das entscheidet, er hat das letzte Wort, hab ihm ne Zusammenfassung der Vor- und Nachteile gegeben ...

Wo wir grad bei Oberfläche sind:

Auf welchem Hintergrund zeichnet man denn am besten? JPanel?
(siehe Scrennshot oben)


----------



## VuuRWerK (7. Feb 2008)

Erstelle Dir am besten ein eigenes Panel welches natürlich von JPanel ableitet und überschreibe dann die paintComponent()-Methode und zeichne in der paintComponent(), denke damit solltest Du am besten kommen.

Da Du, laut Deinem Screenshot, mehrere "Abschnitte" zeichnen willst wäre es vllt. sogar angebracht diese auch aus mehreren solcher PaintPanels zusammen zubauen und so am Ende jedes Panel extra zeichnen kannst, ich denke dabei jetzt schon an Sachen wie Performance und solchem Schnick Schnack 

Gut Schuß
VuuRWerK 

[edit]Im Zuge der zeitgemäßen Anpassung wurde paint() mit paintComponent() ersetzt. Vielen Dank dazu an byto für den aufschlußreichen Hinweis![/edit]


----------



## byte (7. Feb 2008)

VuuRWerK hat gesagt.:
			
		

> Erstelle Dir am besten ein eigenes Panel welches natürlich von JPanel ableitet und überschreibe dann die paint()-Methode und zeichne in der paint(), denke damit solltest Du am besten kommen.


Prima Beschreibung wie man es nicht machen sollte.

Wie es richtig geht, steht hier: http://java.sun.com/products/jfc/tsc/articles/painting/#callbacks


----------



## VuuRWerK (7. Feb 2008)

Weist Du wie lang es her ist als ich das letzte mal selber ein "bemalbares" Panel erstellt habe? Daher auch meine noch veraltete Beschreibung. Dennoch vielen Dank für den Link, das werde ich mir selber auch absofort zu Herzen nehmen und auch so umsetzen.

Also einfach aus meiner, bisher alten, Beschreibung paint() mit paintComponent() ersetzen und alle sind zufrieden 

Man lernt nie aus =)

Gut Schuß
VuuRWerK


----------



## zilti (7. Feb 2008)

Noch was zu Applets: Gerade weil sie nicht mehr so verbreitet sind, sollte man sie wieder mehr einsetzen. Die Dinger sind nämlich wirklich praktisch.


----------

