javafx 2.0 overview

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

Upload: dmitry-buzdin

Post on 24-Jan-2015

1.066 views

Category:

Documents


4 download

DESCRIPTION

 

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