NBINativeLaunchers

(Difference between revisions)
(Created page with '__NOTOC__ ==NBI Native Launchers== The ''native launchers'' facility in the NBI engine serves two purposes: * we need a way to wrap NBI-based bundles into a native executable s…')
m
 
(2 intermediate revisions not shown)
Line 14: Line 14:
:* 32-bit .exe on windows compilable under either cygwin/gcc or Microsoft Visual C++ 2005 Express Edititon
:* 32-bit .exe on windows compilable under either cygwin/gcc or Microsoft Visual C++ 2005 Express Edititon
:* shell script (.sh) on unix
:* shell script (.sh) on unix
-
:* shell script wrapped into .app on MacOS
+
:* shell script wrapped into .dmg on MacOS
* the launcher is capable of detecting the existing JDK/JRE installations (i.e. JVMs) on the target system basing on:
* the launcher is capable of detecting the existing JDK/JRE installations (i.e. JVMs) on the target system basing on:
:* system registry entries <span style=' color: red; '> ''(as of 11.02.2008 - windows only)'' </span>
:* system registry entries <span style=' color: red; '> ''(as of 11.02.2008 - windows only)'' </span>
:* a list of predefined locations on the filesystem
:* a list of predefined locations on the filesystem
-
:* NBI registry entries <span style=' color: red; '> ''(as of 11.02.2008 - not yet implemented)'' </span>
+
:* NBI registry entries
* the launcher is able to validate the found JVMs by the supplied:
* the launcher is able to validate the found JVMs by the supplied:
:* minimum version
:* minimum version
Line 24: Line 24:
:* JVM vendor
:* JVM vendor
:* JVM(system) architecture
:* JVM(system) architecture
-
:* whether the JVM is inside a JRE or a JDK <span style=' color: red; '> ''(as of 11.02.2008 - not yet implemented)'' </span>
+
:* whether the JVM is inside a JRE or a JDK
* there is a way to point the launcher to a specific JVM that should be used for launching the target application by pointing to the corresponding "javahome"; the JVM is validated and if it's not valid an appropriate error message is shown
* there is a way to point the launcher to a specific JVM that should be used for launching the target application by pointing to the corresponding "javahome"; the JVM is validated and if it's not valid an appropriate error message is shown
:* the parameter which controls this is <tt>--javahome <path></tt>
:* the parameter which controls this is <tt>--javahome <path></tt>
Line 50: Line 50:
* the launcher is able to verify the integrity of bundled resources  <span style=' color: red; '>''(as of 11.02.2008 - CRC32 for windows, md5 for unixes)'' </span>
* the launcher is able to verify the integrity of bundled resources  <span style=' color: red; '>''(as of 11.02.2008 - CRC32 for windows, md5 for unixes)'' </span>
* the launcher icon is configurable
* the launcher icon is configurable
-
:*[[[MacOS | [MacOS]] using <tt>nbi.java.application.icon</tt> property otherwise blocked by <tt>nbi.not.set.dock.icon</tt> property
+
:*[[MacOS]] using <tt>nbi.java.application.icon</tt> property otherwise blocked by <tt>nbi.not.set.dock.icon</tt> property
-
:*[[[Windows | [Windows]] using icon file in *.ico format and defined in resources file
+
:*[[Windows]] using icon file in *.ico format and defined in resources file

Current revision as of 13:56, 25 June 2012

NBI Native Launchers

The native launchers facility in the NBI engine serves two purposes:

  • we need a way to wrap NBI-based bundles into a native executable so that the user does not need to manually invoke java;
  • provide the installable components' developers with an stable, tested and easy-to-use way of wrapping their java-based applications into native executables.

The main functionality of the launchers is to be able to locate an existing compatible JVM and launch java -cp <classpath> <Main-Class> on a specified jar file (either bundled or external, identified by a relative or absolute path) optionally passing in some JVM options and target application command-line parameters.


These two tasks imply the following features/functionality:

  • the launcher itself is a small precompiled native binary or a script
  • 32-bit .exe on windows compilable under either cygwin/gcc or Microsoft Visual C++ 2005 Express Edititon
  • shell script (.sh) on unix
  • shell script wrapped into .dmg on MacOS
  • the launcher is capable of detecting the existing JDK/JRE installations (i.e. JVMs) on the target system basing on:
  • system registry entries (as of 11.02.2008 - windows only)
  • a list of predefined locations on the filesystem
  • NBI registry entries
  • the launcher is able to validate the found JVMs by the supplied:
  • minimum version
  • maximum version
  • JVM vendor
  • JVM(system) architecture
  • whether the JVM is inside a JRE or a JDK
  • there is a way to point the launcher to a specific JVM that should be used for launching the target application by pointing to the corresponding "javahome"; the JVM is validated and if it's not valid an appropriate error message is shown
  • the parameter which controls this is --javahome <path>
  • the launcher is able to "bundle" a JVM which is used as the fallback in case no suitable JVMs could be found on the system
  • the launcher is able to "bundle" the jar file and required libraries resources, in this case they are extracted prior to being launched
  • the launcher is able to work with an external jar file, in this case the launcher is responsible for verifying the presence and but not the integrity of the resources
  • if there is need to extract the target jar file and its resources/libraries, the launcher is able to verify whether there is enough free disk space in the target directory; if there is not enough space, an appropriate error message is shown
  • it is possible to tell the launcher where to extract the jar file and its resources (i.e. specify a local "working" directory)
  • the command-line parameter which controls this is --tempdir <path>
  • it is possible to tell the launcher to extract the jar file and its resources without actually launching the application (this is not applicable in case of external jar)
  • the command-line parameter which controls this is --extract <path>
  • by default the launcher operate in either a GUI or a console UI mode (as of 11.02.2008 - for windows only GUI launcher is available)
  • the launcher support being executed in a silent mode
  • the command-line parameter for silent mode is --silent
  • this argument is then placed to the application arguments list
  • the launcher supports being executed with non-default locale
  • the command-line parameter for setting locale is --locale <name>
  • this argument is then placed to the application arguments list
  • the launcher supports redirecting the <stdin>, <stdout> and <stderr> of the underlying java process to the console and/or log file
  • the launcher is able to log its actions to the console and/or log file
  • the error code of the launcher is the same as of the underlying java process
  • the launcher is "transparent" in terms of command-line arguments, i.e. all command line arguments passed to the launcher are transferred to the java process (-J prefix is used for JVM options, not arguments)
  • the launcher supports the "default" values for command-line parameters and JVM parameters, i.e. there is a possibility to define which parameters will be defined at the launcher's "build" time
  • all launcher's messages are i18n compatible, if possible within the given platform
  • the launcher is able to verify the integrity of bundled resources (as of 11.02.2008 - CRC32 for windows, md5 for unixes)
  • the launcher icon is configurable
  • MacOS using nbi.java.application.icon property otherwise blocked by nbi.not.set.dock.icon property
  • Windows using icon file in *.ico format and defined in resources file
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo