Anwendungserweitung OnlineModus

pl4gu33

Top Contributor
Hallo,

ich habe vor eine größere Anwendung, welche mit deiner db4o Datenbank läuft als Projekt online fähig zu machen .... d.h. ,dass man online neue Datensätze abspeichern kann(über GUI) oder die Anwendung an sich online nutzen kann. Diese Anwendung soll zu Anfang erstmal teilweise oder wenns möglich ist ganz online geschaltet werden. Nun würde ich gerne ein paar Informationen/ Links haben in welche Richtung ich mich einlesen/informieren muss bzw. was ich evtl. an Hardware brauche bzw. Bedingungen um dieses Vorhaben zu realisieren.

Ich hoffe ihr könnt mir ein paar hilfreiche Tips geben, danke für eure Zeit :)
und ich hoffe, dass dies das richtige Forum ist :)
 

BlackViruZ

Aktives Mitglied
Definier doch mal bitte Anwendung ein bisschen weiter (was für technologien du da benutzt.. ob du da was zentrales mit machst etc) und "Online Modus".
Gehe ich recht in der Annahme dass du eine Normale JavaSE Anwendung ohne weitere Frameworks außerhalb der Plattform hast - mit einer Swing GUI ?

Und was meinst du genau mit "Online Modus" - willst du die Anwendung als Client direkt auf die Datenbank laufen lassen, möchtest du die gesamte Anwendung z.b. in JavaEE konvertieren und dann als pure Webapp im Browser laufen lassen.. willst du das ganze als Applet aus dem Browser starten lassen - was genau hast du vor?
 

pl4gu33

Top Contributor
okay,... also die Anwendung hat eine db4o Datenbank in der die Daten gespeichert sind wie schon gesagt. Es ist eine ganz normale JAVA Anwendung(.jar) mit Swing GUI ohne Framework bisher evtl. kommt JMF dazu, dass kann ich aber bisher noch nicht vorhersagen.

Die Anwendung soll dann online erreichbar sein,... d.h. dass man online diese Anwendung benutzen kann und dort auch online Daten in der Datenbank speichern kann zum Beispiel aktuelle Spielstände etc. ... das "WIE" also wie man auf die Anwendung online zugreift ist mir freigestellt, d.h. da darf ich mir aussuchen welchen Weg ich gehen möchte, daher würde ich gerne ein paar Wege finden durch Literatur/Seiten etc. dass ich mich da etwas einlesen kann, sodass ich das WIE besser definieren kann. Weiterhin ist die Frage welche Hardware/Software man als Hintergrund braucht oder ob man das mit nem ganz normalen Webspace hinbekommt.

Ich hoffe es ist etwas klarer geworden, worauf ich hinaus will, wenn nicht gerne einfach nochmal fragen :)
 

BlackViruZ

Aktives Mitglied
Also generell gibt es drei (bzw eigentlich sind es nur 2..) möglichkeiten die Anwendung "online" zu bringen.
Möglichkeit 1: du baust daraus eine WebAnwendung, der User braucht nur einen browser um drauf zu zu greifen.

Dafür würdest du WebSpace mit einem normalen Webserver (apache z.b.), einen Java Application server (Apache Tomcat, JBoss, Oracle Glassfish) benötigen. Je nachdem mit welchen Technologien du die Webanwendung Schreibst sind davon einige Besser geeignet, da du z.B. Sie mit den Richtigen Service Providern im Bundle bekommst. Ich persönlich präferiere derzeit noch JBoss.
JavaEE ist allerdings ein sehr großes Feld um sich von 0 auf 100 darin einzuarbeiten. Insbesondere, da es sehr viele Frameworks die rege genutzt werden in dem Gebiet gibt. (Seit JavaEE 6 gibt es allerding ein paar neue Sachen im Plattform Standard, so dass es für Anfänger da meiner Meinung nach zu weniger Verwirrung kommt (CDI...))
Diese Webserver bekommst du meistens nicht von Freehostern - die beschränken sich meistens auf einen Apache Tomcat nur mit den nötigen Service Providern für PHP. Zumindest meiner erfahrung nach - da lasse ich mich gerne belehren :)

Naja JavaEE ist nichts für schwache nerven, wenn du es trotzdem versuchen willst:
Your First Cup Introduction to JavaEE6 von Oracle
JavaEE6 Toturial von Orace
Es gibt noch einige gute Bücher darüber, aber da kann ich nicht viel weiterhelfen - vllt weiß da jmd anders eins zur empfehlung :D.

