Use NetBeans Platform, don't reinvent the wheel!
After trying using NetBeans Platform, I'm impressed - really impressed by what it provides as functionalities, component/code re-usability and best practices.
I'll try to summarize some functionalities and components available directly that can save many years of development, at least for me :-)
A powerful concept of Central Service Management: Lookups
It is a map that the keys are the object classes and the values are the object instances. used in general to find object instances, but the main purpose is to allow the programmer to change the implementation without affecting other parts of the application, or use generic objects (ex: interfaces) to get specific information (the casting is not needed) that's what's called "Decoupling".
Window system
NetBeans provides a very sophisticated docking framework - [dragging, docking, undocking etc], . The windows are TopComponent class, managed globally by WindowManager, these windows have modes (to manage dimension, location, ...) and can be in a group ( to manage the opening and closing at the same time).
In addition, NetBeans provides the MultiViews API to devide windows to many containers.
Extensibility and plug-ins manager
It's possible to use the specific NetBeans platform modular runtime environment or OSGi (Felix, Equinox).
Updates management
With its Auto Update Services API, we can install, un-install, activate, deactivate or update modules automatically, this API provides all necessary things to do so (searching, restarting, in background, ...)
File Systems and the Data Systems API
These APIs are about data manipulation (creation, management, ...) and representation, often used with Explorer & Node API.
For example, In an easy way, we can have a file type association with the application to provide for example special visualization or edition capabilities.
Visual Library, Palette
NetBeans Platform provides two mechanisms to visualizing graph oriented information. The Visual Library API and Visual Mobile Designer (VMD).
For the Palette, it makes very easy adding a palette component to our application or extending existing ones,
Other functionalities and APIs:
In addition to the above API, NetBeans provides also:
- Dialogs, Wizards API,
- Help API,
- Options and Settings API,
- Explorer and Node API, Navigator,
- Internationalization
Last but not least, there are many other advanced useful APIs that we may need to re-use, for example: Quick search functionality, ,Database Explorer, Installer, File Explorer, ETable & OutLine ...
Showcase
For the complete list of what applications or who're using the NB Platform, visit the dedicated page: https://netbeans.org/features/platform/showcase.html
For all related documentation : https://netbeans.org/features/platform/all-docs.html
To finish, maybe someone ask me, have you seen Eclipse RCP ? I say yes, but not much, the first comparison element that i found is that NetBeans is more "convention over configuration" than Eclipse.