Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

Injecten

Würde ich jetzt nicht als eigene Programmiersprache werten, aber gut... vielleicht kenne ich es auch zu wenig
Markier mal den kompletten Text, dann wird dir etwas auffallen.
 
Würde ich jetzt nicht als eigene Programmiersprache werten, aber gut... vielleicht kenne ich es auch zu wenig

Kotlin und Java sind durchaus sehr unterschiedlich.
 
Kotlin und Java sind durchaus sehr unterschiedlich.
Ich habe mir jetzt auch nur die Haupt Features, die auf der Startseite angezeigt werden angeschaut und das sind eher Syntax Geschichten oder Sachen, die (wie ich denke) zu Bugs führen könnten.
(Ich meine Oracle wird schon seine Gründe haben, die Sachen, die Kotlin anbietet (z.B "keine NullpointerExceptions") nicht in Java an sich zu implementieren...)
 
Ich habe mir jetzt auch nur die Haupt Features, die auf der Startseite angezeigt werden angeschaut und das sind eher Syntax Geschichten oder Sachen, die (wie ich denke) zu Bugs führen könnten.
(Ich meine Oracle wird schon seine Gründe haben, die Sachen, die Kotlin anbietet (z.B "keine NullpointerExceptions") nicht in Java an sich zu implementieren...)
NPEs sind in Kotlin nicht entfernt worden, es wurde aber etwas neues hinzugefügt:
Nehmen wir eine Funktion/Methode:
Code:
fun doSomething(param1: Any, param2: Any?) {}
param1 kann nicht 'null' sein.
param2 allerdings schon.
 
Wenn wir mal von der syntaktischen Einfachheit und der cross-platform Kompatibilität von Java absehen, bleibt uns generell eine recht schlechte Sprache.
 
Wenn wir mal von der syntaktischen Einfachheit und der cross-platform Kompatibilität von Java absehen, bleibt uns generell eine recht schlechte Sprache.
Diese Eigenschaften machen Java allerdings zu einer guten Sprache.
Du hast aber Recht, Java ist fast dreifach so langsam wie C-Sprachen, was ein durchaus wichtiger negativer Kritikpunkt ist.
 
Diese Eigenschaften machen Java allerdings zu einer guten Sprache.
Du hast aber Recht, Java ist fast dreifach so langsam wie C-Sprachen, was ein durchaus wichtiger negativer Kritikpunkt ist.

Hinzu kommen noch massive Unfreiheiten und seltsame Designentscheidungen, das theoretische muss von Objekt-orientierter Programmierung, keine Möglichkeiten die garbage collection auszuschalten, zu viel um es aufzuzählen.
 
Hinzu kommen noch massive Unfreiheiten und seltsame Designentscheidungen, das theoretische muss von Objekt-orientierter Programmierung, keine Möglichkeiten die garbage collection auszuschalten, zu viel um es aufzuzählen.
Diese Unfreiheiten sind für die meisten eher was positives....
Wer etwas komplexes Programmieren möchte, der nimmt einfach kein Java und ich denke, dafür wurde Java auch nicht geschaffen.
Man sieht am Beispiel von Minecraft, was resultiert, wenn man Java für große Projekte verwendet.
 
keine Möglichkeiten die garbage collection auszuschalten
Ich halte das für keine schlechte Entscheidung, außer der minimal schnelleren Performanz sehe ich keine Vorteile.

Java ist fast dreifach so langsam wie C-Sprachen
Java gehört sogar zur C Familie.
Außerdem ist die Gesamtperformanz oft nicht so leicht zu vergleichen wie man hier erkennen kann.
Wer etwas komplexes Programmieren möchte, der nimmt einfach kein Java und ich denke, dafür wurde Java auch nicht geschaffen.
Wieso sollte man es auch nicht verwenden?
Es wird sogar sehr häufig für massive Code Basen benutzt.
Auch Python wird oft verwendet, trotz der meistens viel schlechteren Performanz.

Wer Projekte schreibt muss meistens nicht nur die beste Performanz erreichen (sonst könntest du gleich ASM nehmen), derjenige muss auch die Einfachheit (z.B. Syntax, Garbage Collection, vorhandene Libraries (und wie gut diese sind) etc.) und damit auch die Entwicklungsgeschwindigkeit im Hinterkopf behalten.
Man sieht am Beispiel von Minecraft, was resultiert, wenn man Java für große Projekte verwendet.
Die Performanz von Minecraft ist nicht wirklich die schuld der JVM, eher die von schlecht optimierten Code.
 
Wieso sollte man es auch nicht verwenden?
Es wird sogar sehr häufig für massive Code Basen benutzt.
Dann nenne mir mal bitte ein populäres Programm, welches in Java geschrieben wurde.
(Abgesehen von Apps oder Websites)

Die Performanz von Minecraft ist nicht wirklich die schuld der JVM, eher die von schlecht optimierten Code.
Da hast du Recht, trotzdem käme ein selbst optimal programmiertes Minecraft nicht an die Windows 10 Version von Minecraft ran, welche nicht in Java entwickelt wurde.

Wer Projekte schreibt muss meistens nicht nur die beste Performanz erreichen
Gehört meiner Meinung nach zur Qualität des Projektes hinzu.
Und wenn wir von einem Unternehmen reden, welches ein großes Projekt plant, dann fällt die Wahl sicherlich nicht auf Java, sondern man holt sich kompetente C++ Entwickler und lässt die werkeln.
 
