Java 8. Programmiermethodik. Eva Zangerle Universität Innsbruck
|
|
- Lorenz Sternberg
- vor 7 Jahren
- Abrufe
Transkript
1 Java 8 Programmiermethodik Eva Zangerle Universität Innsbruck
2 Java 8 (1) Java 8 wurde von Oracle am 18. März 2014 veröffentlicht Damit wurden einige Features umgesetzt, welche ursprünglich schon für Java 7 geplant waren (etwa Lambdas) Neben Bugfixes wurden weitreichende Änderungen an der Java-Syntax vorgenommen Seit JDK 1.5 ist Java 8 das wohl umfangreichste Release Hier werden nur die wichtigsten Änderungen/Erweiterungen aufgeführt 2
3 Java 8 (2) Neu in Java 8 Lambdas Default Methoden Streams Optional Type Annotations Repeating Annotations Änderungen mit Java 8 Nashorn (ersetzt Rhino) Date & Time APIs JavaFX Metaspace (Garbage Collection) 3
4 Funktionale Programmierung in Java
5 Funktionale Programmierung Programm wird als Aneinanderreihung von mathematischen Funktionen repräsentiert Daten sind stets unveränderbar Frei von Seiteneffekten Funktionen können weitere Funktionen übergeben werden (Code-as-Data) Vorteile: Kürzerer, übersichtlicherer Code Besser parallelisierbar Seiteneffekte
6 Lambdas - Einführung Bekannt als Project Lambda Hauptfeature von Java 8 Dient vor allem der Vereinfachung des Programmcodes etwa beim Sortieren von Collections Lambdas sind objektlose Methoden Kommen nur einmal im Code vor Angelehnt an funktionale Programmierung (Programme bestehen nur aus Funktionen, keine Seiteneffekte) Funktionen als Parameter Anonyme innere Klasse kapselt diese Verhalten 6
7 Lambdas (1) Syntax: parameters -> body (argument list) -> code Beispiele: (String name, Address address) -> [Implementierung] (name, adress) -> [Implementierung] name -> [Implementierung] () -> return 42 Type inference Weitere Information unter Programmiermethodik Java 8 7
8 Lambdas (2) Beispiele: (String s1, String s2) -> {return s2.length() - s1.length(); (String str) -> System.out.println(str) Parameter-Typ-Deklaration ist optional; bei einem einzigen Parameter auch die Klammerung: str -> System.out.println(str) () -> System.out.println(this) Bei Verwendung eines einzigen Statements im Body, kann die Block-Definition und return weggelassen werden: (s1, s2) -> s2.length() - s1.length() 9
9 Lambdas (3) Comparator mit inner class: Comparator<String> ignorecasecomparator_old = new Comparator<String>() { public int compare(string s1, String s2) { return (s1.tolowercase().compareto(s2.tolowercase())); ; Comparator mit Lambda: Comparator<String> ignorecasecomparator_new = (String s1, String s2) -> (s1.tolowercase().compareto(s2.tolowercase())); Programmiermethodik Java 8 10
10 Lambdas (4) public class RunnableTest { public static void main(string[] args) { System.out.println("=== RunnableTest ==="); // Anonymous Runnable Runnable r1 = new public void run(){ System.out.println("Hello world one!"); ; // Lambda Runnable Runnable r2 = () -> System.out.println("Hello world two!"); r1.run(); r2.run(); 11
11 Lambdas (5) List<Person> list = new ArrayList<Person>(); list.add(new Person("max", "mustermann", 20)); list.add(new Person("jane", "doe", 44)); list.add(new Person("john", "doe", 55)); Collections.sort(list, (Person p1, Person p2) -> p1.getlastname().compareto(p2.getlastname())); list.foreach(x -> x.increaseage()); Programmiermethodik Java 8 12
12 Methoden-Referenzen Durch die Einführung von Lambdas werden Methoden- Referenzen möglich. Diese sind definiert für: Statische Methoden Instanz-Methoden Methoden einer bestimmten Instanz Konstruktoren (etwa TreeSet::new) Methoden-Referenzen werden mit Hilfe von :: angegeben 13
13 Methoden-Referenzen Beispiel (statt list.foreach(x -> x.increaseage()): list.foreach(person::increaseage); Ausgabe aller Listenelemente: list.foreach(system.out::println) Verschachteltes Beispiel (mit java.nio.file.files.lines (Non- Blocking IO)): Files.lines(Paths.get("Nio.java")).map(String::trim).forEach(System.out::println); Weitere Informationen: Programmiermethodik Java 8 14
14 Functional Interfaces (1) Als weitere Erweiterung der Lambdas gibt es in Java 8 so genannte Functional Interfaces. Das sind Interfaces, welche genau eine (abstrakte) Methode beinhalten (Ausnahme sind geerbte Methoden von Objekt sein also etwa tostring()) Auch Single Abstract Method interfaces (SAM) genannt Beispiele: Callable, Comparator, Runnable 15
15 Functional Interfaces (2) Lambdas können stets nur eine Methode definieren -> durch Functional interfaces kann sichergestellt werden, dass Lambdas verwendet werden können. Die kann auf solchen Interfaces verwendet werden, um Compiler- Fehlermeldungen zu erhalten. Programmiermethodik Java 8 16
16 Functional Interfaces public interface Displayable { public display(); public class DisplayableImplementation { public static void main(string[] args) { Displayable disp_anonymous = new Displayable() public void display() { System.out.println("anonymous inner class"); ; disp_anonymous.display(); Displayable disp_lambda = () -> System.out.println("lambda expression"); 17
17 Streams (1) Mit Java5 wurde eine neue for-schleife eingeführt: List<String> mylist = Arrays.asList("e0", "e1",..., "e999"); for (String e: mylist) { System.out.println(e); Diese foreach-schleife hat den Nachteil, dass die Elemente nicht parallel, sondern sequentiell abgearbeitet werden (man müsste zuerst händisch das Array in Teile zerlegen und diese dann parallel abarbeiten) Aus diesem Grund gibt es in Java 8 Streams und eine weitere foreach Schleife (das Interface Iterable wurde um eine default Methode foreach erweitert) 18
18 Streams (2) foreach-schleife auf Streams basiert auf dem Consumable functional interface, das die Implementierung einer accept Methode verlangt: Beispiele mit als Lambda implementiertem accept(): list.foreach(x -> x.increaseage()); list.foreach(system.out::println) Programmiermethodik Java 8 19
19 Streams (3) Streams können auch ohne foreach verwendet werden. Dazu gibt es etwa die Collections.stream, Arrays.stream oder die Collections.parallelStream Methoden Streams wurden für viele Anwendungen definiert: Für das Arbeiten mit Dateien und Verzeichnissen (etwa mit Files.lines) Patterns (bei RegularExpressions) können gestreamt werden Die Klasse Stream kann für beliebige Typen verwendet werden (mit Hilfe der Methode Stream.of()) Unendliche Streams sind definiert (Stream.iterate(i, i -> i+1)) 20
20 Streams (4) Map/Filter/Reduce Verfahren können nun einfach umgesetzt werden (und auch parallelisiert werden): Input-Daten [Ops]* [Terminal Op] Output-Daten Methoden, die angewendet werden können (Auszug): Map Filter Aggregationen wie Sum Methoden, die am Schluss auf den Stream angewendet werden können (terminal ops): foreach Reduce 21
21 Streams (4) List<Transaction> grocerytransactions = new Arraylist<>(); for(transaction t: transactions){ if(t.gettype() == Transaction.GROCERY){ grocerytransactions.add(t); Collections.sort(groceryTransactions, new Comparator(){ public int compare(transaction t1, Transaction t2){ return t2.getvalue().compareto(t1.getvalue()); ); List<Integer> transactionids = new ArrayList<>(); for(transaction t: grocerytransactions){ transactionsids.add(t.getid()); Beispiel und Grafiken entnommen aus html Programmiermethodik Java 8 22
22 Streams (4) List<Integer> transactionsids = transactions.stream().filter(t -> t.gettype() == Transaction.GROCERY).sorted(comparing(Transaction::getValue).reversed()).map(Transaction::getId).collect(toList()); Beispiel und Grafiken entnommen aus html Programmiermethodik Java 8 23
23 Streams (5) Beispiel und Grafiken entnommen aus html Programmiermethodik Java 8 24
24 Optional (1) Optional wurde als neue Klasse eingeführt, um NullPointerExceptions vorzubeugen. Angelehnt an funktionale Programmiersprachen. Beispiel (ohne Optional): String version = computer.getsoundcard().getusb().getversion(); Alternative (?): String version = "UNKNOWN"; if(computer!= null) { Soundcard soundcard = computer.getsoundcard(); if(soundcard!= null) { USB usb = soundcard.getusb(); if(usb!= null) { version = usb.getversion(); Beispiel entnommen aus 25
25 Optional (2) public class Computer { private Optional<Soundcard> soundcard; public Optional<Soundcard> getsoundcard() { public class Soundcard { private Optional<USB> usb; public Optional<USB> getusb() {... public class USB{ public String getversion(){... Beispiel entnommen aus Programmiermethodik Java 8 26
26 Optional (3) Optional.of() kann als Wrapper um einen Wert verwendet werden, um null zu vermeiden Optional.isPresent() kann für bisherige Prüfungen verwendet werden Optional.ifPresent(Consumer) wird verwendet, um eine Aktion durchzuführen, wenn Werte gesetzt sind: optionalsoundcard.map(soundcard::getusb).filter(usb -> "3.0".equals(usb.getVersion()).ifPresent(() -> System.out.println("ok")); 27
27 Java 8: Nicht-funktionale Erweiterungen
28 Default Methoden (1) Default Methoden sind Teile von Interfaces, welche eine Implementierung beinhalten. Neben Default-Methoden, können auch static Methoden ausprogrammiert werden. Der Hauptunterschied zu abstrakten Klassen ist darin zu sehen, dass es große Unterschiede bei der Vererbung gibt (eine Klasse kann mehrere Interfaces implementieren). Es kommt zu einem Compiler-Fehler, wenn eine Subklasse zwei Interfaces implementiert, welche Default Methoden mit gleichem Namen beinhalten (siehe nächstes Beispiel). 29
29 Default Methoden (2) Beispiel: public interface A { default void foo() { System.out.println("Calling A.foo()"); public interface B { default void foo() { System.out.println("Calling B.foo()"); public class MySubclass implements A, B { // führt zu Compiler-Fehler 30
30 Default Methoden (3) Beispiel: public interface A { default void foo() { System.out.println("Calling A.foo()"); public interface B { default void foo() { System.out.println("Calling B.foo()"); public class MySubclass implements A, B { default void foo() { A.super.foo(); // OK (jede Implementierung ist ok) 31
31 Type Annotations Type Annotations sind Annotationen, welche überall dort verwendet werden können, wo ansonsten Typen stehen. Gedacht sind Type Annotations, um eine bessere Validierung zu ermöglichen (dafür gibt es etwa Frameworks, welche die Überprüfung übernehmen; z.b. das Checker Framework). Beispiel: final String mystring = (@NonNull String) str; Range Checks, etc. 32
32 Repeating Annotations Mit Type Annotations wurden auch Repeating Annotations eingeführt. Damit kann ab Java8 kann die selbe Annotation mehrfach für eine Methode/Typ/Klasse verwendet werden Bei selbst definierten Annotationen verwendet man Beispiel = = last ) public void doperiodiccleanup() {... Weitere Informationen: 33
33 Änderungen mit Java 8
34 Nashorn (1) Nashorn ersetzt Rhino als JavaScript-Interpreter. Damit wird es möglich, JavaScript Code auf der JVM auszuführen. Nashorn verwendet invokedynamic und ermöglicht damit eine bessere Performance (3-5 mal). Das Kommandozeilentool jjs wurde in Java 8 eingeführt und ruft die Nashorn-Engine auf. Die Verwendung ist auch direkt im Java Code möglich (siehe Beispiel). 35
35 Nashorn (2) Beispiel: import javax.script.scriptengine; import javax.script.scriptenginemanager; // ScriptEngineManager enginemanager = new ScriptEngineManager(); ScriptEngine engine = enginemanager.getenginebyname("nashorn"); // engine.eval("function myprint(s) { print(s); "); engine.eval("myprint('hello Nashorn');"); 36
36 Nashorn (3) Beispiel (mit invokefunction): import javax.script.scriptengine; import javax.script.scriptenginemanager; // ScriptEngineManager enginemanager = new ScriptEngineManager(); ScriptEngine engine = enginemanager.getenginebyname("nashorn"); // Invocable inv = (Invocable) engine; engine.eval("function myprint(s) { print(s); "); inv.invokefunction("myprint", "Hello Nashorn2"); 37
37 Date & Time API Als ein Nachteil von Java kann die komplexe Arbeitsweise mit Datums- und Zeitfunktionen angesehen werden (etwa ist SimpleDateFormat nicht thread-safe) Deshalb wurde eine neue API eingeführt, welche an die Library Yoda Time angelehnt ist. Für Datums- und Zeitoperationen können nun neue Klassen verwendet werden: LocalDate Datum (also Tag, Monat, Jahr) LocalTime Zeit (innerhalb eines Tages) LocalDateTime Datum und Zeit 38
38 JavaFX (1) Für grafische Oberflächen sollte kein Swing mehr verwendet werden (AWT ist sogar schon länger als deprecated eingestuft) Ab Java8 finden sich alle benötigten Teile für JavaFX im JRE (gilt für Oracle Java, nicht für OpenJDK). Damit ist nun JavaFX8 die empfohlene Methode, grafische (Desktop)Applikationen umzusetzen. JavaFX8 nutzt verstärkt Lambdas und ermöglicht somit eine einfachere Programmierung von GUIs 39
39 JavaFX (2) Das Theme Modena ist nun die Standardeinstellung, womit Oberflächen moderner aussehen als mit JavaFX2 (und/oder Swing, AWT) Mit Java 8 erhielt JavaFX vollen 3D Support. Weitere Informationen 40
40 Metaspace PermGen wurde abgelöst durch den so genannten Metaspace. Der nun verwendete Metaspace wird im nativem Speicher verwaltet. Die Parameter XX:PermSize und XX:MaxPermSize sind nicht mehr verfügbar und werden ignoriert Einstellungen für den Metaspace können vorgenommen werden (etwa ein Größenlimit), sind aber nur in Ausnahmefällen notwendig 41
41 Ausblick
42 Ausblick Java 9-Release für Herbst 2016 geplant. Vermutete, neue Features: Project Jigsaw - Modulsystem Neue HTTP2-Client-API Kulla: jshell als Read-Eval-Print-Loop Einfachen Programmcode direkt ausführen Neuer Garbage-Collector (G1) Neue API zur Verwaltung von Betriebssystem-Prozessen JSON-API (Parsen von JSON-Streams) (mittlerweile fragwürdig) 43
43 Literatur
44 Literatur [Davis 2014] Adam Davis, What s new in Java8, 2014 (Project Lambda) (Method References) (Optional) html (Repeating Annotations) (Nashorn) html (JavaFX) html (Project Jigsaw) 45
Java 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck
Java 8 Programmiermethodik Eva Zangerle, Nikolaus Krismer Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete
MehrJava 8. Programmiermethodik. Eva Zangerle, Nikolaus Krismer Universität Innsbruck
Java 8 Programmiermethodik Eva Zangerle, Nikolaus Krismer Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete
MehrJava 8. basierend auf Folien von Florian Erhard
Java 8 basierend auf Folien von Florian Erhard Java 8 Erschienen am 18. März 2014 Verbessertes Contended Locking Projekt Lambda Erweiterungen der Collections-API (Streams) Neue Date and Time API Verbesserungen
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 10: Eigenschaften und Neuerungen in Java 8 Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Neurungen in Java 8 Motivation Lambda-Ausdrücke
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
Mehr11 Lambda-Ausdrücke. Beispiel: Sortierung nach Länge und kommaseparierte Aufbereitung
795 11 Lambda-Ausdrücke Mit Lambda-Ausdrücken (kurz: Lambdas, zum Teil auch Closures genannt) wurde ein neues und von vielen Entwicklern heiß ersehntes Sprachkonstrukt in Java eingeführt, das bereits in
MehrJava 8. Die wichtigsten Neuerungen. W3L AG info@w3l.de
1 Java 8 Die wichtigsten Neuerungen W3L AG info@w3l.de 2013 2 Agenda Java Versionshistorie und Zeitplan Neue Features in Java 8 Überblick Neue Features im Detail Lambda Expressions Functional interfaces
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrOCP Java SE 8. Lambda
OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur
MehrOCP Java SE 8. Lambda
OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur
MehrTutorium zur Vorlesung Programmieren
Tutorium zur Vorlesung Programmieren Sondertutorium Joshua Gleitze 9. Januar 2017 IPD Koziolek Generische Typen Generische Typen Klassen können Typvariablen deklarieren. 1 public Interface List { 2
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrLambda Expressions in Java 8
Sie sind da Lambda Expressions in Java 8 Rolf Borst Lambda Expressions sind cool Aus dem Internet Stimmt das? Das total uncoole Beispiel Person nachname : String vorname : String alter : int plz : String
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
Mehr11. Funktionale Konzepte in Java
Funktionale vs. Imperative Programmierung 11. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.
MehrDas Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
MehrJava 8 Die Neuerungen
Java 8 Die Neuerungen Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler für JDK 6. Nach seinem Studium in Oldenburg war er lange Zeit als Softwareentwickler und -architekt bei verschiedenen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
Mehr13. Funktionale Konzepte in Java
Funktionale vs. Imperative Programmierung 13. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.
MehrProgrammiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation
MehrFunktionale versus objektorientierte Programmierung
Funktionale Programmierung 19 19. Funktionale Programmierung Lambda-Ausdrücke Funktionale versus objektorientierte Programmierung Java ist als objektorientierte Programmiersprache in den neunziger Jahren
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections
MehrJava 8. Johannes Hellrich, Erik Fäßler. Oberseminar
Java 8 Johannes Hellrich, Erik Fäßler Oberseminar 29.6.2017 Quellen https://github.com/winterbe/java8-tutorial http://www.lambdafaq.org https://github.com/jooq Größte Änderung: Funktionale Programmierung
MehrInhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1
Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................
MehrFunktionale Programmierung in Java
Funktionale Programmierung in Java Lambda Calculus Übersicht Geschichte Konzepte Lambda-Ausdrücke funktionale Interfaces Streams + Operations Methodenreferenzen Geschichte der funktionalen Programmierung
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrProgrammieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik
Programmieren I Dokumentation mit javadoc Heusch 10.4 Ratz 4.1.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Automatische Dokumentation Java bietet standardmäßig das Dokumentationssystem
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrJava 8. Lambdas und Streams. Dr. Jan Schäfer. Big Techday Mai 2014, München
Java 8 Lambdas und Streams Dr. Jan Schäfer Big Techday 7 23. Mai 2014, München Warum sollte mich Java 8 interessieren? Java ist eine der meistverwendeten Programmiersprachen, insbesondere bei Enterprise-Software
MehrDurch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der
MehrProf. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen
Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen
MehrTeil 2-3. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II
Teil 2-3. Vorlesung Modul: Programmierung B-PRG Professur für Datenbanken und Informationssysteme Dr. Karsten Tolle tolle@dbis.cs.uni-frankfurt.de 1 Wrapper-Klassen Alle primitive Datentypen haben eine
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
MehrDeklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse
Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 11: Java 8 & JUnit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Neurungen in Java 8 Motivation Lambda-Ausdrücke Default-Methoden Streams
MehrKapitel 5: Iterierbare Container
Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik
MehrEnhanced Collection API
Enhanced Collection API Die default und static Methoden der Collection API des JDK 1.8 Prof. Dr. Nikolaus Wulff Schnittstelle und Implementierung Die Sprache Java trennte von Anfang an eine Schnittstelle
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrEnumerations und innere Klassen
Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung
MehrFunktionale Programmierung mit Java. Manuel Mauky & Max Wielsch
Funktionale Programmierung mit Java Manuel Mauky & Max Wielsch Manuel Mauky Software Architect manuel.mauky@saxsys.de http://lestard.eu @manuel_mauky SPEAKER Max Wielsch Software Engineer max.wielsch@saxsys.de
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrLehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt
Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 13 14.06.2017 Heute: Anonyme Objekte Lokale Klassen Anonyme Klassen Anonyme Funktionen "Anonym"
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrJava: Der Einstieg. Algorithmen und Datenstrukturen II 1
Java: Der Einstieg Algorithmen und Datenstrukturen II 1 Grundlegendes zu Java: Historisches 1990-1991: Entwicklung der Programmiersprache OAK durch James Gosling von Sun Microsystems (zunächst für Toaster,
MehrNebenläufigkeit mit Java
Nebenläufigkeit mit Java Einheit 01: Einführung in das Java-Threadkonzept Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Organisatorisches Ziele, Aufbau und Inhalte Zielgruppe,
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrProgrammierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrWaitomo. Compilerbaupraktikum Wintersemester 2006/2007. Stefan Wehr. 24. Oktober 2006
Waitomo Compilerbaupraktikum Wintersemester 2006/2007 Stefan Wehr 24. Oktober 2006 1 Einleitung Quellsprache für das Compilerbaupraktikum ist Waitomo, ein Java-ähnliche Sprache mit Unterstützung für Typklassen
MehrVorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
MehrHerzlich willkommen zum DevDay Neuerungen der Java SE 9. Dominic A. Merz Fachbereichsleiter Java, Web und Mobile Technologies
Herzlich willkommen zum DevDay 2017 Neuerungen der Java SE 9 Dominic A. Merz Fachbereichsleiter Java, Web und Mobile Technologies Agenda n Einführung des Module System n Anpassung der Sprache n Erweiterung
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner
MehrJava Closures. Prof. Dr. Nikolaus Wulff
Java Closures Die Entwicklung von C function-pointers, C++ function-templates, Java anonymos-functions, hin zu C# delegates und Java Closures. Prof. Dr. Nikolaus Wulff Funktionszeiger Zeiger auf Funktionen
MehrProgrammiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrProgrammieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus
MehrSchwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen
Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrVererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
MehrSwing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.06.07 G. Bohlender (IANM UNI Karlsruhe) Swing 27.06.07 1 / 10 Übersicht 1 Einführendes
MehrParallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
MehrJava: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder
Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform
MehrInstitut fu r Informatik
Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2014/15 Aufgabenblatt 11 19.01.2015
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrProgrammieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
MehrKonstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }
Konstruktor spezielle Methode zum Initialisieren bei Erzeugen eines Objekts mit new trägt Namen der Klasse hat keinen Rückgabetyp keiner angegeben: Compiler erzeugt Standard-Konstruktor (analog: Attribute
MehrPrüfung Softwareentwicklung II (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrProgrammierung für Mathematik HS11
software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren
MehrJava I Vorlesung Generics und Packages
Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrKlausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden
MehrAlgorithmen und Datenstrukturen 07
(7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik
MehrKapitel 5: Interfaces
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,
MehrBeuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1
Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode
MehrDie abstrakte Klasse Expression:
Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrPrüfung Softwareentwicklung I (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 3 B, IB 3 C Wintersemester 2013/14 Prüfung Softwareentwicklung I (IB) Datum : 03.02.2014, 08:30
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/
MehrGliederung der Folien
1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung
MehrWiederholung. Klassenhierarchie:
Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse
Mehr