Generell wird ja von den Java-Anhängern oft erzählt, dass zwar Java Clientseitig abstirbt, aber auf der Serverseite ganz stark sein soll.
Nun frage ich mich aber, warum das so sein soll?
Denn der große Vorteil von Java ist doch eigentlich die Plattformunabhängigkeit und nicht die große Geschwindigkeit.
Auf dem Server kommt es doch aber eigentlich gerade auf Geschwindigkeit an und die Plattformunabhängigkeit ist doch völlige Nebensache ?!?
Warum also ist Java im Serverbereich so stark?
Gibt es vielleicht viele gute und ausgereifte Bibliotheken, die frei und offen verfügbar sind?
Und/Oder liegt es einfach daran, dass es dank Unistandardsprache viele Javaprogrammierer gibt, die so einen leichteren Einstieg in die Serverwelt haben?
Benutzer wird von Ihnen ignoriert. Anzeigen
Die Performance von Java ist heut zu tage auf Server-Seite gar nicht so schlecht.
Jedoch gibt es bei Servern das Problem, das es dutzende Verschiedene Betriebssysteme/Derivate gibt, die alle so ihre Eigenheiten haben.
Da man nicht für jedes System den Sourcecode erst kompilieren will, ist es praktisch, das der selbe Code von Java auf jedem System auf dem es eine JVM gibt läuft. Es ist dabei egal ob OpenJDK, SunJDK/OracleJDK oder andere, rein theoretisch, sollte immer das gleiche raus kommen.
Hinzu kommt das der JiT von Java den Code zur Laufzeit besser optimieren kann als es der C++-Compiler zur Compile-Zeit kann. JIT ermittelt aus dem realen Anwendungsverhalten die best-mögliche Optimierung und wenn sich das Verhalten ändert, so kann er die Optimierung anpassen.
Des weiteren ist der Implementierungsaufwand bei java unter optimalen Bedingungen nicht so hoch, da man sich um die Speicherverwaltung nicht wirklich Gedanken machen muss (Ausnahmen bestätigen die Regel).
Worauf bei Java geachtet werden muss ist die Anpassung der GC-Parameter an die Anwendung sowie die Vergabe geeigneter Speicherparameter (Speichergenerationen).
Sind diese Parameter "optimal" so kann die Performance einer gut implementierten Java-Applikation die einer C++-Applikation erreichen, bzw. in machen Fällen sogar übersteigen.
Zudem ist eine sehr große Anzahl von Libs (egal ob OpenSource oder CloseSource) im Netz verfügbar, was die Entwicklung drastisch beschleunigen kann.
Sicherheit war noch nie eine Stärke von Java, das ist allgemein bekannt. Im Browser würde ich auch nicht freiwillig Java-Code ausführen, bei Webstart-Apps ist dies jedoch etwas anderes, da diese zwingend Signiert werden müssen.
Benutzer wird von Ihnen ignoriert. Anzeigen
Wenn du etwas Zeit hast (2h), kannst du diesen Podcast anhören:
http://cre.fm/cre090
In ihm wird so gut wie alles erklärt.
Benutzer wird von Ihnen ignoriert. Anzeigen
> Da man nicht für jedes System den Sourcecode erst kompilieren will, ist es
> praktisch, das der selbe Code von Java auf jedem System auf dem es eine JVM
> gibt läuft. Es ist dabei egal ob OpenJDK, SunJDK/OracleJDK oder andere,
> rein theoretisch, sollte immer das gleiche raus kommen.
Ist natürlich auf jeden Fall ein Vorteil, ich hatte da einen Denkfehler, da ich vom klassischen Javaanwendungsprogramm ausgegangen bin - läuft auf dem System und auf dem System, prima. Aber Server wechseln ja im allgemeinen nicht das OS ... aber die Plattformunabhängigkeit kommt ja natürlich auch zum tragen, wenn man Code ganz einfach wiederverwendet ...
> Sicherheit war noch nie eine Stärke von Java, das ist allgemein bekannt.
Heißt das, dass Java Server leichter angreifbar sind?
Wäre ja schon ein gravierender Nachteil, finde ich ...
Ansonsten jedenfalls danke für deine ausführliche Antwort.
Benutzer wird von Ihnen ignoriert. Anzeigen
Da Server in der Regel eine abgeschottete Umgebung darstellen, ist dies kein Problem. Problematisch wird es nur wenn Java in andere Applikationen eingebettet wird, z.B. Browser.
Generell werden Java-basierende Server auch mit stark eingeschränkten Nutzern ausgeführt.
Um die Auswertung von User-Requests muss man sich selbst kümmern, in der Regel ist es jedoch nicht möglich von Außen Code per Anfrage so in die JVM zu laden das er ausgeführt wird. Es sei denn man implementiert es explizit, z.B. dynamische groovy-scripte.
Dies erfordert jedoch genaue Kenntnisse der Java-Applikation und der zugrunde liegenden Architektur.
Es ist einfacher in einer C++-Applikation einen Pufferüberlauf zu produzieren, als in Java code zur Laufzeit einzuschleusen und auszuführen. (Immer vorausgesetzt, man hat keinen physischen Zugriff auf das System, z.B. ssh-shell...)
zum Thema wiederverwendbarkeit: Man implementiert ein Produkt in der Regel nur einmal und verkauft es an mehrere Kunden. Bei jedem Kunden läuft etwas anderes, z.B. Kd1=Suse, Kd2=Redhat, Kd3=ubuntu, Kd4=centOS => jeweils mit unterschiedlichen Kernel-Versionen.
Von Java gibt es für jede dieser Distributionen/Versionen irgend eine JVM. D.h. muss ich mich nicht mehr darum kümmern, welche Lib-Versionen auf welchem System gerade laufen, welcher Compiler gerade verfügbar ist, was für eine Architektur vorhanden ist etc. (x86, x64, powerpc, sparc, arm) und welche Compiler-Switches gerade funktionieren.
Benutzer wird von Ihnen ignoriert. Anzeigen
Kommentare: 350 | letzter Beitrag 00:32 Uhr
Kommentare: 267 | letzter Beitrag 19.06. 15:12
Kommentare: 257 | letzter Beitrag 19.06. 23:21
Kommentare: 249 | letzter Beitrag 19.06. 19:50
Kommentare: 165 | letzter Beitrag 19.06. 20:36
E-Mail an news@golem.de

