GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Groovy, Kotlin, Clojure, and LLVM-based languages such as C and C++.
GraalVM removes the isolation between programming languages and enables interoperability in a shared runtime. It can run either standalone or in the context of OpenJDK, Node.js or Oracle Database.
Oracle's GraalVM Enterprise is a multilingual virtual machine, which Oracle states…
N/A
Oracle Java SE
Score 8.7 out of 10
N/A
Oracle Java SE is a programming language and gives customers enterprise features that minimize the costs of deployment and maintenance of their Java-based IT environment.
N/A
Pricing
GraalVM
Oracle Java SE
Editions & Modules
No answers on this topic
No answers on this topic
Offerings
Pricing Offerings
GraalVM
Oracle Java SE
Free Trial
Yes
No
Free/Freemium Version
Yes
No
Premium Consulting/Integration Services
No
No
Entry-level Setup Fee
Optional
No setup fee
Additional Details
GraalVM Enterprise is an entitlement with Java SE Subscription at no additional cost.
If you want to have a cool VM, don't spend too much memory and mainly being multilanguage go ahead. Be aware there are some points that can be improved like a couple of languages are not accepted so far. Like used to, it's easy to use and you can find a lot of information regarding the tool so if you need to do something fast, it's a good choice.
Oracle Java SE is well suited to long-running applications (e.g. servers). Java Swing (UI toolkit) is now rather outdated, lacking support for modern UI features. JavaFX, the potential replacement for Swing, has now been separated out of Java core. Ideally, there would be a path to migrate a large application incrementally from Swing to JavaFX, but due to different threading models and other aspects, it is difficult. At this point, it is probably better to use an embedded web browser (e.g. JxBrowser) to provide a modern UI in HTML/Javascript and keep just the business logic in Java.
Since Java runs on a virtual machine, it's generally considered to be agnostic of the hardware it's running on. It allows for deployment across a mix of hardware setups with the same binary.
Lots of literature, third party libraries, support forums, and books have been devoted to Java in general, making it a great language to use to support the business.
Backwards compatibility has been an important strength of Java for us. Legacy code that isn't ready to be retired yet can still run on our newer setups despite using older versions of OJSE.
The language is fluent and has good support from a number of open source and commercial IDEs. Language features are added every 6 months, although long-term service releases are only available every 3 years. It would be nice if some of the older APIs were depreciated with more pressure to move to the new replacement APIs (e.g. File vs. Path), but transitions to new features are generally well implemented.
The support we received when porting legacy applications from the GraalVM team and community was commendable. We were able to get assistance in introducing alternatives for the libraries we were using where appropriate. GraalVM support was also able to help us with some configuration options we were stuck with for configuring deployment environments on AWS compute.
Java is such a mature product at this point that there is little support from the vendor that is needed. Various sources on the internet, and especially StackOverflow, provide a wealth of knowledge and advice. Areas that may benefit from support is when dealing with complex multithreading issues and security libraries.
The reason why we had to select GraalVM one is [a] cutting-edge compiling technique, GraalVM is well operated in the Environment of Open JDK, which speeds up the execution of Java programs. GraalVM makes creating packages and native apps simpler, and this improves distribution. It also brings native image support [that] makes compilation and distribution easy and effective.
We choose Java as our system has multiple sub-applications that have different purposes and architecture including back-end applications, front-end UI, front-end Rest API, and Selenium Automation tests. They are deployed in Windows and Linux, communicate with each other using Rest API, RMI and Queue Message and need to support different deployment environment from Dev, Test, UAT to Production so using Java allows us to have a common standard from development, build and deployment for all applications.
Financial: Increased Java container count on the same hardware.
Performance: Decreased cold start time for container startup.
Training: Adopting GraalVM has a learning curve. This requires investment in time and resources. The benefits come through re-evaluating our current deployments for optimization.