43
ahead of one’s time Čo možno neviete o Java platforme Java 8 a iné zaujímavé témy

Ladislav Božek - Čo možno neviete o Java platforme

Embed Size (px)

Citation preview

ahead of one’s time

Čo možno neviete o Java platforme

Java 8 a iné zaujímavé témy

Ladislav Božek

Senior Java Developer

Davinci Software, s.r.o.

Skúsenosti

15 rokov vývoj software,

web aplikácie,

online systémy,

desktopové aplikácie

Speaker

1. Java SE 8

História JDK a aktuálne novinky v Java SE 8

2. Niektoré zaujímavé témy z oblasti Java a JVM

Zopár zaujímavostí, ktoré je dobré vedieť o jazyku Java

Agenda

Holandská IT organizácia založená v roku 1991,

v súčastnosti s viac než 180 zamestnancami.

Pobočka na Slovensku v Bratislave a od Novembra 2013 aj v Žiline.

Spoločnosť

História

5

- autor James Gosling- Sun Microsystems- prvá verzia 1995- pôvodný názov Oak- Oracle

JDK 1.0 (1996)- prvá stabilná verzia

JDK 1.1 (1997)- AWT- vnorené triedy- JDBC- RMI (Remote Method Invocation)- reflection- JIT - Just In Time

James Gosling

História

6

J2SE 1.2 (1998)

- strictfppublic strictfp class Calculation { }

- Swing- Collections - List, Stack, Queue, Set, Map

J2SE 1.3 (2000)

- HotSpot JVM - Client, Server

História

7

J2SE 1.4 (2002)

- assertx = 1;

assert (x > 0)

- vylepšené regulárne výrazy (Perl) ^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-

z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$

- Exception chaining- Preferences API

HKEY_CURRENT_USER\Software\JavaSoft\Prefs

História

8

J2SE 5.0 (2004)

- Generics- Anotácie- Autoboxing- Varargs- static imports

import static java.lang.Integer.MAX_VALUE;

System.out.println("Integer.MAX_VALUE: " + MAX_VALUE);

História

9

Java SE 6 (2006)

- dramatické zlepšenie performance- vstavaná integrácia pre skriptovacie jazyky - JavaScript Rhino- zlepšenie Java Web Start- GUI improvements, SwingWorker

Java SE 7 (2011)- Strings in switch statement- try-with-resources statement

Java SE 8 (Marec, 2014)Java SE 9Java SE 10

1. Lambda Expressions2. Method References3. Default Methods4. Stream API5. Opakované anotácie6. Java Time

Java SE 8

10

1. Lambda Expressions

11

Jednoduchý príklad s Runnable:

s použitím Lambda Expression

1. Lambda Expressions

12

- umožňuje zadať funkčnosť ako parameter do metódy- formát: (params) -> statement- funguje iba pre interface s jednou abstract metódou -functional interface

1. Lambda Expressions

13

Príklad s Comparator<Person>

s použitím Lambda Expression

1. Lambda Expressions

14

Príklad použitia: Calculator

2. Method References

15

použitie v rámci Lambda Expressions, ak - chceme referencovat existujúce metódy- v rámci lambda bloku voláme iba jednu metódu

(a, b) -> a.compareToIgnoreCase(b)

3. Default Methods

16

umožňuje pridávať nové funkcie do existujúceho interface, bez nutnosti meniť jeho implementáciu pomocou nového kľúčového slova: default

3. Default Methods

17

umožňuje pridávať nové funkcie do existujúceho interface, bez nutnosti meniť jeho implementáciu pomocou nového kľúčového slova: default

4. Stream API

18

- java.util.stream package- Intermediate Operations: map, filter, limit, distinct, sorted- Terminal Operations: collect, findAny, findFirst, reduce- neukladajú žiadne elementy

4. Stream API

19

- java.util.stream package- Intermediate Operations: map, filter, limit, distinct, sorted- Terminal Operations: collect, findAny, findFirst, reduce- neukladajú žiadne elementy

4. Stream API

20

Numerical Ranges

Java 8 Streams API prichádza s troma užitočnými rozhraniami- IntStream- DoubleStream- LongStream

4. Stream API

21

Tvorba streamov

6. Repeated annotations

22

7. Java Time API

23

Súčasné riešenie- náročná práca s Date() a Time() a zónami- žiadne štandartné API pre prácu s dátumom a časom- náhrada Joda-Time

Nové balíky- java.time- java.time.format- java.time.zone

Niektoré zaujímavé témy z oblasti Java a JVM

24

1. Java Equals and Hashcode General Contract2. JVM Shutdown Hooks 3. Profiling4. Remote Debugging5. Spring

Java Equals and Hashcode General Contract

25

Aký bude výsledok nasledujúcich operácií?

Java Equals and Hashcode General Contract

26

Aký bude výsledok nasledujúcich operácií?

false

Java Equals and Hashcode General Contract

27

prvočíslo

atribúty triedy

JVM Shutdown Hooks

28

- od verzie 1.3 v triede java.lang.Runtime- nie je veľmi známe medzi Java developermi- zavolá sa príslušný Thread, keď sa ukončuje VM (CTRL-C alebo kill signal)- umožňuje pridať niekoľko vlákien - multiple Threads

JVM Shutdown Hooks

29

....................CTRL-C

Goodbye World

výsledok:

Profiling

30

Možnosti profilovania Java aplikácie pomocou vstavaných príkazov JDK

- JMap - command line tool

- JConsole

- JVisualVM - od verzie 1.6 update 7

JConsole

31

prikaz jps -podobne ako prikaz ps zobrazí zoznam bežiacich Java procesov

JConsole

32

JConsole

33

JConsole

34

VisualVM

35

Remote Debug

36

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y <class>

Listening for transport dt_socket at address: 8000

1.spustenie aplikácie

2.napojenie na aplikáciu 3.remote debug

Spring

37

- autor Rod Jonson- Expert One-on-One J2EE Design and Development- J2EE without EJB

- alternatíva ku Enterprise JavaBeans (EJB)- Najpopulárnejší nástroj na vývoj Java aplikácí- IoC Container

Spring

38

Inversion of Control, Dependency Injection

Spring

39

Inversion of Control, Dependency Injection

Spring

40

XML bean configuration file

Spring

41

XML bean configuration file

Injected Bean

Constructor Injector

TextEditor Bean

Spring

42

Spring aplikácia

public class SpringDemo {

public static void main(String[] args) {

ApplicationContext contex = new ClassPathXmlApplicationContext(

"classpath:applicationContext.xml");

TextEditor editor = (TextEditor) contex.getBean("TextEditorBean");

editor.open();

}

}

Ďakujem

http://javabrains.koushik.org/

http://spring.io/

[email protected]

www.cvlite.sk/p/ladislav.bozek