GraalVM vs client-maven-plugin - resulting binary size
I just compared resulting binaries size of one of the examples (https://github.com/gluonhq/client-samples/tree/master/Maven/HelloWorld - the most rudimentary single class):
- graalvm-ce-19.2.0: 2188K ~ 2,2M
- client-maven-plugin: 39144K ~ 38,2M
client-maven-plugin produces whole .app bundle but still, the helloworld binary inside is 38884K ~ 37,97M.
What causes the discrepancy? I though that you are using graalvm to make those (from the output it seems you are using current development version 20). Is making output binaries smaller / on par with graalvm on your roadmap?
PS. is there some dedicated mailing-list or forum? Not sure it such general questions in the 'issues' section on github are ok.
OK, after some digging in:
[email protected] HelloWorld $ otool -L helloworld
helloworld:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1575.17.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
and client-maven-plugin:
[email protected] HelloWorld $ otool -L target/client/macos-x86_64/helloWorld.app/Contents/MacOS/helloWorld
target/client/macos-x86_64/helloWorld.app/Contents/MacOS/helloWorld:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1575.17.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1671.60.107)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 50.1.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.11.0)
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 58286.255.3)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1575.17.0)
Would it be possible to use/select frameworks more selectively?
Same here: HelloFx.exe (for Windows) has 57MB ...
Just tested it with the latest GraalVM (GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03)) and plugin (<client.plugin.version>0.1.31</client.plugin.version>) and there is still discrepancy:
- native-image: 6,7M
- client-maven-plugin: 38M
I also compared memory usage and:
- native-image: 1,2M
- client-maven-plugin: 11,2M
What causes this discrepancy (in case of memory usage)? Are there any plans to slash it (would be nice to be able to use client-maven-plugin to easily build native images)
Hello, any news about this ?