Engagement der ASF bzgl. Java - Verh. Perl u. PHP
frankx
- sonstiges
0 Felix Riesterer0 Christoph0 frankx0 Harlequin0 Christoph
0 Daniel Thoma
Hellihello
in Sascha Kerskens Apache Buch las ich gestern, dass die Apache Software Foundation zahlreiche Projekte betreibt. Davon hängen eine Menge irgendwie mit Java zusammen. Was für eine Rolle spielt Java denn in der Webprogrammierung? Hier im Forum führt es ja eigentlich scheinbar eher ein Schattendasein.
PHP und Perl sind dort auch eigenge Projekte. Geht es hierbei nur um die Einbindung als Modul oder wirkt die ASF auch bei der Weiterentwicklung mit. Ich dacht zB. hinter PHP wäre Zend die treibende Kraft, die mit eine Kryptisierungsverfahren und einem Framework das auch für den kommerziellen Softwarevertrieb interessant machen möchte.
In dem Buch gibt es auch eine kleine Anleitung, einen Mini-Http-Server mit Perl zu schreiben. Dabei muss ein Portlistener programmiert werden (hat das was mit Sockets zu tun?) und eine Subroutine geforkt werden.
Was mich interessiert ist, ob das mit PHP auch möglich wäre. Ich habe bei uns in der HTML-Ag mal eine hübsche Grafik zu Entstehungsgeschichte der Programmiersprachen aufgehangen, weil das immer wieder Thema ist.
Perl ist entstanden u.a. aus awk und sed, weil die Unix-Bordmittel für eine komfortable Bearbeitung von Textfiles (logs) nicht ausreichten.
PHP ist ja im wesentlichen aus Perl hervorgegangen, ähnelt in der Syntax diesem ja auch scheinbar deutlich, und hat vermutlich dabei einiges von vornherien schon zusammengefasst, was bei Perl erst über die Einbindung von Klassen (Bibliotheken?) möglich ist. Ein kleiner Bruder oder kleine Schwester von Perl, dieder in Teilbereichen handlicher und komfortabler ist?
Kann man mit PHP auch einen eigenen MiniHTTP-Server bauen, oder wo sind dessen Grenzen?
Dank und Gruß,
Lieber frankx,
Kann man mit PHP auch einen eigenen MiniHTTP-Server bauen, oder wo sind dessen Grenzen?
ähm... willst Du im Ernst in die Diskussion um Henne und Ei einsteigen? Nach meinem Verständnis ist PHP als Scriptsprache entwickelt worden, um innerhalb eines HTTP-Servers interpretiert zu werden. Ja, es gibt auch eine Kommandozeilen-Version, die über CGI eingebunden werden kann. Vielleicht kann man ja tatsächlich über die Kommandozeile ein Script starten, das einen Portlistener betreibt, nur wozu? Da stellt sich mir angesichts der eingangs erwähnten Gedanken folgende Frage:
Wie soll denn PHP einen Webserver realisieren, wenn es aus einem solchen heraus benutzt werden soll?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hellihello Felix,
ähm... willst Du im Ernst in die Diskussion um Henne und Ei einsteigen? Nach meinem Verständnis ist PHP als Scriptsprache entwickelt worden, um innerhalb eines HTTP-Servers interpretiert zu werden. Ja, es gibt auch eine Kommandozeilen-Version, die über CGI eingebunden werden kann. Vielleicht kann man ja tatsächlich über die Kommandozeile ein Script starten, das einen Portlistener betreibt, nur wozu? Da stellt sich mir angesichts der eingangs erwähnten Gedanken folgende Frage:
Wie soll denn PHP einen Webserver realisieren, wenn es aus einem solchen heraus benutzt werden soll?
Nein, da hast Du mich falsch verstanden. Es ging mir hierbei darum zu schauen, ob sich anhand dieses Beispiels zeigen lässt, ob Perl da mehr kann als PHP. Die o.g. Übung dient ja ansonsten rein dem Verständnis. Perl kann Socketverbindungen aufbauen und Prozesse "forken", ich könnte die Frage auch so formulieren, ob PHP das (und das was mir bei o.g. vielleicht noch entgange ist) auch kann.
Es geht mir also nicht um die Frage, wie die Syntaxunterschiede sind, sondern ich hatte mal so abgespeichert, dass man mit Perl in "tiefere Schichten" eintauchen könnte. Mag sein, dass ich das falsch verstanden habe, mag sein, dass es nicht stimmt, mag sein, dass es für o.g. Beispiel nicht stimmt.
Allgemeiner geht es um die Frage der Einordnung von Programmiersprachen. Man darf sicher sagen, dass mit Abstrichen C die Mutter aller Dinge ist. PHP vielleicht sowas wie ein leichtgewichtiges Perl. Und Java? Zuletzt hatte ich den Eindruck, dass Javas Konzept der plattforumübergreifenden Programmierung nicht wirklich aufgeht. Der ASF-Projekte gibt es wie gelesen ja einige, die scheints mit JAVA zu tun haben: Ant,DB,Geronimo,Jakarta,James,Lenya,Lucene,Maven.
Dank und Gruß,
Moin.
Man darf sicher sagen, dass mit Abstrichen C die Mutter aller Dinge ist.
Nicht[700kB pdf] wirklich [160 kB gif].
Zuletzt hatte ich den Eindruck, dass Javas Konzept der plattforumübergreifenden Programmierung nicht wirklich aufgeht.
Wie kommst du zu dieser Einschätzung? Java ist laut Hörensagen in der Geschäftswelt weit verbreitet, sozusagen das neue COBOL.
Christoph
Hellihello Christoph,
Man darf sicher sagen, dass mit Abstrichen C die Mutter aller Dinge ist.
Naja, da hätte ich "Abstriche" wohl mal besser definieren sollen.
http://www.levenez.com/lang/history.html
Betriebssysteme jeder Art werden in C geschrieben? Und in keiner anderen Programmiersprache? Das würde mir schon reichen. Auch wenn es nur Unix, Linux, OSX und Windows wären. Der Apache ist in C geschrieben? PHP und Perl-Interpreters sind (noch) in C geschrieben? Das wäre dann das, was ich damit sagen wollen würde. Nicht, dass C keine Vorfahren hätte. Und keine Nachfahren.
Zuletzt hatte ich den Eindruck, dass Javas Konzept der plattforumübergreifenden Programmierung nicht wirklich aufgeht.
Wie kommst du zu dieser Einschätzung? Java ist laut Hörensagen in der Geschäftswelt weit verbreitet, sozusagen das neue COBOL.
Aha, was heißt es denn, "das neue COBOL" zu sein? Und "Geschäftswelt" meint Webandwendungen in der Geschäftswelt. Da war mir jetzt eher noch Python untergekommen. Aber genau um solch eine Einordnung geht es mir. Würde ich eben gern noch kapieren, was das o.g. bedeutet.
Dank und Gruß,
Moin.
Betriebssysteme jeder Art werden in C geschrieben? Und in keiner anderen Programmiersprache?
BeOS ist z.B. in C++ geschrieben. Es gibt auch (Hobby-)Systeme, die in Pascal entwickelt wurden.
Dass die meisten Betriebssysteme in C geschrieben sind, hat neben praktischen Gründen (Hardware-Nähe, Performance, Portabilität) auch historische Gründe. Z.B. ist es von Vorteil, ein POSIX-kompatibles Betriebsystem zu entwickeln, da einem dann unter anderem die GNU-Welt mit dem nicht unwichtigen gcc zur Verfügung steht...
PHP und Perl-Interpreters sind (noch) in C geschrieben? Das wäre dann das, was ich damit sagen wollen würde.
Das hat wohl in erster Linie Performance-Gründe.
Aha, was heißt es denn, "das neue COBOL" zu sein? Und "Geschäftswelt" meint Webandwendungen in der Geschäftswelt. Da war mir jetzt eher noch Python untergekommen.
COBOL war wohl lange Zeit die Sprache der Wahl für kommerzielle Großprojekte (z.B. in Banken). Diese Nische hat inzwischen (meines Wissens nach) Java besetzt, und, wie du richtig erkannt hast, auch bei Webanwendungen.
Christoph
Moin.
Was für eine Rolle spielt Java denn in der Webprogrammierung?
Die selbe, wie jede andere serverseitige Programmiersprache? Im Vergleich zu Perl und PHP besitzt Java einen höheren Programieraufwand, ist dafür jedoch performanter. Wenn ich mich nicht irre, ist eBay z.B. eine Java-Anwendung...
Kann man mit PHP auch einen eigenen MiniHTTP-Server bauen, oder wo sind dessen Grenzen?
Klar kann man, aber warum sollte man? Was Performance betrifft, steht PHP ziemlich am Ende der Nahrungskette und ist auch nicht wirklich für Multi-Threading geeignet. Das wäre z.B. eher ein Fall für Java - ich habe mir z.B. mal einen HTTP-Chat in Java programmiert, der den Webserver direkt integriert hat: ein Paar Fallunterscheidungen für das benötigte Subset der HTTP-Spezifikation, und schon konnte auf einen Webserver verzichtet werden.
Christoph
Hellihello
Was für eine Rolle spielt Java denn in der Webprogrammierung?
Die selbe, wie jede andere serverseitige Programmiersprache? Im Vergleich zu Perl und PHP besitzt Java einen höheren Programieraufwand, ist dafür jedoch performanter. Wenn ich mich nicht irre, ist eBay z.B. eine Java-Anwendung...
Ja, das mit eBay meine ich auch gelesen zu haben. Wie kommt es aber, dass es soviele Projekte in Bezug auf Java bei der Apache Software Foundation gibt?
Die Antwort "die selbe wie PHP und Perl" ist auf einer höheren Eben vermutlich allgemein korrekt. Mir ging es eher um die Differnzierung.
Kann man mit PHP auch einen eigenen MiniHTTP-Server bauen, oder wo sind dessen Grenzen?
Klar kann man, aber warum sollte man?
Um zu kapieren, was ein Server braucht und was er kann und was die Sprache kann, mit der man ihn programmiert. Rein edukatorische Zwecke. http://buecher.lingoworld.de/apache2/listings.html
Was Performance betrifft, steht PHP ziemlich am Ende der Nahrungskette und ist auch nicht wirklich für Multi-Threading geeignet.
Aber "forken" und "sockets" kann es?
Dank und Gruß,
Yerf!
Ja, das mit eBay meine ich auch gelesen zu haben. Wie kommt es aber, dass es soviele Projekte in Bezug auf Java bei der Apache Software Foundation gibt?
Vielleicht liegt es an einem ganz besonderen Projekt der ASF: Tomcat?
Oder es haben sich halt nur im Lauf der Zeit dort jede Menge Leute angesammelt, die Java einfach toll finden ;-)
Gruß,
Harlequin
Hellihello Harlequin,
Vielleicht liegt es an einem ganz besonderen Projekt der ASF: Tomcat?
Det jehört zu Jakarta:
s.u.
"Der ASF-Projekte gibt es wie gelesen ja einige, die scheints mit JAVA zu tun haben: Ant,DB,Geronimo,Jakarta,James,Lenya,Lucene,Maven."
Oder es haben sich halt nur im Lauf der Zeit dort jede Menge Leute angesammelt, die Java einfach toll finden ;-)
Ja genau, das wäre ja eine Erklärung. Ich versuchs, noch etwas genauer rauszubekommen.
Dank und Gruß,
Hellihello
"Der ASF-Projekte gibt es wie gelesen ja einige, die scheints mit JAVA zu tun haben: Ant,DB,Geronimo,Jakarta,James,Lenya,Lucene,Maven."
http://projects.apache.org/indexes/pmc.html
Dank und Gruß,
Yerf!
"Der ASF-Projekte gibt es wie gelesen ja einige, die scheints mit JAVA zu tun haben: Ant,DB,Geronimo,Jakarta,James,Lenya,Lucene,Maven."
Auf der Seite wird der Tomcat als eigenes Projekt aufgeführt und auch auf der Projektseite von Jakarta steht, dass der Tomcat früher einmal dazugehörte (jetzt aber nicht mehr). Das ist aber nicht der Punkt auf den ich hinauswollte. Mir ging es eher darum *was* der Tomcat ist und welche Bedeutung er für Java im Web-Umfeld hat.
Gruß,
Harlequin
Hellihello
"Der ASF-Projekte gibt es wie gelesen ja einige, die scheints mit JAVA zu tun haben: Ant,DB,Geronimo,Jakarta,James,Lenya,Lucene,Maven."
Auf der Seite wird der Tomcat als eigenes Projekt aufgeführt und auch auf der Projektseite von Jakarta steht, dass der Tomcat früher einmal dazugehörte (jetzt aber nicht mehr). Das ist aber nicht der Punkt auf den ich hinauswollte. Mir ging es eher darum *was* der Tomcat ist und welche Bedeutung er für Java im Web-Umfeld hat.
" Apache And The JCP
The Apache Software Foundation has been a participant in the Java Community Process since the creation of "JCP 2.0". Apache holds a seat on the Executive Committee for J2SE/J2EE.
Apache is focused on promoting the ideals of community collaboration and transparency and has been working for many years with demonstrable success. Apache was a key participant in the JCP 2.5 process change that allows for open-source implementations of JCP specifications and that grants free TCK licenses to qualified-non-profits, individuals and academics. Apache is a member of the TCK scholarship committee along with Doug Lea and Sun.
Our goal is to put the "Community" in Java Community Process.
The JCP activities of the ASF are centered around three areas :
* Implementation of JCP specifications, such as Apache Tomcat, Apache Geronimo, WebServices, Portlets, Apache MyFaces and many others.
* Participation in multiple expert groups of the JCP via individuals representing the ASF.
* Influence the evolution of the JCP through our participation on the Executive Committee."
Das ist doch eine besondere Nähe.
Dank und Gruß,
Yerf!
Das ist doch eine besondere Nähe.
Jep. Ich weis zwar nicht, ob der Tomcat das erste Java-Projekt war, aber dadurch das er einer der Standard-Webserver im Java-Umfeld ist hat sich das denk ich so ergeben, dass die Java-Projekte bei der ASF immer mehr wurden.
Gruß,
Harlequin
Moin.
Die Antwort "die selbe wie PHP und Perl" ist auf einer höheren Eben vermutlich allgemein korrekt. Mir ging es eher um die Differnzierung.
Faustregel: Java benutzt man für Projekte, bei denen der Performance-Gewinn die höhere Entwicklungszeit gegenüber dynamischeren Sprachen (PHP, Perl, Ruby, Python,...) aufwiegt. Das lohnt in der Regel nur bei Großprojekten. Meines Wissens nach sind (bzw. waren zumindest mal) die Sprachen für offizielle Google-Projekte C++, Java und Python.
Aber "forken" und "sockets" kann es?
Du weißt, wo das PHP-Manual zu finden ist:
http://www.php.net/manual/en/function.pcntl-fork.php
http://www.php.net/manual/en/function.stream-socket-server.php
Christoph
Hellihello
Faustregel: Java benutzt man für Projekte, bei denen der Performance-Gewinn die höhere Entwicklungszeit gegenüber dynamischeren Sprachen (PHP, Perl, Ruby, Python,...) aufwiegt. Das lohnt in der Regel nur bei Großprojekten. Meines Wissens nach sind (bzw. waren zumindest mal) die Sprachen für offizielle Google-Projekte C++, Java und Python.
Und C ist dann schon wieder zu nah an der Basis, dass der Entwicklungsaufwand gegenüber dem Performancegewinn in keinem Verhältnis steht? Ist C nicht am performantesten (oder c++) oder kann man das so nicht sagen? Java braucht doch immer sein JRE, oder? Macht die es genausoschnell wie C am Ende? Soll es sowas für PHP und Perl nicht auch geben (Parrot oder sowas?).
Aber "forken" und "sockets" kann es?
Du weißt, wo das PHP-Manual zu finden ist:
http://www.php.net/manual/en/function.pcntl-fork.php
http://www.php.net/manual/en/function.stream-socket-server.php
gut, ich schäme mich. Bleibt die Frage, was Perl denn wirklich mehr "kann" (nicht die syntaktischen Besonderheiten meine ich). Gibts was, was ich mit Perl programmieren kann, nicht aber mit PHP?
Dank und Gruß,
Moin.
Und C ist dann schon wieder zu nah an der Basis, dass der Entwicklungsaufwand gegenüber dem Performancegewinn in keinem Verhältnis steht?
Richtig. Auch wenn es immer Grenzfälle zu geben scheint (*hust* SELFHTML Forum *hust*).
Ist C nicht am performantesten (oder c++)
Grundsätzlich würde ich zustimmen, in der Praxis spielen dann natürlich eine ganze Reihe weiterer Faktoren eine Rolle...
Kannst ja mal hiermit etwas spielen:
http://shootout.alioth.debian.org/
Beispiel: PHP vs. C
Java braucht doch immer sein JRE, oder? Macht die es genausoschnell wie C am Ende?
Java wird in der Regel 'just in time' - d.h. zur Laufzeit - kompiliert und ermöglich so Optimierungen, die bei statischer Kompilierung unmöglich sind. Daher _kann_ Java in Grenzfällen sogar schneller als C sein. In der Praxis scheint wohl die Ungleichung Java < C++ < C zu gelten...
Soll es sowas für PHP und Perl nicht auch geben (Parrot oder sowas?).
Parrot ist die VM für Perl 6, eventuell wird sie irgendwann auch die Standard-Laufzeitumgebung für Python. Pläne bzgl. PHP sind mir nicht bekannt.
gut, ich schäme mich. Bleibt die Frage, was Perl denn wirklich mehr "kann" (nicht die syntaktischen Besonderheiten meine ich).
Die 'syntaktischen Besonderheiten' sind doch gerade das entscheidende Merkmal einer Programmiersprache: Alle Turing-vollständigen Sprachen sind grundsätzlich gleichwertig!
Darüber hinaus gibt es eine Vielzahl weiterer Klassifizierungsmöglichkeiten, z.B.
Geschwindigkeit: PHP < Java < C
Verfügbarkeit von Bibliotheken: JavaScript < PHP < Perl
Hardwarenähe: ASM < C < Java
Abstraktionsgrad: ASM < PHP < Lisp
...
Christoph
Hellihello Christoph,
Die 'syntaktischen Besonderheiten' sind doch gerade das entscheidende Merkmal einer Programmiersprache: Alle Turing-vollständigen Sprachen sind grundsätzlich gleichwertig!
"Turing-Vollständigkeit bezeichnet in der Berechenbarkeitstheorie die Eigenschaft einer Programmiersprache oder eines anderen logischen Systems, sämtliche Funktionen berechnen zu können, die eine universelle Turingmaschine berechnen kann. "
Ist also eine Aussage, was die grundsätzliche Rechenfähigkeit angeht, oder? Nicht aber, was das herstellen eines/r Sockets/verbindung oder das Forken eines Prozesses angeht?
Darüber hinaus gibt es eine Vielzahl weiterer Klassifizierungsmöglichkeiten, z.B.
Geschwindigkeit: PHP < Java < C
(PHP=Perl=Python) < (Java = ASP) < (C = C++ = ASM) ?
Verfügbarkeit von Bibliotheken: JavaScript < PHP < Perl
Trotz Pear und den bereits zu Hauf verfügbaren Funktionen? Sind sie (PHP und Perl) in Unterbereichen gleichstark? Mir ist scheints noch nicht die Motivation für die Erfindung von PHP klar. Perl wurde erfunden, weil es sowas noch nicht gab. PHP wurde erfunden, obwohl es Perl schon gab. Hinkt der Vergleich sehr, wenn ich sage, PHP ist wie ein kleineres schweizer Taschenmesser, dass eben weniger Funktionen hat, dafür aber leichter inder Hosentasche zu tragen ist. In den Funktionen, die es hat, ists mit dem großen aber ident?
Hardwarenähe: ASM < C < Java
Abstraktionsgrad: ASM < PHP < Lisp
Cool, wird Lisp nicht für KI verwandt? Abstraktionsgrad will heißen, dass noch mehr Funktionalität in einzelnen Funktionen gebündelt ist? Smalltalk, findet das dort auch seinen Platz?
Dank und Gruß,
Moin.
"Turing-Vollständigkeit bezeichnet [...]
Ist also eine Aussage, was die grundsätzliche Rechenfähigkeit angeht, oder? Nicht aber, was das herstellen eines/r Sockets/verbindung oder das Forken eines Prozesses angeht?
Richtig. Aber die Fähigkeit 'Socket-Erstellung' ist keine Eigenschaft der Programmiersprache, sondern der Laufzeitumgebung. Skriptsprachen sind beispielsweise sehr stark an die Fähigkeiten gebunden, die ihnen die Laufzeitumgebung bereitstellt; möchte man hier Funktionalität hinzufügen, muss diese erweitert werden, was im Fall von PHP wohl eine Neukompilierung des Interpreters erfordert(?).
Die Frage, die du hast, lautet also eigentlich: Wieviel Funktionalität stellt mir die Laufzeitumgebung der Sprache bereit, und wie einfach ist es, neue Funktionalität hinzuzufügen?
Im Fall von PHP ist die Laufzeitumgebung der Interpreter. Möchte man hier zusätzliche Funktionalität, muss dieser neu kompilert werden.
Im Fall von Java ist die JVM die Laufzeitunmgebung, Erweiterungen sind durch JNI möglich.
C unterscheidet sich davon nicht grundsätzlich: Die Laufzeitumgebung ist hier das Betriebssystem zusammen mit den verwendeten Bibliotheken.
Geschwindigkeit: PHP < Java < C
(PHP=Perl=Python) < (Java = ASP) < (C = C++ = ASM) ?
Zumindest, was die Größenordnung betrifft...
Verfügbarkeit von Bibliotheken: JavaScript < PHP < Perl
Trotz Pear und den bereits zu Hauf verfügbaren Funktionen?
Dazu musst du jemanden befragen, der sich mit CPAN und PEAR besser auskennt - ich weiß nur vom Hörensagen, dass CPAN einfach SEHR unfangreich sein soll...
Mir ist scheints noch nicht die Motivation für die Erfindung von PHP klar.
Filt dir Wikipedia weiter?
Hinkt der Vergleich sehr, wenn ich sage, PHP ist wie ein kleineres schweizer Taschenmesser, dass eben weniger Funktionen hat, dafür aber leichter inder Hosentasche zu tragen ist. In den Funktionen, die es hat, ists mit dem großen aber ident?
Hardwarenähe: ASM < C < Java
ups - damit das konsistent mit meinen anderen Aussagen ist, müssten die < eigentlich > sein ;)
Abstraktionsgrad: ASM < PHP < Lisp
Abstraktionsgrad will heißen, dass noch mehr Funktionalität in einzelnen Funktionen gebündelt ist? Smalltalk, findet das dort auch seinen Platz?
Damit wollte ich irgendwie Ausdrücken, wie 'high level' eine Sprache ist. Das betrifft dann Dinge wie Typisierung, Bindung von Bezeichnern, verzögerte Evaluierung, Erweiterbarkeit der Sprache.
Lisp ist konzeptionell eine sehr elegante Sprache, die Dank Lisp-Makros den Syntax-Baum (AST) des Programms modifizieren kann und es damit erlaubt, die Sprache in dieser selbst zu erweitern.
Smalltalk ist zwar eine rein objektorientierte Sprache, bietet aber ähnliche Möglichkeiten.
Christoph
Eine kleine Idee zum Antwort-Formular:
Ich bin jemand, der gerne an seinen Nachrichten feilt und im Zuge dessen mehrfach die Vorschau bemüht.
Jetzt ist es mir manchmal fast und dieses Mal wirklich passiert, dass ich eigentlich am Umschreiben der Nachricht war, diese aber versehentlich abgeschickt habe (war hier nicht so gravierend, da das, was nun zu lesen ist, ja immernoch hinreichend Sinn ergibt).
Wie wäre es also statt der Checkbox mit einem zusätzlichen Submit-Button 'Vorschau generieren'? Ich denke, das würde zumindest mir helfen, solche 'Unfälle' zu vermeiden, da es einfacher ist, einen weiteren großen Button zu klicken, als daran zu denken, in so einer winzigen Box ein Häkchen zu setzen.
Außerdem spart man sogar einen Klick, und faul wie ich bin...
Christoph
Hallo Christoph,
Ich bin jemand, der gerne an seinen Nachrichten feilt und im Zuge dessen mehrfach die Vorschau bemüht.
ich auch.
Wie wäre es also statt der Checkbox mit einem zusätzlichen Submit-Button 'Vorschau generieren'?
Äh, Checkbox?? Ich sehe drei getrennte Submit-Buttons:
So long,
Martin
Hellihello Christoph,
mMn kannst Du das in den Benutzereinstellung regeln. Ich habe einen Button.
Dank und Gruß,
echo $begrüßung;
Wie wäre es also statt der Checkbox mit einem zusätzlichen Submit-Button 'Vorschau generieren'? Ich denke, das würde zumindest mir helfen, solche 'Unfälle' zu vermeiden, da es einfacher ist, einen weiteren großen Button zu klicken, als daran zu denken, in so einer winzigen Box ein Häkchen zu setzen.
Diese und noch mehr Funktionalität kann man sich individuell einstellen. Man muss sich dazu nur jedes Mal gegenüber dem Forum wiederzuerkennen geben. Die einfachste Möglichkeit solch einer Wiedererkennung ist wohl immer noch die Registrierung einer eindeutigen Anwenderkennung.
echo "$verabschiedung $name";
Hellihello Christoph,
Die Frage, die du hast, lautet also eigentlich: Wieviel Funktionalität stellt mir die Laufzeitumgebung der Sprache bereit, und wie einfach ist es, neue Funktionalität hinzuzufügen?
Gut, wenn alles einkompiliert ist, gibts dann was, was PHP nicht kann an Funktionalität, was aber Perl kann?
Im Fall von PHP ist die Laufzeitumgebung der Interpreter. Möchte man hier zusätzliche Funktionalität, muss dieser neu kompilert werden.
Filt dir Wikipedia weiter?
Filten? Nun: Rasmus Lerdorf sitzt in Grönland. Er kann Perl. Er hat sogar ein Satz Perl Scripts, die ihm eine Aufgabe erledigen, nämlich seine persönliche Homepage zu warten. Er will sein "resume displayen" - was auch immer das heißen mag - und will unter anderem den Traffic auswerten. Also Logfiles. Genau dafür aber erfand Larry Wall Perl. Hm. Und weils so schön ist, macht Lerdorf noch einen Formularinterpreter dazu. Etwas, was in Perl vor 12 Jahren noch nicht verfügbar war?
Jetzt kommen zwei Jahre später aber Zeev Suraski und Andi Gutmans aus Israel und entwickeln Lerdorfs parser weiter. Die kannten bestimmt auch Perl. Warum machten die das? Irgendwas muss ihnen doch im Grunde an Perl zuviel oder zuwenig gewesen sein.
Dank und Gruß,
echo $begrüßung;
Nun: Rasmus Lerdorf sitzt in Grönland. Er kann Perl. Er hat sogar ein Satz Perl Scripts, die ihm eine Aufgabe erledigen, nämlich seine persönliche Homepage zu warten. Er will sein "resume displayen" - was auch immer das heißen mag - und will unter anderem den Traffic auswerten. Also Logfiles. Genau dafür aber erfand Larry Wall Perl. Hm. Und weils so schön ist, macht Lerdorf noch einen Formularinterpreter dazu. Etwas, was in Perl vor 12 Jahren noch nicht verfügbar war?
Perl ist ein Universalwerkzeug. Eine Möglichkeit ist der Webkram. Dazu muss man sich aber mindestens das CGI-Modul einbinden und sich um seine komplette Ausgabe inklusive Header selbst kümmern. (Wenn das nicht ganz richtig ist, liegt das daran, dass ich Perl nicht weiter kenne). In PHP reicht <?php mitten im HTML-Code und schon kann man loslegen und beispielsweise direkt auf $_GET/$_POST zugreifen (und früher als PHP erfunden wurde sowie später als register_globals noch eingeschaltet war auf einfache Variablen.)
Jetzt kommen zwei Jahre später aber Zeev Suraski und Andi Gutmans aus Israel und entwickeln Lerdorfs parser weiter. Die kannten bestimmt auch Perl. Warum machten die das? Irgendwas muss ihnen doch im Grunde an Perl zuviel oder zuwenig gewesen sein.
Das einfache Loslegen, ohne sich im Header kümmern zu müssen. Template-Maschine braucht man auch nicht, weil PHP schon eine ist. Und dass es nicht so viele kryptische Abkürzungen hat, macht es gegenüber Perl verständlicher für Einsteiger.
echo "$verabschiedung $name";
Hallo,
Java wird in der Regel 'just in time' - d.h. zur Laufzeit - kompiliert und ermöglich so Optimierungen, die bei statischer Kompilierung unmöglich sind. Daher _kann_ Java in Grenzfällen sogar schneller als C sein.
Erm, Java wird grundsätzlich erstmal in Bytecode übersetzt und ist somit bereits vor der Laufzeit fertig für die VM kompiliert. Was Java "just in time" macht ist es Klassen zu laden, was das ganze eher langsamer macht, als schneller, aber wohl etwas Speichereffizienter ist, falls eine Klasse doch mal nicht gebraucht wird. Aber dagegen wirkt der Effekt, dass OO Programmierung sowieso grundsätzlich mehr Speicher braucht.
Um ein Gefühl dafür zu entwickeln, habe ich mal ausprobiert, wie viel Speicher ich in Java und in C in 10 Millisekunden kopieren kann. In Java kam ich auf etwa 8 MB, in C ist mir der zugewiesene Speicherplatz ausgegangen, bevor die 10 Millisekunden rum waren. Java ist schnecken langsam im Vergleich zu C. Das einzige, wofür Java wirklich gut ist, dass es eine schön saubere Syntax hat und man damit mit den entsprechenden Tools (z.B. Eclipse) unglaublich schnell und agil entwickeln kann. Du kannst quasi schon per drag and drop deinen Code strukturieren bzw. refakturieren und per Autovervollständigung steht die Syntax ratz fatz auf dem Bildschirm. Aber gerade wegen der unglaublichen Lahmarschigkeit hat sich Java nie als eine Sprache für Anwendungen durchgesetzt, oder habt ihr schon mal eine befriedigend schnelle Swing Oberfläche gesehen?
Ich behaupte sogar, dass Perl und PHP schneller laufen, als Java. Es sind interpretierte Sprachen, d.h. sie werden bei jeder Ausführung erstmal übersetzt, aber dann laufen sie in Form von Maschinencode ab und das ist schnell, anstatt in einer lahmarschigen VM verpackt zu sein. Diese Behauptung kann ich allerdings nicht mit einem Test untermauern.
Ich finde was der Welt noch fehlt ist eine Programmiersprache, die so schön ist wie Java, aber direkt in Maschinencode kompiliert wird, damit es trotzdem schnell läuft, und natürlich nicht nur auf Betriebssystemen von Microsoft lauffähig ist.
Gruß,
Cruz
Yerf!
Erm, Java wird grundsätzlich erstmal in Bytecode übersetzt und ist somit bereits vor der Laufzeit fertig für die VM kompiliert. Was Java "just in time" macht ist es Klassen zu laden, was das ganze eher langsamer macht, als schneller, aber wohl etwas Speichereffizienter ist, falls eine Klasse doch mal nicht gebraucht wird.
Java compiliert Just-In-Time in Maschinencode... Der Bytecode ist nur ein Zwischenprodukt um Plattformunabhängig zu sein und trotzdem besser dazustehen als mit reinem Quellcode.
Aber dagegen wirkt der Effekt, dass OO Programmierung sowieso grundsätzlich mehr Speicher braucht.
Ein Problem aller OO-Sprachen, auch C++
Um ein Gefühl dafür zu entwickeln, habe ich mal ausprobiert, wie viel Speicher ich in Java und in C in 10 Millisekunden kopieren kann. In Java kam ich auf etwa 8 MB, in C ist mir der zugewiesene Speicherplatz ausgegangen, bevor die 10 Millisekunden rum waren. Java ist schnecken langsam im Vergleich zu C.
In diesem einen Speziellen Fall... Wie oft muss einen *normale* Applikation denn einfach nur Speicher durch die Gegend schaufeln?
Das einzige, wofür Java wirklich gut ist, dass es eine schön saubere Syntax hat und man damit mit den entsprechenden Tools (z.B. Eclipse) unglaublich schnell und agil entwickeln kann. Du kannst quasi schon per drag and drop deinen Code strukturieren bzw. refakturieren und per Autovervollständigung steht die Syntax ratz fatz auf dem Bildschirm.
Die Sprache mit ihrer Syntax find ich alleridngs auch recht nett... da vermisse ich einiges davon in anderen Sprachen.
Aber gerade wegen der unglaublichen Lahmarschigkeit hat sich Java nie als eine Sprache für Anwendungen durchgesetzt, oder habt ihr schon mal eine befriedigend schnelle Swing Oberfläche gesehen?
Hast du schon mal nen schnellen trabi gesehen? ...also sind alle Autos langsam, oder? Swing ist (leider) ein ganz schlechtes Beispiel, es gibt wesentlich bessere UI-Bibliotheken. (es gibt sogar Grafik-Demos in Java, z.B. von Digital Nerds, hab blos grad keinen Link)
Ich behaupte sogar, dass Perl und PHP schneller laufen, als Java. Es sind interpretierte Sprachen, d.h. sie werden bei jeder Ausführung erstmal übersetzt, aber dann laufen sie in Form von Maschinencode ab und das ist schnell, anstatt in einer lahmarschigen VM verpackt zu sein. Diese Behauptung kann ich allerdings nicht mit einem Test untermauern.
Ähm... Hallo? Das was du hier beschreibst ist JIT (Just in Time compiling) und das hat Java schon lange... und Perl6 soll mit einer eigenen VM daherkommen... wie es mit PHP und so aussieht, ob die vorher wirklich compilieren weis ich nicht, aber eigentlich werden die unter Interpretersprachen geführt, das spricht eigentlich dagegen...
Ich finde was der Welt noch fehlt ist eine Programmiersprache, die so schön ist wie Java, aber direkt in Maschinencode kompiliert wird, damit es trotzdem schnell läuft, und natürlich nicht nur auf Betriebssystemen von Microsoft lauffähig ist.
Es gibt auch Java-Compiler, weis aber nicht wie gut die sind.
Gruß,
Harlequin
Voghdzuyin!
Ich finde was der Welt noch fehlt ist eine Programmiersprache, die so schön ist wie Java, aber direkt in Maschinencode kompiliert wird, damit es trotzdem schnell läuft, und natürlich nicht nur auf Betriebssystemen von Microsoft lauffähig ist.
D ist ein IMHO vielversprechender Ansatz. Es gibt zwar auch die aus C bekannten Zeiger und im Gegensatz zu Java durchaus auch die Möglichkeit, sich vor OO zu drücken, aber die mußt Du ja nicht benutzen. ;-)
Viele Grüße vom Længlich
Hallo Cruz,
Erm, Java wird grundsätzlich erstmal in Bytecode übersetzt und ist somit bereits vor der Laufzeit fertig für die VM kompiliert.
richtig.
Was Java "just in time" macht ist es Klassen zu laden, was das ganze eher langsamer macht, als schneller, aber wohl etwas Speichereffizienter ist, falls eine Klasse doch mal nicht gebraucht wird.
Richtig ist, dass Klassen geladen werden, wenn sie gebraucht werden. Wenn man will, kann man sofortiges Laden natürlich erzwingen. Schneller dürfte das aber kaum etwas machen, es ist ja im Grund ziemlich egal, wann man die benötigte Zeit aufbringt und in einem parallelen Programm könnte es effektiv sogar schneller werden, weil man ja noch andere Dinge nebenher tun kann, während man für irgend etwas anderes Klassen läd.
Falsch ist allerdings, dass Java sonst nichts "just in time" machen würde. Der Java-Bytecode wird nicht bzw nur teilweise interpretiert, sondern zur Laufzeit in Maschinencode übersetzt.
Um ein Gefühl dafür zu entwickeln, habe ich mal ausprobiert, wie viel Speicher ich in Java und in C in 10 Millisekunden kopieren kann.
In Java gibt es keinen direkten Speicherzugriff, wie hast Du das also getestet? Möchtest Du nicht Deinen Code hier posten?
Java ist schnecken langsam im Vergleich zu C.
Java ist nicht langsam, aber sicher langsamer als C (oder wohl auch C++), wenn man in diesen Sprachen den entsprechenden Aufwand investiert, um schneller zu sein. Bei größeren Programmen ist das nicht mehr so einfach und auch der (organisatorische) Aufwand, der für das Speichermanagement betrieben werden muss, steigt deutlich. Da ist C/C++ dann nicht mehr so einfach schneller. Java ist ziemlich gut darin, gerade stark objektorientierte Programme effizient auszuführen.
Aber gerade wegen der unglaublichen Lahmarschigkeit hat sich Java nie als eine Sprache für Anwendungen durchgesetzt
An der Theorie habe ich starke zweifel. Das dürfte eher mit der Verbreitung auf Deskopsystemen und den damit entstehenden Deploymentschwierigkeiten bei Desktopanwendungen zusammenhängen. Anwendungen mit irgend welchem MS-VB-Kram zu schreiben, war da für viele Firmen einfacher. Vor allem, da Plattformabhängigkeit oft kein Argument ist bzw. höchstens allmählich wird.
oder habt ihr schon mal eine befriedigend schnelle Swing Oberfläche gesehen?
Ja.
Ich behaupte sogar, dass Perl und PHP schneller laufen, als Java. Es sind interpretierte Sprachen, d.h. sie werden bei jeder Ausführung erstmal übersetzt, aber dann laufen sie in Form von Maschinencode ab
Falsch, da eiert ein Interpreter auf einem Syntaxbaum oder einem Zwischencode rum und das war's. Perl hat einen Refcounting-Garbage-Collector. Das ist weit hinter dem, was Java auf dem Gebiet bieten kann. Bei PHP weiß ich es nicht genau, toll wird der GC da auch nicht sein.
Ich finde was der Welt noch fehlt ist eine Programmiersprache, die so schön ist wie Java, aber direkt in Maschinencode kompiliert wird, damit es trotzdem schnell läuft.
Viele der dynamischen Eigenschaften von Java lassen sich damit nicht erreichen, am Speicherverbrauch (wie dramatisch man den nun im Vergleich zu C++ auch einschätzt) würde das ebenfalls nichts ändern. Außerdem würden typische Javaprogramme dabei wahrscheinlich auch noch langsamer (jedenfalls welche, die nicht nur recht kurz laufen), weil manche entscheidende Optimierung statisch gar nicht funktioniert.
Um diese Art der Programmierung für noch mehr Anwendungsbereiche geeignet zu machen (Echtzeitsysteme sind da z.B. noch wenig erschlossen), muss man schon JIT-Compiler und GCs weiter verbessern.
Grüße
Daniel
Hallo frankx,
in Sascha Kerskens Apache Buch las ich gestern, dass die Apache Software Foundation zahlreiche Projekte betreibt. Davon hängen eine Menge irgendwie mit Java zusammen. Was für eine Rolle spielt Java denn in der Webprogrammierung?
Java dürfte gerade bei Webanwendungen im Bereich großer Projekte und vor allem auch Industrieprojekte eine weit aus größere Bedeutung haben, als PHP oder Perl. Für kleinere/private Websites, die mit vielen anderen auf einem Server liegen, eignet sich Java nicht besonders, weil da die benötigte Infrastruktur auf dem Server zu aufwendig ist und die meisten Kunden das ohnehin nicht benötigen.
Von dieser Bedeutung her dürfte auch die große Anzahl der ASF-Java-Projekte rühren (Das geht bis zu dem Versuch, eine eigene JVM zu entwickeln).
Über die Aussage bezüglich des Entwicklungsaufwands von Java-Anwendungen im vergleich zu PHP oder Perl kann man übrigens trefflich streiten. Ich würde annehmen, dass Java bei größeren Projekten da durchaus auch etliche vorteile bieten und so ein einfaches Servlet ist auch nicht wirklich komplizierter, als ein Perl- oder PHP-Script.
Allerdings weißen Java-Awendungen durch diverse Frameworks, J2EE und anderen Kram oft eine hohe Komplexität auf mit der man sich auch gut in den Fuß schießen kann, wenn sie unzweckmäßig ist oder man sie einfach nicht mehr versteht ;-)
Grüße
Daniel