Ist Java die richtige Programmiersprache dafür?

petterapamm

Aktives Mitglied
Hallo,

Ich habe vor ein Art Datenbank-Programm zu schreiben. Über das Programm sollen Fotografien mit Tags versehen werden können (bzw es reichen Referenzen in den die Tags gespeichert sind die auf ein bestimmtes Foto verweisen), in einem Ordner abgelegt und angezeigt werden. Zudem soll es natürlcih eine Suchfunktion geben mit der man in der Datenbank dann über Tags nach Bildern suchen kann.
Die Datenbank soll bis zu 10 000 Bilder beinhalten können und es sollen mehrere Benutzer zugleich Bilder reinladen bzw suchen können. Die Daten liegen auf einem Hausnetzt internen Speicher, wahrscheinlich ein FTP. Ich könnte das noch um einiges ausführlicher beschreiben doch darum geht es nicht. Meine Frage ist ob sich Java als Programmiersprache eignet oder wenn nein welche Programmiersprache/n würdet ihr für so eine Art Projekt empfehlen und warum eignet sich Java nicht.

Danke für die Antworten
MfG
petterapamm
 
Mit Java kann man (genauso wie mit jeder anderen Turing-vollständigen Programmiersprache theoretisch auch) so ein Programm schreiben. Verwende die Programmiersprache die DU am besten beherrschst und die DIR am besten gefällt.
 
Meine Frage ist ob sich Java als Programmiersprache eignet
Dein Vorhaben klingt so nach "HelloWorld" für Enterprise-Anwendungen. 🙂 Prinzipiell ist Java dazu perfekt geeignet und Dein Vorhaben liesse sich sogar äußerst elegant realisieren.
  • Bezüglich Datenbank würde an hier wohl keine Datenbank schreiben sondern eine Fertige dahernehmen, sei es was "Etabliertes" wie MySQL/PostgreSQL/Oracle oder eine Java Spezialität wie HSQLDB oder Apache Derby/JavaDB.
  • Das Daten-Model bildet man mitttels O/R Mapper wie JPA/Hibernate ab.
  • Die Eingabe- und Oberfläche realisiert man mit einem x-beliebigen View-Framework wie JSF/ Facelets oder Apache Wicket.
  • Laufen kann das Ganze in einem Servlet-Container wie Apache Tomact oder Jetty. Oder in einem "fetten" Application Server wie JBoss.
Es gibt auch Frameworks wie Spring oder JBoss Seam, die die Entwickung noch beschleunigen können. Ein erfahrener Java EE Entwickler kann das in zwei Tagen runterkloppen. Für Einsteiger ist die Lernkurve leider jedoch sehr steil. Da dein Datenmodell aber sehr sehr schlank ist, wäre es vielleicht ein wenig mit Kanonen auf Spatzen geschossen, es sei denn Du willst das als Einstieg für eine "JEE-Programmiererkarriere" verwenden.

Als Alternative bietet sich eine Apache/PHP/MySQL Lösung an; damit kommst Du vielleicht sogar am schnellsten zu Resultaten und es ist bedeutend weniger zu lernen.

P. s.: 10000 Bilder sind doch noch gar nichts... 😉
 
Zuletzt bearbeitet:
Das klingt sehr interessant. Danke für die ausführliche Antwort.
Ich möchte möglich viel lernen, hauptsächlich in Java.
Also werde ich deinen "Alternative" nicht in Betracht ziehen.

Hast du zufällig ein paar Links zu Seiten wo ich mich über die einzeln Sachen näher informieren kann bzw. lernen kann oder zu Tutorials?

Lässt sich eine solche Oberfläche auch mit JFC/Swing Elementen gestallten?

Danke nochmal
MfG
petterapamm
 
Zuletzt bearbeitet:
Ich habe nochmal eine allgemeine Frage:
Man kann doch eigentlich auch das ganze Programm nur mit einfacheren Java-Funktionen wie Arraylists oder In- und Outputstreams schreiben. Dies klingt zwar nicht nach einer eleganten Lösung, aber trotzdem würde ich gerne wissen wo genau dabei der Nachteil liegt.

Zudem würde ich gerne wissen ob man die Bilder mit in der JavaDB speicheren kann oder dort nur Referenzen auf die Bilder speichert.

MfG petterapamm
 
Ich würde die bilder als blob oder binary mit in die db packen. Den rest würde ich als Swing anwendung umsetzen(die dannn zb auf dem netzlaufwerk leigt so das jeder drauf zugreifen kann)
Bei inutput streams ist der anchteild as du selber sicherstellen msust das keine inkostenzen (zwei benutzer verändern gelichzeitig selbe datei) auftreten können.
 
