noxon schrieb:Naja. 48 MB für die 64 Bit Version sind nicht gerade GB. Außerdem ist .NET ja in Windows integriert und muss nur in den seltesten Fällen mitgeliefert werden.
Ok, das habe ich auf meiner einzigen Windows Maschine angeschaut ... habe ich verwechselt. Nur was machste mit Mac und Linux? (Und bitte jetzt ned mit Mono kommen)
noxon schrieb:Also ich sehe die Stärke ganz eindeutig in der Infrastruktur, die Java zu bieten hat. Du findest eigentlich für alles was du brauchst Frameworks und Bibliotheken. Dort hinkt .NET Java immer noch hinterher.
Wenn ich allerdings sehe, wie sehr die Community die Sprache, an sich, hat verkümmern lassen, dann frage ich mich echt, warum so viele noch mit der Sprache arbeiten.
Die kann ja echt nichts mehr und ist noch auf dem Stand von was weiß ich nicht was. Es gibt mittlerweile so viele schöne neue Techniken die einem die Arbeit erleichtern, die ich nicht mehr missen möchte (Lambda Expressions, Async, LINQ um nur die wichtigsten zu nennen).
Besonders ohne LINQ möchte ich nicht mehr leben. Ich weiß gar nicht wie das gehen soll. Ich musste letztens mal wieder an einem .NET 2.0 Programm arbeiten, wo es noch kein LINQ gab und da ist mir erst einmal aufgefallen, wie sehr mir das fehlen würde.
Und wo du von dem Web sprichst und wie wichtig das ist. Dort wird eine Technik wie Async unheimlich wichtig sein. Web, Cloud und all das was Latenzen mit sich bringt erfordert asynchrone Programmierung, welche bisher immer verdammt schwierig und komplex war. Mit Async wird das nun zu einem echten Kinderspiel.
Async wird übrigens auch massiv in Windows 8 eingesetzt. Da Touch-UIs auf keinen fall mehr blockieren dürfen ist auch hier die asynchrone Programmmierung sehr sehr wichtig geworden. Deshalb gilt seitens Microsoft nun als Vorschrift, dass jede Programmausführung, die länger als 50 ms dauern kann asynchron zum UI Thread ausgeführt werden muss.
LINQ, Async und Lambda Expressions halte ich also für essenziell, wenn es um eine moderne Sprache geht.
Von daher weiß ich nicht, wie Java immer noch ohne all diese Features auskommt. Meiner Meinung nach ist der JCP viel zu langsam um so eine Sprache effektiv weiter zu entwickeln. Da habe ich es doch lieber, wenn eine Firma die Kontrolle über die Entwicklung der Sprache hat und klare und schnelle Entscheidungen trifft.
Im übrigen habe ich nicht unbedingt etwas gehen die JVM, obwohl ich es das rechtlich auch etwas kritisch sehe. Siehe Oracle vs. Google.
Das ist bei .NET aber auch nicht unbedingt besser. Sie isNot Operater Patent.
Sprachen wie Kotlin haben aberviele Features, die ich mir von Java wünschen würde. Damit könnte ich mir sehr gut vorstellen meine Programme zu entwickeln, aber natürlich ist das momentan noch keine ernsthafte Alternative.
Das stimmt zum Teil ned was du sagst, denn Lambda und LINQ sind Sprachfeatures, wobei LINQ den Namen durch MS erhalten hat. Lambda kommt mit Java 8. Asynchrone Programmierung gibt es in Java schon lange ... vorallem im Web schon lange im Einsatz. Gegenfrage: Wie lange unterstützt .Net Websockets schon offiziell, bzw. gibts eine brauchbare Lösung? Asynchrones Programmieren ist schlussendlich nicht mehr als mutli threading. Habe mir schnell n paar Async Beispiele von .Net in C# angeschaut und muss ehrlich sagen, dass mir Callback Methoden wie sie bei (Java, C++) usw. in Verwendung sind lieber sind als dieser Stack-Ansatz von .Net, da hier Methoden logisch fragmentiert werden. Klar kann man ASYNC wie es bei .Net implementiert wird als Sprachfeature definieren, aber ich persönlich bin hier eher konservativ eingestellt. Mir ist viel wichtiger das neue (Web)Standards wie eben Websockets möglichst schnell standartisiert verfügbar sind.
Was für mich ebenfalls viel wichtiger ist, dass Java z.B. mit GWT (Google Web Toolkit) einen "richtigen" RIA Ansatz als Lösungsmöglich fürs Web besitzt. Welcher für Applikationen mit sehr vielen concurrent Users extrem resourcensparend ist für den Server. Wir konzipieren unsere Applikation für bis zu 1000 concurrent User, welche eine Stateful Applikation vor sich haben. Aber eben zu 95% Clientseitig. Man schreibt den Client in Java und der GWT Kompilier kompiliert den Clientteil in Javascript. Hier sehe ich eines der grössten Probleme von .NET ... die Resourcen. Ich will keine Plattform welche im Idle bereits 2-3 GB RAM benötigt .... und dann am besten alle Daten welche nur 1 Client interessieren serverseitig in der HTTP Session gehalten werden. Bei unserer Applikation schlägt ein weiterer Benutzer (je HTTP Session) mit knapp 500 KB zu Buche ... der Flaschenhals ist die CPU, Netzwerk und bedingt das Filesystem.
Wenn man andere Anforderungen hat findet man für jede Problemstellung das richtige. Mir persönlich ist es egal, ob ich nun paar Codezeilen sparen kann, sondern ob grundsätzlich die richtigen Werkzeuge für Probleme zue Verfügung stehen.
Und Oracle vs. Google ... naja Google mischt hier tiptop mit, was ich gut finde. Ich persönlich war auch nicht erfreut über die übernahme von Java durch Oracle, aber da unterdessen so einige Implementierungen von Standards (Referenzimplementierung von Java Enterprise Edition 6 ist von JBoss (Redhat)) relativiert sich das Ganze ziemlich.
Was für mich generell bei Java beruhigt ist, dass es 100% Open Source ist, ausser vielleicht gewisse Middleware von Oracle und IBM und die JVM Implementierung von IBM. Aber wir bei uns verwenden nur Open Source Techs. wo ich mich z.T. auch noch einwenig einbringen kann. Eben der Communityansatz, welchen ich verdammt gut finde ... und dies nicht nur auf Sprach, sondern auch auf Framework Level.
Auf der Plattform von MS ist ausser gerade der .Net Fasade nicht wirklich was Open Source.
Edit: Wegen dem Fortschritt in der Sprache ... wieso ist C++ trotz einem seeeehr langem Entwicklungsprozess von neuen Standards / Versionen immernoch Sprache Nr.1? Mal was zum überlegen
Zuletzt bearbeitet: