Marko: Perl, PHP und CGI ist doch veraltet Java rules !?!?!

Hallo Forum,

ich würde gern mal Eure Meinung zum Thema Java-Servlets hören. Es fällt mir immer wieder
auf, das die meisten von euch, Perl, PHP... verwenden, aber scheinbar niemand Java auf der
Serversseite. Java hat doch durchaus eine Menge Vorteile:

1. voll Objektorientiert, bei komplexeren Projekten unschlagbar in Wartung und Weiterentwicklung

2. Keine andere Sprache lässt sich so vielseitig einsetzen (Client(Applet), Server (Servlet), Datenbankzugriff (JDBC), Verteilte Kommunikation mit RMI...

3. Bei hoher Serverlast performanter als CGI, da nicht jedesmal ein neuladen des Scripts erfolgt

Warum setzt also alles auf CGI ? Was sind die Gründe ?

Es ist halt verbreiteter, reine Gewohnheit ?
Ist Perl, PHP "einfacher", Java einfach zu kompliziert ?
Ist es weil kaum ein Provider Servlets anbietet ?
Sind die ganzen Java-Technologien noch zu neu ?
Haltet Ihr Perl/PHP für zuverlässiger ?

Glaubt Ihr das CGI zukünftig seine Rolle beibehalten wird, oder ist Java die Zukunftsweisendere Technologie ?

Bitte nicht missverstehen, ich möchte jetzt nicht Java in den Himmel loben und CGI verdammen,
ich kenne beides in einem gewissen Mass, und möchte jetzt blos keine Glaubensbekenntnisse,
sondern eine sinnvolle Diskussion, aus der man am Ende vielleicht erkennen kann für welchen
Zweck das eine, oder das andere besser geeignet ist.
Oder habe ich eine andere vergleichbare Technologie übersehen ?

Gruss

Marko

  1. hi!

    1. voll Objektorientiert, bei komplexeren Projekten unschlagbar in Wartung
      und Weiterentwicklung

    Mit Perl kann man auch objektorientiert programmieren. Und sei ehrlich:
    Bei wievielen der hier gestellten CGI-Fragen ist das entsprechende CGI-
    Skript so komplex, dass man es objekt-orientiert entwickeln müsste, um
    nicht den Überblick zu verlieren?

    1. Keine andere Sprache lässt sich so vielseitig einsetzen (Client(Applet),
      Server (Servlet), Datenbankzugriff (JDBC),

    Mit Perl auch alles möglich.

    1. Bei hoher Serverlast performanter als CGI, da nicht jedesmal ein neuladen
      des Scripts erfolgt

    mod_perl

    Haltet Ihr Perl/PHP für zuverlässiger ?

    Ja.

    Java hat bei mir von vorneherein einen schlechten Eindruck hinterlassen:
    Egal wie schnell mein PC auch sein mag oder wie klein das Java-Programm
    werden soll, der Bytecode-Compiler braucht immer ewig, bis er fertig ist.

    bye, Frank!

    1. Hallo Frank

      » Mit Perl kann man auch objektorientiert programmieren.

      Stimmt zwar, aber Java ist von Natur aus voll Objektorientiert, und ist geeigneter

      »»Und sei ehrlich:

      Bei wievielen der hier gestellten CGI-Fragen ist das entsprechende CGI-
      Skript so komplex, dass man es objekt-orientiert entwickeln müsste, um
      nicht den Überblick zu verlieren?

      Da hast Du absolut recht, für ein kleines Gästebuch und ähnliche Anwendungen,
      wo man dann noch schön die Textmanipulationen von Perl verwenden kann,
      die in Java ungleich komplizierter sind, ist es wohl besser auf Servlets zu verzichten.

      1. Keine andere Sprache lässt sich so vielseitig einsetzen (Client(Applet),
        Server (Servlet), Datenbankzugriff (JDBC),

      Mit Perl auch alles möglich.

      Einspruch Herr Richter, Perl wie ein Applet eingesetzt ?

      1. Bei hoher Serverlast performanter als CGI, da nicht jedesmal ein neuladen
        des Scripts erfolgt

      mod_perl

      Damit meinst Du Fast-CGI oder ? mag sein, das es schneller ist, vielleicht auch nicht,
      kann ich nicht beurteilen, hab noch nicht mit gearbeitet.

      Haltet Ihr Perl/PHP für zuverlässiger ?

      Ja.

      Für kleine Anwendungen vielleicht, sobald die Sache aber Umfangreich wird, wirst Du
      mit einer komplexen Anwendung aus ner Menge CGI-Scripten oder ellenlangen Scripten
      mit Sicherheit nicht glücklich werden. Modulare, Objektorientierte Programmierung ist
      im professionellen Bereich da die bessere Wahl.  Denk dran 85% der Zeit geht irgendwann
      für Pflege und Debuggen drauf. (Das braucht jetzt aber niemand zu interessieren, der sein
      Forum oder Gästebuch schreibt, wer aber eine komplexe Telebanking-Anwendung entwickelt
      , den schon eher ;-))

      Java hat bei mir von vorneherein einen schlechten Eindruck hinterlassen:
      Egal wie schnell mein PC auch sein mag oder wie klein das Java-Programm
      werden soll, der Bytecode-Compiler braucht immer ewig, bis er fertig ist.

      Das ist der Preis für Plattformunabhängigkeit, aber in den letzten Jahren hat sich da
      schon was getan, und ich denke das sind noch Kinderkrankheiten.

      Gruss

      Marko

      1. Haltet Ihr Perl/PHP für zuverlässiger ?
        Ja.
        Für kleine Anwendungen vielleicht, sobald die Sache aber Umfangreich wird, wirst Du
        mit einer komplexen Anwendung aus ner Menge CGI-Scripten oder ellenlangen Scripten
        mit Sicherheit nicht glücklich werden. Modulare, Objektorientierte Programmierung ist
        im professionellen Bereich da die bessere Wahl.  Denk dran 85% der Zeit geht irgendwann
        für Pflege und Debuggen drauf. (Das braucht jetzt aber niemand zu interessieren, der sein
        Forum oder Gästebuch schreibt, wer aber eine komplexe Telebanking-Anwendung entwickelt
        , den schon eher ;-))

        Ich pflege für unsere Firma ein CGI-System bestehend aus ca. 20 CGI-Skripten, zerlegt in gut
        100 Perl-Module zu insgesamt knapp 20000 lines of code. Über 60% davon sind Kommentare, wie
        bei jedem gut dokumentierten Programm.
        Ob man sich in einem Programmsystem so auskennt, daß man auf Zuruf ein neues Feature einbauen
        kann, liegt nicht an der Programmiersprache, sondern am Programmierstil.
        Wenn man merkt, daß man ein Programm nur einmal schreibt, aber immer wieder liest, um am Ende
        irgendwo ein paar Zeilen anzupassen, dann ist etwas mehr Aufwand beim Schreiben (nämlich
        strukturiert programmieren - in jeder Sprache kann man FORTRAN-Denken coden) letztlich auch
        noch billiger als "der schnelle Hack".

        Andererseits verleitet Perl viel eher dazu, schlampig zu programmieren, als beispielsweise
        eine Wirthsche Sprache.
        In Perl muß man mit Gewalt alle möglichen Prüfungen einschalten, statt daß sie defaultmäßig
        an sind - das stört mich an Perl. Es ist aber kein Grund für mich, Java zu lernen.

        Java hat bei mir von vorneherein einen schlechten Eindruck hinterlassen:
        Egal wie schnell mein PC auch sein mag oder wie klein das Java-Programm
        werden soll, der Bytecode-Compiler braucht immer ewig, bis er fertig ist.
        Das ist der Preis für Plattformunabhängigkeit, aber in den letzten Jahren hat sich da
        schon was getan, und ich denke das sind noch Kinderkrankheiten.

        Ach, und Perl ist etwa nicht plattformunabhängig? Hört, hört ...

  2. Hi Marko,

    ich sage nur: "1000 Wege führen nach ...". Ob jetzt mit Java-Serv's , Perl oder PHP.

    Wenn ich dein Posting richtig verstanden habe, stellst du Perl und Java gegenüber.

    1. voll Objektorientiert, bei komplexeren Projekten unschlagbar in Wartung und Weiterentwicklung

    Objektorientiert - Ich habe reichlich wendig davon, mein kleines Gästebuch- script mit massen an Hardcore-Klassen zu schreiben .
    Ich glaube wir verstehe uns da ;)

    1. Bei hoher Serverlast performanter als CGI, da nicht jedesmal ein neuladen des Scripts erfolgt

    zu Perl - mod_perl, fast-cgi ? ;)
    im Vergleich zu PHP, kein Kommentar ;)

    Glaubt Ihr das CGI zukünftig seine Rolle beibehalten wird, oder ist Java die Zukunftsweisendere Technologie ?

    Für beides ein einfaches "Nein".

    Ich persönlich mag java serv's nicht, und das hat so seine Gründe....

    Viele Grüsse,
    Bastiam

  3. Hi,

    zur Zeit ist Java einfach zu lahm.
    Diverse Onlineangebote, darunter auch Banken, haben sich bereits davon wieder getrennt aus dem einfachen Grund,
    dass es einfach nicht Kundenfreundlich ist, jemand laenger als x>15 Sekunden warten zu lassen.

    Ciao,
    Wolfgang

    1. Hallo Wolfgang,

      Du sprichst wohl das Ladeproblem bei Java-Applets an. Ich pflichte Dir da
      durchaus bei, die Java-VM in den Browsern braucht einfach noch zu lange
      zum starten, und die Übertragungszeit der Applets ist ein echtes Problem,
      deshalb würde ich den Einsatz von Applets auch nur dort empfehlen, wo
      längere Zeit mit dem Applet gearbeitet wird, die Funktionalität gebraucht
      wird, da ein Applet einfach mehr kann als eine HTML-Oberfläche, oder
      es sinnvoll erscheint, weil ansonsten für die gleiche Funktionalität andauernd
      Daten zwischen Klient und Server wandern müssten.
      Beim Einsatz von Servlets gilt das aber nicht, da Servlets im Adressraum des
      Webservers laufen, und nur beim Hochfahren des Servers einmalig gestartet
      werden sind Sie schneller als CGI's. (Proprietäre Servermodule sind allerdings
      wahrscheinlich trotzdem noch schneller).

      Gruss

      Marko

  4. informier dich doch bitte erstmal was cgi ist bevor du solche texte postest!

    cgi ist eine schnittstelle!
    es ist werder perl noch php noch irgendeine andere programmiersprache!

    und auch deine ach so tollen java servlets kommunizieren mit dem browser per cgi!

    der-Leo

    1. Hallo Leo,

      cgi ist eine schnittstelle!
      es ist werder perl noch php noch irgendeine andere programmiersprache!

      das CGI eine Schnittstelle ist, und keine Sprache ist  durchaus klar,
      falls das bei meinem Posting nicht herausgekommen sein sollte. Das
      Servlets die CGI-Schnittstelle nutzen, halte ich allerdings für ein
      ziemliches Gerücht. Der Mechanismus ist zwar sehr ähnlich, aber bei
      einem Servlet werden die Daten, die per HTTP Request übergeben werden
      in einem Objekt zur Verfügung gestellt, und nicht in einer Umgebungs-
      variable. Die Behauptung das Servlets CGI benutzen, hätte ich auch noch nie in der Fachliteratur gelesen.
      Im übrigen müsstest Du ja in diesem Fall einfach auf einem beliebigen Webserver eine VM installieren können, und in den CGI-Pfad des Servers eintragen, um ein Servlet zu starten, wenn gälte Servlet = CGI Programm in Java, viel Spass beim ausprobieren ;-)

      informier dich doch bitte erstmal was cgi ist bevor du solche texte postest!

      Darf ich diesen Satz zurückgeben ?

      Gruss

      Marko

      1. hallo Marko

        also benutzt PHP auch kein CGI....... ;)
        denn da habe ich die übergebenen daten auch nicht in einer umgebungsvariable.
        sie stehen mir als einzelne variablen zur verfügung (vielleicht geht ja wirklich einer soweit und nennt sie objekte....)

        die bearbeitung übernimmt für mich bereits php bevor mein script zum zug kommt.
        und trotzdem läuft das alles über cgi.

        was läuft bei den servlets jetzt so anders?

        der-Leo

        1. Hallo Leo,

          also  ehrlichgesagt, kenn ich mich mit PHP wirklich nicht aus. Wenn die Variablen zur Verfügung stehen, kann es aber durchaus sein, dass der PHP Prozessor (oder Interpreter?), die CGI-Schnittstelle benutzt um die Daten vorher aufzubereiten, und sie zur Verfügung zu stellen. Die CGI-Schnittstelle allgemein startet ein Script, und übergibt die Daten entweder mit der Standardeingabe = "Kommandozeilenparameter" (Post) oder per Umgebungsvariable (get).
          Ein Servlet braucht eine eigene Erweiterung des Webservers, die sich um die Datenübergabe kümmert, das Ergebnis ist ein Objekt, das alle Daten enthält, und aus dem entweder Key/Value Paare, oder auch der ganze Datenstrom abgefragt werden kann. Es können dafür die HTTP Aufrufe "Get" oder "Post" verwendet werden. Der Mechanismus ist zwar ähnlich, aber bei CGI ist mehr die Umgebung beteiligt (externer Aufruf eines Programms, Benutzung von Umgebungsvariable oder Standardeingabe).
          Bei Servlets läuft im Server (als Servermodul oder integraler Bestandteil) der "Servletrunner", der einen Container bildet, in dem das Servlet lebt, die Datenübergabe erfolgt intern im Server, und greift nicht auf die Umgebung zu.
          Das sind definitiv zwei verschiedene Mechanismen, auch wenn das Endergebniss nicht viel anders ist.

          Gruss

          Marko

          1. Hi,
            ich mische mich einfach mal ein ;-)

            Bei Servlets läuft im Server (als Servermodul oder integraler Bestandteil) der "Servletrunner", der einen Container bildet, in dem das Servlet lebt, die Datenübergabe erfolgt intern im Server, und greift nicht auf die Umgebung zu.

            PHP kann man auf zwei arten betreiben. Einmal als Vollwertiges CGI Programm, wie auhc jedes andere C oder wasweisich Programm via CGI aufgerufen werden kann. Zweitens dann als Apache-Modul mod_php. Das ist dann sehr aehnlich der Servletrunnertechnik.

            Jan

  5. Hallo Marko!

    ich würde gern mal Eure Meinung zum Thema Java-Servlets hören. Es fällt mir immer wieder
    auf, das die meisten von euch, Perl, PHP... verwenden, aber scheinbar niemand Java auf der
    Serversseite. Java hat doch durchaus eine Menge Vorteile:

    1. voll Objektorientiert, bei komplexeren Projekten unschlagbar in Wartung und Weiterentwicklung

    Fuer komplexe Projekte C++, gut kommentierter Code erfuellt auch alle diese Aspekte. Objektorient kannst Du auch bei perl haben..

    1. Keine andere Sprache lässt sich so vielseitig einsetzen (Client(Applet), Server (Servlet), Datenbankzugriff (JDBC), Verteilte Kommunikation mit RMI...

    In einem Ueberlebensmesser sind auch Angelsehne und Haken drin... Der Vorteil von Java ist, dass es "hip", "easy" und scheinbar fuer alles geeignet ist.

    1. Bei hoher Serverlast performanter als CGI, da nicht jedesmal ein neuladen des Scripts erfolgt

    Aehm, kann ich den Server mal sehen, der unter grosser Last steht und mir die von Dir angedeute Performance demonstriert? Oder ist das "theoretisch"?
    Wenn es "performant" (wird mein Lieblingswort fuer dieses Jahr) sein sollte,  waere ich dann wieder bei C, kompiliert fuer den entsprechenden Server.  Das "nicht jedesmal neu laden" ist auch keine Eigenschaft, die nur von JAVA erfuellt wird...

    Wenn ich Dir jetzt also sage, dass ich Java fuer nicht _wirklich_ brauchbar halte... ;)
    Fuer mich gibt es keine Sparte, in der JAVA so viele Vorteile haette, dass es eingesetzt werden muss.

    Warum setzt also alles auf CGI ? Was sind die Gründe ?

    Perl und andere Interpreter sind fuer die meisten Projekte (selten echt komplex) sinnvoll, JAVA ist dafuer zu aufwendig, resourcenfressend...

    Es ist halt verbreiteter, reine Gewohnheit ?
    Ist Perl, PHP "einfacher", Java einfach zu kompliziert ?

    JAVA scheint mir eine Weltanschauung, das hilft nicht beim Programmieren.

    Ist es weil kaum ein Provider Servlets anbietet ?

    Das ist eher eine Folge, als eine Ursache, denke ich.

    Sind die ganzen Java-Technologien noch zu neu ?
    Haltet Ihr Perl/PHP für zuverlässiger ?

    Nein, nicht zu neu, <boese>eher "tot" geboren</boese>. Ja, Perl (PHP kenne ich nicht) erscheint mir zuverlaessiger, praxisbezogener.

    Glaubt Ihr das CGI zukünftig seine Rolle beibehalten wird, oder ist Java die Zukunftsweisendere Technologie ?

    JAVA ist wohl an vielen Orten die Zukunft. Meist dort, wo der Chef bei "objektorient" sofort an JAVA denkt, bei "Software" sofort an "objektorient" denkt und bei "zukunftsweisend" sofort an Software. Und irgendwie ist das ganze dann auch noch "sexy".
    Nicht zu unterschaetzen ist auch der Anspruch, mit JAVA alles loesen zu koennen, das wird oft so missverstanden, dass man alles damit loesen _muss_.

    MfG
    SUR

    1. Hallo Sur,

      Aehm, kann ich den Server mal sehen, der unter grosser Last steht und mir die von Dir angedeute Performance demonstriert? Oder ist das "theoretisch"?
      Wenn es "performant" (wird mein Lieblingswort fuer dieses Jahr) sein sollte,  waere ich dann wieder bei C, kompiliert fuer den entsprechenden Server.  Das "nicht jedesmal neu laden" ist auch keine Eigenschaft, die nur von JAVA erfuellt wird...

      Ich arbeite gerade mit an einer Anwendung, die sehr viel Last verkraften werden muss.
      Das System arbeitet mit Java und einer Oracle-DB (Ich habe daran allerdings nur einen geringen
      Anteil).  Wenn das mal läuft (soll in etwa 2 Wochen sein, allerdings natürlich am Anfang mit
      weniger Last), kann ich gerne mal über unsere Erfahrungen berichten.
      Ich denke aber, das mit der richtigen Architektur Java ne Menge Leistung bringt, warten wir es ab.

      Wenn ich Dir jetzt also sage, dass ich Java fuer nicht _wirklich_ brauchbar halte... ;)
      Fuer mich gibt es keine Sparte, in der JAVA so viele Vorteile haette, dass es eingesetzt werden muss.

      »»

      Es muss nicht, es hat seine Vorteile und Nachteile wie jede Sprache das ist klar, aber gerade
      im Bereich Internet-verteilte Anwendungen bringt es denke ich eine Menge Vorteile mit.

      Warum setzt also alles auf CGI ? Was sind die Gründe ?

      Perl und andere Interpreter sind fuer die meisten Projekte (selten echt komplex) sinnvoll, JAVA ist dafuer zu aufwendig, resourcenfressend...

      »»

      JAVA scheint mir eine Weltanschauung, das hilft nicht beim Programmieren.

      Es ist ein seltsames Phänomen, das in der Computerbranche aus jedem Scheiss ne
      Weltanschauung gemacht wird.

      Sind die ganzen Java-Technologien noch zu neu ?
      Haltet Ihr Perl/PHP für zuverlässiger ?

      Nein, nicht zu neu, <boese>eher "tot" geboren</boese>. Ja, Perl (PHP kenne ich nicht) erscheint mir zuverlaessiger, praxisbezogener.

      Hm, glaube ich garnicht, aber vielleicht verblendet mich ja mein Umfeld ;-) Ich denke,
      da ist noch ne Menge Potential drin, es ist noch zu wenig bekannt was alles geht.

      JAVA ist wohl an vielen Orten die Zukunft. Meist dort, wo der Chef bei "objektorient" sofort an JAVA denkt, bei "Software" sofort an "objektorient" denkt und bei "zukunftsweisend" sofort an Software. Und irgendwie ist das ganze dann auch noch "sexy".
      Nicht zu unterschaetzen ist auch der Anspruch, mit JAVA alles loesen zu koennen, das wird oft so missverstanden, dass man alles damit loesen _muss_.

      Hm, die These ist nicht uninteressant, stimmt vielleicht an manchen Orten.

      Gruss

      Marko