Andreas Korthaus: kleineres Framework vs. Applikationsserver

Beitrag lesen

Hallo!

Ja, aber das ist für mich noch klein wirkliches "Todschlag-Argument". Sicherlich wird der Java-Code schöner, trotzdem ist es dann auch kein wirklich großer Schritt nach vorne, oder?
Um schoen gehts ja nicht unbedingt, sondern eher um Uebersichtlichkeit und damit Wartbarkeit von Code, sowie der IMHO leichteren Trennung von Code und Design, d.h. z.B. die leichtere Umsetzung von Design Patterns, wie z.B. dem MVC Pattern

Trennung von Design und Code habe ich mit einem Template-Modul geschaffen. Funkitoniert eigentlich ganz gut, aber vielleicht kann das Java auch noch besser, k.A.

Ich finde gerade das Konzept der EJBs faszinierend, habe das zwar noch nicht genauer angesehen, aber wenn ich das nicht falsch verstanden habe bitene EJBs eine riesige Bibliothek an gutem fertigen Code den ich in meine Anwendung integrieren kann, so dass ich nicht für alles mögliche das Rad immer neu erfinden muss, denn das mache ich wohl meist nicht unbedingt besser als die Entwicler von EJBs. Wenn Java dann auch richtig mit allem was dazu gehört.
Ja. Es gibt fertige EJB Komponenten, aber der Aufwand fuer die Erstellung von EJBs ist sehr hoch.

Oh ja, ich habe mal die Spezifikation für EJBs überflogen - 180 Seiten oder so waren das glaube ich ;-)

Es wird, vermute ich, auch frei verfuegbare Komponenten geben, aber auch sehr viele, die man kaufen muss.

Ich dachte da wären viele frei verfügbar? Was machen denn "teure" EJBs z.B.?

Der Einsatz und vor allem die Entwicklung von EJBs muss sich lohnen und das tut er IMHO erst dann, wenn die Applikationen viel Traffic und eine sehr grosse Datenbasis haben.

Das habe ich nicht wirklich...

Ansonsten ist man mit "kleineren" Frameworks wie Struts, Velocity usw. besser dran, weils durch den geringern Entwicklungs- und Einarbeitungsaufwand die Kosten minimiert. Ausserdem ists erfahrungsgemaess guenstig, erstmal klein anzufangen, weil man sonst oft die Konzeption der grossen Fische gar nicht versteht.

Ja, das ist ein Argument, ich hätte auch die Angst gehabt dass ich das gar nicht vernünfig hinbekomme ohne Erfahrung, ist sogar sehr wahrscheinlich... hast schon Recht, erstmal klein anfangen. Aber was ist wenn ich eines Tages dann doch auf einen Applikationsserver umsteigen wollte, kann ich dann alten Code weiterverwende, oder muss ich dann alles neu schreiben? Denn Sachen die später EJBs erledigen werde ich vermutlich vorher mit Sevlets implementieren, oder?

Für den Augenblick ist es zwar zu spät, das mit PHP muss ich jetzt erstmal fertig stellen, aber ich könnte mir vorstellen, wenn eine größere, grundlegendere Überarbeitung ansteht komplett auf einen Applikations-Server umzusteigen, ich dachte zunächst erstmal an JBoss, oder würdest Du davon abraten(wenn Applikationsserver dann nur Websphere oder Bea)?
JBoss ist wunderbar. Ausserdem gibs eben auch eine IDE fuer Eclipse (basiert auf XDoclet).

Ja, hatte ich auch von gelesen, JBoss habe ich mir mal installiert, aber wirklich durchblicken tue ich da noch nicht, wobei ich das schon irgendwie praktisch finde wie einfach es da ist eine andere Datenbank einzubinden, ohne das ich da am Code großartig was ändern muss. Ich denke der JDBC-Treiber kann sowas besser als die verschiedenen PHP-Module in Kombination mit der PEAR-Datenbank-Abstraktion.
Wobei man ja auch da das Problem hat was wenn ich DB-Transaktionen verwenden will, aber die DB das nicht kann, also muss ich auch an solche Dinge denken wenn ich Programmiere(nur so als dummes Beispiel, Transaktionen sind natürlich Grundvoraussetzungen).

Aber zumn Thema Transaktionen, ich kenen das nur aus dem Kontext von Datenbank-Transaktionen, mit Begin, Commit und Rollback, aber ich habe mir sagen lassen dass Transaktionen in einer Java-Applikationsserver-Umgebung noch weitergehen, also ein kompletter Request ist eine Transaktion oder sowas, aber das habe ich nicht verstanden wie das genau gemeint ist. Sowas geht dann aber nicht mit Struts oder sowas, oder?

Wenn du dann noch mit einer Open Source Datenbank arbeitest, bist du im Enterprise Bereich preislich ausser Konkurrenz gegenueber denen, die mit teuren Servern arbeiten (muessen).

