1. Introduction
This is a work in progress. And it will continue to be for some time, I will be gradually improving it for probably a long time...
I often find myself explaining what Java is about to non-programmers or programmers that do not know much about Java. They are the intended audience for this overview article.
Java is a relatively young development technology, that very quickly captured an important part of the 'market' and became mainstream in the early 2000's. This Timeline provides more historical information.
Java exists on credit cards, electronic ID cards, cell phones, all Blu-Ray players, desktop, servers and mainframes. It is platform independent, it works on Linux, Windows, OS X,...
Lots of big corporate, government and media websites and intranet web applications are driven by Java. ING Bank, De Morgen , Flanders , Belgium and the list continues.
Sun owns the Java trademark. But IBM, Oracle, jBoss, SAP and others provide their own JEE application servers thanks to open specifications created by Sun.
The Java platform is driven by the Java Community Process (JCP) this results in Java Specification Requests (JSR). Some topics for these JSR's are:
- Language features (e.g. generics in JSR-14)
- Java Enterprise Edition (JEE, previously J2EE) technologies (e.g. Java Server Faces 2.0 - JSR-314)
- Completely optional API's (e.g. Java Rule Engine API - JSR-97)
- ...
One of the more prominent features is Java's platform independence, i.e. Java programs run on different hardware and operating systems. This is achieved by compiling Java code to bytecode that runs on a Java Virtual Machine (VM) . And the advantage is that you have to compile your Java program only once.
This runtime environment (JVM) is available for a wide variety of platforms, such as:
- Linux (Ubuntu, Debian, Red Hat, SuSE, ...), x86 32 and 64 bit
- OS X
- Windows
- IBM zSeries
- ...
2. The Buzzwords Section
Due to the rather organic way in which the Java environment evolves, lots of open source and commercial projects are started, sometimes achieving widespread acceptance sometimes knowing a short time of glory and sometimes passing unnoticed.
The advantage of this ecosystem is that - as in nature - only the 'fittest' projects survive.
The downside of it is that it can be very difficult to keep an overview of all the frameworks, libraries, tools and products that hide behind acronyms and clever names.
2.1. J2EE, JEE
Java exists as a Standard Edition (SE) and Enterprise Edition. There is also a Micro Edition (ME) for embedded applications, but that is not important in this context.
The SE contains the basic libraries and a Java Runtime Environment (JRE - JVM ) to execute Java programs. The Enterprise Edition is a set of specifications for server side, high availability, scalable, secure and dependable technologies.
By the way the versions 1.1, 1.2, 1.3 and 1.4 of the specs are referred to as 'J2EE', the next version, 5 is referred to as 'JEE'.
Each EE version requires at least a specific version of each API. Older applications can be deployed as well
A detailed version matrix is available if you want more specific information.
- JEE . A set of API's and specifications that define a set of services and the API's available to programmers.
- JEE Application Server (AS). Some well known product names are IBM Websphere , BEA Weblogic (bought by Oracle), jBoss AS . An AS is an implementation of the JEE specifications that provide a runtime for JEE applications.
- EJB , the Enterprise Java Bean. A component in the JEE programming model, residing in the business layer.
- Servlet is another server side object, most commonly used to generate (x)html over HTTP on the UI layer. But it can be used to generate pdf reports, spreadsheets, images 'on the fly', and is often used as technological foundation for web service frameworks etc.
- JSP , Tag Libraries . The Java Server Pages are similar to servlets - and in fact are actually automatically compiled into a servlet behind the screens - but are more text centric. Think of them as XML or HTML mixed with scripting elements, which results in dynamic webpages.
- JMS or Java Message Service is an API that allows interaction with most Message Oriented Middleware (MOM) such as Websphere MQ, Apache ActiveMQ, jBoss Messaging, OpenJMS, SAP Netweaver,...
- JMX Java Management Extensions. An API (in JSE) for managing and monitoring of applications and JVM's.
- JNDI Java Naming and Directory Interface, LDAP , Active Directory .
- JSF Java Server Faces is a component model for UI (user interfaces) where visual components (e.g table, list, calendar) are organized in a component tree and the JSF framework synchronizes the states in the browser and on the server. Several JSF implementations exist e.g. jBoss RichFaces, Oracle ADF, ...
2.2. Application Servers
Oracle bought BEA and Sun and prior to that they already offered their own AS. So now Oracle owns Weblogic, Sun Glassfish, and Oracle AS.
2.3. Struts, MVC
- MVC , MVC2 , Struts . MVC or Model View Controller is the design behind most modern desktop applications (spreadsheet, browser, mail client,...) and was originally invented for SmallTalk, it is related to the Observer Design Pattern . MVC2 is inspired by MVC but in the context of the HTTP web page request cycle, with every page request parameters are read, an action choosen and executed, a new page generated depending on thje outcome of the action. Apache Struts is a well known JSP/Servlet based MVC2 framework. Most refer to 'MVC2' simply as 'MVC'
- Apache Struts an MVC based framework, very well designed.
- Spring MVC another MVC based framework, very well designed.
- jBoss Seam , jBoss RichFaces , Oracle ADF , see JSF.
- jBPM , BPEL ,...
2.4. Webservices
- SOA Service Oriented Architecture.
- SOAP , WSDL , UDDI . Originally known as Simple Object Access Protocol, SOAP is an XML and HTTP (mostly) based technology together with the description of the service (Web Service Description Language - an XML document) and UDDI (Universal Description, Discovery and Integration - also XML) for publishing information about a webservice tothe outside world.
- Axis is an Apache Foundation framework that makes it easy to publish web services using a POJO objects that implement a service and its operations. A WSDL can be generated automatically, for instance.
The JEE specification since version 1.4 provides for a set of API's for working with web services. Since web services often rely on using XML, we'll mention some related API's here.
JAX-RPC and it's successor JAX-WS together with the more message oriented and lower level SAAJ specify how you can offer and consume web services.
The JEE specification lets you access Stateless Session Bean EJBs methods as web service operations with the @WebMethod annotation.
The JAXR enables accessing metadata such as a UDDI registry or ebXML repository.