Porting JavaFX Embedded Lisa Selle Principal Member of Technical Staff JavaFX Embedded September 29, 2014 Copyright © 2014, Oracle and/or its affiliates.

Slides:



Advertisements
Similar presentations
MHK200 Module 1: Introduction to Windows CE. MHK200 Overivew Windows CE Design Goals Windows CE Architecture Supported Technologies, Libraries, and Tools.
Advertisements

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Your customer as a segment of one That changes every second! Hein Van Der Merwe Chief.
Embedded Streaming Media with GStreamer and BeagleBoard ESC-228 Presented by Santiago Nunez santiago.nunez (at) ridgerun.com.
MVC in JavaEE 8 Manfred Riem Principal Member of Technical Staff September, 2014 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Internet of Things Security Architecture
1 Mocha Raspberry Pi Hacking Stephen Chin
Android Platform Overview (1)
OpenJFX for Embedded Devices
High Tech Executive Discussion New Industry Solutions to Shape Your Future Rosh Dawes, Equinix Joseph Ahn: Principal Consultant, Samsung SDS Jaechul Lee:
A Java Architecture for the Internet of Things Noel Poore, Architect Pete St. Pierre, Product Manager Java Platform Group, Internet of Things September.
Mobile Application Development
Integrating Swing with JavaFX
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle SQL Developer What’s New in Version 4.1 Jeff Smith
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Oracle SQL Developer For the DBA Jeff Smith
The Safe Harbor The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated.
Best Practices for Supporting Oracle Hyperion EPM and Business Intelligence Solutions Mitra Veluri Senior Principal Technical Support Engineer David Valociek.
Best Practices for Upgrading Oracle PeopleSoft Environments
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Installing software on personal computer
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. JD Edwards Summit The Newest JDE Module – Rental Management Joel Sandberg Sales Consultant.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
QAD .Net UI: New Enhancements
Getting Started with Oracle Compute Cloud
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. JD Edwards Summit PaaS from an Applications Perspective Charles McGuinness Director,
1Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Reporting from Contract.
Guide to Linux Installation and Administration, 2e1 Chapter 3 Installing Linux.
Oracle E-Business Suite Order Management: Presenting the HTML and Mobile User Experience Durgaprasad Bodapati Director, Product Management Bhavana Sharma.
Android Programming By Mohsen Biglari Android Programming, Part1: Introduction 1 Part1: Introduction By Mohsen Biglari.
Embedded Streaming Media with GStreamer and BeagleBoard
Department of Electrical Engineering Electronics Computers Communications Technion Israel Institute of Technology High Speed Digital Systems Lab. High.
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
Mastering the AS/400, Third Edition, author Jerry Fottral 1 Week 2 The System The AS/400 is a multi-user, multi-tasking system -- a system on which many.
Overview Embedded Linux Graphics Typical desktop Linux graphics stack SystemRAMDisk X Window System5MB16MB GNOME14MB95MB KDE11MB96MB Mozilla12MB95MB.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. An Auto-Join Network of Things Wong, H. and Wesson, B. Oracle Confidential – Internal/Restricted/Highly.
Hadoop 2 cluster with Oracle Solaris Zones, ZFS and unified archives Orgad Kimchi - Principal Software Engineer September 29, 2014 Oracle Confidential.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1 Quick Tutorial – Part 2 Open Data Web Services for Oracle BPM August, 2013 Forms.
ANDROID 응용 프로그래밍 과정 – 목차 - 안드로이드란 - 안드로이드가 만들어지게 된배경 - 안드로이드의 철학 - 안드로이드 환경설정 ( SDK download, eclipse plug-in 설정, 간단한 프로그램 실행 ) - 안드로이드 동작원리 - 안드로이드 핵심.
1Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8 Contract Management.
Firmware Storage : Technical Overview Copyright © Intel Corporation Intel Corporation Software and Services Group.
CON Software-Defined Networking in a Hybrid, Open Data Center Krishna Srinivasan Senior Principal Product Strategy Manager Oracle Virtual Networking.
Android architecture & setting up. Android operating system comprises of different software components arranges in stack. Different components of android.
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”
X-WindowsP.K.K.Thambi The X Window System Module 5.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 1.
Workforce Scheduling Release 5.0 for Windows Implementation Overview OWS Development Team.
Build Mobile Apps for Oracle E-Business Suite with Oracle Mobile Platform Bruce Bailey Principal Mobile/Social Solutions Consultant Jagadeesh Maira Senior.
RESTful Microservices In Java With Jersey Jakub Podlešák Software Engineer Oracle, Application Server Group September 29, 2014 Copyright © 2014, Oracle.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Planning & Budgeting Cloud Service (PBCS) Overview Business Analytics Product Group.
CSC190 Introduction to Computing Operating Systems and Utility Programs.
© 2015 Wind River. All Rights Reserved. Integrating FACE™ Aligned Componentry Larry Kinnan Principal Technologist, Wind River.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 1.
Travel and Transportation General Session and Industry Excellence Awards Vijay Anand, Oracle Sundar Swaminathan, Oracle September 30, 2014 Copyright ©
By Adam Reimel. Outline Introduction Platform Architecture Future Conclusion.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 1.
OPERATING SYSTEMS (OS) By the end of this lesson you will be able to explain: 1. What an OS is 2. The relationship between the OS & application programs.
CON8473 – Oracle Distribution of OpenStack Ronen Kofman Director of Product Management Oracle OpenStack September, 2014 Copyright © 2014, Oracle and/or.
Slide 1. What's New in NetBeans IDE 7.1 Name Title.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | What You Need to Know About User Defined Objects (UDOs) With Tools Release 9.2.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Daddy, what's a middle wear? An incredibly oversimplified explanation of what Middleware.
Computer System Structures
Current Generation Hypervisor Type 1 Type 2.
CMPE419 Mobile Application Development
Flight Recorder in OpenJDK
OpenWorld 2018 How to Combine Data from Source Sites
JD Edwards Support and Oracle Cloud Infrastructure: A Successful Path to Oracle Cloud
Oracle Database Multilingual Engine
1.
CMPE419 Mobile Application Development
Presentation transcript:

Porting JavaFX Embedded Lisa Selle Principal Member of Technical Staff JavaFX Embedded September 29, 2014 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX Embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX Embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded 8u6 Reference Implementation Full screen framebuffer – Provides for multiple stages/windows without an OS-level window manager Supports both hardware-accelerated rendering and software fallback Supports Linux input – Keyboards – Mouse – Touch and multi-touch devices What is provided 6

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded 8u6 Reference Implementation Supported platforms: – Freescale i.MX6 Sabre Device Platform (Hard-float ABI) Known to work: – Raspberry Pi model B (Hard-float ABI) – Beagleboard XM rev C (Soft-float) Current Platforms 7

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded 8u6 Reference Implementation Reference build using Linux desktop tools – Gradle 1.4 – GCC – Platform SDK for headers/system libraries (for cross build) OpenJFX wiki has documentation for arm hard float cross build – Building JavaFX Embedded (OpenJFX) 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX Embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded Porting Overview Why is porting required? – EGL framebuffer initialization is not standardized across platforms – Framebuffer layer management is not standardized across platforms – Allows support for new input devices to be added 10

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded Porting Overview RAM – JavaVM + JavaFX requires 34MB ram minimum – More memory will be needed depending on the size and complexity of the application ROM – JavaVM Compact1 profile with JavaFX Graphics requires 18MB minimum – More storage will be needed depending on the size and complexity of the application Target platform requirements 11

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded Porting Overview VRAM – VRAM requirements can be high, particularly if large images are used – VRAM is also consumed by fonts and gradients – JavaFX has mechanisms to allow it try to work within VRAM limits; this can be specified on the command line – More information on OpenJFX wiki Target platform requirements 12

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded Porting Overview Operating system for the target device (reference implementation assumes Linux; other operating systems could be supported) Native drivers for any input devices you wish to support Font support – Freetype/pango libraries – A port could add an alternative font engine which may have other native requirements Java runtime environment (JRE) version 8 or better Target platform requirements (continued) 13

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. JavaFX Embedded Porting Overview Framebuffer management, either: – Direct framebuffer, full screen access EGL drivers that support direct access to the framebuffer OpenGL ES drivers for hardware accelerated graphics Software fallback is available if hardware acceleration is not available – System-provided window management GTX for X11 EGL/GLX OpenGL/OpenGL ES drivers Target platform requirements (continued) 14

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Porting JavaFX Embedded to a New Platform Operating system setup can be a very challenging part of a new port – It can be difficult to find an integrated OS with all the necessary pieces; it’s often necessary to build it up piecemeal, beginning with an OS then adding vendor-specific drivers and libraries – Documentation on platform-specific features such as EGL initialization and framebuffer layer management (where available) can be difficult to come by Non-linux operating systems will present additional challenges; plan for additional efforts on fonts, cursors, input, and build setup Operating System 16

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Porting JavaFX Embedded to a New Platform Obtain cross compiler and development tools Read the build section on OpenJFX wiki Using this as a guide, you will need to create a new build profile for your platform – Provides paths to compiler and build tools, specifies build/link flags – Toggles the build options Build Setup 17

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Porting JavaFX Embedded to a New Platform Current choices for window management: – Glass/GTK with X11 – Monocle Provides management for multiple stages/window Does not provide any mechanism for interaction with other native windows (assumes full-screen ownership) Provides mechanism for platform-specific initialization of drawing surfaces, input device management, and cursor handling – Custom Roll your own! If you need to interact with a native window manager other than X11 Window Management 18

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Glass implementation for systems that do not have an underlying window manager Written almost entirely in java (previous porting layer, lens, relied heavily on native code) What is Monocle? 20

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Functional and quality parity with lens on all platforms Simplify the process of porting to a new platform Minimize native code Improve maintainability and debuggability of embedded ports Pluggability of Linux input device handlers What are the goals of Monocle? 21

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Glass integration classes (MonocleApplication, MonocleWindow, MonocleView) - interface with the rest of glass. These classes run on the application thread. Window management classes (MonocleWindow, MonocleWindowManager) – manage window state of individual windows and z-order of the window stack. These classes run on the application thread. Generic components of Monocle 22

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Input device management (InputDeviceXXX, InputDeviceRegistry) – InputDevices represent individual devices and deliver their associated events. The input device registry manages all input devices. The generic input device code runs on the application thread. Input handling (MouseInput/State, TouchInput/State, KeyInput/State) – process various types of input. These classes run on the application thread. Platform – abstract out the platform-specific functionality, such as initialization of the platform and screen, and management of the cursor (NativePlatform, NativeScreen, NativeCursor). Generic components of Monocle (continued) 23

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer The following monocle platforms are available in the 8u6 release of JavaFX embedded (and also in OpenJFX): – Linux – generic Linux port, low-level input device nodes and a hardware cursor – OMAP – for the Beagleboard xM, EGL/framebuffer with Linux device input and a hardware cursor – MX6 – for the Freescale i.MX6, EGL/framebuffer with Linux device input and a hardware cursor – OMAPX11 – for the Beagleboard xM, EGL/X11 with Linux device input and a hardware cursor Available monocle platforms 24

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer The following monocle platforms are available in the 8u6 release of JavaFX embedded (and in OpenJFX): – DISPMAN – for the Raspberry Pi, with Linux device input and a hardware cursor – X11 – for generic Linux/X11 platforms, using X11 for input and cursor – Headless – provides neither input nor output. Used mainly for testing. Other platforms which should fit but are not yet available: – Android Available monocle platforms (continued) 25

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer While most of Monocle is written in Java, there are some classes which use JNI to access native C APIs: – C.java – provides access to C data structures. Requires loadLibrary* permission – LinuxSystem.java – provides access to selected Linux APIs. Requires loadLibrary* permission – X.java – provides access to X11 APIs – EGL.java – provides access to EGL APIs Native Code in Monocle 26

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Program Agenda JavaFX embedded 8u6 reference implementation JavaFX embedded porting overview Porting JavaFX embedded to a new platform Monocle – the new JavaFX embedded porting layer Creating a new Monocle implementation

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer To create a new Monocle implementation, you will need to provide platform-specific subclasses of: – NativeScreen – AcceleratedScreen (if you wish to support hardware-accelerated rendering) – NativeCursor (if you are using a pointing device and wish to support hardware- accelerated rendering) – InputDeviceRegistry – NativePlatform – NativePlatformFactory Creating a new Monocle implementation 28

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Provides information about the screen it is using, and blits pixels to the screen in the software rendering path Often this class is based on a Linux framebuffer but could be based on something else – Example: X11Screen – creates a single X window and renders into it Creating a new Monocle implementation - NativeScreen 29

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Provides a way to get an OpenGL ES context to the screen Typically uses EGL API to create a drawing surface EGL requires a NativeWindowType parameter whose meaning varies from platform to platform The method used to obtain this parameter typically needs to be customized for each new port Creating a new Monocle implementation - AcceleratedScreen 30

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Not needed for software rendering platforms (a SoftwareCursor is supplied) Method for getting a hardware cursor to the screen is very platform dependent; for example: – On TI OMAP3 devices, /dev/fb1 framebuffer overlay can be configured and used for the cursor – On Raspberry PI the dispman API can be used to create a separate graphics layer for the cursor – On Freescale.iMX6 a framebuffer overlay is used, but the API to access it is different than on the TI OMAP3 devices Creating a new Monocle implementation - NativeCursor 31

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer Handles discovery of input devices Handles insertion of events from these devices into the JavaFX event queue Default implementation uses the udev Linux system; other implementations are possible Creating a new Monocle implementation - InputDeviceRegistry 32

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Monocle – the New JavaFX Embedded Porting Layer NativePlatformFactory – creates the NativePlatform implementation. The NativePlatformFactory whose match algorithm returns true for a particular platform is the one which will be selected. The match algorithm can be based on various things – existence of specific system files, particular symbols present in a native library, etc. NativePlatform – bundles together the NativeScreen, NativeCursor, and InputDeviceRegistry. NativePlatform and the classes it contains are all singletons. Creating a new Monocle implementation – NativePlatform, NativePlatformFactory 33

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Questions? 34