Java vs. anderen plattformunabhängige Programmiersprachen

unknown

Bekanntes Mitglied
Hallo zusammen

Was hat Java (bzw. J2EE) sowohl technisch als auch businessmäßig gegenüber andernen plattformunabhängige Programmiersprachen (wie beispielsweise Node.JS) für den Backend Bereich für Vorteile?

Ich benötige viele aussagekräftige Argumente und bin deshalb über jede Antwort froh.

Besten Dank im Voraus.
 
K

kneitzel

Gast
Also hinter Node.js steckt JavaScript - die Sprache selbst hat einige Unterschiede, so dass ich hier Java bevorzugen würde. (Gibt es bei JavaScript einen Compiler, der alles genau prüft?)

Dann würde ich die Umgebung vergleichen - da hat man ein recht neues Node.js mit relativ eingeschränkten Möglichkeiten und auf der anderen Seite Java mit sehr weitgehenden Möglichkeiten. Application Server wie JBoss, Websphere, ... fallen mir da ein, Frameworks wie Spring, ....

Dann sollte es deutlich mehr Installationen auf Java Seite geben.

Also irgendwie ist das nicht wirklich vergleichbar würde ich sagen.
 

Joose

Top Contributor
Ja teilweise wird JavaScript auch vorkompiliert (vor allem bei Node.js wenn ich das richtig in Erinnerung habe).

Es kommt auch darauf an. Was soll realisiert werden? Mit welcher Belastung wird gerechnet? Gibt es schon vorhandene Infrastruktur, wenn ja welche? Kosten (Lizenz, neue Entwickler welche mit entsprechenden Sprachen/Systemen umgehen können, Umschulungen für aktuelles Personal)
Solche Fragen so ohne genauere Informationen zu beantworten ist schwer. Alles hat seine Vor- und Nachteile und anhand der gegebenen Umstände kann man das eine oder andere ausschließen oder beiseite geben.
 

nvidia

Bekanntes Mitglied
Node.js ist eine eigenständige Plattform und keine Programmiersprache. Node.js verwendet JavaScript, weil man sich dann in einer sprachlichen Ebene für die Client/Serverwebentwicklung bewegt und nicht umdenken muss. Node.js bedient eine Nische und zwar die der "Datenraten" intensiven "Echtzeitanwendungen", d.h. wo schnell viel IO passieren muss[1]. Für CPU-intensive Geschichten taugt Node jedoch nicht wirklich etwas.

Als größten Nachteil empfinde ich aber die Verwendung von JavaScript. JavaScript ist nie für die Anwendung in solchen Maßstäben gedacht gewesen, es ist teilweise inkonsistent, nich typsicher, hat einen geringen Abstraktionsgrad dadurch schlechte Unterstützung von OO u./o. funktionalen Mustern, durch die Eigenschaft eine dynamische Sprache zu sein werden größere Refactorings erschwert uvm.

Das führt dann zu einem Haufen Wartungsaufwand aber für die Lebensdauer heutiger Webanwendungen die gefühlt zwischen 1-3 Jahren liegt ist das wohl auch nich so relevant. ;) Um einige Probleme von JS in den Griff zu bekommen werden z.B. Sprachen die dann nach JS kompiliert werden entwickelt, bspw. PureScript, Elm sowie passende "Adapter" um von denen aus Node.js ansprechen zu können.

Node.js hat seine Nische, JavaScript sollte eigentlich in seiner Nische bleiben, es kommt im Endeffekt darauf an was das Ziel der Anwendung sein soll.

[1] Das ist bedingt durch die Architektur, es spricht jedoch nichts dagegen eine ähnliche Architektur in Java zu nachzubauen.
 
Zuletzt bearbeitet:

unknown

Bekanntes Mitglied
Node.js bedient eine Nische und zwar die der "Datenraten" intensiven "Echtzeitanwendungen", d.h. wo schnell viel IO passieren muss[1]. Für CPU-intensive Geschichten taugt Node jedoch nicht wirklich etwas.
Danke für die Antworten.

