gluonfx-maven-plugin icon indicating copy to clipboard operation
gluonfx-maven-plugin copied to clipboard

GraalVM vs client-maven-plugin - resulting binary size

Open woj-tek opened this issue 6 years ago • 4 comments

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.

woj-tek avatar Aug 21 '19 13:08 woj-tek

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?

woj-tek avatar Aug 21 '19 14:08 woj-tek

Same here: HelloFx.exe (for Windows) has 57MB ...

mbbee avatar Jun 08 '20 14:06 mbbee

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)

woj-tek avatar Sep 22 '20 13:09 woj-tek

Hello, any news about this ?

lilumat avatar Feb 09 '24 10:02 lilumat