PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaEE, Glassfish, JBoss... Hilfe!


Gast
2010-11-20, 14:20:00
Hallo!

Dass ich mich mit der Sprache Java ganz gut auskenne und mich aus meiner eigenen Einschätzung heraus als fortgeschrittenen Programmierer bezeichnen kann (was auch immer das bedeuten mag), würde man mir aufgrund des Threadtitels wohl nicht abkaufen.
Das liegt daran, dass ich mich seit 3-4 Jahren nur mit Java SE und somit Desktopanwendungen beschäftigt habe und selten den Blick über den Tellerrand gewagt habe, weshalb alles außerhalb der Java SE wie Bahnhof für mich klingt.

Mein nächstes Vorhaben soll aber etwas größer werden: aus einem nicht mehr benutzen Rechner, welcher aber zu Schade ist für den Dachboden, will ich eine Art Server machen für folgende Vorhaben:

- es sollen diverse Java-Komponenten darauf laufen, welche Zugriff auf eine lokale Datenbank haben (mySQL oder Oracle 10 XE oder sowas).

- diese Komponenten führen diverse Dinge aus. Eine Komponente soll z.b. mit externen Webservices oder generell mit fremden Quellen aus dem Netz interagieren und eventuell empfangene Daten in die Datenbank schreiben. Eine weitere Komponente soll Daten aus der DB holen, verarbeiten und wieder in die DB schreiben. Eine dritte Komponente... und so weiter, und so fort.

Jetzt stellt sich natürlich die Frage nach der Technologie. Klar, ich könnte weiterhin JavaSE-Applikationen schreiben und einfach so auf dem Rechner laufen lassen, das würde schon irgendwie gehen... aber da gibt es doch sicher bessere Wege.

Um es kurz zu machen und nochmal auf den Threadtitel zurückzukommen:
Brauche ich sowas wie Glassfish, JBoss, Tomcat?
Es wäre sehr cool, wenn ihr mir denn Sinn solcher "Anwendungsserver" kurz erläutern könntent. Schlage ich auf wikipedia "Glassfish" auf, so verstehe ich erstmal garnichts, außer dass es eventuell relevant sein könnte.

Auch verstehe ich noch nicht, welche Rolle Java EE im Vergleich zu Java SE spielt.

Achja: das ganze wird absolut nichts sicherheitskritisches, davon abraten braucht ihr mir nicht nachdem ihr das gelesen habt :D

Ich lese mich dann schon selbstständig irgendwo ein, aber ich würde erstmal gerne das Begriffswirrwar auflösen und einen Ansatzpunkt erhalten.

Vielen Dank!

redfalcon
2010-11-20, 14:50:14
Auf einem Anwendungsserver laufen (vereinfacht gesagt), ein oder mehrere Dienste (Java-Anwendungen), zu denen sich Clients verbinden können und dann mit diesen Diensten interagieren kann. Das kann eine JSF-Anwendung sein, oder ein Webmail-Client, was auch immer. Der Anwendungsserver übernimmt auch solchen Kram wie Load Balancing, Synchronisation, Datenbankzugriffe etc.

Java EE beschreibt ein Set von Bibliotheken, APIs und Anwendungen für die Entwicklung von solchen serverseitigen Diensten. Bspw. JSP, EJB, RMI, Mail usw.

Aus deinen Beschreibungen würde ich sagen, dass JEE für deine Zwecke etwas überdimensioniert ist, sofern du das nicht aus Lernzwecken machen willst ;)

Yavion
2010-11-20, 20:31:45
Hallo!

Dass ich mich mit der Sprache Java ganz gut auskenne und mich aus meiner eigenen Einschätzung heraus als fortgeschrittenen Programmierer bezeichnen kann (was auch immer das bedeuten mag), würde man mir aufgrund des Threadtitels wohl nicht abkaufen.
Das liegt daran, dass ich mich seit 3-4 Jahren nur mit Java SE und somit Desktopanwendungen beschäftigt habe und selten den Blick über den Tellerrand gewagt habe, weshalb alles außerhalb der Java SE wie Bahnhof für mich klingt.

Mein nächstes Vorhaben soll aber etwas größer werden: aus einem nicht mehr benutzen Rechner, welcher aber zu Schade ist für den Dachboden, will ich eine Art Server machen für folgende Vorhaben:

- es sollen diverse Java-Komponenten darauf laufen, welche Zugriff auf eine lokale Datenbank haben (mySQL oder Oracle 10 XE oder sowas).

- diese Komponenten führen diverse Dinge aus. Eine Komponente soll z.b. mit externen Webservices oder generell mit fremden Quellen aus dem Netz interagieren und eventuell empfangene Daten in die Datenbank schreiben. Eine weitere Komponente soll Daten aus der DB holen, verarbeiten und wieder in die DB schreiben. Eine dritte Komponente... und so weiter, und so fort.

Jetzt stellt sich natürlich die Frage nach der Technologie. Klar, ich könnte weiterhin JavaSE-Applikationen schreiben und einfach so auf dem Rechner laufen lassen, das würde schon irgendwie gehen... aber da gibt es doch sicher bessere Wege.

