# Geeignete Plattform für Projekt (JSP, PHP, Java-Anwendung)



## Urs Liska (6. Mrz 2005)

Hallo java-forum.

Ich bin auf der Suche nach den richtigen Techniken für die Realisierung eines längerfristigen Projekts und denke, dass ich da bei Java und Co. richtig liege.

Allerdings bin ich in Java noch ziemlich neu (habe bisher hauptsächlich mit Delphi unter Windows gearbeitet) und habe nicht den richtigen Überblick über die verschiedenen Techniken/Technologien, um sinnvoll entscheiden zu können, ob wir es mit Java realisieren sollen bzw. welche Komponenten wir dazu benötigen werden.
Ich habe eine gewisse Vorstellung davon, wie die Dinge zusammenarbeiten könnten und würde gerne um Stellungnahmen dazu bitten, ob das so ungefähr stimmt, wie ich es denke.
Für Anregungen, wie man das alles auch anders unter einen Hut bekommen könnte, wäre ich auch dankbar.

Im Wesentlichen geht es um eine klassische Datenbank- und eine klassische Web-Anwendung. Die Datenbankplattform wird Firebird sein, die Datenbank selbst in der Größenordnung von 50-100 Tabellen, wobei der Zugriff über Stored Procedures (etwa je 20-25 zum Lesen und Schreiben) geregelt werden dürfte.

Der Grund, weshalb ich nicht alles gleich mit Delphi machen kann liegt in folgenden Anforderungen verschiedener Anwendungsgebiete:

1)
Arbeit an der Datenbank (Dateneingabe und Recherche) im Haus.
Die Mitarbeiter (etwa 4-5) haben Macs und PCs und sind an ein Uni-Netzwerk angeschlossen, das wahrscheinlich unter Unix/Linux läuft. Ich weiß noch nicht, ob der Datenbank- und Webserver über das Rechenzentrum mitläuft oder ob wir einen eigenen Rechner konfigurieren dürfen.
Hierfür wäre eine (Java-)Desktop-Anwendung geeignet oder eine Browseranwendung mit einer Webserveranwendung (dabei habe ich an JSP gedacht, andererseits wäre auch PHP denkbar).

2)
Arbeit außer Haus auf Laptops oder Heimrechnern (etwa 15-20 verschiedene Nutzer).
Hier ist die Webserveroption nicht möglich, da die Laptops natürlich keine und die Heimrechner i.d.R. nur eine langsame (und auch noch privat bezahlte) Internetverbindung haben.
Hier wäre wieder eine (Java-)Desktop-Anwendung (mit Replikationsfunktionen) geeignet.

3)
Recherche (und gestaffelter Eingabezugriff) über öffentliches Internet.
Dafür kommt nur eine Webserver-Anwendung in Frage (JSP, PHP), die mit der Webserveroption von 1) nahe verwandt wäre (Loginmechanismus, je nach Benutzergruppe unterschiedliche Möglichkeiten).

4)
Evtl. auch die Möglichkeit, die Datenbank als reine Recherchedatenbank auf CD-ROM zu verteilen.
Auch hierfür kommt wiederum (wie bei 2) nur eine Desktop-Anwendung in Betracht, da man ja für so eine Datenbank-CD keinen Webserver installieren kann...


Also: Aus den Punkten 1-4 geht ziemlich klar hervor, dass wir auf jeden Fall mindestens eine Webserver- und eine Desktopanwendung benötigen. Die Desktopanwendung muss mindestens auf Mac und PC laufen, für den Webserver reicht ein Betriebssystem (das aber wahrscheinlich Unix/Linux ist).

Meine Vorstellung ist nun, dass es möglich sein müsste, eine selbständige Java-Anwendung und eine JSP-basierte Webserveranwendung zu realisieren, und dabei einen großen Teil des Codes gemeinsam zu verwenden.
Also die gesamte Geschäftslogik und DB-Anbindung in Klassen(bibliotheken) zu verpacken, so dass für die zwei Anwendungen relativ wenig spezifischer Code übrigbleibt, der separat gepflegt werden muss.

Wenn es dann auch noch möglich wäre, für den Server und den Desktop auf vorhandene Frameworks aufsetzen zu können (Struts?, NetBeans Framework?), sollte sich daraus doch eine relativ elegante Architektur entwickeln lassen.


