Hmmm. That message sounds a lot like the message coming from the Swing Application Framework. Overloading of terms? Mixed messages? Contradictory projects? Two teams working on two projects doing the same thing? One group of people not happy with a product -- or not understanding it -- and then, instead of working to fix or improve it, making their own version of the same thing? All questions crawling in my mind, trying to find a home. However, when I look at all the info that I've seen about the Swing Application Framework, it aims to do something more modest than the NetBeans Platform. For example, in this JSR296 presentation, I find that the Swing Application Framework will not provide a docking system. So, I shouldn't expect to find an equivalent of the NetBeans API TopComponent class in the Swing Application Framework. Okay, so it is more modest than the NetBeans Platform. What/who is its target audience then? Turns out, from everything I read, that it is aimed at "small/medium apps". Meanwhile, one of the central NetBeans Platform messages is: "The NetBeans Platform is useful even for small/medium apps, because most small/medium apps eventually grow into large/massive apps. So, even if you're small, the NetBeans Platform is for you!"
Hmmm. So why would I use the Swing Application Framework? Aaah. It's simpler than the NetBeans Platform. Well, if it doesn't provide all the features that my application needs (either now or in the unforeseeable future), then the simplicity factor is not really much of a win. On top of that, is there a framework, anywhere in the world, that does not begin out simple and then grows over time into something more complex? Does the absence of a docking system right now say anything about what there will or won't be in a few years from now?
So, with this background, these tentative questions, I approach the Swing Application Framework. Clearly, my excitement at there being an application framework for Swing applications is tempered by the thought: "...but don't we already have one of those?" Maybe the idea is that once an application on the Swing Application Framework gets more advanced, it should be migrated to the NetBeans Platform? The reverse would be impossible, because the Swing Application Framework doesn't provide a modular framework and, as a result, calls into question one of the other central tenets of the NetBeans Platform, that of modular development.
I go to the home page of the Swing Application Framework, https://appframework.dev.java.net/. There I find a wonderful document, An Introduction to the Swing Application Framework API (JSR-296). It is truly a great document, describing the story succinctly and technically. I wish there were more technical documents like this one. Really cool how you're able to use annotations to mark actions, just like in web services and EJBs. Also, really cool how the code stays very close to original non-framework code, e.g., changing a JFrame to an Application is really very simple. Lifecycle management is handled by the Application class, which in some ways seems to be comparable to a NetBeans API TopComponent, except that it provides an application instead of a window in a module that installs as a plugin in a NetBeans Platform application. The small complete application at the end is also very cool. In fact, though I started out intending to download the current state of the Swing Application Framework, this document describes the framework so succinctly, at least to the point where things are right now, that I don't feel it necessary to actually play with the code myself. I can see how wizards in NetBeans IDE are going to make work with this framework even easier in the future. I can also see how tight integration with Matisse is going to be a great benefit to people wanting to make use of this framework.
However, the questions remain. For example, I don't see modular development here. In other words, how is the distribution model going to work? Say I have an update to my application. How do I distribute that? Must I redistribute the entire application to my end users? Okay, so maybe modular development is something that is useful for larger applications. But... won't my application based on the Swing Application Framework at some stage grow to a point where the NetBeans Platform would be a better basis? If so, is there a migration path from the Swing Application Framework to the NetBeans Platform? And, if so, is that migration path different to the migration path of a normal Swing application (i.e., without the Swing Application Framework) to the NetBeans Platform? And, if it is the same migration path... why will I need the Swing Application Framework at all?