JavaFX 2.0 overview

1,455 views
1,299 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,455
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JavaFX 2.0 overview

  1. 1. JavaFX 2.0 overviewAlexander PotochkinSenior software developerNovember 28, 2011
  2. 2. JavaFX 2.0• Дальнейшее развитие средств Java для создания rich applications – AWT/Swing – JavaFX 1.X• Целевая аудитория – Cуществующие и будущие Java разработчики – Веб разработчики 2 2
  3. 3. Rich Applications• Интернет становится более насыщенным • Это можно только поприветствовать!• Не только веб приложения • Но и обычные приложения в не меньшей степени • Мы хотим, чтобы JavaFX использовался везде • Мы не соперничаем с HTML• Не только для конечных пользователей • Но и для корпоративных приложений 3
  4. 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 4
  5. 5. Java Ecosystem• Миллионы Java разработчиков – Нет необходимости изучать новый язык – Простота использования и обучения• Множество средств разработки – Интегрированные среды разработки – Отладчики кода – Инструменты для тестирования – Средства измерения производительности – Средства анализа кода 5 5
  6. 6. TIOBE Index 6 6
  7. 7. Java Beans• Существующий дизайн Java Beans имеет ряд недостатков – Уведомления содержат как старое, так и новое значения – Неэффективная обработка примитивных типов – Большое количество вспомогательного кода – Корректность обеспечивается на уровне соглашения об именах, а не проверяется компилятором• Поэтому JavaFX 2.0 использует новую модель 7 7
  8. 8. JavaFX Beans• Bean – Получение уведомлений об изменениях свойств объекта• Property – Необязательный getter – Необязательный setter – Ссылка на модель – объект, который хранит значение• Mного вспомогательного кода – Но этот код тривиальный – Разумный компромисс между производительностью, количеством классов и удобством использования 8 8
  9. 9. Binding Example 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()); 9 9
  10. 10. Demo: Ensemble 10
  11. 11. SceneGraph• Направленный граф без циклов• Логический и физический уровни абстракции• Представление элементов UI – Графические примитивы – Компоненты – Эффекты 11 11
  12. 12. SceneGraph Nodes• ID• Стиль, класс стиля• Размеры и положение• Эффекты – Трансформации – Прозрачность• Обработчики и диспетчеры событий• Состояние – Курсор – Видимость 12 12
  13. 13. SceneGraph Performance• Монолитный дизайн• Быстрое вычисление границ узлов сцены• Отслеживание невалидных областей• Кэширование отрисованных частей сцены• Неявная отрисовка – Лучше подходит для обработки на GPU – Отдельный поток для отрисовки• Приемлемый объем использованной памяти – Проверено на приложениях с 50К+ узлами 13 13
  14. 14. Transforms• Преобразования координат – Сдвиг (x, y, z) – Растяжение и сжатие (ширина, высота, глубина) – Поворот (угол + вектор оси поворота) – Произвольные аффинные преобразования (матрица 3х3) – Перспективная проекция (матрица 4х4, для 3D)• Преобразования применены к любому узлу сцены – Возможно кэширование некоторых значений внутри узла 14 14
  15. 15. Effects• “Эффект” – применение фильтра к изображению – Размытие – Отражение – Sepia tone – Grayscale• Ускорение с помощью D3D/OpenGL – В некоторых случаях использование CPU оказывается более эфективным 15 15
  16. 16. Animations• Transitions – Набор простых предопределенных действий • Rotate, scale, translate, fade – Операции с узлами сцены• KeyFrame – Спецификация значений свойств в нужные моменты времени – Или просто вызовы функции в эти моменты• Timeline – Изменение значений переменных, заданных в KeyFrame – Может и не осуществлять непосредственно анимацию 16 16
  17. 17. Animation Example 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(); 17 17
  18. 18. Event Handling• За основу взята модель событий DOM• Две фазы обработки – Capturing Capturing Bubbling – Bubbling• Поглощение на любой стадии Parent• Разные уровни обработки Child – on* свойства узлов – EventHandler, EventFilter – EventDispatcher 18 18
  19. 19. Events• Input events – Mouse – Key – Touch – Drag&Drop• Window events• Focus events• Control events 19 19
  20. 20. Pulse Events• События от платформы каждые 1/60с – FPS может снижаться до 30, 15 и т.д в случае нагрузки• Во время пульса – Обработка анимации – Раскладка узлов сцены – Применение CSS ко всем требуемым узлам – Синхронизация модели сцены с графическим представлением 20 20
  21. 21. Graphics• Прозрачность для приложений – Отрисовка SceneGraph происходит автоматически – Большие возможности для оптимизаций• Prism – новый графический стек JavaFX 2.0 – Поддержка 2D и 3D• Аппаратное ускорение – Direct3D, OpenGL – Использование шейдеров для отрисовки примитивов – Программная реализация для старого оборудования• Decora – библиотека для наложения эффектов 21 21
  22. 22. Controls• Button • ProgressBar• RadioButton • ProgressIndicator• ToggleButton • ScrollPane• CheckBox • SplitPane• ChoiceBox • TabPane• Cell • TitledPane• IndexedCell • ScrollBar• ListCell • Separator• TreeCell • Slider• Label • TextBox• MediaPlayer • PasswordBox• Menu • Tooltip• MenuBar • ToolBar• MenuButton • ListView• MenuItem • TableView 22 22
  23. 23. HTML• Поддержка современных веб стандартов – CSS3 – DOM• WebEngine – Загрузка данных, построение DOM дерева – Выполнение скриптов• WebView – Визуальное отображение страницы 23 23
  24. 24. Media• Поддержка аудио и видео – fxm, mp3, H.264• МеdiaPlayer – Воспроизведение Media• MediaView – Визуальное отображение – Несколько MediaView могут быть связаны с одним MediaPlayer• MediaControl 24 24
  25. 25. Deployment• Различные модели развертывания – Отдельное приложение – Java Plugin – Java Web Start• JFXPanel – Использование JavaFX внутри приложений Swing 25 25
  26. 26. Demo: SwingInterop 26
  27. 27. Время писать на JavaFX! http://www.oracle.com/technetwork/java/ javafx/downloads/index.html 27
  28. 28. JavaFX 2.0 overviewAlexander PotochkinSenior software developerNovember 28, 2011

×