Abo
  1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Google: Kotlin soll erste…

Ich habe über ein Jahrzehnt in Java entwickelt...

  1. Thema

Neues Thema Ansicht wechseln


  1. Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: henry86 08.05.19 - 17:42

    und vor gut einem Jahr mit kotlin angefangen - und das im embedded Bereich, nicht auf Android.

    Inzwischen nutzen wir in der Firma in allen Bereichen kotlin und es ist für mich absolut nicht mehr vorstellbar, im Backend, embedded, Android oder Frontend (Javascript) Bereich irgendwas anderes zu nutzen.

    Klar, grundsätzlich können Umstände einen immer zwingen, aber wenn möglich, wird kotlin eingesetzt.

    Dass wir Code in verschiedensten Bereichen wiederverwenden können, dass sich mit kotlin eine ganze Menge boilerplate code erübrigt, Nullpointer exceptions Geschichte sind (!) und einige andere Vorteile mehr, macht es für mich zur derzeit besten Programmiersprache und ein zurück zu Java, c++, Javascript etc. sehr unwahrscheinlich (außer diese seltenen und schmerzhaften Ausnahmen, wo aufgrund bestimmter Randbedingungen das nicht anders möglich ist).

  2. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: deus-ex 08.05.19 - 18:24

    Ich kann das gleiche Swift sagen. Sehr modern und angenehm.

  3. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Pete Sabacker 08.05.19 - 19:07

    deus-ex schrieb:
    --------------------------------------------------------------------------------
    > Ich kann das gleiche Swift sagen. Sehr modern und angenehm.

    Ja. Swift und Kotlin sind super und ich würde mir wünschen, Kotlin könnte die Altlasten der Java-VM loswerden und vernünftige Generics implementieren.

  4. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: eisbart 08.05.19 - 21:19

    Hat nichts mit der jvm zu tun. Arrays sind zb im Gegensatz zu Java type safe.

    Kotlin will einfach möglichst kompatibel und einfach für Java devs sein und so lange gibt es das ding auch nicht. Vielleicht sehen wir ja irgendwann auch higher minded types, macros und type classes.

  5. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Scherzkasper 08.05.19 - 22:50

    Pete Sabacker schrieb:
    --------------------------------------------------------------------------------
    > Ja. Swift und Kotlin sind super und ich würde mir wünschen, Kotlin könnte
    > die Altlasten der Java-VM loswerden und vernünftige Generics
    > implementieren.

    Was ist denn an den Generics auszusetzen?

  6. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: hyperlord 08.05.19 - 23:07

    Die Generics in Java haben den großen Nachteil, dass die Typinformation zur Runtime nicht verfügbar ist. Kotlin bietet da immerhin reified an, aber das geht halt auch nicht immer.

  7. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Proctrap 09.05.19 - 01:59

    geht mir so mit Rust aber bis ich den bestehenden Android Code auf kotlin portiert hab wirds noch brauchen..

    ausgeloggt kein JS für golem = keine Seitenhüpfer

  8. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Pete Sabacker 09.05.19 - 06:56

    Proctrap schrieb:
    --------------------------------------------------------------------------------
    > geht mir so mit Rust aber bis ich den bestehenden Android Code auf kotlin
    > portiert hab wirds noch brauchen..

    Strg+Alt+Shit+K!

  9. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: DerET 09.05.19 - 08:34

    > Strg+Alt+Shit+K!
    Ich nehme ein F und möchte lösen!

  10. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Scherzkasper 09.05.19 - 09:32

    hyperlord schrieb:
    --------------------------------------------------------------------------------
    > Die Generics in Java haben den großen Nachteil, dass die Typinformation zur
    > Runtime nicht verfügbar ist. Kotlin bietet da immerhin reified an, aber das
    > geht halt auch nicht immer.

    Eigentlich finde ich das gar nicht schlecht. Wenn die Funktion ein Typenobjekt braucht, dann muss man das explizit übergeben, in den meisten Fällen wird dann dadurch der generische Typ der Funktion vom Compiler impliziert. Zumindest finde ich die Signatur dadurch verständlicher. Ich finde auch, dass es irgendwie hacky aussieht, aber eigentlich ist damit alles typsicher und wie gesagt expliziter.

  11. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: tomate.salat.inc 09.05.19 - 09:39

    Aber unnötig. Schau dir mal C# an - da hast du richtige Generics (und nicht wie bei Java wo alles einfach hinter Object ist).

    Dementsprechend kannst du auch anhand der Generics neue Objekte erstellen: https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/new-constraint

  12. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Das Osterschnabeltier 09.05.19 - 11:24

    tomate.salat.inc schrieb:
    --------------------------------------------------------------------------------
    > Aber unnötig. Schau dir mal C# an - da hast du richtige Generics (und nicht
    > wie bei Java wo alles einfach hinter Object ist).
    >
    > Dementsprechend kannst du auch anhand der Generics neue Objekte erstellen:
    > docs.microsoft.com

    Ein "new T()" nicht zu erlauben ist eine Design Entscheidung und hat per-se nichts mit reified generics zu tun. Siehe auch: https://www.javaworld.com/article/2074987/why-new-t---is-not-possible-in-java.html

    Möglichkeiten zur Implementierung in die Sprache gäbe es genug, es ist halt blöd wenn die Klasse wo dur brauchst keinen Standardkonstruktor bietet. Ist aber auch in Java nicht wirklich schlimm, weil man einfach einen Supplier<T> übergeben kann (je nach Use-Case ist es praktisch das schon im Konstruktor und nicht erst auf Methodenebene).

    Dadurch gewinnt man, dass man sowohl Konstruktoren als auch Factories für die Instanzierung verwenden kann, besser gehts eigentlich nicht.

  13. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Scherzkasper 09.05.19 - 12:12

    Genau, ich nutze in Kotlin einfach immer funktionale Typen, da kann man jede Methode rein reichen, deren Signatur passt, auch den Konstruktor.

    Das ist dann im Gegensatz zu T() auch typsicher



    1 mal bearbeitet, zuletzt am 09.05.19 12:13 durch Scherzkasper.

  14. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Pete Sabacker 09.05.19 - 12:17

    Das Osterschnabeltier schrieb:
    --------------------------------------------------------------------------------
    > Ein "new T()" nicht zu erlauben ist eine Design Entscheidung und hat per-se
    > nichts mit reified generics zu tun. Siehe auch: www.javaworld.com

    Sicher? Die 'beschissenen' Generics (manche mögen das ja irgendwie ..) aus Java sind doch mehr mit der Abwärtskompatibilität begründet.

  15. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: foobarJim 09.05.19 - 14:20

    Das Osterschnabeltier schrieb:
    --------------------------------------------------------------------------------
    > Ein "new T()" nicht zu erlauben ist eine Design Entscheidung und hat per-se
    > nichts mit reified generics zu tun. Siehe auch: www.javaworld.com
    >
    > Möglichkeiten zur Implementierung in die Sprache gäbe es genug, es ist halt
    > blöd wenn die Klasse wo dur brauchst keinen Standardkonstruktor bietet. Ist
    > aber auch in Java nicht wirklich schlimm, weil man einfach einen Supplier
    > übergeben kann (je nach Use-Case ist es praktisch das schon im Konstruktor
    > und nicht erst auf Methodenebene).
    >
    > Dadurch gewinnt man, dass man sowohl Konstruktoren als auch Factories für
    > die Instanzierung verwenden kann, besser gehts eigentlich nicht.

    Dass das Erzeugen von Objekte anhand der Typinformation nicht gewünscht ist, kann ich anhand deines Links nachvollziehen. Es gibt aber andere Beispiele, in denen es durchaus praktisch wäre, wenn der Typ zur Laufzeit vorhanden wäre. In Scala kann man z.B. durch Pattern Matching auf Typen matchen. Unter Umständen funktioniert das aber nicht, weil der Typ nicht mehr greifbar ist. Ich hatte schon einige Fälle, in denen mich das Type-Erasure ziemlich genervt hat. Ich würde es jetzt nicht unbedingt als Feature von Java beschreiben.

  16. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: eisbart 09.05.19 - 14:45

    Type erasure gibt es auch in anderen sprachen (zB Rust) aus performance gründen. Es steht auch jedem Compiler frei für jede Instanz code mit dem konkreten Typ code zu generieren (wie in Rust) bzw Objekte mit mehr meta Informationen zu versehen (zB über annotations)

    Der jetzige status ist einfach eine Abwägung von vor- und Nachteilen und ist vollkommen in Ordnung. C# erlaubt halt metaprogramming ein bisschen besser dafür verwendet Java weniger RAM (nicht lachen ;)

  17. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Das Osterschnabeltier 09.05.19 - 20:03

    foobarJim schrieb:
    --------------------------------------------------------------------------------
    > Das Osterschnabeltier schrieb:
    > ---------------------------------------------------------------------------
    > -----
    > > Ein "new T()" nicht zu erlauben ist eine Design Entscheidung und hat
    > per-se
    > > nichts mit reified generics zu tun. Siehe auch: www.javaworld.com
    > >
    > > Möglichkeiten zur Implementierung in die Sprache gäbe es genug, es ist
    > halt
    > > blöd wenn die Klasse wo dur brauchst keinen Standardkonstruktor bietet.
    > Ist
    > > aber auch in Java nicht wirklich schlimm, weil man einfach einen
    > Supplier
    > > übergeben kann (je nach Use-Case ist es praktisch das schon im
    > Konstruktor
    > > und nicht erst auf Methodenebene).
    > >
    > > Dadurch gewinnt man, dass man sowohl Konstruktoren als auch Factories
    > für
    > > die Instanzierung verwenden kann, besser gehts eigentlich nicht.
    >
    > Dass das Erzeugen von Objekte anhand der Typinformation nicht gewünscht
    > ist, kann ich anhand deines Links nachvollziehen. Es gibt aber andere
    > Beispiele, in denen es durchaus praktisch wäre, wenn der Typ zur Laufzeit
    > vorhanden wäre. In Scala kann man z.B. durch Pattern Matching auf Typen
    > matchen. Unter Umständen funktioniert das aber nicht, weil der Typ nicht
    > mehr greifbar ist. Ich hatte schon einige Fälle, in denen mich das
    > Type-Erasure ziemlich genervt hat. Ich würde es jetzt nicht unbedingt als
    > Feature von Java beschreiben.

    Ja, ein Feature ist es nicht und Rückwärtskompatibilität war auch der Grund für Erasure (kann aber sein dass sich das im Zuge von Projekt Valhalla ändert).

    Einfach nur aus Neugier: Was für Use-Cases sind das?
    Ich bin kein Vollzeit Java Entwickler und hatte mit Generics noch nie nennenswerte Probleme wo durch Erasure entständen wäre.

  18. Re: Ich habe über ein Jahrzehnt in Java entwickelt...

    Autor: Pete Sabacker 10.05.19 - 10:54

    Das Osterschnabeltier schrieb:
    --------------------------------------------------------------------------------
    > Ja, ein Feature ist es nicht und Rückwärtskompatibilität war auch der Grund
    > für Erasure (kann aber sein dass sich das im Zuge von Projekt Valhalla
    > ändert).

    > Einfach nur aus Neugier: Was für Use-Cases sind das?
    > Ich bin kein Vollzeit Java Entwickler und hatte mit Generics noch nie
    > nennenswerte Probleme wo durch Erasure entständen wäre.

    Hatte mal das Problem, dass Java bei JSON-Deserialisierung in einer BigDecimal-Variable einen BigInteger-Wert abspeicherte. Das war ein Fall, bei dem ich mit Erasure richtig auf die Fresse geflogen bin. Ansonsten sehe ich Erasure - wie Java es tut - aber eher als Nachteil an. Typinformationen müssen regelmäßig bereits im Konstruktor übergeben werden, das Ganze wird nur noch geschwätziger, als Java es ohnehin schon ist. Und von Constraints brauchen wir gar nicht erst zu reden, da werden die Klassensignaturen ganz schnell mal völlig bizarre Konstrukte.

    Einziger Vorteil aus meiner Perspektive: Klassen wie "AnySomething", wie man sie aus Swift kennt, sind nicht nötig, sondern durch die Wildcard quasi implizit gegeben.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Zum Login

