A Java(FX) side project…

Andrea Liana
3 min readSep 24, 2017

--

Hello, this is my first contribution to Medium. Before starting this column I meditated if writing or not, but you know… when you try to write about a subject, you are almost forced to make things clear and sometimes clearer before putting them down into words.

I have more than 20 years experience in coding, but as part of my freelance job learning something new with a reasonable pace is necessary.

Most of my code still works on Java 1.6 and AWT due for compatibility with old hardware installation. When I started reading about JDK 8 about three years ago I was a little worried about the AWT part, since JavaFX looked like a new and modern substitute to it.

Most of my code performs query to a SQL databse and present the result set to users using a framework I developed almost 10 years ago from the ashes of an even older AWT based framework. Now the graphic framework shows some problems starting with macOS 12.11 and Retina displays: labels are not displayed properly. The weird part of this problems is that happens only on some Macs.

After experiencing this issue, even after OS updates, I decided to start a side project based on Java 8 and JavaFX. Why JavaFX? because its not affected by the label issue and it’s where Oracle is now putting his efforts for client side user interface. This project could also become a plan B if I have to migrate my current platform, but its too early to say that for sure.

A side project, in my opinion, should satisfy some requirements:

  • be something you like, something you work pleasantly with when you are tired of everything else;
  • make it an opportunity to learn something new;
  • you have no timeframe;
  • the project can have big objectives, but choose to decompose it in smaller pieces you can take care when you can and when you want.

This side project is now called NSFX and started around 3 years ago: its main objective was to explore Java 8 new features and learn how to use JavaFX.

It began like little chunks of code here and there but after being shelved for some months I decided to make it in a new experimental platform.

I always liked NextStep/OpenStep both visually and its API structure. But I also appreciated Apple’s Swift language and its protocol style programming. In my past experience is also easier to learn something when new concepts are applied to a real world problem and its solution. How to put everything together?

I started with a priority list, which I am still following. Starting from the most important:

  • data is first citizen in my work: rewrite my old database framework;
  • Multiple Document Interface (MDI) is still a productive environment in a real world business environment: develop a MDI framework for building Java/JavaFX applications;
  • a simple application, if successfully adopted by users, grows every day with new functions: define a framework which helps organizing code with a good modularity, reducing boilerplate but without many restrictions;
  • printing and pdf generation is still a strong requirement in business applications: develop a printing framework, which can produce JavaFX, paper or pdf outputs from a single data source, even a big one;
  • frequent updates and safe deployments are another task to be carried out properly: create a compile+deployment system integrated with an update framework or tools;
  • although being a long time Java developer, I miss the effectiveness of the Visual Basic environment: create a UI builder and experience again VB fast code development;

When I wrote such list most of these points were already in early stage but without a common and unifying strategy.

Two years ago, when I was blocked for 10 days in bed, I had to distract my mind from constant back pain and so the first point of the list took shape.

In the next articles I will talk about my considerations on each point of the list, but as of today thats what I can show and use already with proficiency:

NextLab Application

That’s NextLab, the first product of NSFX platform.

Note: Java and JavaFX are registered trademarks of Oracle and/or its affiliates; NextStep and OpenStep are trademarks of NeXT Software, Inc; macOS and Retina are trademarks of Apple; Visual Basic is a registered trademark of Microsoft.

--

--

Andrea Liana
0 Followers

Freelance Developer with more than 20 years of experience. Likes Java, Apple, Swift and healthy eating and fitness.