Neues ab JDK 1.5. Praktikum aus Softwareentwicklung 2. Java Praktikum SS

Ähnliche Dokumente
Neues ab JDK 1.5. Praktikum aus Softwareentwicklung 2. Java Praktikum SS

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java Einführung Collections

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Java für C++ Programmierer

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Javakurs zu Informatik I. Henning Heitkötter

Java I Vorlesung Generics und Packages

Java Programmierung Grundlagen

Kapitel 4: Klassen und Unterklassen

Java-Schulung Grundlagen

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

Einstieg in die Informatik mit Java

Programmierkurs Java

Enumerations und innere Klassen

Nützliche Utility-Klassen des JDK

Java I Vorlesung Collections

Android will doch nur spielen. Java Eine kurze Einführung

Java Generics & Collections

C# im Vergleich zu Java

Algorithmen und Datenstrukturen

Repetitorium Informatik (Java)

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Einstieg in die Informatik mit Java

Java Performance Tuning

Programmieren 2 Java Überblick

Javakurs für Anfänger

Distributed Computing Group

Datenbankanwendungsprogrammierung Crashkurs Java

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Vorlesung Informatik 2

Teil V. Generics und Kollektionen in Java

Höhere Programmierkonzepte Testklausur

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Einstieg in die Informatik mit Java

Programmierkurs Java

Javakurs für Anfänger

1 Abstrakte Klassen, finale Klassen und Interfaces

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH

Polymorphie in Java oder Generics und Co.

Klausur Grundlagen der Programmierung

Wie entwerfe ich ein Programm?

II.1.1. Erste Schritte - 1 -

Vorlesung Programmieren

Bean-Mapping mit MapStruct

Programmieren I + II Regeln der Code-Formatierung

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Java 5: Taming the Tiger Syntactic Sugar JSR-201

Einführung in den NetBeans Profiler

1 Polymorphie (Vielgestaltigkeit)

Liste Programmieren Java Überblick

Typische Probleme. 7. Performance und Speicherauslastung. Parameter von java mit Performance-Einfluss. Parameter von javac mit Performance-Einfluss

Java Reflection. Andreas Lochbihler. 15. Mai Lehrstuhl Programmierparadigmen Universität Karlsruhe

Primitive Datentypen

Repetitorium Informatik (Java)

Algorithmen und Datenstrukturen II

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

AuD-Tafelübung T-B5b

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

7. Performance und Speicherauslastung

Hadoop I/O. Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen Prof. Dr. Christian Herta 1/29

Java I Vorlesung 6 Referenz-Datentypen

6 Speicherorganisation

Einführung in C#.NET. 1 Übersicht. 2 Typen (Types) Dieser Artikel stammt aus dem Magazin von C++.de (

Scala. Abstrakte Elemente. Jevgeni Zelenkov. HM

3 Objektorientierte Konzepte in Java

Theorie zu Übung 8 Implementierung in Java

Programmieren in Java

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Variablen manipulieren per JDI

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java

Performance Tuning

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Java für Computerlinguisten

Themen. Web Service - Clients. Kommunikation zw. Web Services

Hochschule Darmstadt Fachbereich Informatik

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

7. Pakete Grundlagen der Programmierung 1 (Java)

Programmieren mit Java

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Java Remote Method Invocation (RMI)

3 Objektorientierte Konzepte in Java

Kapitel 6. Vererbung

Java - Programmierung - Objektorientierte Programmierung 1

Objektorientierung (OO)

Programmieren 2 Java Überblick

Java: Vererbung. Teil 3: super()

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

JAVA als erste Programmiersprache Semesterkurs

Java 8. Die wichtigsten Neuerungen. W3L AG

Kapitel 6. Vererbung

Programmieren 2 Selbststudium Semesterwoche 6

Übung: Algorithmen und Datenstrukturen SS 2007

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Vorlesung Programmieren

Transkript:

Neues ab JDK 1.5 Praktikum aus Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 1

Java 5 - Tiger New Features Timeline, Überblick Enums, For Loop,.. Java API StringBuilder, Formatter Sonstiges Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 2

J2SE Plattform Versionen Timeline Aktuelle Versionen: JDK 1.4.2_12 JDK 5 Update 15 JDK 6 Update 12 JDK 7 voraussichtlich 2009 Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 3

Java SE 6 Übersicht Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 4

Java 5 Erweiterungen Sprache Generics Aufzählungstyp (enums) Metainformation (annotations) Standard Bibliotheken Unicode 4.0 Collections Framework Nebenläufigkeit (Threads) Monitoring Java Virtual Machine Performanz Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 5

Java 5 New Features Timeline, Überblick Enums, For Loop, Generics, Java API StringBuilder, Formatter Sonstiges Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 6

