From ca839543367e6aecc2de2a47e24d720015149c94 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Wed, 17 Dec 2025 18:50:34 +0100 Subject: [PATCH 1/3] RFC for the Java Buildpack reimplementation in Golang --- ...raft-java-buildpack-migration-to-golang.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md diff --git a/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md new file mode 100644 index 000000000..332aedd5a --- /dev/null +++ b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md @@ -0,0 +1,40 @@ +# Meta +[meta]: #meta +- Name: Java Buildpack Migration to Golang +- Start Date: 2025-12-18 +- Author(s): (GitHub usernames) +- Status: Draft +- RFC Pull Request: (fill in with PR link after you submit it) + + +## Summary + +Migrate the Cloud Foundry Java Buildpack from its current Ruby-based implementation to a Go-based implementation to align with other buildpacks in the ecosystem. This migration will address the maintenance gap, improve consistency, and make it easier for the community to contribute and maintain the buildpack going forward. + + +## Problem + +The Ruby-based Java Buildpack is currently unmaintained following the departure of its core maintainer from the CF community. Additionally, it has a historically grown unique implementation in Ruby, while all other Cloud Foundry buildpacks have been implemented in Go. This creates maintenance challenges and inconsistency across the buildpack ecosystem. + +## Proposal + +The Buildpacks and Stacks area of the App Runtime Interfaces working reimplements the Java Buildpack in Go to align with other Cloud Foundry buildpacks and restore active maintainability to this critical component. The new buildpack will be provided as a drop-in replacement for the current Ruby-based Java Buildpack under a new major version. We will reach out to the CF community to help validate the pre-release version and provide feedback to ensure a smooth transition. + +### Breaking Changes + +Please note the following breaking changes in the Go-based Java Buildpack: + +#### Custom JRE Usage + +Custom JRE usage will be supported only as documented in the [Custom JRE Usage Guide](https://github.com/cloudfoundry/java-buildpack/blob/feature/go-migration/docs/custom-jre-usage.md). + +#### Frameworks Not Included + +The following frameworks will not be migrated to the Go buildpack: + +* Takipi Agent (OverOps) – Removed because the agent has moved behind a licensed login wall, making it inaccessible for automated buildpack integration +* Java Security – Rarely used and custom security policies should be implemented at the platform level or within application code +* Multi Buildpack – No longer needed as multi-buildpack support is now built into the libbuildpack architecture by default +* Spring Insight – Legacy monitoring tool that has been replaced by modern APM solutions (such as New Relic, AppDynamics, and Dynatrace) + + From f8cced352efeee213c6d217c53d60f3e61e8b6eb Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Thu, 18 Dec 2025 09:56:36 +0100 Subject: [PATCH 2/3] Add additional breaking changes --- toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md index 332aedd5a..ab147cbcc 100644 --- a/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md +++ b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md @@ -28,6 +28,10 @@ Please note the following breaking changes in the Go-based Java Buildpack: Custom JRE usage will be supported only as documented in the [Custom JRE Usage Guide](https://github.com/cloudfoundry/java-buildpack/blob/feature/go-migration/docs/custom-jre-usage.md). +#### Changed Default Configuration + +* SpringAutoReconfigurationFramework is now disabled by default. Please note that SpringAutoReconfigurationFramework is deprecated, and the recommended alternative is [java-cfenv](https://github.com/pivotal-cf/java-cfenv). + #### Frameworks Not Included The following frameworks will not be migrated to the Go buildpack: @@ -36,5 +40,6 @@ The following frameworks will not be migrated to the Go buildpack: * Java Security – Rarely used and custom security policies should be implemented at the platform level or within application code * Multi Buildpack – No longer needed as multi-buildpack support is now built into the libbuildpack architecture by default * Spring Insight – Legacy monitoring tool that has been replaced by modern APM solutions (such as New Relic, AppDynamics, and Dynatrace) +* Configuration based on resource overlay - This is more of an anti-pattern and requires a fork of the buildpack. From f31def3e59f18562fe974e82dd008380d1cf8f90 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Thu, 18 Dec 2025 12:42:04 +0100 Subject: [PATCH 3/3] Add release plan --- toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md index ab147cbcc..3efcfb421 100644 --- a/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md +++ b/toc/rfc/rfc-draft-java-buildpack-migration-to-golang.md @@ -20,6 +20,11 @@ The Ruby-based Java Buildpack is currently unmaintained following the departure The Buildpacks and Stacks area of the App Runtime Interfaces working reimplements the Java Buildpack in Go to align with other Cloud Foundry buildpacks and restore active maintainability to this critical component. The new buildpack will be provided as a drop-in replacement for the current Ruby-based Java Buildpack under a new major version. We will reach out to the CF community to help validate the pre-release version and provide feedback to ensure a smooth transition. +### Release Plan + +* `v5.0.x` - Experimental release intended to get broad feedback by users, incompatible changes may happen +* `v5.1.0` - First non-experimental GA release + ### Breaking Changes Please note the following breaking changes in the Go-based Java Buildpack: