ThoughtWorks
  • Contact
  • Español
  • Português
  • Deutsch
  • 中文
Go to overview
  • Engineering Culture, Delivery Mindset

    Embrace a modern approach to software development and deliver value faster

    Intelligence-Driven Decision Making

    Leverage your data assets to unlock new sources of value

  • Frictionless Operating Model

    Improve your organization's ability to respond to change

    Platform Strategy

    Create adaptable technology platforms that move with your business strategy

  • Experience Design and Product Capability

    Rapidly design, deliver and evolve exceptional products and experiences

    Partnerships

    Leveraging our network of trusted partners to amplify the outcomes we deliver for our clients

Go to overview
  • Automotive
  • Cleantech, Energy and Utilities
  • Financial Services and Insurance
  • Healthcare
  • Media and Publishing
  • Not-for-profit
  • Public Sector
  • Retail and E-commerce
  • Travel and Transport
Go to overview

Featured

  • Technology

    An in-depth exploration of enterprise technology and engineering excellence

  • Business

    Keep up to date with the latest business and industry insights for digital leaders

  • Culture

    The place for career-building content and tips, and our view on social justice and inclusivity

Digital Publications and Tools

  • Technology Radar

    An opinionated guide to technology frontiers

  • Perspectives

    A publication for digital leaders

  • Digital Fluency Model

    A model for prioritizing the digital capabilities needed to navigate uncertainty

  • Decoder

    The business execs' A-Z guide to technology

All Insights

  • Articles

    Expert insights to help your business grow

  • Blogs

    Personal perspectives from ThoughtWorkers around the globe

  • Books

    Explore our extensive library

  • Podcasts

    Captivating conversations on the latest in business and tech

Go to overview
  • Application process

    What to expect as you interview with us

  • Grads and career changers

    Start your tech career on the right foot

  • Search jobs

    Find open positions in your region

  • Stay connected

    Sign up for our monthly newsletter

Go to overview
  • Conferences and Events
  • Diversity and Inclusion
  • News
  • Open Source
  • Our Leaders
  • Social Change
  • Español
  • Português
  • Deutsch
  • 中文
ThoughtWorksMenu
  • Close   ✕
  • What we do
  • Who we work with
  • Insights
  • Careers
  • About
  • Contact
  • Back
  • Close   ✕
  • Go to overview
  • Engineering Culture, Delivery Mindset

    Embrace a modern approach to software development and deliver value faster

  • Experience Design and Product Capability

    Rapidly design, deliver and evolve exceptional products and experiences

  • Frictionless Operating Model

    Improve your organization's ability to respond to change

  • Intelligence-Driven Decision Making

    Leverage your data assets to unlock new sources of value

  • Partnerships

    Leveraging our network of trusted partners to amplify the outcomes we deliver for our clients

  • Platform Strategy

    Create adaptable technology platforms that move with your business strategy

  • Back
  • Close   ✕
  • Go to overview
  • Automotive
  • Cleantech, Energy and Utilities
  • Financial Services and Insurance
  • Healthcare
  • Media and Publishing
  • Not-for-profit
  • Public Sector
  • Retail and E-commerce
  • Travel and Transport
  • Back
  • Close   ✕
  • Go to overview
  • Featured

  • Technology

    An in-depth exploration of enterprise technology and engineering excellence

  • Business

    Keep up to date with the latest business and industry insights for digital leaders

  • Culture

    The place for career-building content and tips, and our view on social justice and inclusivity

  • Digital Publications and Tools

  • Technology Radar

    An opinionated guide to technology frontiers

  • Perspectives

    A publication for digital leaders

  • Digital Fluency Model

    A model for prioritizing the digital capabilities needed to navigate uncertainty

  • Decoder

    The business execs' A-Z guide to technology

  • All Insights

  • Articles

    Expert insights to help your business grow

  • Blogs

    Personal perspectives from ThoughtWorkers around the globe

  • Books

    Explore our extensive library

  • Podcasts

    Captivating conversations on the latest in business and tech

  • Back
  • Close   ✕
  • Go to overview
  • Application process

    What to expect as you interview with us

  • Grads and career changers

    Start your tech career on the right foot

  • Search jobs

    Find open positions in your region

  • Stay connected

    Sign up for our monthly newsletter

  • Back
  • Close   ✕
  • Go to overview
  • Conferences and Events
  • Diversity and Inclusion
  • News
  • Open Source
  • Our Leaders
  • Social Change