Außerdem könntest du eine Richclient Application schreiben in dem du eine Normale JavaSE Anwendung schreibst du auf deine Datenbank zugreift.
Trail: Custom Networking (The Java™ Tutorials)
Ich kenne db4o nicht.. laut wikipedia kann man sie nicht fern administrieren, weswegen du vermutlich zumindest webspace mit ssh zugriff (oder ähnlich) brauchen würdest. Der ist generell Kostenpflichtig (falls du mit dem gedanken gespielt hast das auf FreeWebSpace zu machen - ich denke das kann man knicken ^^)

Warscheinlich kannst du mit der API von db4o auch ohne selbst netzwerkcode schreiben zu müssen mit der Datenbank kommunizieren dazu kann ich aber nix sagen ^^.

So das waren 2 möglichkeiten - warum habe ich 3 gesagt? du kannst auch ein applett schreiben als Rich Client - das läuft aber im auf das gleiche wie die JavaSE Rich Client App hinaus.

Kannst du mal in etwa beschreiben was du da schreiben möchtest? vllt kann ich dir dann noch ne empfehlung geben ;-)
Du hast was mit spielständen erwähnt.. willst du spielstände etc von dem lokalen pc online sichern und zurücksichern können? (klang irgendwie danach).
Es sei noch gesagt, dass du ab dem Punkt, wo du beispielsweise zugriff auf das Dateisystem des clients brauchst es der Praktikablere weg ist einen RichClient zu schreiben.
 

BlackViruZ

Aktives Mitglied
Ok ich hab grad nochmal nen stück weitergelesen
Stimmt es, dass db4o eine ausschließlich file basierte Datenbank ist?

Weil ohne Webservice -> kein "onlinemodus".. du brauchst ja etwas, dass die anfragen entgegen nimmt etc, und ich glaube nicht, dass du jedem lese & schreib rechte auf eine datei geben willst ;-)
 
J

JohannisderKaeufer

Gast
Die Frage ist was du unter online verstehst und wie deine Anwendung aussieht.

Soll der Nutzer am Schluß eine Internetseite vor sich haben oder soll er weiterhin die Swing GUI nutzen?

Nimmst du ein paar Werte entgegen wie z.B. in einem Gästebuch, Blog etc., dann würde eine Weboberfläche genügen. Hast du allerdings ein grafisches Meisterwerk erstellt, wie z.B. ein Dreidimensionales Schachspiel, dann würde das eher dafür sprechen bei der Swing GUI zu bleiben.


Die Architektur von Client-Server-Anwendungen kann man meist auf Schichten aufteilen.

Präsentation
Businesslogik
Daten

Jetzt kommt es darauf an, wo die Grenze gezogen wird. Sprich welche Teile sollen nachher beim Client ausgeführt werden, welche Teile bleiben auf dem Server.

Du könntest zB. per Remote Desktop, Teamviewer oder VNC auf deinen Server zugreifen und dann dort deine Anwendung laufen lassen, als säßest du direkt am Server.

Clientseite - Präsentationsteil (VNC)
Serverseitig - Präsentation(Swing), Logik, Daten

Du könntest aber auch das Gegenteil machen und deine Anwendung so wie sie momentan ist auf dem Client laufen lassen und ein Prog schreiben, dass die Datenbank auf dem Client ausließt und mit einer Datenbank auf einem Server synchronisiert.

Clientseite - Präsentation, Logik, Daten(db4o)
Serverseite - Daten(db4o)

Du kannst aber auch beliebige Mittelwege zwischen den beiden Extremen wählen.

Wenn beim Client weiter die Swing GUI bleiben soll, kann man unter umständen auch RMI verwenden.

RMI kann man recht schnell und einfach erlernen um ein kleines Proof-of-Concept zu erstellen im Gegensatz zu ausgewachsenen Applicationservern die doch etwas mehr Einarbeitungszeit verschlingen.
 

pl4gu33

Top Contributor
so danke erstmal für eure Antworten,.... also erst einmal werde ich mich jetzt die Tage in die Themen einlesen, sodass ich dann konkretere Fragen noch dazu stellen kann,... also hier evtl. nochmal etwas mehr zu der ganzen Thematik Rund um das Projekt und eure Fragen,....

also ich hab seit ca. 3-4 Wochen damit begonnen mich in den Code etc. einzuarbeiten und auch schon nebenbei ein paar Sachen einzufügen etc.. Das Programm ansich ist eine JAVA Anwendung + SwingGUI was in vielen Standorten in Deutschland als Lernsoftware eingesetzt wird, damit meine ich, dass dort Fragen, Lernspiele etc. zur Auswahl stehen und man Spielstände z.b. bei eine Quiz abspeichern kann,...
natürlich sind halt auch die ganzen Fragen und Spiele in der DB gespeichert. Im Rahmen dieser Software bin ich nun dabei ein Thema für meine Bachelorarbeit zu "suchen", welche natürlich auch ein gewissen Umfang haben sollte,... ich habe also Zeit mich in Thematiken einzuarbeiten und sie auszuführen ab heute ca. 4-5+ Monate je nach dem wie ichs brauche.... Wichtig wäre an der ganzen Sache, dass im nachhinein nicht viel Wartbarkeit anfallen darf, da dort kein Personal zur Verfügung stünde dafür (weiss ich auch erst seit gestern sry^^). Daher würde ich sogar sagen, dass die Sache mit der Datenbank, welche Online abgeglichen wird und das Programm ansich auf jedem Rechner selber läuft die beste Wahl wäre,... aber ich würde mich da auch gern umstimmen / beraten lassen :)

