What's the relevance of the Java desktop in a world that's tilting towards mobile?
Freshly released publication "NetBeans Platform for Beginners" (https://leanpub.com/nbp4beginners), by Jason Wexbridge and Walter Nyland, is a 360 page guide to the modular architecture of Java desktop applications. What's the relevance of the Java desktop in an increasingly mobile world, why did the authors write this book, and what do they think about Java 8? I decided to ask them these questions, and here's what they had to say:
Wielenga: What's the point of writing a completely new
book about the Java
Walter Nyland (WN): The question makes sense in some respects. But, in other respects, if you're writing any kind of serious application that needs to be cross-platform and maintainable over decades, there are very few options at one's disposal. Simply put, the Java desktop is awesome. The best books on this subject are really outdated and we thought a new one is sorely needed.
Jason Wexbridge (JW): Indeed. We work on management/monitoring tools, which need to visualize large amounts of data, and we have no need for the browser at all. The only benefit of the browser is accessibility, while we create applications for confined sets of users, e.g., air traffic controllers in a shared control room or underwater vehicle analysts, to name just two scenarios. For example, here's NATO's management console for monitoring and controlling the execution of air operations in a real-time environment, on the Java desktop, making use of the NetBeans Platform:
There are heaps of similar scenarios, mostly ignored in all the
nightmare to maintain over time.
The book you have put together has as its subtitle "Modular Application Development for the Java Desktop". What's the relevance of "modularity" and how does the book approach this subject?
JW: Well, modularity is the key to maintainability. Since Java itself does not provide modularity, other solutions need to be found, if you want to create any kind of medium to large size application. OSGi is an obvious candidate, but in our scenarios we need more than OSGi. We also need a docking framework, for example, and a synchronization framework for maintaining interaction across multiple sets of data in related windows.
WN: Yeah, all that plumbing is just a nightmare to set up. And our users simply assume it will be there, they don't actually pay for their plumbing, only for their domain-relevant layers in the application. We had a range of per-built Swing components that needed a modular home with extensible GUI containers to hold them, such as the aforementioned docking framework.
JW: When you add up all the above requirements, the only answer is to use the NetBeans Platform. We didn't want to rewrite our components to SWT to make them fit with Eclipse RCP. Plus, we find Eclipse RCP to be way too heavyweight and slow, especially compared to the NetBeans Platform. Gives you everything you need, really. Except a complete and thorough guide to help you through the learning curve.
Right. Everything's a bit spread around, in terms of
documentation. Can you tell us a bit about
the book you wrote?
JW: It's the book we wish we had when we started creating serious applications.
WN: We simply put everything in there that we've learned over the years. We've also learned about other books on this topic. We wanted our book to combine the best of a reference manual with the best of a tutorial. So, each chapter begins with an extensive theoretical overview and ends with step by step tutorials, with all the source code on GitHub. And here is the end point of one of the key scenarios discussed in the book, again the sources are on GitHub, a drag-and-drop visualization of an underlying data model:
JW: Our reviewers have been very positive and encouraging. They've indicated that the book is far more than a beginner's guide, since it covers a lot of more detailed content, also covering areas not dealt with anywhere else before. It builds slowly from basic concepts, with chapters dedicated to key terms, such as "Module", "Lookup", and "Node".
What do you think about the latest developments in Java in this area, in particular JavaFX and Java 8?
WN: Java 8 is certainly interesting, especially the functional style of programming. That can potentially completely change the way we think about programming in Java, though probably only library developers will make use of these possibilities initially. Parallelism and the world of multi cores is obviously great for the type of large applications we're involved in creating, so we're looking forward to becoming even more relevant than we have been on the Java desktop.
JW: In terms of JavaFX, we're not completely convinced. Most of the applications we work on in surveillance/monitoring applications don't necessarily need the kinds of components and solutions that JavaFX provides, though it's always interesting to be aware of the advantages they bring. For us, a modular architecture with patterns for loose coupling is really all we need. The rest, we can create ourselves, we have built up internal libraries of components -- all that was missing was a coherent system to encapsulate and display them all to the user. And we have found that in the NetBeans Platform.
Together with "NetBeans Platform for Beginners", you've released "Exercises in Porting to the NetBeans Platform".
JW. Right. In "Exercises in Porting to the NetBeans Platform" (https://leanpub.com/migrating2nbp) we basically provide exercises one can do, based on "NetBeans Platform for Beginners". We're hoping to interact with our readers and hear from them the kinds of exercises or scenarios they'd like us to cover. So, it's a book continually in process, we hope to add a new exercise every week or so.
Finally, any final words for readers of this interview?
WN: My final words would be - the Java desktop is a cool place to be. Come and join us (and our book is cheap)!