Abo
  1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Oracle: Java 12 führt…

es geht weiter - ich bin positiv überrascht

  1. Thema

Neues Thema Ansicht wechseln


  1. es geht weiter - ich bin positiv überrascht

    Autor: devman 20.03.19 - 16:56

    Anfangs war ich schockiert über Oracles Planänderung zu Java, aber jetzt sieht man doch, es lohnt sich. Die interessanten Neuerungen kommen zügig in die neuen Versionen rein und werden viel schneller released.

  2. Re: es geht weiter - ich bin positiv überrascht

    Autor: teenriot* 20.03.19 - 17:15

    Dadurch kommt es trotzdem nicht unbedingt schneller in der Landschaft an. Bei seinem Hobby-Projekt mag man ja freudig mitziehen, kommerzielle Anwendungen haben dagegen einen eingebauten Panik-Modus. Man wird sehen wie es sich entwickelt.

    Die Änderungen sind jetzt auch nicht der Brüller.

    Am Grundproblem von Java ändert sich nichts, es ist einfach altbacken geworden.
    switch als Ausdruck ist nett, aber auch nur Kosmetik und sicherlich wieder mit Fallthrough, den man nur in 0.0001% der Fälle braucht, eigentlich ein Code-Smell ist, dafür aber in den anderen 99.9999% der Fälle der Code unnötig hässlich macht.

    Iterator, Iterable, Arrays, Collections, Streams
    => Wie wärs wenn man da mal etwas Ordnung reinbringt und generalisiert, sodass man nicht entweder Wrapper-Methoden bauen muss oder ständig in dem Code Konvertierungen vornehmen muss, der eigentlich ausdrucksstark sein sollte.

    Oder: stringList.stream().map(e -> e.toLowerCase).collect(Collectors.toList())
    Meine Güte, dabei muss man die Streams ja schon als großen Fortschritt bezeichnen. Aber wie immer überakademisiert und hässlich. In Xtend schreib ich dagegen:
    stringList.map[it.toLowerCase()]
    ("it." und die Klammern könnte man sogar noch weglassen)

    Aber da lässt sich nicht viel machen weil, Achtung heilige Kuh, Rückwärtskompatibilität. Ich wäre dringend dafür einen Bruch zu machen und die Rückwärtskompatibilität zu brechen um dafür wirklich moderne Features und Syntax-Sugar einzuführen. Einen Bruch mit der Rückwärtskompatibilität alle 25 Jahre kann man sich erlauben, dann klappt's auch mit dem nächsten Jahrhundert,

    Wenigstens ein wirklicher Fortschritt ist in Aussicht, Project Valhalla. Aber wer weiß, ist wohl immer noch im Experimentierstadium und war mal für Java 10 gedacht *hust*.

  3. Re: es geht weiter - ich bin positiv überrascht

    Autor: elgooG 20.03.19 - 19:00

    Noch dazu kommen die Beiträge nicht zwangsläufig von Oracle. Die Basis bildet auch weiterhin OpenJDK.

    Im Grunde ist alles Syntax Sugar. Die Grenze ist auch weiterhin eine VM die eigentlich nicht einmal Generics direkt sondern über Compiler-Tricks beherrscht. Man humpelt modernen Sprachen wie C#, Swift und Kotlin auch weiter hinterher und Getter-/Setter sind wohl eine Plage die man noch ewig mitschleift. Das die IDEs sehr viel Code automatisch generieren um den Enwtickler zu entlasten ändert nichts daran. Dazu kommen Unmengen an Legacy-Klassen/-Frameworks. Darüber täuscht auch der aktuelle modularere Aufbau nicht hinweg.

    Zu einem Cut wird es aber nie so recht kommen. Kompatibilität und Zuverlässigkeit ist bei Enterprise-Anwendungen eben wichtig. Tolle IDEs wie IntelliJ unterstützen zudem die Entwickler.

    Nicht zuletzt würden sich Unternehmen wieder am Markt umsehen, wenn es einen Cut geben würde und es wäre eine riesige risikoreiche Investition nötig.

    Kann Spuren von persönlichen Meinungen, Sarkasmus und Erdnüssen enthalten. Ausdrucke nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: siehe Rückseite

  4. Re: es geht weiter - ich bin positiv überrascht

    Autor: teenriot* 20.03.19 - 19:30

    Die Alternative zum Cut ist eine Zersplitterung des Ökosystem innerhalb der JVM und das schwächt alle. Es ist ja nicht so, dass die Leute, die auf Scala, Kotlin, Clojure umsteigen, dass als Revoluzzer tun, die die Java-Obrigkeit abschaffen wollen. Sie wollen einfach nur nicht länger ausgebremst werden sondern stattdessen mit der Zeit gehen und das am liebsten mit Java.

    Warum kann Java kein safe navigation operator einführen?
    statt: if (myRef != null) myRef.doStuff()
    einfach: myRef?.doStuff()
    Probleme mit der Rückwärtskompatibilität: null

  5. Re: es geht weiter - ich bin positiv überrascht

    Autor: nolonar 21.03.19 - 00:07

    teenriot* schrieb:
    --------------------------------------------------------------------------------
    > Oder: stringList.stream().map(e ->
    > e.toLowerCase).collect(Collectors.toList())
    > Meine Güte, dabei muss man die Streams ja schon als großen Fortschritt
    > bezeichnen. Aber wie immer überakademisiert und hässlich. In Xtend schreib
    > ich dagegen:
    > stringList.map[it.toLowerCase()]
    > ("it." und die Klammern könnte man sogar noch weglassen)

    In C# mit Linq ungefähr genau so simpel:
    stringList.Select(s => s.ToLower())

    Und es funktioniert mit jeder Klasse, die IEnumerable implementiert (also alles, was man durch foreach jagen kann).

    Array Streams in Java?
    Arrays.stream(array).filter(e -> e != null) // WTF?!
    Stream.of(array).filter(e -> e != null) // besser, aber immer noch nicht gut...

    In C#?
    array.Where(e => e != null) // eigentlich selbstverständlich...


    Und dann wäre noch die verkrüppelt implementierten Generics...
    @Override
    public void bla(Object o) // vorgegeben vom Interface

    public void bla(T t) // ERROR: Duplicate method

    Das hat mich erstmal verwirrt. "Ich dachte Java unterstützt overloading, warum geht es nicht?" Ja, Java unterstützt overloading, aber nicht mit Generics...
    Wäre auch nur halb so schlimm, wenn wenigstens folgendes möglich wäre:
    public void bla(Object o) {
    if (o instanceOf T) // geht nicht
    // ...
    }

    Und das gleiche in C#:
    public void Bla(object o) // vorgegeben vom Interface
    {
    var t = o as T;
    if (t != null)
    Bla(t);
    }

    public void Bla (T t)

    Simpel, sauber, funktioniert.


    Dass Java rückwärtskompatibel sein will verstehe ich ja, aber wenn die Sprache dadurch inkonsistent und halbgar wirkt, sollte man sich vielleicht mal überlegen da ein wenig aufzuräumen.

  6. Re: es geht weiter - ich bin positiv überrascht

    Autor: KloinerBlaier 21.03.19 - 08:07

    Grundsätzlich mag ich Java, vorallem uralten Plain-Java-Code finde ich sehr leserlich und ist aufgrund der starken Typisierung auch sehr gut in der Handhabung.

    Ich habe letztens mit Javascript entwickelt und ich mag das wirklich nicht. Interessant finde ich jedoch, wie man immer mehr versucht alles abzudecken. Javascript hat seit ES6 einen enormen Schritt ich Richtung (leserliche) "OOP" gemacht.
    Und auch Java bietet immer mehr Möglichkeiten, dabei wird es aber genau so unleserlich wie andere Programmiersprachen. Außerdem ziehen viele andere Entwickler halt einfach nicht mit. Vor Streams wird sich förmlich gesträubt.
    Wer modernes Java machen will, nutzt sowieso bereits Kotlin. Da wurde Java wirklich mal vereinfacht.
    In vielen Bereichen hat Java auch bereits an Bedeutung verloren. Wo früher ganze Seiten mit JSF realisiert wurden, schreibt man heute vielleicht noch das Backend in Java und auch dabei kloppt man mit Spring eine popelige REST-API zusammen.

  7. Re: es geht weiter - ich bin positiv überrascht

    Autor: minnime 21.03.19 - 11:29

    Dass ich stream() aufrufen muss finde ich eigentlich in Ordnung, e -> e.toLowerCase ließe sich zu String::toLowerCase verkürzen aber collect(Collectors.toList()) ist wirklich ein Ärgernis weil das häufig benutzt wird. Da wäre der feste Einbau von Stream.toList() wirklich sinnvoll.
    Die Erweiterung beim Switch Statement hätten sie sich schenken können, zumal man Switch eigentlich eh selten verwendet.
    Man muss ja auch nicht jedes Sprachfeature einbauen aber Properties wären wirklich sinnvoll und ich habe keine Ahnung warum die sich so dagegen sträuben.

    Es wird generell viel am Garbage Collector rumgeschraubt aber irgendwie kommt da nicht viel bei rum. Es ist erstaunlich wie viel Speicher Javaprogramme verbrauchen. Mein Eclipse zieht aus dem Stand 800 MB und eine Elasticsearch Instanz sogar 1 GB ohne dass da Daten drin sind. .Net Programme sind da deutlich genügsamer

  8. Re: es geht weiter - ich bin positiv überrascht

    Autor: lestard 21.03.19 - 18:08

    Ein Unterschied ist, dass Streams bei Java lazy sind.
    Die Map-Funktion wird erst auf die Elemente angewandt, wenn tatsächlich "collected" wird.
    Sowas geht nur in Lazy-Sprachen wie Haskell "einfach so". In allen anderen Sprachen muss man sich dafür was besonderes ausdenken um die Evaluierung von dem Zusammenbauen der Operationen zu trennen - Zumindest, wenn man lazy-Streams haben will.

    Im Xtend-Beispiel ist das map z.B. mit ziemlicher Sicherheit nicht lazy.

    Ich persönlich würde mir auch wünschen, dass z.B. List in Java direkt ein nicht-lazy "map" sowie "flatMap" bekommt. Aber das sind halt 2 Paar Schuhe die man hier vergleicht.

  9. Re: es geht weiter - ich bin positiv überrascht

    Autor: teenriot* 21.03.19 - 20:12

    Doch im Xtend-Beispiel ist die Ergebnis-Liste lazy. Die Elemente werden erst berechnet wenn sie abgerufen werden. Das ist wie bei Guavas Iterables.

    Ich vergleiche nicht Streams mit lazy Listen, aber man möchte in beiden Fällen das gleiche Ergebnis erreichen, vollkommen egal was man dafür benutzen muss, damit es ausdrucksstark wird. Es geht mir auf den Senkel, dass bei Java immer nur akademisch gedacht wird und die Praxis außen vorgelassen wird. Es tut doch keinem weh, wenn es Methoden gibt die stream().filter() und stream().map() als filter() und map() abkürzen. Dann noch ein toList() dazu und bei 90% der Stellen, bei der in der Praxis streams verwendet werden, hat man ausdrucksstärkeren Code.

    Das Beispiel ist nur exemplarisch. Der akademische Stil zieht sich halt durch und macht alles so unglaublich verbose. Die eigentliche Programm-Logik verschwindet in einem Meer an an Ballast. Irgendwie glauben die Java-API-Entscheider immer, dass weniger Methoden besserer Code ist, dafür soll es aber guter Code sein alles zu abstrahieren bis zum einzelnen Bit. Das ist auch nicht so grundverkehrt. Aber der eigentlich Code ist das Endprodukt und nicht die verwendeten Bibliothek. Die ist ein Werkzeug und darf gerne Komfort-Methoden haben, wenn es dem End-Code nützt, zumal diese oft auch wartungsfrei zu haben sind, weil es einfach simple Wrapper oder Delagates wären. Und man darf auch gerne Komplexität, die in der überwältigenden Mehrheit der Anwendungsfälle nicht benötigt wird, hinter Methoden verstecken, die auf diese häufigen Anwendungsfälle in der Praxis ausgelegt sind.

    Wir haben 2019 und im Java-Code sind immer noch keine Strings über mehrere Zeilen möglich. Das soll kommen, aber wie lange hat das dann gebraucht?



    1 mal bearbeitet, zuletzt am 21.03.19 20:14 durch teenriot*.

