Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

For a developer what is the difference between the CE and EE versions of GraalVM 19.3?

With the recent release of GraalVM 19.3 it had Java 11 support added which made it interesting to look at again for us. It is understandable that Oracle have two editions, the free community edition and the non-free enterprise edition, but they are very vague about what the actual differences are between the two.

The FAQ says:

What are the differences between Oracle GraalVM Enterprise Edition and GraalVM Community Edition? There are several key advancements in GraalVM Enterprise making it a preferred product for enterprises over GraalVM Community, including:

  • Improved efficiency with higher peak performance and lower memory footprint to lower your infrastructure costs and improve application reaction times
  • Improved security features to safeguard your applications across all languages
  • Enterprise support 24x7x365 to deliver peace of mind that your environment is backed by GraalVM experts worldwide

The last bullet is understandable for those who need support for mission-critical applications, but I find the first two rather vague.

I would therefore like to hear from those who have actually worked with GraalVM if the differences could be easily summarized - especially if backed by "What does this buy us"-data - for a developer to find out what the Enterprise version will buy us. Especially from a native image on docker/kubernetes view, as our primary use case at the moment is Java based microservices (currently Spring Boot based, but the microprofile WAR approach is interesting to get rid of the runtime brittleness).

like image 889
Thorbjørn Ravn Andersen Avatar asked Jan 02 '20 08:01

Thorbjørn Ravn Andersen


1 Answers

On the performance front, the enterprise edition (EE) adds vectorization, a state-of-the-art inliner, compressed oops, profile guided optimizations... also the ability to emit debug symbols. You can build faster native images, that consume less memory, that can be specifically tuned for your workload, and all that can be consumed by the native tooling (gdb).

On the security front, there are optional Spectre mitigations, at the expense of some performance. There's also Sulong managed, which allows to run native code (compiled to LLVM bitcode) in a safe way, think ArrayIndexOutOfBoundsException instead of segfaults.

This answer is definitely not comprehensive and may be outdated as soon as some features are open-sourced to the community edition and/or the GraalVM team adds even more advanced features to the enterprise edition.

like image 54
mukel Avatar answered Sep 20 '22 13:09

mukel