Java Ecosystem
There are many companies, organizations and groups of people, called "communities" that contribute to the enrichment and development of Java technologies. All these entities make up what is known as "the Java ecosystem."
This ecosystem gives us many options, so many times we will be forced to choose.
Libraries and Java API (Aplication Program Interface)
Java is not just a language. It is a software development platform. Its distributions contain multiple libraries and tools.
When programming in Java we do not start from scratch. We use class packages created previously known as libraries. Java comes with many libraries included that are known as the "Java API". The Java API has facilities; concurrent programming, network management and distributed programming, security, GUI and more.
Before developing a functionality it is good to investigate if there is already a library that implements it. It's amazing the amount and quality of free libraries for Java which already exist.
Framework
A Framework is a set of libraries and tools that help us create software. Which Framework we choose, depends on the type, size and requirements of the application we are going to develop. Frameworks are often specialized in solving the problems of a specific type of applications.
Spring Framework specializes in web enterprise applications. Libgdx is a framework specialized on web game development and smartphones.
It is also an option not to use any framework. This works when the application is very small or so specific that there is no framework that fits well.
The cost of choosing the wrong technology
Once, I developed a system for transmitting data between Windows Web applications and Mainframe applications. I chose to use a recommended Microsoft library. This transmission data system was used by many web applications from a large bank.
Time after the applications were in production, a defect was discovered in the library. The library took more memory each time, causing the IIS Web Server to fall, affecting more than a thousand users of our application and others.
My company had hired Microsoft support. The Microsoft support response was that the library had been discontinued and no support was given.
We had to redo the library and modify many applications. Even being an application difficult to modify, maintenance was instructed to restart the server every night.
That day, I began to be interested in who 's who in industry, standards and open interfaces. It was a hard way to learn the value of open source.
Who is who in the Java ecosystem?
We have already mentioned ASF (Apache Software Foundation), which created Tomcat. ASF is a not-for-profit organization that develops open source software for public good. It seems utopian, but in my experience, this is the most altruistic organization I know.
Many of the ASF projects are fundamental parts of the Java Ecosystem, such as; Tomcat , Maven , Ant, Axis2 , Xerces2 and more.
In a second category, there are for-profit companies committed to standards and open source. The Programming Community recognizes some ethical behaviour in these companies, although it is sometimes questioned.
Finally we have the dark side. In this category we have companies which during their history have repeatedly damaged the Community, customers and competitors for their own interests. In this group we can highlight Oracle and Microsoft.
BEA WebLogic was a company that competed with Oracle. Oracle bought it, raised the cost of licenses for all BEA WebLogic clients and informed them that they should migrate to Oracle products because if not they would lose support.
After acquiring SUN, Oracle sued Google for using Java in Android. To the delight of the Java Community, Oracle lost the case. It was understood that this demand threatened the use of Java in over one billion devices.