An example of javaFX app that consumes an API rest throw a JavaFX Service.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
-
Download this version of Graal VM: https://download2.gluonhq.com/substrate/graalvm/graalvm-svm-darwin-20.1.0-ea+28.zip and unpack it like you would any other JDK. (e.g. in
/opt
) -
Configure the runtime environment. Set
GRAALVM_HOME
environment variable to the GraalVM installation directory.
For example:
export GRAALVM_HOME=/opt/graalvm-svm-darwin-20.1.0-ea+28
- Set
JAVA_HOME
to point to the GraalVM installation directory
For example:
export JAVA_HOME=$GRAALVM_HOME
-
Download this version of Graal VM: https://download2.gluonhq.com/substrate/graalvm/graalvm-svm-linux-20.1.0-ea+28.zip and unpack it like you would any other JDK. (e.g. in
/opt
) -
Configure the runtime environment. Set
GRAALVM_HOME
environment variable to the GraalVM installation directory.
For example:
export GRAALVM_HOME=/opt/graalvm-svm-linux-20.1.0-ea+28
- Set
JAVA_HOME
to point to the GraalVM installation directory
For example:
export JAVA_HOME=$GRAALVM_HOME
The following goals apply to Linux and Mac OS X.
To build the native image:
mvn clean client:build
To run the native image:
mvn client:run
or simply run the native executable found in target/client
.
-
iOS can be built only on Mac OS X
-
Install
Homebrew
, if you haven't already. Please refer to https://brew.sh/ for more information. -
Install
libusbmuxd
Using brew
:
brew install --HEAD libusbmuxd
- Install
libimobiledevice
Using brew
:
brew install --HEAD libimobiledevice
- Set the target to
ios
(for iOS devices) in thepom.xml
:
<artifactId>client-maven-plugin</artifactId>
<configuration>
<target>ios</target>
<mainClass>${mainClassName}</mainClass>
</configuration>
- Build the native image:
mvn clean client:build
- Run the app on the connected iOS device:
mvn client:run
- Package and create an IPA file to submit to TestFlight or to the App Store:
mvn client:package
Note: In order to deploy apps to an iOS device, you need a valid iOS provisioning profile, as explained in the documentation.
- Android can be built only on Linux OS
The client plugin will download the Android SDK and install the required packages. Alternatively, you can define a custom location to the Android SDK by setting the ANDROID_SDK
environment variable, making sure that you have installed all the packages from the following list:
- platforms;android-27
- platform-tools
- build-tools;27.0.3
- ndk-bundle
- extras;android;m2repository
- extras;google;m2repository
- Set the target to
android
(for android devices) inpom.xml
:
<artifactId>client-maven-plugin</artifactId>
<configuration>
<target>android</target>
<mainClass>${mainClassName}</mainClass>
</configuration>
- Build the native image:
mvn clean client:build
- Package and create an APK file:
mvn client:package
- Install the APK file on a connected Android device:
mvn client:install
- Run the installed app on the connected Android device:
mvn client:run
- Maven - The build automation tool
- GraalVM - The poliglot JVM
- OpenJavaFX - An open source, next generation client application platform for desktop, mobile and embedded systems built on Java.
- javafx-maven-plugin - The javaFX plugin for javaFX 11 or higher projets.
- client-maven-plugin - Plugin that simplifies using Gluon Client for Java/JavaFX maven projects.
- jackson-databind - The popular framework that allows us to map rest json responses as java objects.
- chucknorris.io - A free JSON API for hand curated Chuck Norris facts.
Feel free to fork it and made pull request.
ChuckFX is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
ChuckFX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ChuckFX. If not, see https://www.gnu.org/licenses/