I would not use Java for ...... well anything ever ...
I do not like the overhead on the recourses.
Those who don't know have an oppinion and they fight for it

Oh man ...
Seen that habbit uncounted times ...
I remember one project, where the customer wanted to replace a central system service, which became slow with the time being. Original service was coded in smalltalk ...
We built two replacement prototypes - one coded in C and one in java - and the result was, that the java service had the same client processing times as the C service (within microsecond resolution). Only drawback of the jave program was the initial startup time - but who cares on a system service running 24/7?
We had to code some tweaks to get the garbade collection work as fast as the client connections, but when that was done, the resources consumed stayed stable.
We let the services run several days and nights - with the result, that java was more stable than the C service. Reproducable.
With our prototypes we could beat every lie, like java is too slow, jave needs to many resources, java is not stable ...
At the end, the IT-commissary stated: we're not able to support java and its release cycles ...
I very like the idea of java working together with hal services. Java offers the most freedom on UI and has a very clean event system.
But using Runtime.exec is the worst possibility for IPC.
Don't know enuf about NML, but I guess its based on shared memory. To use that, java needs a little help of C - just like Python does too. JNI is the right javatask for that.
But if you're going to code java for linuxcnc - keep in mind, that there is really a lot of UI-stuff already worked out with python. Its pretty big job to code all that from scratch. Don't know, if you want to spend so much time on that item.
.
i'm going on in studying python, ... but the most of the time it makes me angry.
Same happens to me

Every time I look at python sources
Cheers Reinhard