JavaFX Maven support (was: hg: openjfx/2.1/master: Added build scripts that are needed for building UI controls.)
Igor Nekrestyanov
igor.nekrestyanov at oracle.com
Tue Dec 6 16:22:19 PST 2011
>>
>> One bigger question this whole topic raises for me though: what exactly is
>> the JavaFX installer doing? If it's just a case of getting the natives on
>> the path to make JavaFX work, why do we have to make users (and developers)
>> go through the whole, do you want to install JavaFX drama? Why can't it
>> just be another jar on the path of my custom application - a simple
>> dependency that I manage, much like I manage my log4j, spring, and datafx
>> dependencies, etc?
> A big part of it is the applet. Also, in the near future we'll be co-installed and then co-bundled with Java, so it will be everywhere Java is.
There are many reasons to have installer.
To be able to launch JavaFX application embedded in the browser or using
Webstart we need to have JavaFX aware plugin/deployment stack to be
registered in the browser.
As of now we expect JavaFX to work on top of JRE6 and therefore we ship
new version of deployment stack as part of JavaFX.
To register it in the browser/OS on Windows you need to make registry
changes. This is one big reason to have install JavaFX runtime.
We also assume that JavaFX runtime is shared install per system (or
eventually per user) and then we want to be able to keep track of what
users
have installed/use and autoupdate it when important updates are
available (e.g. security).
We also use the fact that JavaFX runtime is installed to be able to
autodetect runtime install path when standalone application is being
launched
and to ensure other requirements are met (e.g. application may require
specific version of JavaFX to be available or presence of compatible JRE).
IDE like Netbeans can also detect where runtime/sdk is installed and
validate that libraries used to compile code .
Overall, having installer helps to ensure typical user/developer has
reasonable environment.
We realize it may be not perfect way for everybody and this does not
mean other distribution options are not possible. E.g.
1) Cobundling JavaFX Runtime with the application
In that case application is responsible to update private copy
of runtime and there are no detection issues
2) Installing JavaFX runtime as part of JRE or as JDK8 module
3) shipping JavaFX SDK as zip or maven module, etc.
I can not tell if Oracle will officially support any of them for
binaries distributed by Oracle.
Adding new official artifacts contributes to the test/support costs and
it is not my call anyways
but once JavaFX code is open sourced alternative/additional build
artifacts can be easily added.
Like Oracle does not provide official JRE/JDK packages tailored for each
of existing flavors of Linux but distro vendors can create them based on
OpenJDK if desired.
>> And if it turns out the installer does actually need to run, why doesn't it
>> just put the jfx natives on the system path so that when the runtime starts
>> up it will always find it, regardless of where that jfxrt.jar is on the
>> local filesystem?
BTW, having open lookup path for native libraries is generally security
hole that intruder may use if he finds a way to add file to the
directory on the path.
-igor
More information about the openjfx-dev
mailing list