SlideShare a Scribd company logo
Докладчик: Алексей Зиновьев
Java 8, величава, многоядерна и
слегка функциональна
О себе
● аспирант ОмГУ, математик
● занимаюсь теорией графов,
прогнозированием пробок, исследованием
транспортных систем
● большой фанат различных Maps API
Стратегия развития Java
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
Планы по развитию
Планы по развитию
Планы посвежее
Java 8, основные фичи
● Лямбды
● Функциональные интерфейсы
(Single Abstract Method - SAM)
● Ссылки на методы
● Стримы
● Аннотация типов
● Дефолтные и статические
методы в интерфейсах
● DateTime API
Java 9 & 10
● Модуляризация — проект
Jigsaw
● Money & Currency API
● Дальнейшее развитие JavaFX и
тесной интеграции с этим
фреймворком
● Проект Sumatra - запуск на
GPU & APU
● Reification - отменить стирание
типов в райнтаме
● Слухи о конце обратной
совместимости
Поддержка в IDE
JCP & Community process
Небоскреб компонент и
стандартов Java SE
Основные понятия
● JSR (Java Specification Requests)
● JSR - единая версия
спецификации Java
● Spec Lead/Expert Group -
принимают решения
● JSPA - контракт между группой
и Oracle
● Основные эксперты
переизбираются и встречаются
на специальных съездах
Организация процессов
Долгий путь одной
спецификации
Аннотации типов
Аннотации пошли в разнос
Мы можем спокойно навешивать кучу одинаковых
аннотаций
Checkers Framework
● Замечательное руководство
● Поиск ошибок во время компиляции
Поддержка в IDE
Лямбды
Зачем вообще лямбды
● Хочется чтобы код был как
данные
● Хочется проще параллельно
обрабатывать коллекции
● Хочется возложить
ответственность за
распараллеливание на
библиотеку
● Хочется просто брать что-то и
отдавать что-то и эту хотелку
передавать везде
Синтаксис
Что лямбды не могут
● Нельзя присваивать
переменным новые значения
● Исключениям некуда
всплывать из лямбды
● Нет способа прервать цикл или
вернуть значение
Веселые потоки
Лаконичные обработчики
Однострочковые итераторы
Еще один хитрый способ
Иногда лямбда выражение не делает ничего, просто
вызывает метод, в этом случае корректнее обратится к
методу по имени
Игры с интерфейсами
Hello, Sam!
● В нем может быть только один абстрактный метод и
сколько угодно default - методов
● Всякое лямбда выражение может быть соотнесено к
какому-либо функциональному интерфейсу
● Дефолтные методы нужны для расширения старого
функционала без слома обратной совместимости
Stream API
Ключевые моменты
● Это операции над потоками элементов
● Могут быть бесконечными
● Все операции ленивые до самого конца
● Есть простые генераторы
● Источники - немодифицируемы
● Есть два типа: последовательные и параллельные
● Вы получаете из источника данные, затем выполняете
несколько промежуточных операций и завершаете все
терминальной операцией
Трехфазовая обработка
Промежуточные операции
Терминальные операции
И еще пример
Проект Nashorn
JavaScriptJava
● Написан на Java
● Можно использовать классы Java внутри
JavaScript
● Может использовать JIT компиляцию JVM для
динамического кода
Script Engine
Итоги
● Java сделала огромный шаг на
пути к функциональщине
● Java 8 не проста для вхождения
● Грань между Java/JavaScript
стирается
● Следить за JCP
● Диалог между Java & JVM
Languages способствует
своместному развитию

More Related Content

PDF
ОПК № 1 – Вводная
PPT
18.08.2012 meta ruby
PPT
Программирование как этап решения задач на компьютере
PPTX
формы представления алгоритмов,типы алгоритмов
PPT
Refactorings with RubyMine
PDF
Процесс майнинг
PDF
(Не)чёткий поиск
PPT
Памятка для студента Школы отраслевых переводчиков "Альянс ПРО"
ОПК № 1 – Вводная
18.08.2012 meta ruby
Программирование как этап решения задач на компьютере
формы представления алгоритмов,типы алгоритмов
Refactorings with RubyMine
Процесс майнинг
(Не)чёткий поиск
Памятка для студента Школы отраслевых переводчиков "Альянс ПРО"