Kannst du etwas näher erklären, wieso Nod.js diese Nische gut bedienen kann und für die CPU-intensive Angelegenheiten nicht geeignet ist? Gibt es da genau wie bei native Javascript nur einen Thread?
 

Tobse

Top Contributor
Ich glaube wir hatten das Thema hier schon mal. Die Forensuche könnet also ggf. auch noch ein paar Pro/Kontra Argumente bringen.

Ich persönlich denke, dass man Java und JavaScript+Node.js nicht vergleichen kann. Java war schon immer für umfangreiche, große Business-Projekte mit vielen Anforderungen gedacht. Node hingegen gelänzt darin, dass man damit einfache und kleine Projekte schneller umsetzen kann. Für alles, was dem Umfang eines Blogs (ggf. plus Chat o.ä.) übersteigt würde ich Node.js nie benutzen (wegen besagter JavaScript schwächen).

Die Frage war ja aber breiter gefasst (plattformunabhängig) und daher will ich noch ein paar andere Sprachen / Technologien beleuchten:

Für den Backend-Bereich (APIs, Datenverarbeitung ohne UI, etc.) würde ich, ginge es jetzt um ein neues Projekt, noch folgende Sprachen in Erwägung ziehen:

- D: native Sprache mit plattformunabhängiger, z.T. OO Library; kann fast so mächtig sein wie C, bietet aber noch mehr Sicherheiten und Features als Java (als die Sprache Java, nicht die Library. Die Java-Libraries sind deutlich umfangreicher als die von D). Link zur Webseite.
- HHVM/PHP7: IWenn man sich die neueren Entwicklungen ansieht (Dependency Management, Unit-Testing, ...) und was mit PHP7 demnächst dazu kommt (typisierung, JIT), kann es sich durchaus mit Java messen. Für Projekte mittlerer Größe wahrscheinlich die bessere Wahl.

Wie die anderen schon sagten, hängen die Vor- und Nachteile einzelner Technologien stark von den Anforderungen ab; deshalb kann man da keine Pauschal-Aussage machen. Aus meiner Sicht sprechen folgende Dinge im Backend für Java (aber nicht gegen andere Sprachen, weil die das zum Großteil auch können):

- Mächtige Libraries, neben den EE Libraries z.B. Apache Commons
- Mächtige Application-Server für die EE-Edition
- Strikte Typisierung
- Laufzeitgeschwindigkeit (mit JIT, etc)
- Plattformunabhängigkeit

