Top Banner
JavaFX 2.0 overview Alexander Potochkin Senior software developer November 28, 2011
28

JavaFX 2.0 overview

Jan 24, 2015

Download

Documents

Dmitry Buzdin

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JavaFX 2.0 overview

JavaFX 2.0 overviewAlexander Potochkin

Senior software developer

November 28, 2011

Page 2: JavaFX 2.0 overview

2

JavaFX 2.0

• Дальнейшее развитие средств Java для создания rich applications– AWT/Swing– JavaFX 1.X

• Целевая аудитория– Cуществующие и будущие Java разработчики– Веб разработчики

2

Page 3: JavaFX 2.0 overview

Rich Applications• Интернет становится более насыщенным

• Это можно только поприветствовать!

• Не только веб приложения• Но и обычные приложения в не меньшей степени• Мы хотим, чтобы JavaFX использовался везде• Мы не соперничаем с HTML

• Не только для конечных пользователей• Но и для корпоративных приложений

3

Page 4: JavaFX 2.0 overview

4

JavaFX 2.0 and Java

• Java – основной язык JavaFX 2.0– 100% Java API– Все скриптовые возможности JavaFX 1.X

• Свойства (properties)• Связывание (binding)• Анимация (transitions, animations)

• Использование из других языков– JavaScript, Groovy, JRuby, Jython, Scala– Все языки, поддерживаемые JVM

4

Page 5: JavaFX 2.0 overview

5

Java Ecosystem

• Миллионы Java разработчиков– Нет необходимости изучать новый язык– Простота использования и обучения

• Множество средств разработки– Интегрированные среды разработки– Отладчики кода– Инструменты для тестирования– Средства измерения производительности– Средства анализа кода

5

Page 6: JavaFX 2.0 overview

6

TIOBE Index

6

Page 7: JavaFX 2.0 overview

7

Java Beans

• Существующий дизайн Java Beans имеет ряд недостатков– Уведомления содержат как старое, так и новое значения– Неэффективная обработка примитивных типов– Большое количество вспомогательного кода– Корректность обеспечивается на уровне соглашения об

именах, а не проверяется компилятором• Поэтому JavaFX 2.0 использует новую модель

7

Page 8: JavaFX 2.0 overview

8

JavaFX Beans

• Bean– Получение уведомлений об изменениях свойств объекта

• Property– Необязательный getter– Необязательный setter– Ссылка на модель – объект, который хранит значение

• Mного вспомогательного кода– Но этот код тривиальный– Разумный компромисс между производительностью,

количеством классов и удобством использования

8

Page 9: JavaFX 2.0 overview

9

Binding Example

9

public class Rectangle { private DoubleProperty x = new DoubleProperty(); public DoubleProperty xProperty() { return x; } public double getX() { return x.get(); } public void setX(double value) { x.set(value); }}

Rectangle r1 = new Rectangle();r1.setX(100);

Rectangle r2 = new Rectangle();r2.xProperty().bind(r1.xProperty());

Page 10: JavaFX 2.0 overview

10

Demo: Ensemble

Page 11: JavaFX 2.0 overview

11

SceneGraph

• Направленный граф без циклов• Логический и физический уровни абстракции• Представление элементов UI

– Графические примитивы– Компоненты– Эффекты

11

Page 12: JavaFX 2.0 overview

12

SceneGraph Nodes

• ID• Стиль, класс стиля• Размеры и положение• Эффекты

– Трансформации– Прозрачность

• Обработчики и диспетчеры событий• Состояние

– Курсор– Видимость

12

Page 13: JavaFX 2.0 overview

13

SceneGraph Performance

• Монолитный дизайн• Быстрое вычисление границ узлов сцены• Отслеживание невалидных областей• Кэширование отрисованных частей сцены• Неявная отрисовка

– Лучше подходит для обработки на GPU– Отдельный поток для отрисовки

• Приемлемый объем использованной памяти– Проверено на приложениях с 50К+ узлами

13

Page 14: JavaFX 2.0 overview

14

Transforms

• Преобразования координат– Сдвиг (x, y, z)– Растяжение и сжатие (ширина, высота, глубина)– Поворот (угол + вектор оси поворота)– Произвольные аффинные преобразования (матрица 3х3)– Перспективная проекция (матрица 4х4, для 3D)

