Hi everyone,
We are pleased to announce the availability of the first Early Access Program (EAP) release of Bitbucket Data Center 10.0.
This EAP release is targeted at app vendors and customers who have written in-house apps (primarily plugins), so they can update their apps to ensure they will work with the public release of Bitbucket Data Center 10.0.
The general availability of Bitbucket 10.0 is planned for early September 2025.
Important things to note about this EAP release:
- Do not use this EAP release in production environments. For all production use and testing of Bitbucket, use the latest general availability release instead.
- The general availability release is still underway and may contain some minor API changes. However, this EAP release is intended to contain a complete picture of Bitbucket 10.0’s API.
Links to download installers and archives:
We need your feedback!
If you have any questions or feedback about this preview of Bitbucket Data Center 10.0, ask them in the Bitbucket Data Center category here in the Atlassian Developer Community forums, and our friendly team of developers will respond to them.
Bitbucket Data Center 10.0 EAP Release Notes
Bitbucket Data Center 10.0 EAP contains several changes that may affect existing add-ons. The changes are summarised below.
Raised minimum Java version to 21
Bitbucket 10 requires Java 21. Support for running on Java 17 has been removed.
Similarly, apps developed for Bitbucket 10 will need to use a Java 21 JDK, and can use language level 21 features.
Other supported platform changes
- Removal of support for PostgreSQL 13, 14 & 15
- Removal of support for SQL Server 2017
- Raised minimum Git version (on the server) to 2.42
Jakarta EE 10 upgrade
Bitbucket 10.0 upgrades to Jakarta EE 10; or more concretely the core dependencies that implement and utilize the Jakarta APIs have been upgraded:
- Tomcat 10.1
- Spring Framework 6.2
- Spring Boot 3.4
Additionally, all the other libraries/dependencies that depend on Spring and the Jakarta APIs have also been upgraded.
As a consequence, the Maven packages that provide the Jakarta EE APIs have been updated to the following versions.
- Jakarta Servlet 6.0
- Jakarta RESTful Web Services 3.1
- Jakarta Dependency Injection 2.0
- Jakarta Annotations 2.1
- Jakarta Activation 2.1
- Jakarta Mail 2.1
- Jakarta XML Binding 4.0
- Jakarta Bean Validation 3.0
Java package name changes
The upgrade to Jakarta EE 10 is a significant change and will impact most 3rd party apps as the Java package names have changed from javax
to jakarta
.
The below table summarizes those package name changes:
Old | New |
---|---|
javax.activation | jakarta.activation |
javax.annotation | jakarta.annotation |
javax.xml.bind | jakarta.xml.bind |
javax.inject | jakarta.inject |
javax.mail | jakarta.mail |
javax.persistence | jakarta.persistence |
javax.servlet | jakarta.servlet |
javax.validation | jakarta.validation |
javax.ws.rs | jakarta.ws.rs |
Note that Bitbucket 10 still exports javax.annotation
as some annotations provided by the
com.google.code.findbugs:jsr305
Maven dependency also use that namespace. However, the core Jakarta annotations have moved to the jakarta
package and are provided via the jakarta.annotation:jakarta.annotation-api
Maven dependency.
Jakarta API maven artifacts
groupId | artifactId | version |
---|---|---|
jakarta.activation | jakarta.activation-api | 2.1.3 |
jakarta.annotation | jakarta.annotation-api | 2.1.1 |
jakarta.xml.bind | jakarta.xml.bind-api | 4.0.2 |
jakarta.inject | jakarta.inject-api | 2.0.1 |
jakarta.mail | jakarta.mail-api | 2.1.3 |
jakarta.persistence | jakarta.persistence-api | 3.2.0 |
jakarta.servlet | jakarta.servlet-api | 6.0.0 |
jakarta.validation | jakarta.validation-api | 3.0.2 |
jakarta.ws.rs | jakarta.ws.rs-api | 3.1.0 |
If you are upgrading an app that is already compatible with Bitbucket 9 it is likely the app is already using the Maven artifacts that use the jakarta
naming. This is because Bitbucket 9 was based on Jakarta EE 8 which renamed the Maven artifacts but left the Java package naming as javax
. It wasn’t until Jakarta EE 9 that the Java package names were changed to jakarta
. However, note that you’ll still need to update the version of the Jakarta EE API packages if you manage those dependencies directly.
Platform 8 upgrade
Bitbucket 10.0 includes an upgrade to Atlassian Data Center Platform 8.0. This upgrade puts us in a better position to respond to security changes with reduced disruption.
As part of this work, we have upgraded numerous Atlassian and third-party components to benefit from the latest security patches and bug fixes.
The Prepare your Data Center app for Platform 8 page contains an extensive list of the changes in Platform 8 and guides on how to migrate your app to Platform 8.
Removed third-party API packages
Platform 8 and Bitbucket 10.0 have removed OSGi exports for some third-party libraries. You will need to start bundling your own copies of these libraries with your apps if you wish to continue using them.
This change will allow us to improve Bitbucket more frequently without breaking your app or requiring you to do significant testing and rework when things change.
The following packages are no longer available to apps from Bitbucket. Apps that still wish to use these classes can bundle the classes within their app:
org.apache.commons.fileupload
org.apache.commons.fileupload.disk
org.apache.commons.fileupload.portlet
org.apache.commons.fileupload.servlet
org.apache.commons.fileupload.util
org.apache.commons.fileupload.util.mime
Deprecated Java APIs removed
We have removed interfaces, classes, and methods in the Bitbucket Java API that were marked as deprecated in Bitbucket 9.x.
Apps that use any of these interfaces generally won’t build with Bitbucket 10.0.
Precompiled apps that used any of the removed interfaces will fail to install or run in Bitbucket 10.0, typically with java.lang.NoSuchMethodError
or java.lang.ClassNotFoundException
.
Removal of Trusted Applinks
We’re removing Trusted applinks to reduce the number of insecure entry points into the product. We’ve replaced this way of exchanging information between Atlassian products with more secure solutions that follow industry best practices, like the OAuth protocol.
Basic authentication disabled by default
Authentication with basic authentication is now disabled by default. This is a first step towards the removal of basic authentication altogether as we develop and mature alternatives to support the remaining few use cases.
This doesn’t impact Java APIs or app compatibility, but may impact your development and test environment. It is possible to re-enable basic authentication, either via the system administration user interface, or at startup time by setting the following Java system property:
com.atlassian.plugins.authentication.basic.auth.filter.force.allow=true
App signature verification is now enabled by default
Apps that are uploaded via UPM are now required to be signed by default. This doesn’t impact Java APIs or app compatibility, but may impact your development and test environment. It is possible to disable the signature verification by adding the following property to your bitbucket.properties file or setting the same as a Java system property.
atlassian.upm.signature.check.disabled=true
Distribution via Atlassian Marketplace generates the signatures of the installed apps, but for vendors or customer in-house development teams that want to install an application directly in the product without the Marketplace involvement, custom application signature and verification certificate are required. For further details see Generating app signature and verification certificate using OpenSSL
End of support for LESS
To enhance the security, performance, and overall developer experience, we’re deprecating both the LESS web-resource transformer and the LESS Maven plugin. Read the announcement
Client Web Fragments removal
Client Web Fragments have been removed and most of them are replaced with Client Side Extensions (CSEs). Apps that want to extend the functionality on these pages should move to the React-based CSE framework. You can read more about Client Web Fragments removal guide
Frontend: Source view
The source view has been migrated from CodeMirror to a native React-based solution, similar to the implementation used in the Pull Request diff
view. These changes align with updates in Bitbucket Data Center 9, where plugin points were migrated from client-web-fragements to client-side extensions.
Note: The source editor continues to use CodeMirror.
Removal of deprecated components in AUI 10
We’re removing some outdated AUI 10 components with design and accessibility issues. Make sure to move to their new versions or migrate to Atlaskit:
- Dropdown 1 - replaced by Dropdown 2
- Toolbar 1 - replaced by Toolbar 2
- Dialog 1 - replaced by Dialog 2
A few other AUI resources and dependencies were also deprecated or removed. Read the announcement