4. Native apps
• Нативные приложения
– Отзывчивы
– Выразительны
– Удобны
– Имеют доступ ко всем ресурсам устройства, которые пожелают
Текущие скорости интернета позволяют их доставлять до
пользователя быстро
4
5. Десктоп vs. мобайл
• Планшеты – для потребления контента
• Десктопы – для создания контента
• Тенденция слияния десктопных и планшетных OC:
– Windows Surface, Universal apps
– OS X / iOS
– Linux для планшетов
5
6. Причины написания приложения под десктоп
• Доступ к локальной файловой системе
• Возможность работы оффлайн
• Отзывчивость системы
• Эффективность разработки сложного ПО
• Независимость от браузера, установленного у пользователя
6
10. План доклада
• Обзор UI фреймворков для Java
• Аспекты native UX:
– установка
– старт
– look-n-feel
– восприятие пользователем
10
11. Кто знает про себя ?
• Более 20 лет профессиональной карьеры
• Инициатор проекта Excelsior JET
– работал над проектом более 16 лет
– как идейный вдохновитель
– как компиляторный инженер
– как руководитель
– и много в каких еще ролях
• Open source проекты WebFX и Java ReStart
– в свободное от работы время
• twitter: @pjBooms
11
12. Кто знает про Excelsior JET?
• Полная реализация Java SE
– c 2005 года cертифицирована как Java Compatible
• AOT compiler + Java Runtime
– смешанная компиляция: AOT + JIT
– поддержка нестандартных загрузчиков классов в
AOT режиме (для Eclipse RCP, Tomcat)
• Toolkit
– Startup Optimizer
– Deployment
12
18. SWT vs. Swing
• Pros Swing
– легкость настройки look-n-feel
– можно сделать лучше чем native (JIDE, Alloy)
• Cons Swing
– по умолчанию look-n-feel не совсем native
– многие look-n-feel по умолчанию находят “убогим”
18
19. SWT vs. Swing
• Pros SWT
– действительно native look-n-feel
– легковесный ~2M (работает на compact1 / Apache Harmony / GCJ)
– может работать поверх Swing/JavaFX
• Cons SWT
– тяжело сделать уникальный look-n-feel
– такой же “убогий” как UI операционной системы
19
20. JavaFX
• Scene graph
• Анимация, визуальные эффекты
• FXML, CSS
• Скриптовые языки: JavaScript, Groovy, JRuby
• Multi touch
• Бизнес-графика, media, 3D
• Аппаратное ускорение графики
• HTML5 & WebView (на основе WebKit)
20
32. Native clients
• Правило №1:
– Ваш пользователь не должен знать, что такое Java. Не должен!
• Решение:
– Ваше приложение должно запускаться как .exe целевой
платформы
– Не зависеть от Java, установленной у клиента
32
33. Java to Exe
Сделать из Java исполняемый файл целевой платформы не
просто …
33
34. Java to Exe
Сделать из Java исполняемый файл целевой платформы не
просто
а очень просто!
34
35. Java to Exe
Сделать из Java исполняемый файл целевой платформы не
просто
а очень просто!
И совершенно бесплатно!
35
36. Java to Exe
• Можно самому
– Invocation API
• Много бесплатных (и платных) инструментов
– Launch4J
– Exe4J
– etc.
Tip: Google “Java to Exe”
36
39. Native bundle
Чтобы устранить зависимость от JRE нужно …
просто включить JRE целиком
в состав приложения
Это абсолютно легально по лицензии на JRE (но включать
надо все файлы JRE, за редким исключением)
39
49. Excelsior Java Runtime Slim-Down
• Java SE API делится на компоненты:
– Kernel, XML, SQL, CORBA, AWT/Java2D, Swing, etc.
• анализатор определяет какие
компоненты “нужны”
– содержат достижимые методы
49
57. Как ускорить старт без AOT
• Instant splash
• Выяснить, какие классы грузятся на старте, и перепаковать
ваши jars в порядке загрузки классов
– VM arg: -verbose:class
• Упаковать все jar в один (One-Jar, Autojar)
57
59. Look-n-feel
Миф о native look-n-feel:
Приложение только тогда нативное, когда оно
выглядит ”привычно” для конечного пользователя и
похоже на другие приложения данной операционной
системы
59
62. Look-n-feel
• Приложение воспринимается как родное:
– интуитивно понятный интерфейс
– мгновенный отклик
– выглядит хорошо
– UI разработан профессионалами в областях графического
дизайна и UX
– с учетом HIG (human interface guidelines) целевой платформы
62
64. Look-n-feel
• Приложение воспринимается как родное:
– интуитивно понятный интерфейс
– мгновенный отклик
– выглядит хорошо
– UI разработан профессионалами в областях графического
дизайна и UX
– с учетом HIG (human interface guidelines) целевой платформы
64
67. JavaFX Scene Builder
• Действительно WYSIWYG
– Манипуляция ровно теми же объектами, что и потом “идут в
бой”
• Порождает FXML
– Понимает рукописный FXML
• Легко расширяется вашими контролами
– Как first class citizen
• Сейчас – open source
67
71. Отзывчивость UI
• JIT хорошо работает для горячего кода
• UI приложения – пример приложений без ярко
выраженного горячего кода
– Профиль исполнения практически плоский
– JIT долго греется
• AOT работает лучше, оптимизируя каждую строчку кода
максимально агрессивно
71
74. Заключение
• Javа прекрасно подходит для client side
– кросс-платформенна
– богатый выбор UI фреймворков
• JavaFX – потрясающая технология
– практически готова для mobile
• Native bundle для Java приложения – легко!
– уникально именованный процесс
– независимость от Java у пользователя
• Проектировка UI & UX – дело профессионалов
– дизайнеры наше все
• AOT улучшает UX
74