In a project I’m working on for my book, I need to share classes between two applications. One, an Android project, requires Java 8. The other, a desktop JavaFX application, needs to run under Java 9, complete with module support. The problem with this is that the Maven tooling isn’t quite ready for Java 9, so it’s not as simple as I would like. I have, however, found a solution that seems to work.
In my work on my book, I’ve spent quite a bit of time with JavaFX. In the chapter I just submitted, I wrote the application using the NetBeans RCP, which I think is a great piece of software. My only "complaint", I think, is more of a philosophical one more than a technical one, and even stating it that way is probably really over-selling it: for the most part, to use the RCP is to use Swing. Sure, you can use JavaFX in the application, but it seems you have to hold your mouth just right to get two-way data flow working. Possible, but it seems like a bit of work.
At any rate, while casting around The Tubes to track down advice on how to solve one problem or another, I ran across a couple of more modern application frameworks that look really promising, Drombler FX and the Dolphin Platform. Both look pretty slick, but the former seems to be backed by "only one guy" and might be a bit slow moving, while Dolphin is backed by Canoo and, more specifically, Michael Heinrichs, Hendrik Ebbers, Dierk König.
Once I finish this book and have more time to play with shiny new things, I need to give both of these a spin.
I should probably note, though, that there’s nothing really wrong with the NetBeans RCP in any real technical sense (beyond the 'no software is perfect' notion). I just like shiny things. I did, though, successfully create my RCP app and found the experience to be quite nice. If you need a desktop application, you should definitely check out the RCP.
For both my day job and a side project, I need want to generate and manage my REST APIs in a contract-first manner using Swagger. From looking at the docs, the answer seems to be Swagger Codegen, but I’m finding that it’s not that simple.

In the same region there were some shepherds staying out in the fields and keeping watch over their flock by night. And an angel of the Lord suddenly stood before them, and the glory of the Lord shone around them; and they were terribly frightened. But the angel said to them, "Do not be afraid; for behold, I bring you good news of great joy which will be for all the people; for today in the city of David there has been born for you a Savior, who is Christ the Lord. This will be a sign for you: you will find a baby wrapped in cloths and lying in a manger." And suddenly there appeared with the angel a multitude of the heavenly host praising God and saying,
"Glory to God in the highest, And on earth peace among men with whom He is pleased."
Perhaps I’m a bit of a glutton for punishment, but I have an odd addiction to nightly builds. In working on this book, I need to use NetBeans 9, which, of course, is not out yet. They are, however, publishing nightly builds. Being a command line guy at heart, I’d prefer not to have to go to the download page every time, so I did what any good geek would do: I wrote a script. It’s not pretty, and it’s not very fault tolerant, but it seems to work well enough. If you’re a fellow addict, here you go:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
VERS=`curl -s http://bits.netbeans.org/netbeans/trunk/nightly/latest/js/build_info.js | grep BOUNCER_PRODUCT_PREFIX | cut -f 2 -d \"`
FILE=$VERS-javase.zip
cd ~/Downloads
if [ ! -e $FILE ] ; then
wget http://bits.netbeans.org/netbeans/trunk/nightly/latest/zip/$FILE
if [ -e $FILE ] ; then
rm -rf netbeans
unzip $FILE
fi
fi
A few weeks ago, I was approached by an acquisition editor with Packt Publishing, asking if I might be interested in working on a book with them. Long story short, I signed the paper work and started working on the title Java 9 Blueprints. Books in Packt’s Blueprints series offer a different project in each chapter, showing each is built, explaining the technologies used, etc. So far, it feels a lot like what I aim for in my blog posts, only longer. The target release is Q1 of next year. I have a lot of work ahead of me. :)
Yesterday, the NetBeans team announced plans to move NetBeans from Oracle to Apache. This move was met by a mix of skepticism and optimism. I’ve ranged between the two myself, to be honest, but I’ve landed on optimsim.
I have a grand total of one Android application in the Play Store, Cub Tracker. It serves two functions for me: it helps me manage my sons' Cub Scout den, and it gives me a means for experimentation in the mobile realm. For the most part, it has done well for me on both counts for the past few years. I am currently faced with an issue of new functionality (which is mostly irrelevant for this discussion) that has brought up a question in the realm of experimentation. This post is a discussion of my options which will allow me to think out loud, if you will, as well as getting (I hope) some feedback on my options.
At the end of another busy year, full of stress and grief, it’s my hope and prayer that the true message of Christmas, not "getting along with family", but the birth of the Savior of the world, would settle your hearts, and that True Peace would be yours.
Merry Christmas!