Dann nenne mir mal bitte ein populäres Programm, welches in Java geschrieben wurde.
  • Natürlich unzählige Libraries
  • Sehr viele Websites (aber die willst du ja nicht lesen)Viele IDEs
  • OpenOffice (teilweise)
Viele Desktop Anwendungen kann ich hier nicht nennen, da Java meistens im Backend verwendet wird.
 
Gehört meiner Meinung nach zur Qualität des Projektes hinzu.
Und wenn wir von einem Unternehmen reden, welches ein großes Projekt plant, dann fällt die Wahl sicherlich nicht auf Java, sondern man holt sich kompetente C++ Entwickler und lässt die werkeln.
Ich wäre mir da nicht so sicher.
Java ist auf Platz 1 im TIOBE Index, hier wird Java auch öfter verwendet das gleiche gilt auch hier.
 
Ich halte das für keine schlechte Entscheidung, außer der minimal schnelleren Performanz sehe ich keine Vorteile.

Nun, wie du "gesagt" hast ist reference counting unglaublich performance hungrig. Die GC ist einer der Hauptgründe warum keiner java für Spiele hernehmen will.

Ich habe letztes mal mein cheat framework gebenchmarked. Je nachdem wie viele referenzen existieren ist der performance unterschied zwischen shared pointern (diese benutzen reference counting um die verwaltete heap resource im Falle der destruktion frei zu geben) und einem normalen pointer oder nur einer referenz teilweiße unglaublich groß.

Desweiteren ist die Annahme, dass asm grundsätzlich schneller sei komplett falsch. Allein schon, dass du sehr wahrscheinlich bei jedem frame relativ zum base pointer arbeiten würdest, wäre schon um einiges langsamer als wenn moderne c++ compiler mit festen offsets arbeiten.

Zusätzlich ist dieser zwang von OOP unglaublich schlecht. Ich sehe so viele Leute die schwierigkeiten haben effizienten code zu schreiben, weil ihre Sprache java war.

Viele API ersteller, mögen es zudem oft ihre eigenen Datentypen zu erstellen (encapsulation). Solche Sachen bietet java einfach nicht.

Jeder soll hier sicherlich seine eigene Meinung haben, der Fakt dass java sehr viele Einschränkungen bietet nur um dem unerfahrenen dev mehr Sicherheit zu bieten macht es meiner Meinung nach zu einer netten Anfänger Sprache, die aber für komplexere Projekte (die durchaus auch auf performance achten müssen) komplett ungeeignet sind.

Man stelle sich nur vor Wolfenstein 3D wäre damals mit java geschrieben worden. Da hätte jeder sich für 200€ den neuesten Prozessor kaufen müssen.
 
Grosse Projekte sind nur in Java möglich. Wenn es clientseitig läuft, gibt es nur eine Referenz.

Bitte was?

Um mich klarer auszudrücken, Punkt 1 ist völliger Schwachsinn. Willst du mir sagen next-gen engines wie Frost Bite sind keine großen Projekte? Ich persönlich müsste mich eher anstrengen mich an ein großes java projekt zu erinnern als an eins in einer nativen Sprache.

Punkt 2, uhm ja ich weiß nicht genau wie oder was du da meinst, jedoch glaube ich dass du mich falsch verstanden hast. Ich meinte damit lediglich, dass ein normalers / raw pointer oder eine referenz immer schneller sein wird als ein referenz zählender smart pointer (garbage collection), und je nachdem wie viele objekte bzw. pointer der jeweiligen Art du dann eben hast, macht das teilweiße einen unglaublich großen Unterschied der durchaus sehr relevant sein kann. Ich sehe aber woher das Missverständnis kam.
 
Last edited by a moderator:
Dann nenne mir mal bitte ein populäres Programm, welches in Java geschrieben wurde.
(Abgesehen von Apps oder Websites)


Da hast du Recht, trotzdem käme ein selbst optimal programmiertes Minecraft nicht an die Windows 10 Version von Minecraft ran, welche nicht in Java entwickelt wurde.


Gehört meiner Meinung nach zur Qualität des Projektes hinzu.
Und wenn wir von einem Unternehmen reden, welches ein großes Projekt plant, dann fällt die Wahl sicherlich nicht auf Java, sondern man holt sich kompetente C++ Entwickler und lässt die werkeln.
Warum kompetente C++ Entwickler ? Schau dir Blender an, ist Python
 
Bitte was?

Um mich klarer auszudrücken, Punkt 1 ist völliger Schwachsinn. Willst du mir sagen next-gen engines wie Frost Bite sind keine großen Projekte? Ich persönlich müsste mich eher anstrengen mich an ein großes java projekt zu erinnern als an eins in einer nativen Sprache.

Punkt 2, uhm ja ich weiß nicht genau wie oder was du da meinst, jedoch glaube ich dass du mich falsch verstanden hast. Ich meinte damit lediglich, dass ein normalers / raw pointer oder eine referenz immer schneller sein wird als ein referenz zählender smart pointer (garbage collection), und je nachdem wie viele objekte bzw. pointer der jeweiligen Art du dann eben hast, macht das teilweiße einen unglaublich großen Unterschied der durchaus sehr relevant sein kann. Ich sehe aber woher das Missverständnis kam.
Sorry, habe meinen Post gelöscht, weiß selber nicht, was ich da geschrieben habe / worauf ich hinaus wollte. (war auch schon spät in der Nacht)
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top