Re: Distributing JavaFX 11 Application

2019-02-20 Thread Sverre Moe
You could use the new jpackage to create a native runtime of your
application.
The jpackager is now targeted for JDK 13, but can still be used to create a
native Java 11 application.

You can download an EA build of JDK 13 with jpackage
http://jdk.java.net/jpackage/

You would need to build on each platform, Linux, Windows, Mac.

You mentioned you use Maven. When Java 9 came out I had already moved over
to Gradle, so not familiar with the maven configuration.
Here is a Gradle task to create a Java 11 runtime using jlink with the Java
11 jmods

task createRuntime(type: Exec) {
dependsOn installDist

inputs.dir(installDist.outputs.files.singleFile)
outputs.dir("${buildDir}/runtime")

doFirst {
delete "${buildDir}/runtime"
}

def libDir = new File(installDist.outputs.files.singleFile, "lib").path

commandLine '/usr/java/jdk-11/bin/jlink',
'--module-path', "/usr/java/jdk-11/jmods:${libDir}",
'--add-modules', 'eu.yourmodule.application',
'--output', "${buildDir}/runtime"
}

You then use this runtime with jpackage to create a native application
image or installer.

task createPackage(type: Exec) {
dependsOn createRuntime

commandLine '/usr/java/jdk-13/bin/jpackage', 'create-installer',
'--verbose',
'--force',
'--name', project.name,
'--app-version', project.version,
'--module', "${mainClassName}",
'--resource-dir', "${buildDir}/package",
'--runtime-image', "${buildDir}/runtime",
'--output', "${buildDir}/native"
}

/Sverre

Den ons. 20. feb. 2019 kl. 19:57 skrev Nicolas Therrien <
nicolas.therr...@motorolasolutions.com>:

> Hi!
>
> What is the proper way to create distributable packages of a JavaFx
> Application?
>
> I have a Java 11 application which I build as a module. The distribution
> includes a "modules" folder with all dependencies in it, and a script to
> launch the module.
>
> This assembly works if I build it on the same machine as I am going to be
> running it on. However, I realized that depending on which build agent the
> assembly is going to be created, the platform specific javafx dependencies
> may not match the target assembly. For example, if the build agent is a
> linux build agent, the windows and mac assembly contains linux javafx
> runtime.
>
> Maven will always pull the platform-specific libraries of the system it is
> running on.
>
> This was not a problem when JavaFx was part of the JDK since the correct
> runtime libraries were installed on the system already.
>
> What is the correct way to create a windows or linux package in a build
> platform independent way?
>
> I found an article which showed how to force maven to include all platforms
> as dependencies, but then I have to add dependency on each transitive
> library. Sounds like a lot of trouble for a simple task.
>
> How do you guys package your apps for various platforms?
>
> *Nicolas Therrien*
>
> Senior Software Developer
>
> *[image:
>
> https://www.motorolasolutions.com/content/dam/msi/images/logos/corporate/msiemailsignature.png]*
>
> *o*: +1.819.931.2053
>


Distributing JavaFX 11 Application

2019-02-20 Thread Nicolas Therrien
Hi!

What is the proper way to create distributable packages of a JavaFx
Application?

I have a Java 11 application which I build as a module. The distribution
includes a "modules" folder with all dependencies in it, and a script to
launch the module.

This assembly works if I build it on the same machine as I am going to be
running it on. However, I realized that depending on which build agent the
assembly is going to be created, the platform specific javafx dependencies
may not match the target assembly. For example, if the build agent is a
linux build agent, the windows and mac assembly contains linux javafx
runtime.

Maven will always pull the platform-specific libraries of the system it is
running on.

This was not a problem when JavaFx was part of the JDK since the correct
runtime libraries were installed on the system already.

What is the correct way to create a windows or linux package in a build
platform independent way?

I found an article which showed how to force maven to include all platforms
as dependencies, but then I have to add dependency on each transitive
library. Sounds like a lot of trouble for a simple task.

How do you guys package your apps for various platforms?

*Nicolas Therrien*

Senior Software Developer

*[image:
https://www.motorolasolutions.com/content/dam/msi/images/logos/corporate/msiemailsignature.png]*

*o*: +1.819.931.2053


[RFR] 8211308: Support HTTP/2 in WebView

2019-02-20 Thread Arunprasad Rajkumar
Hi,

Please review the following Github PR which uses new HttpClient interface 
(introduced since JDK11[1]) to support HTTP/2.

https://github.com/javafxports/openjdk-jfx/pull/247

https://bugs.openjdk.java.net/browse/JDK-8211308

Note: There is a runtime property “com.sun.webkit.useHTTP2Loader" added to 
switch back to legacy interface. By default it is enabled to use new HttpClient 
interface.

[1] 
https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/package-summary.html

Thanks,
Arun