Neues Thema Ansicht wechseln


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

Stellenmarkt
  1. CodeCamp:N GmbH, Nürnberg
  2. Erzbistum Paderborn, Paderborn
  3. Institut Franco-Allemand de Recherches Saint-Louis, Weil am Rhein
  4. Hays AG, Wiesbaden (Home-Office möglich)

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (u. a. Mindecraft für 20,99€, Borderlands 2 GOTY für 6,99€, Call of Duty 8 - Modern Warfare 3...
  2. 449,94€ (bei Mindfactory.de)
  3. (u. a. Akkuschrauber, Schlagbohrschrauber, Handkreissägen)
  4. (u. a. Multitools ab 46,99€)


Haben wir etwas übersehen?

E-Mail an news@golem.de


Android & Fido2: Der Traum vom passwortlosen Anmelden
Android & Fido2
Der Traum vom passwortlosen Anmelden

Windows Hello, Android und kleine bunte USB-Sticks sollen mit Webauthn das Passwort überflüssig machen. Wir haben die passwortlose Welt mit unserem Android Smartphone erkundet und festgestellt: Sie klingt zu schön, um wahr zu sein.
Von Moritz Tremmel

  1. Sicherheitslücken in Titan Google tauscht hauseigenen Fido-Stick aus
  2. Stiftung Warentest Zweiter Faktor bei immer mehr Internetdiensten verfügbar
  3. Zwei-Faktor-Authentifizierung Die Lücke im Twitter-Support

Zulassung autonomer Autos: Der Mensch fährt besser als gedacht
Zulassung autonomer Autos
Der Mensch fährt besser als gedacht

Mehrere Jahre haben Wissenschaftler und Autokonzerne an Testverfahren für einen Autobahnpiloten geforscht. Die Ergebnisse sprechen für den umfangreichen Einsatz von Simulation. Und gegen den schnellen Einsatz der Technik.
Von Friedhelm Greis

  1. Autonomes Fahren US-Post testet Überlandfahrten ohne Fahrer
  2. Mercedes-Sicherheitsstudie Wenn das Warndreieck autonom aus dem Auto fährt
  3. Einride T-Pod Autonomer Lkw fährt in Schweden Waren aus

LTE-V2X vs. WLAN 802.11p: Wer hat Recht im Streit ums Auto-WLAN?
LTE-V2X vs. WLAN 802.11p
Wer hat Recht im Streit ums Auto-WLAN?

Trotz langjähriger Verhandlungen haben die EU-Mitgliedstaaten die Pläne für ein vernetztes Fahren auf EU-Ebene vorläufig gestoppt. Golem.de hat nachgefragt, ob LTE-V2X bei direkter Kommunikation wirklich besser und billiger als WLAN sei.
Eine Analyse von Friedhelm Greis

  1. Vernetztes Fahren Lobbyschlacht um WLAN und 5G in Europa
  2. Gefahrenwarnungen EU setzt bei vernetztem Fahren weiter auf WLAN

  1. Asus Zenscreen Touch: Zweiter Bildschirm für Notebook und Smartphone zum Mitnehmen
    Asus Zenscreen Touch
    Zweiter Bildschirm für Notebook und Smartphone zum Mitnehmen

    Computex 2019 Asus wird 30 Jahre alt und zeigt auf einer Pressekonferenz den Zenscreen Touch. Das ist ein tragbarer zweiter Bildschirm, an den per USB Typ-C ein Smartphone oder ein Notebook angeschlossen werden kann. Ein integrierter Akku soll deren Energiereserven schonen.

  2. Netzausbau: Telekom nimmt 300 neue LTE-Mobilfunkstandorte in Betrieb
    Netzausbau
    Telekom nimmt 300 neue LTE-Mobilfunkstandorte in Betrieb

    Die Telekom verdichtet ihr LTE-Netz. Die Bundesnetzagentur macht sich dennoch Sorgen um das Tempo des Mobilfunkausbaus in Deutschland.

  3. Mastercard: Apple-Card-System wird auch anderen angeboten
    Mastercard
    Apple-Card-System wird auch anderen angeboten

    Das von Mastercard zusammen mit Goldman Sachs entwickelte digitale Kartenschema für die Apple Card wird nach einer Frist auch anderen Anbietern zur Verfügung stehen. Damit sind weitere Kreditkarten ohne CVC-Nummer möglich.


  1. 14:45

  2. 14:30

  3. 14:15

  4. 14:00

  5. 13:45

  6. 13:30

  7. 13:15

  8. 13:00