Experience Optimization, Insights

Google vs. Oracle: What It Means For Your Mobile Strategy

Google vs Oracle

Earlier this month, Google officially filed its appeal to the Supreme Court in the company’s epic battle with Oracle. The move was not a surprise to those who have been following the case, which has now raged on for over 4 years. The implications could be significant for organizations looking to define a long-term mobile strategy.

The fight concerns Java, the language at the center of Google’s Android platform. Oracle, which bought Java creators Sun Microsystems in 2010, attempted to strike a licensing deal with Android for the APIs used to create their now-ubiquitous operating system, before filing suit in August 2010. After trying unsuccessfully to sort out their differences at the district court level, the Google-vs-Oracle fight has reached the highest court in the land, where justices who can barely send an email will debate the right of companies to copyright open-sourced APIs.

Highlights of Google v Oracle
Highlights & Insights Blog Graphic

To understand my perspective on the debate, I need to take a step back. The promise of Java has always been ‘write once, run everywhere’. While this has held mostly true over the years, the Google vs. Oracle case is far from the only challenge Java has faced. There were the early battles with Microsoft and J++ in their alleged attempt to fork the language. There were attempts to use Java’s mobile edition as a mobile device platform until the iPhone was released and changed the way we view mobile. There was the heavy use of Java applets (and later Java FX) that were beaten out first by Flash and then the use of JavaScript, HTML5/CSS3 and powerful WC3 compliant browsers and open standards on the web. While the enterprise and server market is arguably still going strong, all of the cooler end user uses of Java have eventually met their deaths. This rule has just one exception: Google’s Android system.

As a Java developer, when I first heard of Android stepping in as an eventual competitor to Apple’s iPhone OS, it definitely piqued my interest to hear that Google decided to use Java as its main API and language for developers to create applications. I’m sure there are many reasons why they chose Java: a current and deep developer base, mature frameworks and IDEs, the fact that Java was now open-sourced. Above all, I was happy to see that Java was getting one more shot at the limelight, creating interfaces and applications that millions would use. The first few versions of Android were nowhere near as polished as their iPhone equivalents. Still, it was a decent foray into mobile for this mainly server-side language.

As the years went on, many languages— from Scala to Haskell to Python and JavaScript— have eclipsed Java in popularity among developers. Don’t get me wrong; Java is still perfectly useable, but with startups and hackers experimenting with new languages, Java no longer excited the developer community as it once did. Functional concepts that are foreign to many Java developers, like using lambda functions and passing functions as arguments, were second nature to other, increasingly popular languages and the developers that used them. Even Apple, with their latest update to iOS and the XCode platform, has introduced Swift, a new language to build applications using the latest techniques. Because of the frequent changes in development style and what is considered contemporary in development circles, it’s surprising to me that Java’s implementation has persisted on Android as long as it has.

Despite how Oracle v. Google is settled in court, it may mean the end for Java as we know it on the Android platform. With the release of Swift, Apple has retaken the upper hand in giving developers a cutting-edge platform to create and further the possibilities of mobile applications so many are wondering if its Google’s turn to make a change as well

In this case, the history of Java and the technological implications of open-source coding are of paramount importance. I agree with Google’s argument: copyrighting APIs would have been the death of numerous companies over the years and would have prevented many potential innovations. In many ways, the whole PC industry was supported by vendors’ ability to integrate with and innovate on existing technologies and standards to build products. APIs are a similar thought process, from a software level, of supporting interoperability between different calling systems. Allowing different implementations of one common API is actually a proven design principal; many design patterns and frameworks support this. Concepts like inversion of control, loose coupling, coding to interfaces, dependency injection, and aspect-oriented programming all leverage APIs at their core. In fact, Java never would have lasted this long in the ever-evolving world of mobile application development without the tireless work of open-source coders supplementing, innovating and improving it.

I do sympathize with Oracle’s position; Google made some morally questionable decisions in how they attempted to avoid obtaining proper rights in leveraging Java’s various APIs in Android (through reverse engineering and other means). Still, Java is a mature, open sourced language and platform. Despite Java’s challenges in the past, Google has promoted the language, attempting to take it to new heights of usage and penetration within the Android platform.

In the process, Google allegedly violated some of Oracle’s usage rights. If this accusation is upheld in court, Google should be monetarily penalized (though I’m unsure of a sufficient value). But while I feel penalties may be deserved, I ultimately do not believe this should be a landmark decision that unjustly compromises all future development. Software, like other industries, is built on many layers of standards and APIs that support countless tools we use today. The possible decision to implement copyrights on APIs could mean a hindrance on progress, and that’s not a future I want to see.

Back To Posts