Also gut, das stimmt, dies ist ein Nachteil, aber auch den kann man eigentlich aus dem Weg räumen. Was mich mehr interessiert, ist was im allgemeinen überhaupt die Vorteile von solchen Frameworks sind wie kay73 sie genannt hat. Warum sollte ich solche "vorprogrammierten" Datenbanken nutzen und nicht alles selber mit z.B. Arraylists schreiben?
Und noch etwas: Swing Elemente sind doch einzelne java-interne Elemente zur Erstellung eines GUIs, oder? Aber was ist eine Swing-Anwendung?

MfG petterapamm
 
Du solltest dir auch Gedanken über ein Backup Konzept machen.
Wäre Schade wenn alle Bilder wegen eines Festplattendefekts plötzlich weg wären. 😀
Nicht zu unterschätzen ist dabei die anfallende Datenmenge. Wenn du 10000 Bilder a sagen wir mal 5MB hast, sind das schon 50GB. Bewahrst du auch nur 10 Backups auf, so hast du schnell 500GB Backup Daten.
 
@homer65 schon mal was vom Backupstrategien gehört? bsp. Inkrementelles Backup?

Vielleicht sollte man sich genrell erstmal entscheiden, ob es eine Desktopanwendung werden soll (Swing) oder eine Browseranwendung mit einem Applicationsserver
 
Allerdings weiß ich nicht, ob sich die Ideen, die kay47 vorgeschlagen hat, auch darauf beziehen.
Doch tun sie eigentlich schon, denn Swing ist auch nur eine View-technologie. Wenn Ihr Euch geschickt anstellt, bzw. die Komponenten ordentlich entwerft, trennt Ihr die Darstellung vom Modell. Dann könnt Ihr nachher ein Webinterface hintendran bauen, wenn es webgestützt werden soll.
 
Wie würdet ihr/du dafür sorgen das es nicht zu Inkostenzen kommt? JavaDB habe ich glaub ich jetzt soweit verstanden. Allerdings wird mir nicht klar wo für man Hibernat braucht, hier: Using Java DB in Desktop Applications wird es nicht benutzt oder?

Klar habe ich vor Model und View zu trennen, mit einem Controller als Schnittstelle dazwischen.

Vielen vielen Dank für eure ganze Hilfe, ihr bringt mich hier sehr viel weiter mit meinem Überlegen wie ich das angehen soll^^

petter
 
Der TO wird hier mit allen möglichen Frameworks zugedröhnt, von denen er nur 1% versteht.

Bevor du dir sorgen über inkonsitenzen machst, solltest du überhaupt was haben, was in ieiner weise das tut, was du möchtest.

Da ich von dem ersten Posting erstmal darauf schließe, dass du noch nie Java programmiert hast, wird das ehh nur so ein frikel Projekt.

..

Ich würde die Bilder nicht in einer DB speichern, sondern iwo auf einer Platte.

Du benötigst für eine Multi User Umgebung einen Server, der die Bilder dann verwaltet.

Ich schlage vor du nimmst dir Apache.. Ein bissel PHP und dann sparst du dir das in Java zu machen.

Um es in Java zu machen fehlen dir sämtliche Basics
 
Nein, ich habe schon Erfahrung in Java, programmiertechnisch NUR in Java. Daher würde ich das ganze gerne in Java verwirklichen.

Ich hatte das Projekt angegangen nur mit Arraylists und Iteratoren und In und Outputstream doch dann dachte ich mir das das doch irgendwie besser elegante gehen muss. Daher habe ich begonnen zu recherchieren und bin hier über jede Idee erfreut.

Auf dem Gebiet, DB etc, habe ich in der Tat keine Erfahrung deswegen stelle ich wahrscheinlich eher Fragen die ein kompletter Anfänger stellen würde.
 
Um noch mal zur Kerndiskussion zurückzukehren:

Wie würdet ihr/du dafür sorgen das es nicht zu Inkostenzen kommt? JavaDB habe ich glaub ich jetzt soweit verstanden. Allerdings wird mir nicht klar wo für man Hibernat braucht, hier: Using Java DB in Desktop Applications wird es nicht benutzt oder?

Klar habe ich vor Model und View zu trennen, mit einem Controller als Schnittstelle dazwischen.

Vielen vielen Dank für eure ganze Hilfe, ihr bringt mich hier sehr viel weiter mit meinem Überlegen wie ich das angehen soll^^

Also soweit komme ich mit JavaDB und SQL klar. Wozu benötige ich jetzt Hibernate?
 
Hibernate brauchst du nicht unbedingt, es ermöglicht bspw. den einfachen Wechsel von einem Datenbanksystem auf ein anderes.

Es kann auch ein Performancegewinn sein, dass hängt aber immer von der jeweiligen Anwendung ab.
 