Konstante als Aufzählungstypen public final static int FORM_FIELD_COLOR_BLUE = 0; public final static int FORM_FIELD_COLOR_RED = 1; public final static int FORM_FIELD_COLOR_GREEN = 2; Nachteile Typesafe Enumerations (1/4) Verwendung nicht typsicher Umständliche Namensgebung Erweiterung ist problematisch Kein Informationsgehalt Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 7

Typesafe Enumerations (2/4) class Form { class Field { enum Color { BLUE, RED, GREEN }; Color fontcolor = BLUE; Namensbereiche durch innere Typen Form.Field.Color Enums entsprechen Klassen BLUE,RED,GREEN - globale Objekte vom Typ Color Können Konstruktoren und Methoden besitzen Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 8

Typesafe Enumerations (3/4) enum Color { BLUE (0x00,0x00,0xFF), RED (0x00,0xFF,0x00), GREEN(0xFF,0x00,0x00); int r,g,b; Color(int r, int g, int b) { } } Initialisierung durch Konstruktor Methoden und Members wie bei Klassen Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 9

Typesafe Enumerations (4/4) Vergleich mit == möglich Color c = Color.RED; if (c == Color.RED) { } switch(c) { case RED: } Werte-Bezeichner auch als String verfügbar Color c = Color.valueOf("RED"); if ("RED".equals(c.toString()) { } Verfügbare Werte abfragbar Color[] all = Color.values(); java.lang.enum Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 10

Autoboxing/Unboxing (1/2) Automatische Umwandlung von primitiven Datentypen in ihre Wrapper Klassen: Integer > int > Integer Double > double > Double Ohne Autoboxing int x = 123, z; Integer y; y = Integer.valueOf(x); z = y.intvalue(); Mit Autoboxing y = x; z = y; Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 11

Autoboxing/Unboxing (2/2) Umwandlung übernimmt der Compiler Achtung, NullPointerExceptions möglich: Integer a = null; int b = a; // Bumm! Unboxing NullPointerException weil: Integer a = null; int b = a.valueof(); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 12

Spezielle Typ-Parameter für Klassen/Interfaces und Methoden Typsicherheit Generics (1/4) Vermeidung von type-casts interface Observable { public void update(object arg){ } } interface Observable<T> { public void update(t arg){ } } Lesen als: Observable vom Typ T Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 13

Generics (2/4) Verwendung im Collections Framework ArrayList list = new ArrayList(); list.add("ein string "); String s = (String)list.get(0); ArrayList<String> list = new ArrayList<String>(); String s = list.get(0); HashMap<Integer,String> map; int userid = 123; map.put(userid, "hans im glück"); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 14

Typisieren von Methoden, zum Beispiel ein Setter: Parameter soll mindestens vom Typ PasswordObserver sein, und Parameter soll das Interface Observable<User> implementieren Generics (3/4) <T extends PasswordObserver & Observable<User>> void set(t observer) { } Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 15

Exakter Type-check bei Parametern findusers(collection<user> users) Wildcards Generics (4/4) Upper Bound findusers( Collection<? extends User> users) Lower Bound findusers( Collection<? super Administrator> users) Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 16

Enhanced For Loop (1/3) try { ArrayList users; users.add(auser); Iterator it = users.iterator(); while (it.hasnext()) { } String u = (User) it.next(); ; } catch (ClassCastException ce) { ce.printstacktrace(); } Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 17

Compiler übernimmt Generieren des Iterators Lesen vom Iterator Typ Überprüfung Enhanced For Loop (2/3) Prüfung auf Listenende ArrayList<User> users; for (User u : users) { } Nicht mehr notwendig: try... catch(classcastexception e)... Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 18

Enhanced For Loop (3/3) Funktioniert auch für Arrays int[] numbs = {10,20,30,40,50}; for (int x : numbs) { System.out.println(x); } Wird übersetzt zu: for (int g=0; g < numbs.length; g++) { int x = numbs[g]; System.out.println(x); } Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 19

Annotation Metainformation im Programmkode Verarbeitung durch Compiler Tools Zur Laufzeit Package java.lang.annotation Beispiele: JAX-WS (SOAP Stack von Sun) JUnit 4 Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 20

Static Import (1/2) Import von statisch definierten Variablen Klassen Enums Analog zu Package Import import static java.lang.math.pi; import static java.lang.math.*; Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 21

Static Import (2/2) Beispiel: import java.lang.math; double x = Math.PI; double y = Math.cos(Math.PI/2d x); import static java.lang.math.*; double x = PI; double y = cos(pi/2d x); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 22

Varargs (1/2) Um an eine Methode eine variable Anzahl von Parametern zu übergeben, musste man bisher ein Array verwenden Arrays mit unterschiedlichen Typen nur als Object Funktionalität printf wie in C/C++ ist nicht möglich // Bisher public static void printem(string x[]) { for (int t=0;t<x.length;++t) { System.out.println(x[t]); } }... printem(new String[] {"bob","fred","joe"}); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 23

// Neu Varargs (2/2) public static void printem(string... x) { for (String s : x) { System.out.println(x); } } public static void main(string args[]) { // JDK1.5 style printem("bob","fred","joe"); //JDK1.4 style printem(new String[] {"bob","fred","joe"}); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 24

Java 5 New Features Timeline, Überblick Enums, For Loop,.. Java API StringBuilder, Formatter Sonstiges Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 25

Java API News StringBuilder StringBuilder als Alternative zu StringBuffer java.lang.stringbuilder Zum Verketten von Strings StringBuilder Eigenschaften und Schnittstelle wie StringBuffer StringBuilder sbuilder = new StringBuilder(); sbuilder.append("plz.: ").append(4040) ; Nicht thread safe, dafür bessere Performanz! StringBuffer NICHT mehr verwenden Ausnahme: gleichzeitige Verwendung von mehreren Threads Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 26

Zugriff auf aktuellen Laufzeit-Stack Thread.currentThread().getStackTrace(); Thread.getAllStackTraces(); Verwendung für Statistiken, Ausgabeformatierung Standard Implementierung für unbehandelte Exceptions Java API News Exception Handling Thread.setDefaultUncaughtExceptionHandler( mydefaulthandler); Verwendung für spezifisches Logging Keine Exceptions werden "übersehen" Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 27

Java API News Formatted Output (1/2) Vorbild ist Ausgabe Formatierung von C/C++ sprintf(format String, Daten ); Beispiel: String firstname = "Albert"; String lastname = "Einstein"; Date date = new Date(); String presentation = "%1$td.%1$tm.%1$tY - Vorname: %2$-20s Nachname: %3$-20s"; String.format(presentation, date, firstname, lastname); System.out.printf(presentation, date, firstname, lastname); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 28

Java API News Formatted Output (2/2) Implementiert in java.util.formatter Formatierungsmöglichkeiten siehe Java Doc Konstruktoren für flexible Ausgabeziele und Zeichenkodierungen Streams, Files, java.lang.appendable Beispiel FileOutputStream out; Formatter formatter = new Formatter(out,"UTF-8"); formatter.format("pi = %12.10f", Math.PI); out.close(); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 29

Text Scanner Java API News Formatted Input java.util.scanner Parser für primitive Typen und Strings Konstruktoren für flexible Quellen und Zeichenkodierungen Streams, Reader, Files, Strings Scanner s = new Scanner(Quelle); int val = s.nextint(); s.close(); Vergleiche auch String[] tokens = "aaa bbb ccc".split(regular expression); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 30

Java API News Management (1/2) Interface für Zugriff auf Daten für Monitoring import java.lang.management.*; import java.util.*; import javax.management.*; public class MemTest { public static void main(string args[]) { List<java.lang.management.MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans(); for(memorypoolmxbean p: pools) { System.out.println("Memory type=" + p.gettype()); System.out.println("Memory usage=" + p.getusage()); Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 31

Monitor Tool: jconsole Java API News Management (2/2) Aktivierung für JVM -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9999 Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 32

Java 5 New Features Timeline, Überblick Enums, For Loop,.. Java API StringBuilder, Formatter Sonstiges Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 33

Java Heap Self Tuning Java 5 Erweiterungen Java Virtual Machine (Selbst)-Einstellung des Heap wurde optimiert (Performance und Speicherverbrauch) Class Data Sharing Soll Startzeit bei kleinen Applikationen reduzieren Teile der Standardbibliotheken werden in ein Memory-Mapped- File ausgelagert jre\bin\client\classes.jsa MMF wird zwischen mehreren VM s geteilt Garbage Collector Ergonomics Parallele Garbage Collector verbessert Big Size Verbesserungen, besseres adaptives Verhalten Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 34

Java 5 Erweiterungen Core Libraries (1/2) Network Timeout (Protocoll Handler), InetAddress ping, Framework für File Caching Internationalisierung Unicode 4.0, Vietnam Locale Formatter (java.util) Interpreter Klasse für printf-style Format Strings String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", calendar); -> s == "Duke's Birthday: May 23, 1995" Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 35

Java 5 Erweiterungen Core Libraries (2/2) Collections 3 neue Interfaces (Queue, BlockingQueue, ConcurrentMap) Einige neue Algorithmen Monitoring, Managment, Instrumentation Concurrency Utilities Bit Manipulation Operations http://java.sun.com/j2se/1.5.0/docs/relnotes/feat ures.html Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 36

Ende der 2. Übung Java Praktikum SS 2009 Gerald.Ehmayer@borland.com 37