Um es kurz zu machen und nochmal auf den Threadtitel zurückzukommen:
Brauche ich sowas wie Glassfish, JBoss, Tomcat?
Es wäre sehr cool, wenn ihr mir denn Sinn solcher "Anwendungsserver" kurz erläutern könntent. Schlage ich auf wikipedia "Glassfish" auf, so verstehe ich erstmal garnichts, außer dass es eventuell relevant sein könnte.

Auch verstehe ich noch nicht, welche Rolle Java EE im Vergleich zu Java SE spielt.

Achja: das ganze wird absolut nichts sicherheitskritisches, davon abraten braucht ihr mir nicht nachdem ihr das gelesen habt :D

Ich lese mich dann schon selbstständig irgendwo ein, aber ich würde erstmal gerne das Begriffswirrwar auflösen und einen Ansatzpunkt erhalten.

Vielen Dank!

Kann Deine Situation recht gut verstehen. Wenn man SE entwickelt hat und auf EE umsteigt, wird man erstmal von einem Brett aus Begriffen, Konfigurationen etc erschlagen.
Der Sinn eines "Anwendungsservers" oder Webcontainers ist es, eine Laufzeitumgebung für Servlets bereitzustellen. Also Java-Programme, die nach aussen hin über Remote Interfaces (z.B. als Webservices) kommunizieren.
Der Server ist dabei so schlau, dass er sich um Scheduling, Instanzenmanagement und Deployment recht selbstständig kümmert.
Man kann fast sagen, dass der Webcontainer eine Art Betriebssystem für Java-Anwendungen ist.
Typischerweise kommunizieren alle Programme (Servlets) auf dem Server über eine Remote-Schnittstelle und zwar über Http, weshalb die meisten Webcontainer oft mit Webservern kombiniert sind (oder werden).
Solche Webcontainer unterliegen dabei sehr strengen Auflagen, wodurch eigentlich alle gängigen Webcontainer sehr stabile Gebilde sind.

Was bedeutet das ganze für Dich? - Naja, wie Du schon gesagt hast: Du kannst alles auch in JavaSE programmieren. Wenn Du ein oder zwei Programme fernsteuern möchtest, ist das auch i.O.
Mit JavaEE legst Du aber den Grundstein für eine ganze (Komponentensoftware-) Architektur: Du kannst dann beliebig viele Programme in einer Laufzeitumgebung laufen lassen, die intern bestimmte Datenstrukturen (z.B. Domainobjekte), Datenbanken (z.B. Nutzerdaten), Bibliotheken und Komponenten (z.B. Logging, Authentifizierung) und ganze Frameworks (Spring, jsf, etc) teilen.


Es lohnt sich m.E. auf jeden Fall, sich mit JavaEE auseinanderzusetzen. Entweder weil man es ohnehin muss oder einfach als Hobbyprojekt.
Am besten Du lädst Dir die aktuelle Eclipse EE runter und suchst mal ein paar Tutorials, z.B. wie Du einfache Webservices oder JSPs einrichtest. Das ist relativ schnell gemacht. Dabei lernst Du schon die wichtigsten Grundlagen, z.B. die Struktur einer Webanwendung.
Später kann man sich dann je nach Neigung in alle möglichen Frameworks einarbeiten.

Über den Server musst Du Dir keine Gedanken machen, den richtet die IDE sogar selbstständig für Dich ein. Typischerweise ist das Tomcat bei Eclipse und Glassfish bei Netbeans, wobei letzteres m.E. etwas überdimensioniert ist.

Ganon
2010-11-20, 21:42:29
Die Lernkurve bei JavaEE ist sehr sehr steil. Nicht nur weil der Umfang verdammt groß ist, sondern man unter all den ganzen definierten Schnittstellen auch noch so 4-5 (oder weit mehr) Frameworks hat, die diese implementieren. Dann muss man auch noch rausfinden was man alles davon gar nicht erst braucht.

Aber das Einzige was dort hilft ist schlicht und ergreifend sich da die Zeit nehmen und sich einlesen.

Begriffswirrwar wird sich im Rahmen eines Forenbeitrags nicht entwirren lassen. Stell dir JavaEE einfach als eine Sammlung von Schnittstellen für die verschiedensten Bereiche einer großen (Web-)Anwendung vor. Nur weil es diese gibt, muss man diese nicht auch nutzen. Beispielsweise, wenn du das Spring Framework nutzt, programmierst du quasi "JavaEE", jedoch ist Spring keine direkte Implementierung von JavaEE. D.h. die machen etwas eigenes.

Genausowenig musst du für eine Java-Webanwendung gleich einen dicken Java Application Server einrichten. Ein kleiner Servlet-Container wie Jetty, tut es meist auch vollkommen. Es hängt alles davon ab, inwieweit man entsprechende Funktionalitäten gestalten will. Glassfish und Konsorten nehmen einen viel Arbeit ab. Jedoch muss man sich in diese auch erst mal einarbeiten.

Schnapp dir am besten ein einführendes Buch in Java EE und lies einfach drauf los. Die Klarheit kommt dann erst später.

CoconutKing
2010-11-22, 19:57:24
www.vaadin.com

und alle sorgen sind vergessen.