Blogs
Select a topic
View all topicsClose
Technology 
Agile Project Management Cloud Continuous Delivery  Data Science & Engineering Defending the Free Internet Evolutionary Architecture Experience Design IoT Languages, Tools & Frameworks Legacy Modernization Machine Learning & Artificial Intelligence Microservices Platforms Security Software Testing Technology Strategy 
Business 
Financial Services Global Health Innovation Retail  Transformation 
Careers 
Career Hacks Diversity & Inclusion Social Change 
Blogs

Topics

Choose a topic
  • Technology
    Technology
  • Technology Overview
  • Agile Project Management
  • Cloud
  • Continuous Delivery
  • Data Science & Engineering
  • Defending the Free Internet
  • Evolutionary Architecture
  • Experience Design
  • IoT
  • Languages, Tools & Frameworks
  • Legacy Modernization
  • Machine Learning & Artificial Intelligence
  • Microservices
  • Platforms
  • Security
  • Software Testing
  • Technology Strategy
  • Business
    Business
  • Business Overview
  • Financial Services
  • Global Health
  • Innovation
  • Retail
  • Transformation
  • Careers
    Careers
  • Careers Overview
  • Career Hacks
  • Diversity & Inclusion
  • Social Change
Continuous Delivery Technology

Go 12.4 and OpenJDK

Raghuram Bharathan Raghuram Bharathan

Published: Dec 10, 2012

Go historically only supported Oracle (formerly Sun) Java 6 – specifically Oracle JDK 6.

Oracle announced the retirement of the “Operating System Distributor License for Java” (DLJ), the license that allowed Linux distributors to package and redistribute Oracle’s Java versions in their respective Linux distributions.

The biggest impact of this is that automating the installation of Java on Linux systems is now a pain. Oracle Java now must be manually downloaded and installed and for Go users this means doing it for every system where a Go server or a Go agent are installed.

Over the last couple of years though OpenJDK has steadily matured and increased in popularity and it is now the preferred package for most Linux distributions.

For Go 12.4 we’ve worked on removing the dependency on Oracle 6 JDK and we’ve also used this opportunity to make the changes required to make Go work with the JRE, rather than JDK.  

We experienced some interesting installer challenges during this release since, apart from standard zip/gz installer files, we provide specific installers packages for specific systems, namely DEB, RPM, exe and Mac App. The primary purpose of these installer packages is to seamlessly integrate with the standard installation procedures expected by users of the respective Operating Systems.

When Go used to work only with Sun/Oracle JDK 6 it was simple to build installers with dependency checks for that specific package but supporting both Sun/Oracle and Open JDK exposed us to the nuances of the various packaging systems.

For example Debian has the java6-runtime virtual package that encapsulates this requirement very well: all the latest releases of Java on Debian add themselves as providers to this virtual package and this in turn makes the Go installation requirement clear in the DEB installer.

RPM packages don't have a common virtual package which includes both JRE and JDK. The situation is further complicated by the inability to specify an “OR” dependency in the RPM Spec and an “OR” dependency is required to specify that Go works with either the JRE or the JDK.

For these reasons the RPM installer doesn’t contain the dependency check and we found the experience to be better without it since it doesn’t force the user with a JDK already installed to also install the JRE or vice-versa.

We found out that it’s better to notify the users if Java is not found during the server startup rather than force them to get both JRE and JDK on the same system owing to a dependency check in the installer.

On Mac OS X the installer has a dependency check recorded in the info.plist to indicate that Go needs JRE 6 or above. This requirement specification works well with the JRE provided by Apple but not with a custom installation of Open JDK. In general it looks like Mac users prefer to use the Apple JRE and it’s also the only way to support versions from Snow Leopard to Mountain Lion.

Last but not least the Windows installer now allows users to specify their Java location, in case they have a version already installed, or choose the Oracle JRE 7 which comes packaged with Go for Windows.

We currently do not support IBM Java on any platform. 

See how the newly-released (and much-enhanced) Go 12.4 can help optimize your CD process 

  • What we do
  • Who we work with
  • Insights
  • Careers
  • About
  • Contact

WeChat

×
QR code to ThoughtWorks China WeChat subscription account

Media and analyst relations | Privacy policy | Modern Slavery statement ThoughtWorks| Accessibility | © 2021 ThoughtWorks, Inc.