# "Katalog"-Anwendung in Java eine gute Idee?



## Survivor (18. Aug 2011)

Hallo,

ich habe schon von der Schule aus einiges von Java gesehen. Nun möchte ich auch einmal etwas größeres selbst schreiben, und zwar eine Anwendung für Rezepte. Das Ganze soll dann eine Oberfläche samt Datenbank haben, damit die Kochrezepte gesucht und schön dargestellt werden können.

Meine Fragen gehen also in diese Richtung:
1. Womit lässt sich eine schöne Oberfläche zeichnen, die auch programmiertechnisch nicht ZU schwierig umsetzbar ist? Mir fallen nur Swing oder AWT ein, wobei die Anwendungen da vom optischen her nicht sonderlich viel hermachen.

2. Ich habe ca. 25.000 Rezepte einzutragen. Jedes Rezept besteht aus mehreren Strings/Integern + 1-2 Bildern. Muss ich zwangsweise auf eine externe Datenbank zugreifen oder gibt's da auch eine vernünftige Lösung, die der Benutzer lokal einsetzen kann?


----------



## Volvagia (18. Aug 2011)

1) Swing mit Look and Feel? Geschmackssache.
2) Schau dir mal emblemed Databases an, z. B. h2.


----------



## Survivor (18. Aug 2011)

h2 ist also ein vollständig lokales System?


----------



## Volvagia (18. Aug 2011)

Kann im Servermodus gestartet werden, muss aber nicht.
Schau mal in die FAQ-Entwüfe, da gibt es einen kurzen Thread darüber.


----------



## robertpic71 (18. Aug 2011)

H2 ist für dieses Vorhaben sicher keine schlechte Wahl. Der Katalog öffnet die Datenbank mit "FILE:/c:/Dir/Dbname" (ConnectionString) und startet zusätzlich den TCP-Server. Dann kann man die Datenbank auch gleichzeitig von außen ansehen/prüfen.

Ich habe eine ähnliche Anwendung laufen (allerdings als Weblösung). Dabei werden ca. 15.000 Nodes bzw. die dazugehörigen html-Seiten und in meinem Fall auch die 60.000 Einzelartikel  in der H2 Datenbank gespeichert (ca. 400 MB). Die Seiten selber werden in den Feldtyp CLOB (Character Large Object) gespeichert. Die Bilder habe ich im Filesystem liegen. Theoretisch könnte man diese auch in der Datebank (BLOB) speichern - da sehe (spez. bei der Webanwendung) aber keinen Vorteil.

Die Volltextsuche habe ich noch über eine eigene RAM-Instanz gelöst. Mittlerweile bietet H2 auch eine Volltextsuche an - eine eigene - oder eine mit Lucene.

Hier noch mein Katalog.


----------



## faetzminator (18. Aug 2011)

Als GUI kannst du natürlich auch SWT verwenden. Oder du machst es webbasiert mit beliebigen Frameworks...


----------



## Survivor (18. Aug 2011)

Was ist denn die "bessere" Oberfläche? Ich möchte eine schöne (lokale) Anwendung haben, die nicht alzuschwer zu designen ist.

@ll: Danke für die bisherigen Antworten. Werde h2 als Emblemed Database einsetzen!


----------



## freez (18. Aug 2011)

Naja, wenn Java und lokal, dann bleibt swt, swing und awt. Wobei ich dir nur zu den ersten beiden raten würde, da sie zeitgenössischer aussehen (bei Swing hast du zusätzlich die Möglichkeit verschiedene Look And Feels anzubieten).

Zu einer Datenbank würde ich dir auf alle Fälle raten, da die in der Regel durch APIs gut zu "bedienen" sind. Wenn du selbst entscheiden möchtest, wie die Daten gespeichert werden, dann hast du auf alle Fälle viele Zeilen Code mehr und hast wahrscheinlich nicht annähernd die Performance einer richtigen DB. 

Da es eine lokale Anwendung ist, könnte sogar db4o sehr gute Dienste leisten  und ist vollständig und einfach unter Java anzusprechen (legt die Daten in ein File) ... sie speichert einfach die Objekte (also dein Rezept)


----------



## Survivor (18. Aug 2011)

@freez: h2 ist doch eine Datenbank oder wie meinst du das? Naja, die Daten sollen halt ein einziges Mal gespeichert und dann halt abgerufen werden. Editieren soll ein Benutzer nicht können.


----------



## Volvagia (18. Aug 2011)

Ja, darum geht es ja. 
Ist ja kein Problem. Nur die Möglichkeit zur Edition solltest du schon anbieten, irgendwann wird sich ja etwas ändern.


----------



## faetzminator (18. Aug 2011)

freez hat gesagt.:


> Naja, wenn Java und lokal, dann bleibt swt, swing und awt. Wobei ich dir nur zu den ersten beiden raten würde, da sie zeitgenössischer aussehen


Swing setzt auf AWT auf und ist im Gegensatz zu SWT nicht nativ. Also sollte IMHO gar kein Plain AWT verwendet werden.


freez hat gesagt.:


> (bei Swing hast du zusätzlich die Möglichkeit verschiedene Look And Feels anzubieten).


Im Gegensatz zu SWT, welches native ist und darum so aussieht wie es halt in deinem System so aussieht...


----------



## Kevin94 (21. Aug 2011)

Ich persönlich bevorzuge Swing weil es weiterverbreitet ist und im JDK enthalten, auserdem sieht das neue Nimbus LaF echt geil aus, aber das ist geschmacksache.
Wenn dir GUI Programmierung mit Java zu kompliziert ist und es nicht unbedingt mit Java sein muss kann ich auch eine Browser GUI empfehlen: z.B. lokal ausgeführtes PHP auf einem XAMPP.
In XAMPP ist sowohl der Apache Server als auch PHP/Perl und MYSQL enthalten. Und alles vollkommen lokal und trotzdem mit der Möglichkeit es jederzeit ohne neuen Quellcode im Web zur verfügung stellen zu können.


----------



## theuserbl (22. Aug 2011)

Survivor hat gesagt.:


> 1. Womit lässt sich eine schöne Oberfläche zeichnen, die auch programmiertechnisch nicht ZU schwierig umsetzbar ist? Mir fallen nur Swing oder AWT ein, wobei die Anwendungen da vom optischen her nicht sonderlich viel hermachen.



Das sind auch die beiden, die ich empfehlen würde.

- Swt das viele gut finden, ist eine eigene Plattformabhängige Bibliothek. D.h. wenn Du das Programm für Linux, Windows und MacOSX zur Verrfügung stellen willst, mußt Du für jedes Betriebsystem ein Paket "schnüren" in dem das entsprechende Swt-Binary fürs System auch zu finden ist.

- Andere in Java geschriebene Bibliotheken sind nicht so umfangreich und leistungsstark wie Swing. Außerdem gibt es dazu dann nicht so viel Informationen, Beispiele und Hilfe im Internet.

Somit bleiben nur AWT und das dadrauf aufsetzende Swing.
Wenn die Anwendung sehr schnell sein soll und Du nur ein Textfeld und ein Listenfeld brauchst, dann könnte auch AWT reichen.
Ansonsten ist Swing zu empfehlen. Vor allem, wenn Du Dir im Nachhinein noch überlegen solltest GUI-Features einsetzen zu wollen, die AWT nicht hat.

Grüße
theuserbl


----------