P.S.: Die Auswahl für eine neues Projekt ist natürlich noch größer. Allerdings sieht es mit der Plattformunabhängigkeit bei den anderen Kandidaten (z.B. Ruby, C#) eher düster aus.
 
K

kneitzel

Gast
Nunja - c# deckt eigentlich alle großen Plattformen ab. Microsoft macht hier ja in Sache Open Source einiges! C# und viele Technologien wie z.B. ASP.Net sind da kein Thema mehr. Mono macht hier vieles möglich. Wenn man dann die Mobil-Geräte betrachten möchte, dann punktet c# mit Xamarin.

Die Möglichkeiten sind also mit c# prinzipiell auch gegeben. Aber ich würde, so es plattformunabhängig sein sollte, auch nicht zu c# greifen. Auch wenn es prinzipiell geht sehe ich da doch diverse Probleme. Gerade im Business-Bereich wäre z.B. WCF zu nennen und das ist bei Mono nur teilweise implementiert. Und ich sehe immer das Problem mit der Dokumentation - msdn ist genial aber deckt halt den Windows Bereich ab.

Konrad
 

thecain

Top Contributor
Wir reden vom Backendbereich?

Ich verstehe nicht ganz den Zusammenhang: Backend und Plattformunabhängigkeit?

Für grössere Projekte, ist die Plattform doch vollkommen irrelevant. Wenn ich ASP.NET entwickeln will, stell ich nen Microsoft Server auf, wenn ich Java will halt nen Tomcat o.ä. Wichtig ist doch eher, wo das Know-How vorhanden ist.

Von den Features her unterscheiden sich die Grossen nicht sehr.
 

nvidia

Bekanntes Mitglied
Danke für die Antworten.

Kannst du etwas näher erklären, wieso Nod.js diese Nische gut bedienen kann und für die CPU-intensive Angelegenheiten nicht geeignet ist? Gibt es da genau wie bei native Javascript nur einen Thread?

Ja, es ist die Art der Architektur, die hat so gesehen nichts mit "Threading" zu tun. Dieses Modell existiert schon ewig, es gibt DEN Eventloop auf dem etwas zur Verarbeitung "gelegt" wird, seien das Ereignisse, ausführbare Aktionen etc. pp. und dann werden die nacheinander abgearbeitet. So ist auch die Architektur von Node.js in der Java-Welt ist das vergleichbar mit Swing. Hier haben wir den EDT (GUI-Thread) und legst du hier eine lang dauernde Aktion auf den GUI-Thread (EDT) friert das UI ein. Damit das nicht passiert musst du die lang laufende Aktion auslagern. Node tut etwas ähnliches im Bereich des IO, bei Datenzugriffen über Node.js auf eine DB werden diese asynchron angestoßen und es geht mit dem nächsten Ding im Eventqueue weiter. Was passieren soll wenn es fertig ist wird über die Callbacks geregelt. Leider führt das mit den exzessiven Callbacks, in meinen Augen, zu ziemlich wüsten Code, aber das lässt sich wohl mit extra APIs wie Async.js oder der konsequenten Verwendung von Promises abmildern.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Umwandung von Vb auf Java Softwareentwicklung 1
von Spotz Kommunikation zwischen Java und Container Orchestrator (Microservices) Softwareentwicklung 11
S Microservices in Java Spring: Nebenläufigkeitsprobleme lösen Softwareentwicklung 6
temi Elementfunktionen vs. Nichtelementfunktionen in Java Softwareentwicklung 20
R Umsetzungen in Java vs. Umsetzungen auf Datenbankebene Softwareentwicklung 9
L Module Eclipse Java 9 Softwareentwicklung 12
R Software-Architekt (Schwerpunkt Java) Softwareentwicklung 9
S VB.NET / C# als Java-Entwickler? Softwareentwicklung 2
J Java Kentnisse vertiefen oder andere Programmiersprache probieren? Softwareentwicklung 8
S JNI Java from C Softwareentwicklung 0
H [Java]Regex Hilfe Softwareentwicklung 3
D Teamspeak Java html app Softwareentwicklung 5
N UML Komponenten als Java-Klassen abbilden Softwareentwicklung 4
S Java Anfänger hat Probleme mit Scanner Softwareentwicklung 6
C Lohnt es sich noch ein neues Projekt in C++ anstatt Java zu realisieren? Softwareentwicklung 4
U Java oder welche Sprache? Softwareentwicklung 98
MrWhite Ist Java gar nicht sooo objektorientiert??! Softwareentwicklung 16
J Java Long-Werte in C++ auslesen Softwareentwicklung 4
K Mit "Java" html-Seite entscripten Softwareentwicklung 6
Airwolf89 Theoretische Frage - In Java Java-Programme schreiben Softwareentwicklung 5
G Mischsprache aus Java & C# Softwareentwicklung 23
H COBOL und Java Softwareentwicklung 17
H Java als Backend, Javascript als View Softwareentwicklung 3
D Sind EJB Komponenten auch mit Java Swing nutzbar? Softwareentwicklung 8
U Decorator Pattern in der Java API Softwareentwicklung 6
J Java Software nach C++ portieren Softwareentwicklung 6
C Unterschiede: C++ vs. C# vs. Java Softwareentwicklung 21
G Umstieg Java/Oracle => C#/MSSQL Softwareentwicklung 13
A Jira durch Java ansprechen Softwareentwicklung 18
M Immutable Objekte und funktionales Programmieren in Java oder Scala Softwareentwicklung 34
B [Web 2.0] Java vs PHP Softwareentwicklung 28
Raidri Flex mit Java Softwareentwicklung 2
L Java + WCF Softwareentwicklung 9
Airwolf89 Java-Programm in C++ portieren Softwareentwicklung 4
T Kapselung nich vollständig umgesetzt in Java? Softwareentwicklung 4
J Korpus mit Python einlesen - weiterbearbeiten mit Java Softwareentwicklung 4
N c# nach java Softwareentwicklung 14
K Suche freies UML Tool um aus .java dateien Diagramme zu. Softwareentwicklung 8
D Java in KLassen, schon vorhanden? Softwareentwicklung 3
B Was ist besser für Grafiken? Java oder C#? Softwareentwicklung 9
R Java Passwort verschlüsseln --> kompliziert! wirklich doo Softwareentwicklung 13
F vorteile php gegenüber java? Softwareentwicklung 46
M Umwandlung von String in java.sql.Date Softwareentwicklung 2
lolkind Iso Datein per Java über Windows XP brennen Softwareentwicklung 13
U [Diskussion] Java vs. C# Softwareentwicklung 208
E Java Programm distributen Softwareentwicklung 35
J Hardware zugriff mit java? Softwareentwicklung 4
N Für und Wieder von Java und .NET (primär C#) | Performance Softwareentwicklung 6
G java.lang.ArrayIndexOutOfBoundsException Softwareentwicklung 5
E Default Java unter Linux aendern? Softwareentwicklung 3
S arabische Buchstaben in java ?:L Softwareentwicklung 3
L Noch 'ne Perl-Frage. Kehre dann auch reumütig zu Java zurück Softwareentwicklung 10
G Serveranbindung mit java Softwareentwicklung 24
P Grafik-Programm mit JAVA? Softwareentwicklung 21
G Umstieg von Delphi zu JAVA (wichtige Fragen!) Softwareentwicklung 41
F Welche Sprache sieht ähnlich aus wie Java? Softwareentwicklung 7
T Suche A Star Java Beispielprogramm Softwareentwicklung 2
D C# zu Java - Übersetzer gesucht. Softwareentwicklung 3
F Windows Media Player in Java? Softwareentwicklung 11
C C code in java umschreiben Softwareentwicklung 9
O java und c# - die zweite. Softwareentwicklung 7
S Problem PJIRC java-applet Softwareentwicklung 4
U Geeignete Plattform für Projekt (JSP, PHP, Java-Anwendung) Softwareentwicklung 7
G C++ in JAVA verpacken Softwareentwicklung 2
D C# vs. java Softwareentwicklung 16
G Darstellung von Java-Projekten mit UML Softwareentwicklung 3
E Java & Performance Softwareentwicklung 9
T Brauche für meinen Java-Code dringend Hilfe Softwareentwicklung 4
B Wo bekommt man fertige Java-Programme (z.B. für Lsg LGS) Softwareentwicklung 3
W Herangehensweise an ein Java Programm Softwareentwicklung 4
B Programmierung eines 8051-Assemblers unter Java Softwareentwicklung 3
M Bidirektionale Assoziazion in Java realisieren? Softwareentwicklung 3
J Java <-> C# Softwareentwicklung 1
S c# schneller java - wieso ? Softwareentwicklung 12
D C++ und Java Softwareentwicklung 61
H Python Code auf einen anderen Server ausführen Softwareentwicklung 6
ARadauer Fragen zu anderen Sprachen nicht erlaubt? Softwareentwicklung 9
M Eine Tabelle aus mehreren anderen Tabellen erzeugen! Softwareentwicklung 3
K auf Attribute aus anderen Klassen zugreifen*help* Softwareentwicklung 3

Ähnliche Java Themen

Neue Themen


Oben