• Преобразования применены к любому узлу сцены– Возможно кэширование некоторых значений внутри узла

14

Page 15: JavaFX 2.0 overview

15

Effects

• “Эффект” – применение фильтра к изображению– Размытие– Отражение– Sepia tone– Grayscale

• Ускорение с помощью D3D/OpenGL– В некоторых случаях использование CPU оказывается более

эфективным

15

Page 16: JavaFX 2.0 overview

16

Animations

• Transitions– Набор простых предопределенных действий

• Rotate, scale, translate, fade– Операции с узлами сцены

• KeyFrame– Спецификация значений свойств в нужные моменты времени– Или просто вызовы функции в эти моменты

• Timeline– Изменение значений переменных, заданных в KeyFrame– Может и не осуществлять непосредственно анимацию

16

Page 17: JavaFX 2.0 overview

17

Animation Example

17

Text text = new Text();text.setText(“Hello World!”);

Transition rotate = new RotateTransition(Duration.millis(1000), text);rotate.setToAngle(180);rotate.play();

Timeline timeline = new Timeline();timeline.setCycleCount(Timeline.INDEFINITE);

timeline.setAutoReverse(true); KeyValue kv = new KeyValue(rectBasicTimeline.xProperty(), 300); KeyFrame kf = new KeyFrame(Duration.millis(500), kv); timeline.getKeyFrames().add(kf); timeline.play();

Page 18: JavaFX 2.0 overview

18

Event Handling

• За основу взята модель событий DOM• Две фазы обработки

– Capturing– Bubbling

• Поглощение на любой стадии• Разные уровни обработки

– on* свойства узлов– EventHandler, EventFilter– EventDispatcher

18

Parent

Child

Capturing

Bub

blin

g

Page 19: JavaFX 2.0 overview

19

Events

• Input events– Mouse– Key– Touch– Drag&Drop

• Window events• Focus events• Control events

19

Page 20: JavaFX 2.0 overview

20

Pulse Events

• События от платформы каждые 1/60с– FPS может снижаться до 30, 15 и т.д в случае нагрузки

• Во время пульса– Обработка анимации– Раскладка узлов сцены– Применение CSS ко всем требуемым узлам– Синхронизация модели сцены с графическим представлением

20

Page 21: JavaFX 2.0 overview

21

Graphics

• Прозрачность для приложений– Отрисовка SceneGraph происходит автоматически– Большие возможности для оптимизаций

• Prism – новый графический стек JavaFX 2.0– Поддержка 2D и 3D

• Аппаратное ускорение– Direct3D, OpenGL– Использование шейдеров для отрисовки примитивов– Программная реализация для старого оборудования

• Decora – библиотека для наложения эффектов

21

Page 22: JavaFX 2.0 overview

22

Controls• Button• RadioButton• ToggleButton• CheckBox• ChoiceBox• Cell• IndexedCell• ListCell• TreeCell• Label• MediaPlayer• Menu• MenuBar• MenuButton• MenuItem

22

• ProgressBar• ProgressIndicator• ScrollPane• SplitPane• TabPane• TitledPane• ScrollBar• Separator• Slider• TextBox• PasswordBox• Tooltip• ToolBar• ListView• TableView

Page 23: JavaFX 2.0 overview

23

HTML

• Поддержка современных веб стандартов– CSS3– DOM

• WebEngine– Загрузка данных, построение DOM дерева– Выполнение скриптов

• WebView– Визуальное отображение страницы

23

Page 24: JavaFX 2.0 overview

24

Media

• Поддержка аудио и видео– fxm, mp3, H.264

• МеdiaPlayer– Воспроизведение Media

• MediaView– Визуальное отображение– Несколько MediaView могут быть связаны с одним MediaPlayer

• MediaControl

24

Page 25: JavaFX 2.0 overview

25

Deployment

• Различные модели развертывания– Отдельное приложение– Java Plugin– Java Web Start

• JFXPanel– Использование JavaFX внутри приложений Swing

25

Page 26: JavaFX 2.0 overview

26

Demo: SwingInterop

Page 27: JavaFX 2.0 overview

27

http://www.oracle.com/technetwork/java/javafx/downloads/index.html

Время писать на JavaFX!

Page 28: JavaFX 2.0 overview

JavaFX 2.0 overviewAlexander Potochkin

Senior software developer

November 28, 2011