Java Programm als Dienst unter Linux Debian ausführen

Ich wusste es jetzt nicht. Teilweise hat es ausgesehen als würdest du zustimmen, teilweise aber auch als wäre es ironisch gemeint. :)

MFG

Sascha
 
> Das ist nicht nur meistens so, sondern immer. ;)

Nanana... ich kann das auch im Quelltext ausliefern und trotzdem laufen lassen.

> Von einer interpretierten Programmiersprache ist Java allerdings auch ziemlich weit
> entfernt. Der Sourcecode wird ja durchaus in eine Art von Maschinencode kompiliert, der
> lediglich auf einer virtuellen CPU (in Form der VM) ausgeführt wird.

Ich verwendete das Wort "interpretiert" mit Bedacht. Die VM ist keine echte Maschiene und läuft "nur" auf dem OS, muss also die Befehle des Bytecodes noch in Systembefehle bzw direkte Maschinenbefehle umsetzen. Von daher kann es nicht schneller als nativer Maschinencode sein -- sofern letzterer ebenso effizient programmiert ist.

> Und weil Java bis zu 10 Mal langsamer ist als C oder C++ und nicht als Daemon laufen
> sollte, wird es auch überhaupt nicht im Webserver-Bereich eingesetzt.

Java wird im Webserverbereich eingesetzt weil es ersteinmal eine relativ einfache Sprache ist und sie auch auf andere Systeme portierbar ist. Es ging nie um echte Effizienz, denn sonst würde Java nicht mit PHP oder anderen Sprachen in diesem Bereich konkurrieren.

> Da irrst du dich leider. Auch wenn es ByteCode ist. Schon mal was vom Just in
> Time-Compiler gehört?

s.o.

> Java ist in den meisten Operationen schneller als C/C++. Es gibt kaum was bei dem
> Java noch langsamer ist. :)

Dann zeig mir mal bitte einen objektiven Vergleich. Ich will jetzt keinen Streit anfangen, aber in allen bisherigen Artikeln die einen vermeintlichen Geschwindigkeitsvorteil von Java gegenüber C propagandiert haben wurde das entsprechende Programm in C nicht optimiert (so wurde auf Biegen und Brechen OOP verwendet um Datentypen zu schaffen anstatt sie mit schnellen und schlanken Zeigeroperationen zu implementieren)

> Kannst du mir glauben. Bin nicht umsonst seit 3 Jahren Java-Entwickler. Tom wird die
> das auch bestätigen. :)

Ich bin auch in der Entwicklung tätig und nutzte mehrere Sprachen. Ich mag Java ob seiner klaren Strukturen und der Übersichtlichkeit, bei Programmen die jedoch auf Performance ausgelegt sind, verwende ich lieber C.

> Auch, wenn die VM läuft, in größeren Anwendungen ist das nebensächlich. Wenn man
> natürlich eine sehr kleine Anwendung schreiben möchte, die kaum Speicher verbraucht,
> dann ist das natürlich schlecht. Da gebe ich dir recht.

Mhmm... ich habe noch kein großes Projekt gesehen welches performant laufen soll und in Java geschrieben ist. Keine Serveranwendungen, keine Datenbanken, keine Spiele und sontwas... und das wird wohl seinen Grund haben.

> Ich habe ja nicht gesagt, dass es richtig wäre einen Dienst in Java zu schreiben. Wollte > nur mal den allgemeinen Irrtum korrigieren. ;-)

Welchen meinst Du?
 
Hi,

ich kann das auch im Quelltext ausliefern und trotzdem laufen lassen.
ist mir neu. Allerdings hab ich auch eine ganze Weile nichts größeres mehr mit Java gemacht.

Ich verwendete das Wort "interpretiert" mit Bedacht. Die VM ist keine echte Maschiene und läuft "nur" auf dem OS, muss also die Befehle des Bytecodes noch in Systembefehle bzw direkte Maschinenbefehle umsetzen.
Ich war früher auch mal der Meinung, dass Java "interpretiert" wird und weiß, was du meinst. Aber nach einer Diskussion hat mich Chris damals eines besseren belehrt.

Java wird im Webserverbereich eingesetzt weil es ersteinmal eine relativ einfache Sprache ist und sie auch auf andere Systeme portierbar ist.
Das war ironisch gemeint. Ich weiß, dass es Tomcat, Struts, Servlets, Web Services, usw. gibt.

