Graal VS JDK

Compare Graal vs JDK and see what are their differences.

Graal

GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀 (by oracle)

JDK

JDK main-line development https://openjdk.org/projects/jdk (by openjdk)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
Graal JDK
155 188
19,678 18,184
1.2% 2.3%
10.0 10.0
6 days ago 18 minutes ago
Java Java
GNU General Public License v3.0 or later GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Graal

Posts with mentions or reviews of Graal. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-05.

JDK

Posts with mentions or reviews of JDK. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-18.
  • macOS 14.4 might break Java on your machine
    4 projects | news.ycombinator.com | 18 Mar 2024
    The actual text from https://bugs.java.com/bugdatabase/view_bug?bug_id=8327860 says this:

    > We have been working on a patch that switches the jit protection mode to EXEC around these potential faulting memory accesses.

    Yes, they're changing one aspect of signal handler use to work around this problem. They're not stopping the use of signal handlers in general. Hotspot continues to use signals for efficiency in general. See https://github.com/openjdk/jdk/blob/9059727df135dc90311bd476...

    4 projects | news.ycombinator.com | 18 Mar 2024
    The "safe fetch" code relies on a signal handler (either here https://github.com/openjdk/jdk/blob/48717d63cc58f693f0917e61... or here https://github.com/openjdk/jdk/blob/3c70f26b2f3fa9bc143e2506...), which is considered asynchronous delivery (i.e., delivered mid-execution, see `man 7 signal`) - which is why the `async-signal-safe` manpage simply states that it is functions that can safely be called within a signal handler.

    This is opposed to calling `sigwait` or similar to actively suspend and wait for a signal, which is not possible to do here.

    Granted, it may be that the stars align and their implementation works in practice, but that does not make it any less bizarre.

    4 projects | news.ycombinator.com | 18 Mar 2024
    The signal comes from a safe fetch, which is just a read that allows ignoring the fault as if it never happened. Such a signal is deliver synchronously, so the usual restrictions for asynchronous signal handlers do not apply.

    The code in question takes into account that the value read might be garbage. See the big comment here: https://github.com/openjdk/jdk/commit/29397d29baac3b29083b1b...

    On current CPUs and operating systems, this is not an optimization, so the code was removed earlier this year: https://bugs.openjdk.org/browse/JDK-8320317

    4 projects | news.ycombinator.com | 18 Mar 2024
    > Yes, they're changing one aspect of signal handler use to work around this problem. They're not stopping the use of signal handlers in general. Hotspot continues to use signals for efficiency in general. See https://github.com/openjdk/jdk/blob/9059727df135dc90311bd476...

    This whole thread is about SIGSEGV, and specifically their SIGSEGV handling. However, catching normal signals is not about efficiency.

    Some of their exception handling is still odd: There is no reason for a program that receives SIGILL to ever attempt continuing. But others is fine, like catching SIGFPE to just forward an exception to the calling code.

    (Sure, you could construct an argument to say that this is for efficiency if you considered the alternative to be implementing floating point in software so that all exceptions exist in user-space, but hardware floating point is the norm and such alternative would be wholly unreasonable.)

    > The wonderful thing about choosing not to care about facts is having whatever opinions you want.

    I appreciate the irony of you making such statement, proudly thinking that your opinion equals fact, and therefore any other opinion is not.

    This discussion is nothing but subjective opinion vs. subjective opinion. Facts are (hopefully, as I can only speak for myself) inputs to both our opinions, but no opinion about "good" or "bad", "nasty" or not can ever be objective. Objective code quality does not exist.

  • The Return of the Frame Pointers
    6 projects | news.ycombinator.com | 17 Mar 2024
    I remember talking to Brendan about the PreserveFramePointer patch during my first months at Netflix in 2015. As of JDK 21, unfortunately it is no longer a general purpose solution for the JVM, because it prevents a fast path being taken for stack thawing for virtual threads: https://github.com/openjdk/jdk/blob/d32ce65781c1d7815a69ceac...
  • The One Billion Row Challenge
    10 projects | news.ycombinator.com | 3 Jan 2024
  • Java JEP 461: Stream Gatherers
    3 projects | news.ycombinator.com | 3 Nov 2023
    Map doesn't implement the Collection interface.

    https://github.com/openjdk/jdk/blob/master/src/java.base/sha...

  • C++23: Removing garbage collection support
    3 projects | news.ycombinator.com | 1 Nov 2023
    C++ lets you write anything you can imagine, and the language features and standard library often facilitate that. The committee espouses the view that they want to provide many "zero [runtime] cost," abstractions. Anybody can contribute to the language, although the committee process is often slow and can be political, each release the surface area and capability of the language gets larger.

    I believe Hazard Pointers are slated for C++26, and these will add a form "free later, but not quite garbage collection" to the language. There was a talk this year about using hazard pointers to implement a much faster std::shared_ptr.

    It's a language with incredible depth because so many different paradigms have been implemented in it, but also has many pitfalls for new and old users because there are many different ways of solving the same problem.

    I feel that in C++, more than any other language, you need to know the actual implementation under the hood to use it effectively. This means knowing not just what the language specifies, but can occaissionally require knowing what GCC or Clang generate on your particular hardware.

    Many garbage collected languages are written in or have parts of their implementations in C++. See JS (https://github.com/v8/v8)and Java GC (https://github.com/openjdk/jdk/tree/36de19d4622e38b6c00644b0...)

    I am not an expert on Java (or C++), so if someone knows better or can add more please correct me.

  • Java 21 VirtualThreads vs. Clojure Lazy Seqs
    2 projects | news.ycombinator.com | 6 Oct 2023
    The JVM and Java the language have always been intertwined. The same people that develop the language, develop the VM. Lots of optimizations in the VM know specifically about Java the language idioms and implementation details. Check out this function which helps determine if instance fields are trusted: https://github.com/openjdk/jdk/blob/edd454b502b9bacde5549282...
  • Show HN: Pile Programming Language
    2 projects | news.ycombinator.com | 18 Sep 2023
    https://github.com/openjdk/jdk/blob/b16e5584abcae18fdcc4494f...

    Should just use `Path/of` directly.

    BTW, I thought I would give it a try, but my initial naive attempt hasn't yielded any results:

         nix shell nixpkgs#maven nixpkgs#jdk20

What are some alternatives?

When comparing Graal and JDK you can also consider the following projects:

Liberica JDK - Free and 100% open source Progressive Java Runtime for modern Javaâ„¢ deployments supported by a leading OpenJDK contributor

Adopt Open JDK - Eclipse Temurinâ„¢ build scripts - common across all releases/versions

awesome-wasm-runtimes - A list of webassemby runtimes

maven-jpackage-template - Sample project illustrating building nice, small cross-platform JavaFX or Swing desktop apps with native installers while still using the standard Maven dependency system.

SAP Machine - An OpenJDK release maintained and supported by SAP

wasmer - 🚀 The leading Wasm Runtime supporting WASIX, WASI and Emscripten

teavm - Compiles Java bytecode to JavaScript, WebAssembly and C

Quarkus - Quarkus: Supersonic Subatomic Java.

Dragonwell8 - Alibaba Dragonwell8 JDK

j2cl - Java to Closure JavaScript transpiler

Vert.x - Vert.x is a tool-kit for building reactive applications on the JVM

JHipster - JHipster, much like Spring initializr, is a generator to create a boilerplate backend application, but also with an integrated front end implementation in React, Vue or Angular. In their own words, it "Is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures."