One of the critical factors for the success of Java has been the business model used by Sun for delivering Java to the marketplace. Rather than follow the committee based standards approach, like C++ had, or the proprietary technology approach Sun was using for its own Solaris operating system.
Since this, Sun decided to use an open source approach coupled with aggressive trademark ownership and standards enforcement. Sun’s main and overall objective was to get the strengths and highest qualities of open source development without losing control of the Java technology.
Sun made Java free. And really, what’s better than free Java? With the Internet providing a convenient delivery channel, anyone who wanted Java could just download it, without any charge. But Sun made a lot more than the software free; it also released the Java source code and specifications to anyone who wanted them. Now individuals and organizations other than Sun could build their own versions of the Java compilers and virtual machines.
It also meant that Java could be ported onto different platforms without Sun having to allocate resources to do it.
This might seem like a familiar business model or strategy, now in a world where Linux and other open source projects have achieved legitimacy, but in 1995 making a major corporate intellectual property freely available was a radical move for a major software company, or for any company for that matter.
But this approach did get Java widely distributed in a short period of time, and that created a critical mass of developers and organizations that were willing to work with Java – not just writing applications in Java but also contributing to the development of Java itself.
Sun was aware that a major weakness of the open source model was the danger of a technology either stagnating because of a lack of vision, or fragmenting by being pulled in too many directions at the same time. Sun took the approach that, while anyone could write a Java virtual machine or compiler, Sun owned the rights to the Java name and would only allow the name to be used for products or programs that conformed to Sun’s Java specifications.
Sun owns and publishes a set of specifications or standards (like the Java virtual machine specification, the Java EE specification and the Java language specification, to name a few) that a product has to conform to before it can be called Java.
Sun, sometimes through a third party, provides reference implementations – or “gold standards” – for many Java technologies that provide concrete demonstrations of what constitutes standards compliant behavior for a Java product.
For example, the Apache Software Foundation, the group that developed the Apache web server, has undertaken the responsibility of maintaining the reference implementations for the Servlet and JavaServer Pages specifications. To make it easier and simple to test a product for compliance, Sun also provides test suites or compliance suites of programs that can be used to benchmark a product against the Java standards.