Also wie ich raus gehört habe, ist das deine erste Datenbank Anwendung. Da würde ich auf jeden Fall noch ohne Hibernate arbeiten. Hibernate soll zwar die Arbeit mit jdbc vereinfachen, da das Stanard Buch aber über 800 Seiten hat bezweiflich ich ob es für Anfänger hilfreich ist ;-)

Mal 1-2 Projekte rein mit jdbc und dann kann man sich gerne mal Hibernate zu Gemüte führen wenn man weiß was unter der Haube so geschiet...
 
Hi,

fang doch einfach erstmal folgendermaßen an:

  1. MySQL-DB mit Tabellen und Feldern erstellen (z.B. mit Hilfe von xampp und phpmyadmin)
  2. Mit Hilfe von Java eine DB-Verbindung herstellen (Gibts massig Tuts im inet)
  3. Ein bisschen mit SQL auf der Datenbak austoben
  4. GUI-erstellen (Beispielsweise Swing oder was auch immer du möchtest)
  5. Logik programmieren
  6. ...

Gruß
 
Okay, vielen Dank für die schnellen und klaren Antworten, dann werde ich Hibernate erstmal nicht benutzen!

Und noch eine Frage:
Mir steht keine Serverhardware zur Verfügung, auf dem die Datenbank läuft. Trotzdem wird mit mehreren Benutzern gleichzeitig auf die Datenbank zugegriffen wodurch Inkonsistenzen vorkommen können. Muss man nun einen Applicationserver schreiben oder gibt es auch einen Weg diese zu verhindern obwohl man nur mit Desktopanwendungen auf die DB zugreift?
(Denn mit Applicationservern hab ich auch noch nie gearbeitet; dies müsste ich auch erst noch lernen und das ganze erscheint mir etwas sehr komplex.)

Wenn nein, kennt jemand ein Tutorial in dem Applicationserver einfach gehalten und verständlich erklärt werden? Englisch ist auf jeden Fall auch ok.
 
was meinst du mit Inkonsistenzen? Das A etwas lädt, B etwas lädt, A speichert, B speichert und B die änderungen von A überschrieben hat?
Ich sehe nicht wie dir dein App Server das verhindern kann. Das kannst du auch mit einer Desktop Anwendung verhindern indem du beim speichern überprüft ob die letzen Änderung deiner geladenen Entspricht und bei bedarf dann eine warunung ausgeben...


Mir steht keine Serverhardware zur Verfügung, auf dem die Datenbank läuft.
naja irgend einen Rechner musst du aber benutzen um die Datenbank laufen zu lassen... muss ja kein "High End Server" sein.

Wenn nein, kennt jemand ein Tutorial in dem Applicationserver einfach gehalten und verständlich erklärt werden? Englisch ist auf jeden Fall auch ok.
neh sorry... thats a serious business, da kommst ohne englisch nicht weit....
 
Nein, man braucht keinen Server.

Wie wäre es, wenn man zunächst googelt? - Bestimmt gibt es mehr Leute, die mit Multi User Systemen arbeiten 😉
 
Ich habe gerade bemerkt, dass es sein könnte das ich zumindest um einen Applicationserver nicht herumkommen werde. Kann einer ein Stichwort nennen was ich googlen kann oder einen Link zu einem Tutorial schicken wo ich mich informieren kann. Ich wollte jetzt aber nicht die gesamte Bandbreite an Möglichkeiten eines Applicationservers ausschöpfen, es wäre also nett, wenn jemand eine Idee hat, wo ich Informationen bekommen kann, die sich eher vielleich etwas spezifischer auf mein Datenbankprojekt beziehen.
Das Problem was ich nämlich entdeckt habe ist folgendes:
Liegen die Bilder auf einer Festplatte irgendwo im Netzwerk, muss der Benutzer mit seinem PC wenn er eine Vorschau anzeigen will, das gesamte Bild runterladen und das kann bei einer Vorschau von 100 Bildern einige Zeit dauern. Die Bilder müssten auf der Festplatte in dem Moment auf die Größe verkleinert werden wie sie in der Vorschau gebraucht werden, werden - wenn sie dann nur noch ein paar kilobyte groß sind, sollte die Datenmenge übertragbar sein.
Und wenn man dann schon einen Server programmieren muss, kann er sich auch gleich noch um die Datenverwaltung kümmern.
Danke für die Hilfe
petterapamm
 
okay also ich hab es so gemacht mit meiner db
-MySql
-xampp
-PhpMyAdmin

über die config von MySql kannst du einstellen ob die db von mehreren usern verwendet wird und wie sie diese erreichen können!

musst ma im netz genaueres drüber lesen
 

Zurück
Oben