1 / 25

Java 8

Java 8. Co nowego w Javie 8 SE. Błażej Karwowski. Agenda. Wyrażenia i inne nowości w języku Zmiany w kolekcjach = cześnie Kilka słów o bezpieczeństwie I18N oraz czas i data Java FX – lepszy Swing? N osorożec czyli JavaScript w Javie. λ.

pilar
Download Presentation

Java 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java 8 Co nowego w Javie 8 SE Błażej Karwowski

  2. Agenda Wyrażenia i inne nowości w języku Zmiany w kolekcjach =cześnie Kilka słów o bezpieczeństwie I18N oraz czas i data Java FX – lepszy Swing? Nosorożec czyli JavaScript w Javie λ

  3. Wyrażenia λ i inne nowości w języku Zmiany w Javie .............................. ? Znowu? Wyrażenia λ Referencje do metod i metody domyślne Zmiany w adnotacjach Refleksja parametrów metod

  4. Wyrażenia λ Runnable noArguments = () -> System.out.println("Hello World"); ActionListeneroneArgument = event -> System.out.println("button clicked"); RunnablemultiStatement = () -> {System.out.print("Hello");System.out.println(" World");}; BinaryOperator<Long> add = (x, y) -> x + y; BinaryOperator<Long> addExplicit = (Long x, Long y) -> x + y;

  5. Wyrażenia λ – przydatne interfejsy

  6. Referencje do metod

  7. Metody domyślne Dlaczego istnieją? Wielodziedziczenie Przykład: defaultvoidforEach(Consumer<? super T> action) { for (T t : this) { action.accept(t); } }

  8. Zmiany w kolekcjach Obsługa λ, „strumieni” i „operacji agregujących” Poprawa wydajności

  9. Zmiany w kolekcjach – zmienione pakiety Zmodyfikowane pakiety java.util.function java.util.stream Nowe pakiety

  10. Zmiany w kolekcjach – strumienie Cechy: Brak przechowywanych danych Funkcyjne Leniące się :D Potencjalnie nieskończone Zużywalne Sposoby tworzenia: Na podstawie kolekcji za pomocą metod stream() i parallelStream() Z tablic za pomocą Arrays.stream(Object[]) Za pomocą metody wytwórczej np. Stream.of(Object[]), IntStream.range(int, int) Na podstawie linii z pliku za pomocą: BufferedReader.lines() Z klasy Random za pomocą metody ints() Za pomocą wielu innych metod z JDK.

  11. =cześnie czyli współbieżność λ również tutaj Nowe klasy, metody i interfejsy

  12. Przykłady – operacje na strumieniach collect(toList()) List<String> collected = Stream.of("a", "b", "c").collect(Collectors.toList()); map List<String> collected1 = Stream.of("a", "b", "hello") .map(string -> string.toUpperCase()) .collect(Collectors.toList()); filter List<String> beginningWithNumbers = Stream.of("a", "1abc", "abc1") .filter(value -> Character.isDigit(value.charAt(0))) .collect(Collectors.toList());

  13. Przetwarzanie współbieżne a równoległe

  14. Przetwarzanie równoległe oraz λ List<Pracownik> pracownicy = Arrays.asList( newPracownik("Adam", "Kowalski", 1.5), newPracownik("Maciej","Majewski", 2.0), newPracownik("Jędrzej", "Kaczmarek", 0.5), newPracownik("Zofia", "Szczepańska", 3.0)); doublesumaCzasupracySzeregowopracownicy.stream().mapToDouble(Pracownik::getStazPracy).sum(); doublesumaCzasupracyRownloegle = pracownicy.parallelStream().mapToDouble(Pracownik::getStazPracy).sum(); double[] values = newdouble[100]; Arrays.parallelSetAll(values, i -> new Random().nextDouble());

  15. Przetwarzanie równoległe oraz λ i [] double[] values = newdouble[100]; Arrays.parallelSetAll(values, i -> new Random().nextDouble()); Arrays.parallelSort(values); Arrays.parallelPrefix(values, Double::sum);

  16. I18N oraz czas i data I18N: Umiędzynarodowienie ThreeTen: Czas dla komputera i człowieka

  17. JSR 310: Date-Time API Prostota Płynność Niezmienność Rozszerzalność

  18. JSR 310: Date-Time API – przykład I System.out.printf("Aktualna data i czas: %s%n", LocalDateTime.now()); System.out.printf("1 lutego 2001 21:10: %s%n", LocalDateTime.of(2001, Month.FEBRUARY, 1, 21, 10)); System.out.printf("Aktualna data i czas: (z Instant): %s%n", LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault())); System.out.printf("Za 6 miesiące będzie: %s%n", LocalDateTime.now().plusMonths(6)); DateTimeFormatterformat = DateTimeFormatter.ofPattern("MMM d yyyyHH:mm"); System.out.printf("6 miesięcy temu było: %s%n", LocalDateTime.now().minusMonths(6).format(format));

  19. JSR 310: Date-Time API – przykład II Instant t1, t2; t1 = Instant.now(); System.in.read(); t2 = Instant.now(); DurationtimeBeetwen = Duration.between(t1, t2); System.out.println("Zmierzony czas: " + timeBeetwen); longtimeBeetwen2 = ChronoUnit.MILLIS.between(t1,t2); longtimeBeetwen3 = ChronoUnit.SECONDS.between(t1,t2); longtimeBeetwen4 = ChronoUnit.HOURS.between(t1,t2); System.out.println("Zmierzony czas: " + timeBeetwen2 + " milisekund."); System.out.println("Zmierzony czas: " + timeBeetwen3 + " sekund."); System.out.println("Zmierzony czas: " + timeBeetwen4 + " godzin.");

  20. JSR 310: Date-Time API – przykład III LocalDatetoday = LocalDate.now(); LocalDatebirthday = LocalDate.of(1983, Month.JANUARY, 29); LocalDatenextBirthday = birthday.withYear(today.getYear()); if (nextBirthday.isBefore(today) || nextBirthday.isEqual(today)) { nextBirthday = nextBirthday.plusYears(1); } Period toNextBirthday = Period.between(today, nextBirthday); System.out.printf("Do następnych urodzin pozostało: %s miesięcy %s dni %n", toNextBirthday.getMonths(),toNextBirthday.getDays());

  21. Java FX 2.x – Lepszy SWING? Zapatrzenie w MacromediaAdobe Flash • FXML and SceneBuilder WebKit – przeglądarka wewnątrz apletu? Grafika 2D i 3D SWING wewnątrz Java FX Canvas API Drukowanie RichText Akceleracja sprzętowa Stremowanie mediów CSS

  22. Bardziej Java niż Script? JavaScript w Javie ? Java SE 6 – Rhino 1.6R2 Java SE 7 – Rhino 1.7R3 Java SE 8 – Nashorn 11 grudnia 2006 28 lipca 2011 18 marca 2014

  23. JavaFX & Nashorn - przykład var Button = javafx.scene.control.Button; varStackPane = javafx.scene.layout.StackPane; varScene = javafx.scene.Scene; function start(primaryStage) { primaryStage.title = "Hello World!"; varbutton = new Button(); button.text = "'Hello World'"; button.onAction = function() print("Hello World!"); varroot = newStackPane(); root.children.add(button); primaryStage.scene = new Scene(root, 300, 250); primaryStage.show(); }

  24. Pytania ?

  25. DZIĘKUJĘ ZA UWAGĘ

More Related