Es ging nie um echte Effizienz, denn sonst würde Java nicht mit PHP oder anderen Sprachen in diesem Bereich konkurrieren.
Java ist aber um Längen schneller als PHP, weil ein Servlet oder ein JSP nur beim ersten Aufruf kompiliert werden muss und danach eben direkt von der VM verarbeitet werden kann - wohingegen PHP tatsächlich bei jedem Aufruf zeilenweise interpretiert wird.

Ich bin auch in der Entwicklung tätig und nutzte mehrere Sprachen. Ich mag Java ob seiner klaren Strukturen und der Übersichtlichkeit, bei Programmen die jedoch auf Performance ausgelegt sind, verwende ich lieber C.
Natürlich kann Java-Bytecode niemals schneller sein als nativer Maschinencode, das ist richtig. Aber es hat sich in puncto Performance in den letzten Jahren doch einiges auf der Java-Seite getan. Und wenn es wirklich um zeitkritische Dinge geht, ist selbst C noch zu lahmarschig, weil jeder Compiler und Linker unnützes Zeug mit in den Maschinencode rein "optimiert". Dann lieber Assembler. ;)

Mhmm... ich habe noch kein großes Projekt gesehen welches performant laufen soll und in Java geschrieben ist. Keine Serveranwendungen, keine Datenbanken, keine Spiele und sontwas...
Ich weiß nicht, wie umfangreich diese Dinge sind, weil ich den Sourcecode nicht kenne, aber... spontan fallen mir Webseiten wie die vom DENIC, von SUN :eek: und von Siemens ein. Auf der Desktop-Seite Eclipse (ja, wirklich :D) und wenn mich nicht alles täuscht, ist OpenOffice.org auch in Java geschrieben. Davon kriegt man als Anwender natürlich nicht so viel von mit.

Grüße, D.
 
Zuletzt bearbeitet:
Den Irrtum das Java langsamer ist.

C/C++ wird meistens genommen wenn es um Performance geht. Wenn man richtig programmiert, kann man das meiste auch in Java machen.

Schau mal hier
http://www.tutorials.de/forum/coders-talk/289122-beste-sprache-fuer-anwendungen-3.html

Da gab es schon mal eine ähnliche Diskussion. Da hab ich einfach mal ein kleines Beispiel geschrieben. In C und in Java.

Wenn man natürlich die fertigen Klassen von Java verwendet (z.b. Vector) und das mit etwas selbstgeschriebenen in C vergleicht. Ist Java natürlich langsamer. Der Verwaltungsaufwand bei VEctor ist enorm, wenn man es mit etwas selbstgeschriebenen in C vergleicht. Schreibt man aber beides selbst, dann sieht das ganze schon anders aus. :)


MFG

Sascha
 
Java ist aber um Längen schneller als PHP, weil ein Servlet oder ein JSP nur beim ersten Aufruf kompiliert werden muss und danach eben direkt von der VM verarbeitet werden kann - wohingegen PHP tatsächlich bei jedem Aufruf zeilenweise interpretiert wird.

Ich mische mich nicht in Eure Diskussion ein, nur eine kleine Erinnerung/ein Hinweis:

eAccelerator/Zend Optimizer
Diese Anwendungen Cachen den erzeugten Bytecode, so das nicht zwangsläufig jedes mal das Script komplett abgearbeitet werden muss.
Ohne so eine Technologie - da stimme ich zu - wird PHP wirklich zweilenweise interpretiert.
 
> Den Irrtum das Java langsamer ist.

Das ist kein Irrtum.

> C/C++ wird meistens genommen wenn es um Performance geht. Wenn man richtig
> programmiert, kann man das meiste auch in Java machen.

Jain. Wenn man C *richtig* nutzt wird jedes erstellte Programm schneller laufen als unter Java, denn die Optimierungen der jetzigen Compiler sind derart stark, dass der Maschinencode überaus effizient ist.

>Schau mal hier [...]

Hab ich gelesen, den Link auch. Es gab keine Beweise dafür, dass Java schneller ist, nur Behauptungen und ein Gegendarstellung.

> Da gab es schon mal eine ähnliche Diskussion. Da hab ich einfach mal ein kleines
> Beispiel geschrieben. In C und in Java.
> Wenn man natürlich die fertigen Klassen von Java verwendet (z.b. Vector) und das mit
> etwas selbstgeschriebenen in C vergleicht. Ist Java natürlich langsamer. Der
> Verwaltungsaufwand bei VEctor ist enorm, wenn man es mit etwas selbstgeschriebenen
> in C vergleicht. Schreibt man aber beides selbst, dann sieht das ganze schon anders
> aus. :)

Kann ich nicht nachvollziehen. Schreib einfach mal ein Programm welches einen Baum mit n Elementen natürlicher Zahlen (n > 10000) erstellt, diesen dann traversiert und die Ergebnisse summiert. Das versuche so effizient wie möglich mit beiden Sprachen zu implementieren (vermeide z.B. Rekursion, nutze Pointer wenn vorhanden, etc) und Du wirst sehen, dass 1. Java viel mehr Speicher braucht und 2. C schneller traversiert.

Java ist im Laufe der Zeit tatsächlich schneller geworden, reine Server/Dienste unter Linux würde ich damit trotzdem nicht implementieren, da ich dazu ja auch (fast) immer die Java-VM bräuchte...
 
Hallo,

dann schau mal hier
http://www.w3sys.com/pages.meta/benchmarks.html

Die Server-VM (in dem JRE mit dabei) ist in fast allen Tests schneller als C++. Das ist noch das alte JDK. Mittlerweile gibt es 2 neuere Versionen.
Zählt das als Beweis?

Es ist wirklich so, dass Java bei vielen Sachen mittlerweile schneller ist als c/c++.


Vielleicht solltest du es einfach mal ausprobieren und selbst mal ein Programm schreiben und vergleichen.

Du brauchst auch nicht immer eine JVM, du kannst dir auch einen Java Native Compiler nehmen, dann brauchst du keine JVM. :)


Jain. Wenn man C *richtig* nutzt wird jedes erstellte Programm schneller laufen als unter Java, denn die Optimierungen der jetzigen Compiler sind derart stark, dass der Maschinencode überaus effizient ist.

Der HotSpot von Sun wird der Code immer besser optimiert, je öfter er ausgeführt wird. Die Optimierung ist in dem Fall besser als bei einem Native Compiler.

Kann ich nicht nachvollziehen. Schreib einfach mal ein Programm welches einen Baum mit n Elementen natürlicher Zahlen (n > 10000) erstellt, diesen dann traversiert und die Ergebnisse summiert. Das versuche so effizient wie möglich mit beiden Sprachen zu implementieren (vermeide z.B. Rekursion, nutze Pointer wenn vorhanden, etc) und Du wirst sehen, dass 1. Java viel mehr Speicher braucht und 2. C schneller traversiert.
Da ich es nicht probiert hab, kann ich nicht sagen, welche Sprache da schneller ist. Aber hab ich gesagt, dass Java in allem schneller ist? Ich hab gesagt, bei vielen Sachen. Es gibt aber noch durchaus Aufgaben die C/C++ schneller erledigt.
Das Java mehr Speicher braucht ist ja auch klar. Die JVM muss ja auch in den Speicher.

MFG

Sascha
 
Zuletzt bearbeitet:
dann schau mal hier
http://www.w3sys.com/pages.meta/benchmarks.html

Die Server-VM (in dem JRE mit dabei) ist in fast allen Tests schneller als C++. Das ist noch das alte JDK. Mittlerweile gibt es 2 neuere Versionen.
Zählt das als Beweis?

Ähmm, was hast Du da bitte gelesen? Den ersten Absatz?
Lies mal bis zum Schluss. Es handelt sich um einen Text der einen angeblich "objektiven" Test zugunsten von JAVA widerlegen soll :)

Nachdem er den Testcode in C++ etwas korrigiert hatte kommt er zum schluss:

This code is twice as fast. In the context of the orginal kano test results would yield:
9 seconds for C++
26 seconds for Java -s

C++ is well over twice as fast as Java -s.

As a parting shot, while researching whether the JVM was in or out of process, which would nail down the bogus user metric, I came apon this FAQ. These are questions by real developers, trying to use Java. Note the disatisfying responses! This is why C++ is so important. The paradigm trusts the developer to be a professional and program competently. C++ allows you to get to the bottom of any problems.

Nochmal: ich mische mich nicht in den Streit ein, ich lese ihn nur interessiert :)
 
Hast du auch genau gelesen um was es in dem Text geht? Da geht es nur um Hash. :)

Die Zeile ist auch in der Tabelle markiert.

MFG

Sascha
 
Hast du auch genau gelesen um was es in dem Text geht? Da geht es nur um Hash. :)

Die Zeile ist auch in der Tabelle markiert.

Bitte lies den Text genauer: Die Tabelle ist das Beispiel von der anderen Testseite. Darunter schreibt er das nicht realtime genommen wurde sondern die usertime. Es ist ein Text der einen anderen widerlegen soll. Die Tabelle belegt Deine Aussage - wenn man sie aus dem Kontext des Textes dieser Seite nimmt - im Kontext widerlegt es Deine Aussage.

Puh... schweres Deutsch =)
 

Neue Beiträge

Zurück