Die Kritik an der Xbox One sei mehr als das Gegrummel enttäuschter Fans, sondern gefährde einen von Microsofts wichtigsten Geschäftsbereichen, schreibt ein Marktforscher. Dass die Lage tatsächlich ernst sein könnte, zeigt eine Umfrage von Amazon.com.

Sharp hat eine Solarzelle mit einem Wirkungsgrad von 44,4 Prozent entwickelt. Dafür wird eine dreischichtige Stapelsolarzelle mit einer Linse eingesetzt. Das Sonnenlicht wird auf die Zelle fokussiert.

Der künftige Telekom-Chef hat weitere Zugeständnisse bei der umstrittenen DSL-Drosselung angekündigt. Der Videoboom könne bis 2016 noch viel verändern, sagte Timotheus Höttges.

Microsoft reagiert auf die Kritik am geplanten Onlinezwang für die Xbox One und rückt von seinen Plänen ab. Auch sollen Spiele wie gehabt getauscht werden können.

Muss der Betreiber einer Open-Source-Plattform jede Änderung, die die Community vornimmt, vorab auf ihre Rechtmäßigkeit prüfen? Um dies zu klären, geht Appwork gegen das gerichtliche Verbot einer Downloadfunktion für geschützte Videos in JDownloader2 vor.

Der niederländische Webhoster Leaseweb soll alle Daten der Megaupload-Nutzer auf seinen Servern gelöscht haben. Kim Dotcom spricht von Verrat.