1. #1
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard Neuerungen in Java 8

    Hallo,

    seit kurzem steht der offizielle Release Candidate des JDK 8 von Oracle zum Download bereit. Ähnlich wie Version 1.5, führt die Version 8 neue Sprachmittel ein. Java soll nun die funktionale Programmierung besser unterstützen. Die wichtigsten Neuerungen sind imho die Lambda-Funktionen, Streams API und die Möglichkeit Defaultimplementationen in Interfaces, die vor Version 8 nur Signaturen und Konstanten enthalten durften, anzubieten.

    Wer mehr über die Neuheiten in Java 8 erfahren möchte, dürfte diese Seite momentan die beste Anlaufstelle sein.

    Letztlich zieht Java damit auf einen Stand, den andere Sprachen schon vor einigen Jahren hatten; bedingt durch mein Studium habe ich mit viel mit Java zu tun und werde später wohl auch beruflich mit Java zu kämpfen haben, aber wohl eher mit der EE Version.

    Wie sieht es bei euch aus? Wer programmiert in Java? Führt ihr das Upgrade auf Version 8 in naher Zukunft durch oder habt ihr Java von eurem System verbannt wegen der kürzlich aufgetretenen Serie von Sicherheitslücken?

  2. The Following 5 Users Say Thank You to Nuebel For This Useful Post:

    BCAA (21.03.2014), DMW007 (21.03.2014), fedor98 (30.10.2018), Open Thought (12.08.2019)

  3. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Neuerungen in Java 8

    Ich hab Java damals wegen dem Knuddels-Kram angefangen. Da ich davor schon eine Zeit lang .NET entwickelte, hatte ich dementsprechend bereits höhere Anforderungen an die Sprache gestellt. Und wurde enttäuscht, als ich in Java dann so Sachen wie z.B. Verschachtelung von 10 verschiedenen Klassen um eine Datei zu öffnen. Oder beispielsweise den == Operator, der bei Strings nicht deren Inhalt vergleicht, wie man es als .NET Entwickler erwarten würde und dementsprechend Anfangs für große Verwirrung sorgte. Bin damals auch ziemlich vom Stuhl gefallen, als ich ein C# Programm in Java neu schrieb und auf den Ressourcenverbrauch geschaut habe. Unterm Strich hat das dazu geführt, dass ich nie ein wirklicher Fan von Java war. Die Sprache hat auf mich einen veralteten Eindruck gemacht. Mir gefällt .NET wesentlich besser. In .NET merkt man immer wieder, dass sich die Entwickler da echt was bei gedacht haben.
    Finde es auf jeden Fall gut, dass es mit Java anscheinend langsam aber sicher bergauf geht. Neuerungen hielten sich in der vorherigen Version 7 ja in Grenzen, und es hat ziemlich lange gedauert, bis die überhaupt erschienen ist.

    Zitat Zitat von Nuebel Beitrag anzeigen
    Führt ihr das Upgrade auf Version 8 in naher Zukunft durch oder habt ihr Java von eurem System verbannt wegen der kürzlich aufgetretenen Serie von Sicherheitslücken?
    Ich hatte bis vor kurzem das Browser-Addon deaktiviert bzw. auf Click2Play. Das große Problem ist hier ja das Browser-Addon, und nicht Java an sich. Java sowie das SDK war installiert und eingerichtet. Vor ein paar Wochen habe ich Windows aufgrund eines Systemwechsels neu installiert und Java auf dem neuen System nicht installiert. Bisher habe ich es nirgends vermisst. Entwicklungsmäßig hab ich in Java nicht mehr wirklich was gemacht, seit ich die Entwicklung sämtlicher Software für Knuddels aufgrund mangelnder Nachfrage eingestellt habe.


  4. The Following User Says Thank You to DMW007 For This Useful Post:

    Nuebel (23.03.2014)

  5. #3
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Neuerungen in Java 8

    Ich war anfangs sehr von Java begeistert. Meine erste Programmiersprache war Comal, Java kam mir folglich sehr modern vor, aber dieses Gefühl löste sich schnell in Luft auf einige Zeit später, als ich mir andere Sprachen (u.a. C#) ansah. Komplett abwenden konnte ich mich von Java allerdings nie. In der Schule mussten wir darin programmieren und im Studium auch, wobei zur Zeit mehr in C/C++ gemacht wird, wohl aber nur dieses Semester.

    Privat programmiere ich nicht mehr in Java; ich bin aber auf der JVM geblieben mit Scala. Scala unter .NET ist/war meines WIssens nach auch möglich, aber ich meine gelesen zu haben, dass die Entwicklung eingestellt wurde und sich auf die JVM konzentriert wird.
    Mit Scala habe ich dann auch ein neues Paradigma für mich entdeckt: Objektfunktionale Programmierung. Neben der tollen Verzahnung von objektorientierter und funktionaler Programmierung, bin ich auch geplättet wie viel Tipparbeit man sich spart.


    public class Person {
    private final String firstName;
    private final String lastName;

    public Person(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    }

    public final String getFirstName() {
    return firstName;
    }

    public final String getLastName() {
    return lastName;
    }
    }


    Das ist ziemlich viel Code für wenig Funktionalität. Dasselbe lässt sich in Scala ganz einfach schreiben:

    Code:
    class Person(val firstName: String, val lastName: String)
    Das war's . Und die Funktionalität (auch die immutable fields, encapsulation etc.) ist dieselbe.
    Wenn man mal Zeit hat, lohnt es sich auf jeden Fall, sich mal Scala anzusehen. Macht viel Spaß darin zu programmieren.


    Zitat Zitat von DMW007
    Ich hatte bis vor kurzem das Browser-Addon deaktiviert bzw. auf Click2Play. Das große Problem ist hier ja das Browser-Addon, und nicht Java an sich. Java sowie das SDK war installiert und eingerichtet. Vor ein paar Wochen habe ich Windows aufgrund eines Systemwechsels neu installiert und Java auf dem neuen System nicht installiert. Bisher habe ich es nirgends vermisst. Entwicklungsmäßig hab ich in Java nicht mehr wirklich was gemacht, seit ich die Entwicklung sämtlicher Software für Knuddels aufgrund mangelnder Nachfrage eingestellt habe.
    Ja, das stimmt. Das Addon war der Übeltäter.
    Java hat imho auf dem Desktop nie richtig Fuß gefasst, deshalb vermisst man es auch nicht wirklich, wenn es nicht installiert ist. Nicht zuletzt haben das AWT und Swing dazu beigetragen. Eine Anwendung mit GUI hat sich irgendwie immer fremd angefühlt, egal wie viel man mit Look-and-Feels herum gefrickelt hat. Dafür sah in der Regel auf jeder Plattform gleich aus. Swing ist ja mittlerweile auch "veraltet", Oracle legt seinen Fokus auf JavaFX, das wiederum ziemlich hübsch anzusehen ist.



    Aber auch das wird Java nicht (zurück) auf den Desktop holen. Der Trend liegt bei WebApps, das zentrale Programm ist der Internet Browser, in dem sich zukünftig wohl so ziemlich alles abspielen wird. Im Server Bereich wird Java aber denke ich noch viele viele Jahre überleben.

  6. The Following User Says Thank You to Nuebel For This Useful Post:

    DMW007 (22.03.2014)

  7. #4

    Registriert seit
    02.02.2014
    Beiträge
    7
    Thanked 0 Times in 0 Posts

    Standard AW: Neuerungen in Java 8

    Ich frag mich eher, wie viele neue Sicherheitslücken wieder zu finden sein werden. Bei denen steht Sicherheit ja nicht gerade an erster Stelle.

  8. #5
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Neuerungen in Java 8

    Zitat Zitat von Nuebel Beitrag anzeigen
    Das ist ziemlich viel Code für wenig Funktionalität. Dasselbe lässt sich in Scala ganz einfach schreiben:

    Code:
    class Person(val firstName: String, val lastName: String)
    Wenn in get/set keine Logik nötig ist, kann man das in .NET mit automatisch implementierten Eigenschaften auch deutlich abkürzen:

    class Person {
    public Person(string firstName, string lastName) {
    this.FirstName = firstName;
    this.LastName = lastName;
    }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    }

    Wird mit Shortcuts von Visual Studio noch weiter vereinfacht. Dein Beispiel ist natürlich trotzdem noch etwas kürzer, wird aber denke ich mit steigender Anzahl an Attributen auch etwas unübersichtlich. In meinem Fall nutze ich .NET in letzter Zeit hauptsächlich serverseitig (ASP.NET mit MVC), wo das sehr oft in Form von Models vorkommt. Da besitzt ein Attribut dann schnell auch gleich mal ein paar Eigenschaften:

    [Required(ErrorMessage = "Bitte gib das Datum des Beginns deiner Ausbildung an")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd.mm.yyyy}", ApplyFormatInEditMode = true)]
    [Display(Name = "Ausbildungsbeginn")]
    public DateTime? AppreticeShipBegin { get; set; }

    Da macht das mit den automatisch implementierten Eigenschaften natürlich besonders Sinn: Alles schön übersichtlich, ohne Overhead. Deine Variante in Scala hat natürlich trotzdem seine Berechtigung, wenn man eben einfach nur eine Klasse mit öffentlichen Attributen benötigt.

    Zitat Zitat von Nuebel Beitrag anzeigen
    Java hat imho auf dem Desktop nie richtig Fuß gefasst, deshalb vermisst man es auch nicht wirklich, wenn es nicht installiert ist.
    Eine Anwendung mit GUI hat sich irgendwie immer fremd angefühlt, egal wie viel man mit Look-and-Feels herum gefrickelt hat. Dafür sah in der Regel auf jeder Plattform gleich aus. Swing ist ja mittlerweile auch "veraltet", Oracle legt seinen Fokus auf JavaFX, das wiederum ziemlich hübsch anzusehen ist.
    Ja das stimmt. Hab eben mal nachgedacht was mir auf die schnelle für einigermaßen relevante Java-Programme im Desktop-Bereich einfallen. Nichts bis auf den jDownloader. Wobei der in Version 2 anscheinend zwar noch in Java geschrieben ist, aber in der Windows-Version die Installation von Java nicht mehr benötigt. Ist mir gerade so aufgefallen, dass ich den nutze, ohne Java-Installiert zu haben. Im Server-Bereich sieht es natürlich wieder anders aus.
    Dieses komische Swing-Design ist mir damals auch direkt aufgefallen, als ich mir die GUI-Elemente angeschaut habe. Swing war irgendwie komisch, auch wenn es eigentlich ein eher schlichtes Design war, wie bei den Standard .NET WinForms. Die von .NET haben mir immer besser gefallen. JavaFX sieht nett aus, wirkt deutlich zeitgemäßer als Swing.

    Zitat Zitat von Nuebel Beitrag anzeigen
    Der Trend liegt bei WebApps, das zentrale Programm ist der Internet Browser, in dem sich zukünftig wohl so ziemlich alles abspielen wird. Im Server Bereich wird Java aber denke ich noch viele viele Jahre überleben.
    Der Browser wird einige Anwendungen überflüssig machen, ja. Kann man sehen wie man will, es hat Vor- und Nachteile. Im wesentlichen hat der Entwickler eine viel bessere Kontrolle über seine Software. Die simple Umgehung eines Lizenzierungssystems durch Keygens, Cracks und ähnliches ist nicht mehr so einfach möglich. Die Anwendung ist prinzipiell auf so ziemlich allen Endgeräten nutzbar, und kann sich z.B. mittels responsive Design automatisch an das Endgerät anpassen. Updates werden auch deutlich vereinfacht: Einfach die Anwendung auf dem Server aktualisieren, und alle Clients erhalten automatisch die neuste Version. Das kann natürlich auch gleichzeitig zum Nachteil der User werden: Eine Funktion ist dann halt weg, man kann nicht einfach das Update nicht installieren und ggf. in Ruhe nach Alternativen suchen. Dasselbe natürlich wenn der Entwickler die Plattform offline nimmt. Ist ein zweischneidiges Schwert.
    Für Entwickler öffnen sich auf jeden Fall coole Möglichkeiten. Alles ist aber eben (noch) nicht im Browser möglich. Daher werden Desktop-Anwendungen wohl noch eine ganze Weile relevant bleiben. Die Frage ist, ob Java sich durchsetzt. Was ich momentan sehe sieht ja ganz nett aus, aber macht aus Java eben noch keine Sprache, die sich problemlos gegen die Konkurrenz durchsetzen kann. Gerade unter Windows hat .NET noch deutlich Vorsprung, auch wenn Java besser wird.

    Zitat Zitat von The13Kind Beitrag anzeigen
    Ich frag mich eher, wie viele neue Sicherheitslücken wieder zu finden sein werden. Bei denen steht Sicherheit ja nicht gerade an erster Stelle.
    Das mag stimmen. Aber wie bereits gesagt ist das Browser-Addon von Java der Schweizer Käse in Sachen Sicherheit, nicht Java selbst. Das ist nichts neues sondern schon länger bekannt. Wer heutzutage Java auf allen Seiten ohne Nachfrage aktiviert hat, handelt meiner Ansicht nach groß fahrlässig. Click2Play mit einer Whitelist ist hier Pflicht, wenn man Java tatsächlich im Browser benötigt. Auf die meisten User wird das wohl nicht zutreffen, hier sollte das Browser-Addon komplett deaktiviert werden.
    Wenn jeder ein gewisses Grundwissen im Bereich IT-Sicherheit hätte, dann gäbe es solche Katastrophen gar nicht. Aber anstatt ein Schulfach 'IT-Sicherheit' einzuführen wo jeder etwas lernt was er JETZT sofort UND später braucht, wird nach wie vor jeder andere Blödsinn in der Schule behandelt. Für kriminelle ist das wie Weihnachten und Ostern zusammen: Unmengen an potenziellen Opfern, deren Systeme sie nach belieben missbrauchen können. Und zwar dauerhaft, sofern sie sich nicht auffällig verhalten, denn die Opfer haben in der Regel ja nicht mal den Hauch einer Ahnung, was da passiert..


  9. The Following User Says Thank You to DMW007 For This Useful Post:

    Nuebel (23.03.2014)

  10. #6

    Registriert seit
    20.04.2013
    Beiträge
    10
    Thanked 0 Times in 0 Posts

    Standard AW: Neuerungen in Java 8

    Wir setzen noch viel Java ein, da IBM Domino im Hause ist. Auch Frameworks wie Vaadin sind mit dabei. Oder Webapps auf JSP Basis.
    Ich bin kein so großer Java-Fan. C# gefällt mir besser, weil es moderner ist. Schon alleine LINQ, seit wie vielen Jahren ist das in C# enthalten? 10 mittlerweile? Über Java reden wir lieber nicht.
    Das Argument, C# sei plattformabhängig und damit teuer, gilt auch nicht mehr. Für ASP.NET Core ist nicht mal mehr ein IIS mit seiner teuren Lizenzierung nötig und auf Linux läuft das ganze deutlich performanter als Java.

    Was die Java-Welt dagegen zusätzlich erschüttern dürfte ist das neue Release und Lizenzmodell. Die kostenfreien OS-Releases erhalten nur noch ein halbes Jahr Support. Danach muss man upgraden oder eben einen kommerziellen Vertrag abschließen, der dementsprechend zu buche schlägt. Sicher ist Java noch verbreitet. Ich sehe da aber C# mit .NET Core zukünftig noch mehr im Vorteil.

  11. #7

    Registriert seit
    10.05.2015
    Beiträge
    32
    Thanked 3 Times in 2 Posts

    Standard AW: Neuerungen in Java 8

    Wann immer wir durch eine Sammlung gehen müssen, müssen wir einen Iterator erstellen, dessen eigentlicher Zweck es ist, darüber zu iterieren, und dann haben wir Geschäftslogik in einer Schleife für jedes der Elemente in der Sammlung. Wir könnten ConcurrentModificationException abrufen, wenn der Iterator nicht richtig verwendet wird. Java 8 hat forEach-Methode in der java.lang.Iterable-Schnittstelle eingeführt, so dass wir uns beim Schreiben von Code nur auf die Geschäftslogik fokussieren. forEach-Methode akzeptiert java.util.function.Consumer-Objekt als Argument, so dass es hilft, unsere Geschäftslogik an einem separaten Ort zu haben, den wir wiederverwenden können. Mir hilft diese Neuerung enorm bei Java 8. Leider wird sie noch immer nicht überall eingesetzt, unsere Firma nutzt noch Java 6 und 7 (!)

  12. #8

    Registriert seit
    16.12.2012
    Beiträge
    62
    Thanked 8 Times in 7 Posts

    Standard AW: Neuerungen in Java 8

    Da ist doch nichts aufwändig daran...
    Solange in den get und set Methoden nur die Variablen übergeben werden, sind sie eigentlich überflüssig...

    Code:
    class Person { 
        public string firstName;
        public string lastName;
    }

  13. #9

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Neuerungen in Java 8

    Geht natürlich, macht man so aber nicht in Java. Der Grund hierfür sowie für einige andere Dinge schimpft sich Konventionen.
    Da sollte sich einfach jeder dran halten, macht im Endeffekt vieles einfacher (wenn man z. B. mal im Team arbeitet oder wenn (Git-) Projekte geforkt werden).

  14. The Following User Says Thank You to Flav For This Useful Post:

    Hase (02.01.2019)

  15. #10
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Neuerungen in Java 8

    Zum einen Konventionen, aber zum anderen eben auch Kapselung. Teils will man die Daten aufbereiten/vereinheitlichen. Zum Beispiel hast du eine Basis-URL, die immer einen Slash am Ende haben soll (oder eben keinen). Wenn dieses Attribute ohne Slash gesetzt wird, müsste das bei jedem Aufruf geprüft und ggf. angepasst werden. Mit Kapselung prüfst du das 1x via setter und es stimmt überall. Wenn alles gekapstelt ist, kann man solche Funktionen bei Bedarf auch später nachrüsten. Hast du da aber nur ein öffentliches Attribute, muss jede Referenz angepasst werden. Wenn man einen Mix fährt, wirds auch unübersichtlicher.

    Das ist wieder ein Grund dafür ist, weswegen ich ein großer C# Fan bin. Dort kann man sauber mit wenig Tipparbeit kapseln:

    public class User {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    }

    Sehr cool sind auch die Sichtbarkeiten, wenn man wie oben erwähnt z.B. ein lesendes Attribute definieren möchte:

    public class User {
    public string Id { get; private set; }
    public User() {
    Id = GenerateUserId();
    }
    }

    In Java aber auch vielen anderen Sprachen bräuchte ich zum kapseln ein Attribute mit bis zu zwei Methoden. Vor allem bei größeren Klassen und Projekten macht das einiges an Overhead/Übersichtlichkeit aus.
    Wenn sich Attribute derart einfach kapseln lassen, muss man sich darüber keinen Kopf machen und kommt gar nicht erst auf die Idee, Konventionen zu brechen um vermeintlich besser arbeiten zu können.


  16. The Following User Says Thank You to DMW007 For This Useful Post:

    Hase (02.01.2019)

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 02.12.2013, 23:41
  2. Java EE 32 Bit?
    Von Pwned im Forum Java
    Antworten: 2
    Letzter Beitrag: 04.08.2012, 23:08
  3. Ubuntu Sun Java
    Von hYpercrites im Forum Linux
    Antworten: 3
    Letzter Beitrag: 20.06.2012, 15:17
  4. Java Fehler
    Von x Like a Boss x3 im Forum Minecraft
    Antworten: 2
    Letzter Beitrag: 28.05.2012, 21:01
  5. Proxifier Java ?
    Von Ticket2000 im Forum Software
    Antworten: 7
    Letzter Beitrag: 01.04.2012, 22:49
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.