Viewers also liked (15)

PDF
WDB005.1 - JavaScript for Java Developers (Lecture 1)
PDF
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
PDF
Date & Time in Java SE 8
ODP
PPTX
Java Core. Lecture# 1. Intro
PPTX
Клиентская Java вне браузера. Делаем нативные клиенты на Java
PPTX
Java Ahead-Of-Time compilation
PPTX
Expert Java Day: Java concurrency
PDF
Java худеет. Спроси меня как.
PDF
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
PDF
Глава 3: примитивные типы и операции с ними в Java
PPTX
Классы и объекты в Java
PPT
Секреты сборки мусора в Java
PDF
Java осень 2014 занятие 1
ODP
Java: вчера, сегодня, завтра
WDB005.1 - JavaScript for Java Developers (Lecture 1)
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Date & Time in Java SE 8
Java Core. Lecture# 1. Intro
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Java Ahead-Of-Time compilation
Expert Java Day: Java concurrency
Java худеет. Спроси меня как.
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Глава 3: примитивные типы и операции с ними в Java
Классы и объекты в Java
Секреты сборки мусора в Java
Java осень 2014 занятие 1
Java: вчера, сегодня, завтра
Ad

Similar to Keynote on JavaDay Omsk 2014 about new features in Java 8 (15)

PPTX
Java 8 Support at the JVM Level
PDF
Lambdas in java 8
PPTX
Поддержка Java 8 в Excelsior JET
PPT
PDF
Atomics, CAS and Nonblocking algorithms
PDF
20100228 virtualization igotti_lecture03
PDF
Java Эффективное программирование 3 е издание 3rd Edition Джошуа Блох
PDF
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
PPTX
JVM: краткий курс общей анатомии
PDF
Java 9: what is there beyond modularization
PPT
0. hello java world
PPTX
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
PDF
Java осень 2013 лекция 2
PPTX
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
PDF
Экспресс по Java [NoBugs WTF PRO уровень]
Java 8 Support at the JVM Level
Lambdas in java 8
Поддержка Java 8 в Excelsior JET
Atomics, CAS and Nonblocking algorithms
20100228 virtualization igotti_lecture03
Java Эффективное программирование 3 е издание 3rd Edition Джошуа Блох
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
JVM: краткий курс общей анатомии
Java 9: what is there beyond modularization
0. hello java world
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
Java осень 2013 лекция 2
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Экспресс по Java [NoBugs WTF PRO уровень]
Ad

More from Alexey Zinoviev (20)

PDF
Kafka pours and Spark resolves
PDF
Java BigData Full Stack Development (version 2.0)
PDF
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
PDF
Hadoop Jungle
PDF
HappyDev'15 Keynote: Когда все данные станут большими...
PDF
Мастер-класс по BigData Tools для HappyDev'15
PDF
JavaDayKiev'15 Java in production for Data Mining Research projects
PDF
Joker'15 Java straitjackets for MongoDB
PDF
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
PDF
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
PDF
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
PDF
Joker'14 Java as a fundamental working tool of the Data Scientist
PDF
First steps in Data Mining Kindergarten
PDF
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
PDF
Android Geo Apps in Soviet Russia: Latitude and longitude find you
PDF
Big data algorithms and data structures for large scale graphs
PDF
"Говнокод-шоу"
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PDF
Алгоритмы и структуры данных BigData для графов большой размерности
PDF
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
Kafka pours and Spark resolves
Java BigData Full Stack Development (version 2.0)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Hadoop Jungle
HappyDev'15 Keynote: Когда все данные станут большими...
Мастер-класс по BigData Tools для HappyDev'15
JavaDayKiev'15 Java in production for Data Mining Research projects
Joker'15 Java straitjackets for MongoDB
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Joker'14 Java as a fundamental working tool of the Data Scientist
First steps in Data Mining Kindergarten
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
Android Geo Apps in Soviet Russia: Latitude and longitude find you
Big data algorithms and data structures for large scale graphs
"Говнокод-шоу"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Алгоритмы и структуры данных BigData для графов большой размерности
ALMADA 2013 (computer science school by Yandex and Microsoft Research)

Keynote on JavaDay Omsk 2014 about new features in Java 8