Könnt Ihr mir jetzt sagen, ob ich mit meinen Gedanken ungefähr richtig liege?
Oder würde das alles überhaupt nicht so funktionieren?
Oder sieht jemand eine andere elegante Möglichkeit, die Lösung der Anforderungen geschickt zu kombinieren (auch nicht mit Java)?

MfG
Urs


----------



## Bleiglanz (7. Mrz 2005)

Urs Liska hat gesagt.:
			
		

> ...
> 2)
> Arbeit außer Haus auf Laptops oder Heimrechnern (etwa 15-20 verschiedene Nutzer).
> Hier ist die Webserveroption nicht möglich, da die Laptops natürlich keine und die Heimrechner i.d.R. nur eine langsame (und auch noch privat bezahlte) Internetverbindung haben.
> ...


Mach entweder eine Desktop ODER eine Webanwendung, wozu das ganze zweimal entwickeln?

zu 2: Hä? Ha? Willst du im ernst eine "Offline-Anwendung" mit "Synchronisationsfeature" entwickeln? Das ist verdammt schwierig, weil wenn 5 Benutzer alle eine Woche lang offline arbeiten -> wie willst du den Zeugs dann zusammenführen?? Oder sollen die nur lesen

setzt mal lieber eine Internetverbindung voraus!

[Unter ACCESS gabs sowas mal, mit Master-Datenbanken und Replikation und "Zusammenführen" => ziemlich übler Zeugs]


Würde dir eher zu einen reinen Webanwendung raten (vor allem wegen 1 und 3) und die CD-ROM ad hoc rausschreiben (von mir aus mit Javascript + festem Suchindex + evtl. einem Applet)


----------



## AlArenal (7. Mrz 2005)

Synchronisation ist in der Tat immer ein kniffliges Thema. Da wäre es nicht schlecht zu wissen was du wie und von wem wohin synchronisiert haben möchtest.

Für den Offline-Betrieb scheiden Server-Technologien natürlich aus. Drum würde ich auch drüber nachdenken eien reine Java-Anwendung für alle draus zu machen, die eben zwischen einem Online- und einem Offline-Modus unterscheidet. Im Online-Modus (bei euch im Netz) wird auf den Server zugegriffen, also auf Live-Daten. Im Offline-Modus wird über eine lokale SQL-Datenbank (hsqldb) zugegriffen, die eben bei Bedarf mit der Haupt-DB synchronisiert wird.


----------



## KSG9|sebastian (7. Mrz 2005)

Lotus Notes hat ne gute Replizierungs-Funktion, das Ding aber nachzuprogrammieren..*urgh hf*


----------



## AlArenal (7. Mrz 2005)

Sehr sinniger Kommentar.. "Produkt XYZ, das seit 10 Jahren entwickelt word, hat dies und jenes toll umgesetzt. Dummerweise ist der Quellcode nicht verfügbar, ..."

Schön, das wir drüber gesprochen haben...


----------



## KSG9|sebastian (7. Mrz 2005)

woargh das war nur so ne kleine Anmerkung à la "Du kannst dir ja mal die Funktion von Produkt ABC anschauen und dir überlegen, welche Funktionen realisierbar sind und welche nicht"


----------



## Grizzly (7. Mrz 2005)

KSG9|plak hat gesagt.:
			
		

> woargh das war nur so ne kleine Anmerkung à la "Du kannst dir ja mal die Funktion von Produkt ABC anschauen und dir überlegen, welche Funktionen realisierbar sind und welche nicht"


Wobei die Replikation in Lotus Notes _relativ billig_ gelöst ist: Jeder Datensatz besitzt einen Array, in dem das letzte Änderungsdatum steht. Gibt es bei einer Synchronisation ein Problem, weil die jeweilige Kopie zu anderen Daten (Mehrzahl von Datum  ) geändert wurden, wird der Datensatz als sogenanntes "Konfliktdokument" gespeichert.


----------



## Bleiglanz (8. Mrz 2005)

Das Access - Merge funktioniert genauso (mit Zeitstempel); interessant ist auch das Handling von Autoinkrement Primärschlüsseln, die werden nämlich in den "offline Kopien" beim Erzeugen von Datensätzen einfach mit einer Zufallszahl gefüllt - in der Hoffnung, dass dann beim Merge alles gut geht....


----------

