Java Desktop 2020
Hendrik Ebbers, Karakun
In Java's history a lot of different UI technologies appeared and helped Java to become an established technology for desktop applications. Especially the cross platform functionality of Java enabled a lot of mission critical desktop applications in industries like the aerospace sector, deep sea research, the stock market, and others.
As we all know the market share of desktop applications has gone down during the last decade. Next to mobile computing more and more applications move to web browsers. Based on this Java desktop technologies are not as attractive anymore as they were a couple of years ago.
Nevertheless there is still progress in Java Desktop technologies and a lot of positive changes and progression happened within the last 12 months. Together we will take a look at the current state of these technologies, how they evolved within the last year, and what new developments the future might bring for us.
The JavaFX Roadmap
Wolfgang Weigend, Oracle Corp.
The release of JavaFX 11 in September 2018 was the first release after JavaFX had been decoupled from the core JDK. Since the decoupling was announced, developers from Oracle, Gluon and other companies worked together to ensure that the JavaFX platform was modularized, and that JavaFX developers could use the JavaFX API's in the same way they use other API's.
As part of the decoupling, a mirror on github has been created for making the development of OpenJFX easier and more transparent to developers that are used to modern development systems. Then the focus turned again to new functionalities and improvements. The development of JavaFX is mainly driven by its contributors and their customers. The session covers a brief look at the important new features in JavaFX 15 and those that are being developed as part of JavaFX 16 and beyond. Also the new packaging mechanisms will be explained, including jpackage and GraalVM support. Finally the session closes with the “Write once, run anywhere” approach of JavaFX including the platform support for desktop, embedded systems and mobile devices.
Real World Application: A JavaFX CAD Software
Pedro Duque Vieira
This talk is about a recently shipped and currently in use CAD application that Pedro has finished developing for a client, using JavaFX. It can be seen as an application similar to Autocad (which is used in Civil Engineering, Architecture, etc) but with the specific purpose to do energy efficiency assessment. It is an excellent example on the benefit of using JavaFX to develop these kinds of applications. This software was finished in a much smaller time frame and a much smaller budget than other similar projects from competing companies. The users’ feedback to its release has gone way beyond what was expected.
A Modern JavaFX Theme: JMetro
Pedro Duque Vieira
JMetro is an open source theme for JavaFX. A JavaFX theme inspired by Microsoft Fluent Design. It is being used on production ready applications, some notable examples include the famous NASA’s Deep Space Trajectory Explorer application, NASA’s TODV, etc. Besides changing the appearance of controls, it also changes their behavior, with the addition of new functionality (through the skins API). All of this is done without the developer having to change anything in his code. This talk will focus on what is JMetro, how to use it and notable examples of applications using it.
Building Modular JavaFX Applications with JPMS and Layrry
Andres Almiray, Oracle Corp.
The Java Module System lays the foundation for building modularized applications on the JVM. It doesn't concern itself though with resolving module versions and obtaining modules from repositories. This is where Layrry comes in: an API and launcher for modularized Java applications which takes a descriptor of the module layer(s) to assemble, fetches the modules and starts up the application. Layrry also allows dynamic loading.unloading of plugins which makes it ideal for JavaFX applications, allowing app developers to provide behavior on the fly.
JavaFX Game Development: Enter FXGL Engine
Almas Baimagambetov, University of Brighton
Modern JavaFX provides hardware acceleration support on a range of platforms, including desktop, mobile and embedded, allowing the development of high-performance cross-platform applications. However, to develop games with JavaFX effectively, numerous domain-specific concepts are needed. To address this need, the FXGL game engine extends JavaFX and brings support for real-world game development techniques. These include the entity-component model, A* pathfinding, particle systems, sprite sheet animations and many other features. As a result, JavaFX developers can produce games more quickly and more effectively with FXGL. Integrating seamlessly with Gluon's Client plugin, FXGL users can easily package their games to native platform images, including Android and iOS. By the end of this session, attendees will be able to: * Describe and explain basic FXGL features. * Produce a simple game with FXGL.
JPro in Practise
Florian Kirmaier, Sandec
In this short talk, we will concentrate on three aspect: (1) We will go through a short and concise hands on tutorial to show how easy it can be to take a running Java application and bring it to the web. (2) we will demonstrate some of our running and exciting projects, to show what is doable and what not. And (3) the session will address a set of recurring Q&A’s experienced from the market, as well as giving room for ad hoc questions from the audience.
Chart-FX - Why and How to Plot 1001k scientific data points @ 25 Hz
Alexander Krimm & Ralph J. Steinhagen, GSI Helmholtzzentrum für Schwerionenforschung GmbH
Chart-FX is a scientific charting library focused on performance optimized real-time data visualization at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points. From its origin, design choices, functional highlights to its real-world high-performance use-cases, and its future, this contribution presents some of the challenges, encountered opportunities as well as benefits since open-sourcing this library.
JavaFX Touch @ Industrie
Creating reliable and modern Desktop applications is one of the key strengths of JavaFX. Yes, desktop applications are still relevant. At BioFluidiX we use JavaFX for creating intuitive touch-based user interfaces for controlling our liquid handling robots and other devices. The JavaFX scene graph is ideal for the interactive visualization of robotic actuators and sensors. Java is well equipped for communicating with industrial hardware and the property API is convenient for processing real-time data. In this presentation we will show real-world applications as well as a user interface for the Arduino-based DIY project "ZEN-table", a sand table that draws beautiful sand patterns.
JavaFX Performance Tuning
Anton Epple, Eppleton
JavaFX is a great framework for creating graphically rich and highly interactive applications. The Scene Graph API makes it really easy to visualize your data with rich controls, complex animations and CSS styling. When done right, JavaFX applications can be blazingly fast. But while the high level API protects you from having to write lots of graphics code, it also makes finding performance problems hard. In this session we’ll explore tools and strategies for identifying and solving JavaFX Performance Issues.
Using JavaFX to Combat Illegal Dynamite Fishing in Tanzania
Since the 1960s, indiscriminate fishing techniques using underwater explosives have been widespread across the coastal zone of Tanzania, Africa. So-called “bomb fishing” causes untold damage to the structures (e.g. coral reefs) and soundscapes of marine habitats and the animals within. At its recorded peak in 2016, tens of thousands of bomb blasts were visually recorded along the Tanzanian coastline, with many more likely undetected and unreported, representing a substantial and endemic conservation problem.
Gathering data on the location, timing and number of explosions over time is essential for understanding exactly when and where blasting occurs, for alerting enforcement in a timely manner, and for monitoring the effectiveness of any interventions. Listening for bomb blasts underwater (passive acoustic monitoring) has the great advantage over visual observation in that blasts can be detected during both the day and night, and this can be done over thousands of square kilometres.
However, such acoustic monitoring schemes generate vast quantities of data which must be automatically analysed. Typically, a machine learning based approach would be used to build an accurate acoustic classifier, however, the combination of little training data on fish bomb blasts and the poorly documented soundscape of Tanzanian reefs mean that building an accurate automated classifier is difficult. Here we instead adopted a hybrid analysis approach, where we ran an automated detector that extracted any sound of interest, and then used JavaFX to build a highly interactive visualisation of the data. This enabled a manual analyst to quickly identify fish bomb blasts, allowing for months of raw data to be sifted through with the times and audio clips of fish bomb blasts extracted in a few hours, compared to the weeks of time it would have taken otherwise.
JavaFX provided the means to build fast and intuitive data visualisation tools, an easy-to-use and attractive GUI, and critically, allowed this to be achieved on modest financial and time budgets. JavaFX enabled real-time conservation in the marine environments, and was key to the success of this (and other) wildlife conservation projects.
Moving JavaFX Forward
Johan Vos, Gluon
Gluon has been the defacto JavaFX steward since the JavaFX 11 release. Gluon builds and maintains the JavaFX artifacts and makes them available as SDK's as well as on Maven Central. Moving JavaFX forward is often a balance between adding new features and staying at the front of the UI development, while also making sure that the core principles of Java, especially backward compatibility, are respected.
In the past year, focus was mainly on the transition to making JavaFX a set of modules that work well with evolving JDK releases as well as integrate with standard build, deploy and devops tools that are popular in the development community. One of the main focusses of JavaFX is to make sure it works on as much platforms as possible: desktop, but also mobile and embedded. In this session, we will discuss some of the future ideas.
Having Fun with Java and JavaFX on the Raspberry Pi
Java, JavaFX and a Raspberry Pi are an ideal combination for any project where you want to connect software and hardware (LEDs, buttons, sensors...) with a beautiful, easy-to-use user interface. In this talk, we will go through the process of building a JavaFX touchscreen user interface to control a relay board and an Arduino with LED strips that were needed to solve the problem of getting my son to the dinner table while he is playing the drums...
This includes selecting a Java JDK for Raspberry Pi, setting up a Mosquitto queue, programming the Arduino, understanding the GPIO's on the Raspberry Pi, including a web server, and a lot more. We will also have guest appearances of Spring, Undertow, MQTT, OpenWeatherAPI, Pi4J, BellSoft, Gluon, I²C, SPI...
Hardware experiments may seem challenging but with some basic knowledge and cheap components, you'll discover it’s a great way to learn a lot of new stuff!
On The Edge - From Boring Form UIs to OpenGL Integration
Tom Schindl, BestSolution
Most developers associate integrating OpenGL into JavaFX as a high profile task. For them it might come as a surprise that implementing "boring" business UIs that look slick, that are accessible, and that are well architectured, is just as much of a high profile task.
In this talk we will show real world use cases and highlight how we implemented high quality form-based UIs leveraging JavaFX and code generators. We will talk about "accessibility" (a11y) and the roadblocks we hit.
Last but not least we will talk a bit about DriftFX providing an update on the current status and what comes next.