Updates to Java requirements for TFS Search
The search feature of Team Foundation Server (TFS) uses Elasticsearch, which depends on Java SE. Until now, Oracle Java SE was the supported version of JRE for TFS search. With the change in Oracle licensing terms, there will be no more “free public Java updates” and users are required to buy a subscription to continue to get JRE updates for commercial use. We’ve heard from lots of customers wanting other options and we’re happy to announce that TFS Search is now supported with Azul Zulu OpenJDK, allowing you to choose between Azul Zulu OpenJDK and Oracle JRE based on your needs.
We have been using Azul Zulu OpenJDK to run the search capabilities in our hosted Azure DevOps Services for a while now so we are confident that search will work seamlessly with Azul Zulu OpenJDK for our on-premises customers also.
From the next major version of TFS (Azure DevOps Server 2019), customers selecting installation of Java during install time will have Azul Zulu OpenJDK 8 community version as the default option.
Note that while users with Oracle Java subscription will get automatic updates, Azul Zulu OpenJDK community version is a volunteer driven effort with no dedicated commercial support and updates. If you require dedicated commercial support to Azul Zulu OpenJDK, please contact Azul for more details on Zulu Enterprise.
What options do I have if I am using an older version of Team Foundation Server?
All TFS Search users (from TFS 2017 RTW) can pursue one of the following options.
Option 1: Continue using Oracle JRE (Customer may need to buy an Oracle JRE SE subscription for updates if they do not already have one in place)
Option 2: Move to Azul Zulu OpenJDK
How to Move to Azul Zulu OpenJDK
You can easily switch to Azul Zulu OpenJDK without incurring any TFS downtime in few simple steps, as outlined in the following diagram below.
You can find detailed step-by-step guidance based on the TFS version here.
What will be the experience in Azure DevOps Server 2019 RTW and onward?
In the next major release of TFS (which will be called Azure DevOps Server 2019) you will be able to use either Azul Zulu OpenJDK 8 (update 201 or higher) or Oracle JRE 8 (update 60 or higher) on the machine where the search feature is installed. For a single box configuration (when Elasticsearch is installed on the same server as Azure DevOps Server), when a compatible version of Java is not found, the Search configuration experience will help you download and install Azul Zulu OpenJDK, 8 as shown in the following image.
You can reach us on Developer Community if you need any further help or have any suggestions.
Are there any plans to provide a Docker image for the search service? With support for OpenJDK licensing should be less an issue
Currently there are no plans to provide a Docker image. We are exploring options make OpenJDK licensing a non issue for our users. Stay tuned for updates in this space.
PM | Azure DevOps
UPDATE regarding TFS Search configuration errors due to JRE dependency
Users who are trying to install older versions of Team Foundation Server (until TFS 2018 Update 3.2) and configure Search are likely to face configuration errors due to Oracle JRE download failures. Earlier TFS would download and install JRE on user’s behalf but with recent changes in Oracle JDK License for releases, downloading JRE 8 now requires a user login and because of this change, TFS will no longer be able to download and install JRE on user’s behalf. This would mean that Search configuration in TFS (until TFS 2018 Update 3.2) would show readiness check errors.
Users can now pursue one of the following options to resolve the above JRE issue.
Option 1: Manually download and install the latest version of Oracle JRE 8 on your machine, update JAVA_HOME environment variable and re-run the readiness check to continue with the configuration. You can get JRE from Oracle downloads page.
Option 2: Manually download and install the latest version of Azul Zulu OpenJDK 8 on your machine, update JAVA_HOME environment variable and re-run the readiness check to continue with the configuration. You can get Azul Zulu OpenJDK 8 from Azul downloads page.