ps. http://www.java-forum.org/spiele-multimedia-programmierung/122636-video-java-abspielen.html

dies wäre ein weiteres mögliches Thema,... bloss finde ich die Online- Geschichte wesentlich interessanter :)
 
Zuletzt bearbeitet:

Empire Phoenix

Top Contributor
Guck dir mal an was in der db4o drinnen steht, evtl kann man das sehr einfach auf eine SQL basierte db übertragen.

-> Es wird von Schülern, unbekannten benutzt:
-> Logik entweder auf Client und nen Zwischenstück,d as die db vor fehlerhaftenmanipulationen schützt
-> Logik auf server und nur daten zur Darstellung schicken.

Wie viele gleichzeitige User werden erwartet?
Diese frage ist ungemein wichtig. Ausserdem wie hoch ist das geschätzte Datenvolumen das ein user brachen wrid (zb sind videos dabei?) Dannnoch die Frage, wie rakteionsschnell muss das Programm sein? Reicht eine verzögerung von einigen wenigen 100ms aus? Oder muss das schneller sein?
 

pl4gu33

Top Contributor
also es gibt zu der Software ein Admintool, mit welchem man Spielfelder etc. erstellen kann, dieses benutzen nur die "Betreuer". Die Spiele werden soweit ich weiss von den Betreuern am Beamer gespielt, sodass die "Schüler" nicht direkt in Kontakt mit der Software kommen. Die Frage ist, in wie weit das ganze ohne Verwaltungsaufwand nach dem Projekt zu realisieren ist, da dort kein Personal dafür bereit stehen würde. Weil wenn es daran schon scheiter müsste ich mir etwas anderes überlegen bzw. eine abgespeckte Version entwickeln,..
 
Zuletzt bearbeitet:

BlackViruZ

Aktives Mitglied
also es gibt zu der Software ein Admintool, mit welchem man Spielfelder etc. erstellen kann, dieses benutzen nur die "Betreuer". Die Spiele werden soweit ich weiss von den Betreuern am Beamer gespielt, sodass die "Schüler" nicht direkt in Kontakt mit der Software kommen. Die Frage ist, in wie weit das ganze ohne Verwaltungsaufwand nach dem Projekt zu realisieren ist, da dort kein Personal dafür bereit stehen würde. Weil wenn es daran schon scheiter müsste ich mir etwas anderes überlegen bzw. eine abgespeckte Version entwickeln,..

Wenn vorhandene tools auf die db4o db zugreifen kannst du davon ausgehen, dass du auch diese anschließend neuschreiben darfst, da db4o ja nur ein lokales file ist und keinen webservice anbietet.

Am Rande: Sobald man eine Anwendung online stellt gibt es automatisch Verwaltungsaufwand.
Das lässt sich nicht umgehen - irgendjemand muss ja den Server patchen usw, oder willst du, dass deine Anwendung irgenwann mal wie die GEMA endet?^^.


Wenn ihr eine Objekt & File basierte "Datenbank" habt, würde ich dir nahelegen das ganze mit RMI machen, dann musst du nichtmal einen richtigen web service schreiben, weil der Netzwerkanteil dann von RMI gehandlet wird, was eventuell wenn die Anwendung schon existiert in dem Fall sogar die bessere Lösung wäre.. (falls eine spätere Umstellung auf eine komplette Weboberfläche auszuschließen ist).

Dann müsstest du im "nur" noch eine Adapter Komponente schreiben, welcher die vorher lokalen anfragen an die datenbank auf die RMI calls ummodelt und sich um die Fehlerbehandlung kümmert.

Quasi, du splittest das vorhandene Programm in zwei Teile.
Das wird aber nur reibungslos klappen wenn das Programm sauber geschrieben ist - ansonsten hast du noch ne ganze Menge arbeit vor dir. ^^

Was die db4o datenbank angeht - es würde grundsätzlich mehr sinn machen, das auf ein SQL basiertes DBMS umzurüsten, allerdings hättest du da auch einigen zusätzlichen Aufwand dazu - du könntest dafür beispielsweise eine Adapter Komponente schreiben welcher das ORM der Objekte übernimmt.
 

Neue Themen


Oben