This week we release our Essential NetBeans Platform Refcard, introducing you to the NetBeans APIs, while giving you an overview of everything that the NetBeans Platform can do for you. Here we catch up with one of its six authors, Geertjan Wielenga, to find out more about this refcard. It is as editor here at JavaLobby and NetBeans Zone that our readers will know Geertjan.
DZone: Hi Geertjan, you're one of the people behind the newly released NetBeans Platform Refcard. What's the reason for writing it?
Geertjan: Well, at this point there are several books and many tutorials that describe how you can create Swing applications on top of the NetBeans Platform. However, one thing that's missing is a NetBeans Platform reference manual with lists of properties and attributes and so on, i.e., one place where common low-level nitty-gritty issues per each of the many classes of the NetBeans APIs can be resolved. More than a FAQ, which we have, what we've needed for some time is something like a complete and thorough reference manual, containing thorough documentation on each and every piece of the NetBeans APIs, something similar to our Javadoc, but structured in logical groupings and organized concisely, coherently and, especially, exhaustively. The NetBeans Platform Refcard aims to provide an inkling of what that final all encompassing NetBeans Platform reference manual will look like. We're hoping there'll be a lot of feedback to the NetBeans Platform Refcard so that, with the release of NetBeans Platform 6.9, we'll be able to move towards providing that fullblown NetBeans Platform reference manual that clearly needs to be written, though the various books, tutorials, FAQs, and Javadoc are holding up quite well for these purposes in the meantime.
Also, a lot of developers starting out with the NetBeans Platform tend to have a hard time figuring out the context and scope of all the features that the platform offers. That's the main reason that the screencast series "Top 10 NetBeans APIs" has become quite popular, since it gives NetBeans Platform newbies a relatively thorough overview of everything.
Getting started with the NetBeans Platform is easy. I recommend going through the Top 10 NetBeans APIs screencast series. This provides context and scope and gives an understanding of what is available for a programmer on the NetBeans Platform. I also recommend the tutorials provided by either the NetBeans IDE (FeedReader and Paint Application) or to pick a tutorial from the NetBeans Platform learning trail. Make sure that you understand the Look-up API - it’s fundamental for module interaction and behaviour (high-cohesion, low coupling).
This refcard goes very far beyond the screencast series, however, and gets into a lot more details, providing tips & tricks, such as a table of handy APIs that existing NetBeans Platform developers might not even be aware of.
DZone: How is the document structured to help its users get the most out of it?
Geertjan: The main part of the document is broken down per API. So, there's a section on the Module System API, listing the most important NetBeans-specific keys that can be set in the manifest file, there's a section on the Window System API listing all of its classes, there's a section on the Nodes API listing all the Node classes, and so on.
Per section, there are also some common questions and code snippets that should help you get started and, also, to help you get further when you're stuck.
DZone: The NetBeans Platform seems really large. Does that cause a lot of overhead when you're using it?
Geertjan: Not really. Only 5 modules (consisting of JAR files that add up to about 20 MB) are actually mandatory. Those form the runtime container, comparable to an application server in the web world, e.g., GlassFish v3 does for web applications what the NetBeans runtime container does for Swing appllcations -- it offers a set of services relating to deployment and lifecycle management of deployed modules. As a result, your own application doesn't need to provide a start up and shutdown sequence, since the runtime container does that for you.
But that's all you need to use of the NetBeans Platform. Hence, you could have a CLI application, without any UI at all. Your CLI application would then have a module system and a filesysyetm for free, as well as the other services offered by the runtime container.
DZone: But, more generally, developers tend to build large applications atop the NetBeans Platform, right?
Geertjan: Correct. As with any large set of APIs, a learning curve is involved and that can be as steep as your needs happen to be. I.e., the more you need to use, the more you need to learn. But, in the final analysis, the benefits far outweigh the costs. It's the same as in the world of web development. Sure, you can continue creating JSPs and servlets, if that's what you want to do, without using any framework at all. But as soon as your application becomes larger, and as soon as you have more than one application within the same organization, you're reinventing the wheel over and over again, if each application needs to be started again from scratch. A framework just makes sense.
By and large, most organizations using the NetBeans Platform are in the business of building large, mission critical applications, such as at Boeing and Northrop Grumman:
And that's just the tip of the iceberg, as can be seen here: http://platform.netbeans.org/screenshots.html
DZone: Quite a few student projects are based on the NetBeans Platform too, judging from the screenshots page.
Geertjan: Right. And that makes a lot of sense. If you're creating a graduation project for your college or university, do you want to start by creating a window system and a menu bar? No, you want to start right away with the business logic of your application, i.e., you want to display the analysis results in a window and that's exactly what the NetBeans Platform provides out of the box.
DZone: So, aside from lifecycle management and a window system, what else do you get from the NetBeans Platform?
Geertjan: The refcard lists all the main components, so have a look there! Lots of Swing components geared towards large applications (i.e., for loading and displaying data asynchronously in a tree) are provided out of the box. And, since it is all Swing, you can adapt everything to exactly how you want it and change its look and feel as well, such as via the NetBeans-OfficeLAF:
DZone: What does the future of the NetBeans Platform look like?
Geertjan: A lot of new support is being planned specifically for enterprise RCP developers, as can be read here. One much-requested enhancement is support for OSGi, which is one of the things being planned for NetBeans Platform 6.9.
DZone: Thanks for the interview!