Stellenmarkt
  1. DRÄXLMAIER Group, Vilsbiburg
  2. Hays AG, Frankfurt am Main
  3. Lebensversicherung von 1871 a. G. München, München
  4. Evangelische Landeskirche in Württemberg, Stuttgart

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. (-79%) 12,50€
  2. 2,80€
  3. (-90%) 5,99€
  4. 4,56€


Haben wir etwas übersehen?

E-Mail an news@golem.de


Acer Predator Thronos im Sit on: Der Nerd-Olymp
Acer Predator Thronos im Sit on
Der Nerd-Olymp

Ifa 2019 Ob wir es nun den eisernen Thron oder den Sitz der Götter nennen: Der Predator Thronos von Acer fällt auf dem Messestand des Herstellers schon auf. Golem.de konnte den skurrilen Stuhl ausprobieren. Er ist eines Gaming-Kellers würdig.
Ein Hands on von Oliver Nickel

  1. Nitro XV273X Acer baut ersten Monitor mit IPS-Panel und 240 Hz
  2. Acer Beim Predator-Notebook fährt die Tastatur wie eine Rampe aus
  3. Geräte für Mediengestalter Acer gibt Verfügbarkeit der Concept-D-Laptops bekannt

FX Tec Pro 1 im Hands on: Starkes Tastatur-Smartphone für 650 Euro
FX Tec Pro 1 im Hands on
Starkes Tastatur-Smartphone für 650 Euro

