Ist es nicht, wie hier schon verschiedentlich dargelegt.
Betriebssystem unabhängige Programme
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
|
Anmeldungsdatum: Beiträge: 192 |
quake2 in Java läuft gleich schnell wie quake2 in C++. Wer das nicht glaubt, soll bitteschön selbst einen Benchmark machen: http://www.bytonic.de/html/jake2.html Ich sehe trotzdem keinen Platz in der Gameindustrie für Java, sehr angenehm soll 3D-Programmierung in Java nicht sein... |
Anmeldungsdatum: Beiträge: 28 |
Das das heutzutage Allgemein falsch ist wurde hier schon erwähnt!
Richtig und genau deswegen wird z.B. Java ja nicht direkt in Maschincode übersetzt, sondern zunächst in Bytecode gewandelt und dann von einer virtuellen Maschine ausgeführt, eben um die Hardwaredetails bzw. das Betriebssystem zu kapseln! |
Anmeldungsdatum: Beiträge: 329 Wohnort: Helmstedt |
Und täglich grüsst das Murmeltier \^^ Bezüglich Java und Spieleentwicklung: So jetzt zu meiner persönlichen Meinung über Java: Bei C/C++ muss man ordentlich Programmieren, damit einen die Software nicht andauernd mit Speicherzugriffsfehlern etc um die Ohren knallt. Ich muss gestehen ich bin bekennender C/C++ Anhänger und deshalb mag meine persönliche Meinung, bzw Erfahrungen da nicht ganz objektiv sein. Achja: Nochmal um auf Java und Spiele zurückzukommen: Ich hatte mal vor 2 Jahren oder so nen Bericht gesehen über ein kommerzielles Spiel, dass in Java programmiert wurde. War eine Rennsimulation, Formel 1, Indicar oder irgendsoetwas. Ist halt schon länger her, daher kann ich gerade keinen Link spendieren. |
Anmeldungsdatum: Beiträge: 28 |
D.h. deiner Meinung nach ist durchschnittliche in Java entwickelte Software schlechter als in C/C++ entwickelte Software!? Das halte ich nach meiner Erfahrung als Entwickler und Anwender allerdings für falsch. Außerdem kann man es doch Java nicht als Nachteil anlasten, dass auf fehleranfällige Konstrukte wie Pointer, Speicherallokation, ... verzichtet wird!
Genau! Deshalb bin ich der Meinug beide Mainstream-Sprachen haben durchaus ihre Daseinsberechtigung! |
Anmeldungsdatum: Beiträge: 724 Wohnort: Darmstadt |
spaceman hat geschrieben:
Nein. Nur langsamer. |
Anmeldungsdatum: Beiträge: 3777 |
Schade dass es immer noch so viele Leute hier gibt die irgendeinen Blödsinn über Java hier ablassen, obwohl sie nicht die grosse Ahnung davon haben. Ich masse mir an, Ahnung von Java zu haben, weil ich seit nun genau 10 Jahren damit hauptsächlich programmiere (davor schwerpunktmässig Pascal, C, Modula). Zuerst ist "Java" nicht nur eine Programmiersprache sondern ein ganzes System (Virtuale Machine, Programmiersprache mit sehr umfangreicher standard API, HotSpot Compiler (früher Interpreter), Diverse Entwicklungs- und Administrationstools). Wichtigstes Ziel von Java war und ist das Thema dieses Threads: platformunabhängige und damit auch betriebssystemunabhängige Programme zu schreiben. Java war lange Zeit deutlich langsamer als z.B. vorcompilierter Code in C - was daran lag, dass Java am Anfang auch nur zur Laufzeit interpretiert wurde. Später kamen noch Just-in-time Compiler hinzu, welche beim Start des Programmes den (Byte)Code in maschinencode übersetzten. Diese waren aber nicht so effektiv wie entsprechende C-Compiler. Inzwischen wurde der Interpreter komplett abgelöst durch sogenannte HotSpot compiler, welche den Bytecode zur Laufzeit untersucht und besonders laufzeitkritische Teile on-the-fly in maschinencode übersetzt. Und diese Laufzeitcompilierung kann auch noch wesentlich effizienter sein als eine Vorkompilierung wie bei Kompilersprachen wie C, da sie den Code optimal auf die Hardware übersetzen, auf der das Programm gerade läuft. Gutes Beispiel ist z.B. der Linux Kernel: da kann man mit Synaptic eine 386er Version, eine K7 Version, eine 686er Version, etc. runterladen und installiern. Und jede dieser Versionen ist natürlich nur bis zur größtmöglichen Kompatibilität dieser Architekturen optimiert. Ein Java Programm ist also nicht grundsätzlich langsamer als ein äquivalentes Programm in einer anderen Sprache geschieben, sondern kann sogar schneller als jedes andere dieser Programme sein. Dies zur Technik, denn natürlich gilt die zuvor schon gemachte Aussage, dass es hauptsächlich auf den Entwickler ankommt, wie effizient Code geschrieben wird. Das sehe ich auch schön an Projekten, bei denen ich beteiligt war. Da gibt es Java Projekte, die allen Java Kritikern ob der lahmen Geschwindigkeit recht geben. Aber da gibt es auch Applikationen, die so schnell sind, dass niemand damit rechnet, dass sie in Java geschrieben sind. Sicherlich muss man dabei noch unterscheiden zwischen GUI-Appliaktionen und solchen ohne. Inzwischen ist die platformunabhängige GUI API (Swing) schon so schnell geworden, dass i.d.R. ein flüssiges Arbeiten gewährleistet ist - ja, auch mit tausenden Datensätzen in grafischen Tabellen und riesigen grafischen Bäumen. Und auch in diesem Bereich wird sich die Geschwindigkeit noch weiter erhöhen mit Einzug einer durchgehenden OpenGL API. Letztlich ist Java ein Meilenstein für Software-Entwickler (man denke auch an das endlich entfernte Speicherhandling durch den Programmierer und die sehr kritischen Pointernomenklaturen von C) aber natürlich geht es weiter. Leider hat Microsoft mit C# nur einen müden proprietären Abklatsch geschaffen, anstatt noch einen Schritt weiter zu gehen. Aber dieser Schritt wird auch irgendwann kommen. Und solange gibt es viele unterschiedliche Programmiersprachen und -Systeme, solange jede seine Stärken hat. Also bitte objektiv bleiben - Danke! ☺ P.S.: wir haben gerade ein Konkurrenzsystem (in C geschrieben) in Java nachprogrammiert, welches neben zusätzlichen features und 4-mal sovielen (zusätzlichen) Ergebnisberechnungen mehr als 20 mal schneller läuft ... |
Anmeldungsdatum: Beiträge: 28 |
dentaku hat geschrieben:
Tja vermutlich werde diese von einigen "Experten" wirklich garnicht als in Java implementierte Programme erkannt, da sie vielleicht gemeinerweise nicht direkt durch ausführen eines jar-files, sondern durch ein exe oder ein Shellskript gestartet werden. Tja und wenn die Applikation dann auch noch entgegen ihren Vorurteilen verflucht schnell ist werden sie wohl nie darauf kommen, dass im Hintergrund die jvm fleißig und flink ihre Arbeit verrrichtet.😉 |
Anmeldungsdatum: Beiträge: 3396 Wohnort: Hermagor, Kärnten - Österreich |
spaceman hat geschrieben:
Sind sie aber nicht. |
Anmeldungsdatum: Beiträge: 377 |
Ich programmiere hauptsächlich mit Java. Ich habe bis jetzt noch nie einen Geschwindigkeitstest gemacht, was ich aber sicher sagen kann, ist das Swing langsamer ist als eine native Oberfläche. Es ist schon möglich, dass die VM das Programm vor der Ausführung noch optimiert, aber wer optimiert die VM. Es ist schliesslich die VM welche die Hardware und das OS kapselt. Somit ist das ganze eigentlich eine Emulation. Ich denke eine Emulation ist immer langsamer als ein natives Programm. Ich könnte mir vorstellen, dass es mit Java einfacher ist gute Programme zu schreiben als mit C/C++ weil einem die Sprache viel Arbeit abnimmt (Garbage-Collection). Ausserdem ist es immernoch so, dass dort wo es wirklich auf Speed ankommt oft C oder sogar Assembler verwendet wird. Was ich auch schon festgestellt habe ist, dass Java Programme lange brauchen um zu starten. Die meisten Java Programme, die ich kenne sind langsamer als vergleichbare Programme in anderen Programmiersprachen (Eclipse, Borland Together, LimeWire usw.). Ich bin in der Lage Java Programme von anderen Programmen zu unterscheiden, auch wenn diese nicht die typischen Klischees erfüllen. |
Anmeldungsdatum: Beiträge: 724 Wohnort: Darmstadt |
brot 547 hat geschrieben:
Sorry, dass ich diesen Thread ausgrabe, aber ich habe neulich an der Uni jemanden getroffen, der ebenfalls ueber jake2 zu Gunsten von JAVA argumentierte. Dabei habe ich mich gefragt, ob die JAVA-Implementierung auch auf einem 200er MMX mit 32mb RAM und einer Voodoo2-Karte spielbar laeuft? Das tat Quake2 damals naemlich. Es lief sogar auf einem Cyrix 120, 32mb und einer Voodoo1 und war dabei spielbar. |
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
Ein Linux mit X11 und 32 MB RAM wird schon schwierig, müßte aber mit einem hinreichend alten Linux (aus der Zeit also, als solche Rechner modern waren) funktionieren. Allgemein besteht ein Zielkonflikt zwischen Geschwindigkeit und Speicherverbrauch - man kann das eine oder das andere optimieren, aber nicht beides zugleich. |
Anmeldungsdatum: Beiträge: 90 Wohnort: Duisburg |
Nur mal so am Rande, C# ist kein Java-Abklatsch von Microsoft, das ist nämlich J#. Bye, |
Anmeldungsdatum: Beiträge: 17548 Wohnort: Berlin |
Gizmo hat geschrieben:
"Hello world" läuft bei mir in weniger als 100 ms. Auch wollte ich noch einwerfen, daß Java-Programme den Umstieg von Win auf Linux vereinfachen. |
Anmeldungsdatum: Beiträge: 377 |
HelloWorld habe ich schon lange nicht mehr probiert... Swing fühlt sich auch ein wenig harzig an. SWT (Eclipse) ist da schon einiges besser. |