NetBeans launchers are used as a wrappers allowing to start the IDE or other application built on top of platform easily. There are two launchers:
Processes options specified
Similarly reads etc/netbeans.clusters to find valid list of clusters. Relative path (to what?) is supported. Not valid entries are removed.
Branding is specified
Solaris Tag is updated before IDE is started.
There are two executable versions: with and without console showing outputs
If JDK is not specified or invalid JDK is specified the newest one searched from Windows registry is used.
The default location of userdir is not the best one (who dares to change it?).
This one is pretty much similar to NetBeans launcher.
It would be nice to allow updating of icon directly from apisupport in the future.
Platform launcher exists in lib folder of platform clusters and starts the JVM. It processes some parameters before starting NetBeans
If JVM of running NetBeans application is exited and there are updates found this launcher runs updater.jar and then starts the IDE again.
-Dsun.awt.keepWorkingSetOnMinimize is added as an option to improve performance when unmaximizing.
Two nbexec.exec are running. First one handles the loop for repeated execution of IDE and updater). The second one actually spawns JVM in a separate process. This has an advantage that we do not care about 32/64-bit architecture and disadvantage that starting through JNI would allow us to pass non-standard option and ask JVM to ignore them if they are not recognized.
Once the environment is set up it is also possible to develop it using CND support in IDE (Project are now working with NB6.0M10). There are no debug/release configurations so if you need debug build just uncomment
#define DEBUG 1line in sources and rebuild. A lot of debug messages will be printed to console.