As part of this purchase they obtained the Java language and the rights that Sun previously held to the Java platform.
At the time Google was looking to break into the mobile / cell phone market. To help them make this move they decided to put money behind a mobile device operating system called Android which draws heavily on several existing technologies including Linux
and Java. This made the Android environment accessible to a very well-established developer community and probably helped it to become the only real rival to the iOS
iPhone operating system.
As part of the process of developing Android, Google reimplemented from scratch several of the core APIs provided as part of the Java environment. These APIs included fundamental features such as those in the java.lang
packages (aka libraries). This means that, to any Java developer, those parts of the language defined by these packages ‘looked’ the same as in any other Java environment. That is, the classes, method names, parameters and interfaces were the same as in any Java environment, obtained from any Java supplier, including those obtained from Sun / Oracle. It therefore allowed Java developers to create application-specific code that was familiar to them.
The implementation of the elements provided by Google was, however, completely new. This was therefore not a simple case of cut and paste copying; it was the alignment of a new implementation with an existing and very well-established and very well-known programming interface.
Oracle did not see it this way and have been trying to sue Google over their use of the API design ever since.
To illustrate what this means, it would be like Ford trying to sue BMW for using concepts such as the steering wheel, brake, clutch and throttle pedals in the driver’s interface to a BMW 3 series. The parts behind the steering wheel, pedals etc are all BMW, but the choice of which pedal is the brake and the purpose of the brake would be claimed by Ford. If this happened in the real world then each car manufacturer would need to reinvent a new system for how a driver controlled their cars resulting in a lot of confusion, probably numerous accidents and general dissatisfaction from drivers. To be fair this implies that Ford were the first to come up with the current generally-accepted configuration for the controls of a modern car; which is not exactly the case – but hopefully it illustrates the idea.
So why is Oracle doing this? It may be that they hope to get billions of dollars in damages from Google for their use of Java’s API design. They claim it is unfair for Google to have used their design for free because they (well, Sun) designed Java. And yes, Sun designed the API in terms of the structure, the methods and the classes; but that design itself is built on the work of others. Java was not designed and developed in a vacuum. In fact it is possible to trace various different aspects of the language and its APIs to Smalltalk, C++, the P System to name but a few. Rarely in technology is something completely unique and without reference to earlier work.
From the perspective of developers, it was actually a good thing that Google reused the API design of core Java libraries such as java.lang; it meant that their skill sets had a wider applicability. It also meant that existing tools and libraries could be more easily ported to work with Android (such as the very widely used JUnit test libraries). In fact, the ubiquity of Java has been, and still is, part of its appeal. That it was also available as an implementation language on Android’s burgeoning mobile platform just added to this.
Oracle’s moves against Google fundamentally changes the playing field and arguably undermines a key raison d'être for Java. Oracle’s strategy here may lead to short-term financial gain, but it will no-doubt cause future developers / teams to look to other languages and technologies.
And that's not taking into account the ramifications of API methods becoming subject to copyright as a result of a SCOTUS decision in favour of Oracle. There will no doubt be copyright claims flying in all directions, which could spell real trouble for smaller software development outfits, entrepreneurs and start-ups, who don't have the resources to roll their own or refactor APIs for their products in order to comply.
People are exploring their options - not least at Google, who declared Java is no longer the preferred Android development language since May 2019 - they've backed the Kotlin
programming language in a big way.
Kotlin is a language developed by JetBrains, the company behind the very popular Java IDE IntelliJ. Kotlin is another language that compiles to the byte code format used by the runtime Java Virtual Machine (JVM). Because Kotlin can run on the JVM, it can run anywhere that Java can – while also taking advantage of any libraries written for Java (including the hugely popular Spring ecosystem of libraries). It is, however, a more modern language than the 25-year-old Java, with simpler syntax and more up-to-date language constructs.
Oracle themselves have been slow to improve the Java language, offering few innovative features for the first half decade of their custody of the language. More recent versions of the language have started to add capabilities including newer styles of programming, but in many ways they are playing catch-up to the latest breed of modern software development languages.
Meanwhile, Google have also been investing in technologies outside of the JVM ecosystem, having worked on their own languages such as Go (aka GoLang) and cross-platform Dart - and UI libraires such as Flutter. Indeed, Google is considered by many to be a major software technology player, actively involved in pushing forward and expanding the current boundaries.
Oracle, in contrast, may be perceived by some as a large, old-school, database-oriented technology company which doesn't understand the developer community, whose current technology worldview is more oriented towards the applicability of skills and support for Open APIs.
Whatever happens next, it will have far-reaching implications, for sure.
If you got all the way down here, you're obviously interested in software development. Why not take a look at some of our coding courses - as it happens, we can help you learn Java, Kotlin, Go, Flutter and Dart and many more.