Hallo zusammen
Für einige Projekte an denen ich in Zukunft arbeiten werde bin ich an die Plattform Android gebunden. Ein grösseres Projekt habe ich dafür bereits mit Java abgeschlossen und musste wieder einmal feststellen, dass ich kein Javamensch bin und das auch nie war. Für mich stellt sich jetzt die Frage ob ich es vielleicht in Zukunft werde, oder ob ich mich nach C# bzw C++ Alternativen für Android umsehe. Das liegt vor allem an der Sprache selber, weniger daran was im Hintergrund oder in der IDE oder sonst wo läuft. Dabei habe ich versucht ein bisschen was über die Zukunft von Java via google zu sammeln, allerdings bin ich da nicht wirklich auf einen grünen Zweig gekommen (bzw viele widersprüchliche oder vage Angaben). So bin ich mir zum Beispiel nicht wirklich sicher ob zwischen Java 6 und Java 7 wirklich fast 6 Jahre lagen und dabei eigentlich nichts nennenswertes bei der Sprache verbessert wurde. Das einzige was ich herausfinden konnte ist, dass der Grundtenor ist, die Sprache müsste an vielen Ecken und Enden mal auf den neusten Stand gebracht werden, da allerdings noch nicht wirklich was passiert ist.
Im allgemeinen gibt es für mich einige Kernelemente die mich eigentlich fast täglich aufregen bzw ich nicht nachvollziehen kann und genau da wollte ich fragen ob vielleicht jemand von euch bisschen was mehr weiss, wie sich da die Sprache so entwickeln wird.
Es würde mich freuen, wenn vielleicht der eine oder andere etwas dazu wüsste und mich daran teilhaben könnte.
Grüsse
Cromon
Für einige Projekte an denen ich in Zukunft arbeiten werde bin ich an die Plattform Android gebunden. Ein grösseres Projekt habe ich dafür bereits mit Java abgeschlossen und musste wieder einmal feststellen, dass ich kein Javamensch bin und das auch nie war. Für mich stellt sich jetzt die Frage ob ich es vielleicht in Zukunft werde, oder ob ich mich nach C# bzw C++ Alternativen für Android umsehe. Das liegt vor allem an der Sprache selber, weniger daran was im Hintergrund oder in der IDE oder sonst wo läuft. Dabei habe ich versucht ein bisschen was über die Zukunft von Java via google zu sammeln, allerdings bin ich da nicht wirklich auf einen grünen Zweig gekommen (bzw viele widersprüchliche oder vage Angaben). So bin ich mir zum Beispiel nicht wirklich sicher ob zwischen Java 6 und Java 7 wirklich fast 6 Jahre lagen und dabei eigentlich nichts nennenswertes bei der Sprache verbessert wurde. Das einzige was ich herausfinden konnte ist, dass der Grundtenor ist, die Sprache müsste an vielen Ecken und Enden mal auf den neusten Stand gebracht werden, da allerdings noch nicht wirklich was passiert ist.
Im allgemeinen gibt es für mich einige Kernelemente die mich eigentlich fast täglich aufregen bzw ich nicht nachvollziehen kann und genau da wollte ich fragen ob vielleicht jemand von euch bisschen was mehr weiss, wie sich da die Sprache so entwickeln wird.
- Events/Delegate vs Interfaces:
Interfaces (und damit das Beobachterprinzip) sind eine nette Sache, führen aber an vielen Stellen einfach zu aufgeblasenem Code. Es gibt nunmal Komponenten die für die Kommunikation nur ein paar wenige Funktionen benötigen, entsprechend hat man dann unzählige kleine Interfaces die man irgendwo verstauen muss. Für jedes eine eigene Datei zu verwenden bläht den Solutiontree enorm auf, wenn man verschiedene Interfaces versucht irgendwie zu kreuzen fühlt sich das auch irgendwie falsch an und sie als eingebetteten Typ einer anderen Klasse zu machen ist keine Alternative, der Code ist schon schlimm genug weil man (wie in C#) Deklaration und Implementation nicht so wie in C++ sauber trennen kann.
Daneben sind Events bzw Delegate viel flexibler als Interfaces. Für den Provider an sich ändert sich einerseits die Tatsache, dass er sich nicht darum kümmern muss wer jetzt effektiv einem beobachtet andererseits ist er von jeglichen Voraussetzungen befreit und hat sich nicht einen Deut darum zu kümmern was er da jetzt aufruft (sei es nativer Code, eine statische Funktion, eine Memberfunktion, eine dynamische Methode, ...) während bei einem Interface alles auf eine Memberfunktion beschränkt wird. Das macht es auch für den Listener viel einfacher, er kann alles mögliche übergeben, es muss nur irgendwie aufrufbar sein.
- Generics:
Bei diesem Punkt muss ich ehrlich sagen bin ich extrem enttäuscht von Java. Generics machen das Leben nicht einfacher, sie sind auf englisch gesagt einfach "pain in the ass". Ich bin vollkommen einverstanden mit dem Ansatz, dass die Generics so wenig Einfluss auf die Laufzeit haben sollen wie möglich, aber dann bitte gleich so machen wie in C++, template Typen werden während der Compilierung einfach 1:1 durch den Typnamen ersetzt und nicht so wie in Java durch irgendwie etwas merkwürdiges das weder Hand noch Fuss hat. Wenn ich nichtmal statische Methoden für einen generischen Typen verwenden kann weiss einfach auch nicht mehr weiter. So wie es aktuell ist hat man die Nachteile aus C# genommen und sie mit den Nachteilen aus C++ kombiniert und so dann Generics erstellt. Hier wünsche ich mir eine konzeptionelle Änderung, generischer Code ist für mich extrem wichtig.
- Unverständlich unhandliche Collection:
Collections arbeiten praktisch überhaupt nicht miteinander, sind inkompatibel, wenn man noch Arrays hinzu nimmt geht grad gar nichts mehr. Hier wünsche ich mir Sachen wie in C#
C#:
byte[] someArray = getArray();
List<SomeObject> list = someArray.Where(b => (b % 2) == 0).Select(b => new SomeObject(b)).ToList();
- Abschaffung der primitiven und nicht-primitiven Varianten gewisser Typen. int ist ein Integer und ein Integer ist ein int, das sind einfach Synonyme füreinander. Wer sie wie Objekte haben will kann Nullable<int> verwenden.
Es würde mich freuen, wenn vielleicht der eine oder andere etwas dazu wüsste und mich daran teilhaben könnte.
Grüsse
Cromon
Zuletzt bearbeitet: