What it is: Java is one of the most popular programming languages that offers cross-platform performance.
One of the most popular programming languages is Java, which is the primary programming language for the Android operating system. One of Java’s original advantages was its cross-platform capabilities with the promise that you could write a program once and run it on multiple platforms through a portable virtual machine. While this promise of write-once, run anywhere isn’t quite perfect, it’s much better than porting programs from one language to another.
Unfortunately, Java isn’t the simplest language to learn. Even worse, Oracle inherited Java from Sun Microsystems, the original creators of Java. Oracle is currently fighting with Google for Google’s use of Java in the Android operating system, despite the fact that Java is open source.
This current battle between Oracle and Google over the use of Java highlights one of the problems of open source vs. proprietary software. On the surface, open source sounds appealing since it’s free for anyone to use and contribute to. The problem is that when you have multiple entities with their own agenda, getting people to cooperate can be difficult. The current fight between Oracle and Google over the use of Java in Android is just one problem with open source.
Oracle has even been rumored to have lost interest in Java, which means another company or organization will need to take control of Java. Theoretically, this should be possible with open source, but if Oracle keeps trying to control Java, that could cause trouble with Android and Google.
While Java may be a general purpose language, Swift is designed strictly for OS X, iOS, watchOS, and tvOS programming, so all the latest features of each operating system will be accessible by Swift through Apple’s programming framework. Since Apple controls both Swift and their operating systems, there should never be a battle between the programming language supporters and the operating system supporters.
For people who prefer open source like Android and Java, that can sometimes translate into chaos and disorganization. On the other hand, proprietary software like Swift and iOS can be optimized to work together and progress rapidly where features in one can be exploited immediately in the other. With Java and Android, changes in one may not be immediately reflected in the other since Java isn’t designed strictly for Android and Android can’t dictate changes in Java. That doesn’t mean open source is better or worse than proprietary software; just that each has their pros and cons.
For proprietary software, the pros are that a single company can define the future for their programming language to work with their operating system. The cons are that you risk getting locked into an ecosystem defined by one company.
For open source, the pros are that nobody can control the programming language or operating system. The cons are that with nobody firmly in control, progress can come in fits and starts with no definite vision or timeline.
Open source is generally best for tech-savvy users who have no fear of taking advantage of open source features. Proprietary software is generally best for user convenience as long as users accept what a single company has to offer.
Open source is best for maintaining existing technology because then you aren’t locked in to a particular vendor. Proprietary tends to be best for introducing and profiting from innovative new technology that open source eventually copies and mimics.
Look at all the major open source projects and ask which ones are truly innovative and which ones are simply offering incremental improvements. In general, open source focuses on incremental improvements while proprietary can offer innovative technology. That’s because people tend to focus on proprietary technology so they can profit from their ideas. This encourages innovation but can also encourage monopolies.
So watch the current battle between Oracle and Google over Java and Android to see one of the flaws of open source. Whatever happens, the current battle isn’t helping either Java or Android progress and provide new features for consumers, and that’s bad for everyone.