Skip to content

Commit

Permalink
Proposal to add Oracle GraalVM and update GraalVM CE buildpack (#294)
Browse files Browse the repository at this point in the history
* Proposal to introduce new GraalVM buildpacks

* Update text/java/0000-graalvm-jdk.md

Co-authored-by: Daniel Mikusa <dan@mikusa.com>

* Update text/java/0000-graalvm-jdk.md

Co-authored-by: Daniel Mikusa <dan@mikusa.com>

* Update text/java/0000-graalvm-jdk.md

Co-authored-by: Daniel Mikusa <dan@mikusa.com>

* Revise GraalVM RFC.

---------

Co-authored-by: Daniel Mikusa <dan@mikusa.com>
  • Loading branch information
fniephaus and dmikusa committed Dec 5, 2023
1 parent 207db40 commit 8a75a4c
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions text/java/0000-graalvm-jdk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Add support for Oracle GraalVM and update GraalVM CE buildpack

## Summary

We will modify the [Oracle Buildpack](https://github.com/paketo-buildpacks/oracle) to include support for the new [Oracle GraalVM](https://www.oracle.com/java/graalvm/) distribution.

In addition, the existing [`graalvm` buildpack](https://github.com/paketo-buildpacks/graalvm) will be clarified to indicate that it is the GraalVM Community buildpack. We cannot change its ID, but we will update the README and metadata to clarify this point.

## Motivation

There are multiple motivations for this RFC:

1. Oracle has [introduced Oracle GraalVM](https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5), a new and free GraalVM distribution that provides advanced features including G1 GC, SBOM, as well as performance and size optimizations. A new buildpack for Oracle GraalVM will, for example, allow Spring users to build more efficient and secure microservices.
2. The [`graalvm` buildpack](https://github.com/paketo-buildpacks/graalvm) only supports GraalVM Community Edition. Since this is only one of many GraalVM distributions (Community Edition, Oracle GraalVM, Liberica NIK, Mandrel, ...), it makes sense to adjust the name and the README of the buildpack, so that it is clear to users which distribution the buildpack includes (Community Edition).
3. The latest GraalVM release has dropped the GraalVM version in favor of the Java version, which may simplify the implementation and maintenance of the buildpack.
4. Due to the [alignment with OpenJDK](https://www.graalvm.org/2022/openjdk-announcement/), GraalVM is becoming more and more a standard JDK with Native Image support. The GraalVM Updater will be [deprecated in the GraalVM for JDK 21 release](https://github.com/oracle/graal/issues/6855) and removed in the future.


## Detailed Explanation

This RFC proposes to address the items listed under Motivation as follows:

1. Update the [Oracle Buildpack](https://github.com/paketo-buildpacks/oracle) to support Oracle GraalVM. This will work just like what we have with the present Bellsoft Liberica buildpack, where the buildpack can provide a JVM and Native image tools.
2. Update the README & buildpack metadata for the existing GraalVM buildpack to indicate it is specifically for the GraalVM Community release.

For more details, please see the [proof of concept](https://github.com/paketo-buildpacks/rfcs/pull/294).

## Rationale and Alternatives

Alternatively, the existing `graalvm` buildpack could be reworked and extended with support for Oracle GraalVM. For this, we would need to offer an environment variable such as `$BP_DISTRIBUTION` for users to select a specific GraalVM distribution. However, that would be somewhat inconsistent with the `bellsoft-liberica` buildpack, which also includes a GraalVM distribution. Having separate buildpacks for different GraalVM distributions is also more consistent with the [Java buildpacks](0016-alternate-jvms-in-java-buildpack.md).

## Implementation

See the Details section. The implementation plan as well as a proof of concept PR are documented there.

0 comments on commit 8a75a4c

Please sign in to comment.