Ifa 2019 Smartphones mit physischer Tastatur sind oft klobig - anders das Pro 1 des Startups FX Tec. Das Gerät bietet eine umfangreiche Tastatur mit gutem Druckpunkt und stabilem Slide-Mechanismus - wie es in einem ersten Kurztest beweist. Zusammengeklappt ist das Smartphone überraschend dünn.
Ein Hands on von Tobias Költzsch

  1. Galaxy A90 5G Samsung präsentiert 5G-Smartphone für 750 Euro
  2. Huami Neue Amazfit-Smartwatches kommen nach Deutschland
  3. The Wall Luxury Samsungs Micro-LED-Display kostet 450.000 Euro

E-Auto: Byton zeigt die Produktionsversion des M-Byte
E-Auto
Byton zeigt die Produktionsversion des M-Byte

IAA 2019 Die Premiere von Byton in Frankfurt ist überraschend. Da der M-Byte im kommenden Jahr in China startet, ist die Vorstellung des produktionsreifen Elektroautos in Deutschland etwas Besonderes.
Ein Bericht von Dirk Kunde


    1. Elektromobilität: Stromwirtschaft will keine Million öffentlicher Ladesäulen
      Elektromobilität
      Stromwirtschaft will keine Million öffentlicher Ladesäulen

      Verkehrsminister Scheuer will günstige Elektroautos stärker fördern, Vizekanzler Olaf Scholz fordert "so was wie ein Eine-Million-Ladesäulen-Programm". Doch die Stromversorger warnen vor einer "überdimensionierten Ladeinfrastruktur".

    2. Saudi-Arabien: Drohnenangriffe legen halbe Erdölproduktion lahm
      Saudi-Arabien
      Drohnenangriffe legen halbe Erdölproduktion lahm

      Drohnen aus dem Jemen sollen die wichtigste Erdölraffinerie Saudi-Arabiens in Brand gesetzt haben. Die USA beschuldigen den Iran, die Huthi-Rebellen mit der Waffentechnik ausgerüstet zu haben.

    3. Biografie erscheint: Union lehnt Asyl für Snowden weiter ab
      Biografie erscheint
      Union lehnt Asyl für Snowden weiter ab

      US-Whistleblower Edward Snowden hätte weiterhin nichts dagegen, Russland in Richtung Deutschland zu verlassen. Doch Schutz vor einer Auslieferung in die USA kann er hierzulande nicht erwarten.


    1. 14:21

    2. 12:41

    3. 11:39

    4. 15:47

    5. 15:11

    6. 14:49

    7. 13:52

    8. 13:25