Das schon, aber auf der anderen Seite habe ich schon zu spüren bekommen dass gerade nach der New-Econemy Kriese ungern auf solche Techniken gesetzt wird, Geld spielt nicht immer eine so große Rolle, eher im Gegenteil, viele Leute haben z.B. eine tiefe Abneigung gegen PHP und MySQL, "das kann ja nichts sein...", das ist auch ein weiterer Grund warum ich weg will von PHP. Aber ist die Verwendung von Tomcat und PostgreSQL denn so viel besser? Im Prinzip ist es ja nur der Austausch der Sprache, aber die Architektur wird dadurch ja nicht _so_ viel "professioneller". Ich glaube Dir auch gerne das sich Java hier viel besser eignet, nur will ich nicht denselben Fehler ein 2. mal machen, wenn man später auf einen richtigen Applikations-Server wechseln könnte wäre das ja schon nicht schlecht, aber alles ein 3. mal neu zu schreiben wäre großer Mist. Was ist denn wenn man JBoss mit Tomcat verwendet, und erstmal nur weitgehend mit Sevlets und wenn möglich mit wenigen vorhandenen EJBs arbeitet, wäre das nicht eine gute Möglichkeit? Tomcat kann man ja wahlweise als HTTP-Server für den JBoss verwenden. Oder was hätte das denn konkret für Nachteile wenn ich direkt auf so eine Architektur schwenke? Meinst Du die Komplexität die das mit sich bringt? Ich will einen Applikations-Server weniger wegen seiner Performance-Vorteile, Skalierbarkeit..., sondern eher um eine saubere, qualitativ hochwertige Applikation hinzubekommen, und dabei noch möglichst alles selbst zu schreiben sondern auch auf guten vorhandenen Code zurückgreifen zu können.

Aber guck dir erstmal an, was genau hinter dem Konzept von Ejbs steckt. Das es fertige Komponenten gibt, ist naemlich nur ein Teil. Den weitaus groesseren musst du vermutlich selber entwickeln und du wirst kraeftig mit den Ohren schlackern, wenn du anfaengst dich da reinzufummeln.

Das glaube ich gerne, ist halt die Frage in wieweit man am Anfang eigene EJBs braucht.

Etwas leichter wirds vielleicht mit einem guten Buch, z.B. Enterprise Beans von Richard Monson-Haefel von O'Reilly.

Das solt eich mir dann sicher besorgen. Hast Du vielleicht noch einen Tipp für den Anfang auf Lager? Ich kenn Java so gut wie nicht, habe mal ein längeres Tutorial durchgearbeitet, und danach konnte ich kleine GUIs, Applets und Kommandozeilen-Tools erstellen, kann das zwar nicht auswendig, aber _sooo_ schwer war das nicht. Nur war ich noch nicht so weit wie sevlets, jsp oder gar ejbs geschweige denn Applikationsserver.

Ich wüßte nicht was JSP und Sevlets alleine so viel besser können als PHP.
Um nur mal ein Beispiel zu nennen:
Wenn du mit PHP auf eine Oracle Datenbank zugreifen willst, musst du PHP mit Oracle Unterstuetzung neu kompilieren. Dabei schwillt dein PHP Modul von ca. 3 oder 4 MB auf bis ca. 20 an. Bevor du aber ueberhaupt soweit bist, hast du schon endlos Fummelei gehabt und letztendlich ein riesiges traeges PHP Paket kompiliert. D.h. du kannst zwar mit PHP und Oracle arbeiten, aber das ist wieder so ein Ding, wo ich irgendwie das Gefuehl habe, dass irgendwelche Leute das Dingens solange mit Gewalt zurechtgebogen haben, bis es halt irgendwie lief. Unter Java baust du dir eine Klasse, laedst den Treiber und fertig ist es.

Ja, das hört sich schon gut an. Ich muss mich damit halt näher auseinander setzen, dann kann ich das vielleicht auch bessedr einschätzen.

Aber den neuen Horizont stellt ja weniger die Sprache an sich, sondern eher die verfügbaren Server- und Entwicklungsumgebungen, oder?
PHP hat ja auch inzwischen einen sehr grossen Umfang erreicht. Ob dieser Umfang mit Java mithalten kann, weiss ich nicht, weil ich mich lange nicht mehr mit PHP beschaeftigt habe. Fakt ist aber, dass du keinerlei Einschraenkungen hast, wenn du mit Java arbeitest. Du kannst die komplette Funktionalitaet nutzen und die ist gewaltig. Das es geniale Entwicklungsumgebungen gibt, die das Leben wirklich leichter machen, ist da eher eine sehr angenehme Dreingabe.

Bisher konnte ich mit PHP wirklich alles machen was ich wollte. Nur bei dem aktuellen komplexen Projekt wird es etwas unübersichtlich, bzw. und ich habe das Gefühl das Rad des öfteren neu erfunden zu haben. Ich denke genau da spielt Java seine Stärken aus, da es eher für sowas gedacht ist. Die Frage ist jetzt, ob ich bei einem kleinen Framework bleibe, oder direkt einen J2EE Server verwende.

Viele Grüße
Andreas