Software analysts around the world anticipate a concept of "Reactive Programming" to have a great future in solving the problems of big data, high load and mobile applications. TypeSafe, the developers of Scala language, created a promising "reactive" framework Akka, written in Scala and yet Java-friendly. How could it be interesting for Java developers? Can Akka+Java compete with Akka+Scala? How Java8 can help with that? This presentations provides answers to these questions.
This presentation by Dmytro Mantula (Lead Software Engineer, GlobalLogic) was delivered at Java.io 3.0 conference in Kharkiv on March 24, 2016.
2. Вычислительные системы предыдущего поколения
• управляемые сервера и контейнеры
• масштабируемость – за счет scale-up на более
крутые сервера
• проприетарные корпоративные решения
Тренды в требованиях к вычислительным системам
• response time: s -> ms
• high availability: 3 nines (8h) -> 5+ nines (5- min)
• storage: GBs (109) -> PBs (1015)
• hardware: from mobile phone to 1000+ nodes cluster
9. Actor-model
CARL HEWITT, 1973
Описывает:
• механизмы обработки событий
• принципы хранения данных
• взаимодействие между компонентами
Использование:
• Язык – Erlang
• Телеком-системы с HA=9 nines
10. Actor-model
CARL HEWITT, 1973
Описывает:
• механизмы обработки событий
• принципы хранения данных
• взаимодействие между компонентами
Использование:
• Язык – Erlang
• Телеком-системы с HA=9 nines
Akka
• 2006 – Нулевой релиз
• 2009 – Стабильный релиз (Scala + Java)
• 2013 – Становится частью Scala Standard
Library
• 2014 – Стабильная поддержка Java8 (2.3.0;
akka.japi.pf)
• to be continued …
11. Что такое Actor?
•Event-driven объект
•Изолированный
•Легковесный
•Потребляет только память,
не держит потоков
•Внутри только single-thread
выполнение
•У каждого актора есть
надзиратель
Что может делать Actor?
•Создавать другие акторы
•Посылать сообщения
•Менять поведение
•Наблюдать за другими акторами
12. Что такое Actor?
•Event-driven объект
•Изолированный
•Легковесный
•Потребляет только память,
не держит потоков
•Внутри только single-thread
выполнение
•У каждого актора есть
надзиратель
Что может делать Actor?
•Создавать другие акторы
•Посылать сообщения
•Менять поведение
•Наблюдать за другими акторами
13. Что такое Actor?
•Event-driven объект
•Изолированный
•Легковесный
•Потребляет только память,
не держит потоков
•Внутри только single-thread
выполнение
•У каждого актора есть
надзиратель
Что может делать Actor?
•Создавать другие акторы
•Посылать сообщения
•Менять поведение
•Наблюдать за другими акторами
14. Что такое Actor?
•Event-driven объект
•Изолированный
•Легковесный
•Потребляет только память,
не держит потоков
•Внутри только single-thread
выполнение
•У каждого актора есть
надзиратель
Что может делать Actor?
•Создавать другие акторы
•Посылать сообщения
•Менять поведение
•Наблюдать за другими акторами
Все состояние – внутри акторов
No shared mutable state
20. Java 8 Key Features
•Streams
•Lambdas
•Parallel Operations
•No PermGen
•New Date & Time API
•Concurrent Accumulators
•Nashorn (HH’ам на заметку: Java теперь ближе к JavaScript)
•Base64