New to Java™ programming? This page provides an overview of Java technology and explains its role in modern software development for desktop PCs, servers, mobile devices, the web, and the cloud. Links to relevant developerWorks content and IBM® downloads and products give you a rich starting point for further investigation.
Java technology is both a programming language and a platform.
The Java programming language is a high-level, object-oriented language. Java programs are both compiled and interpreted. Compilation translates Java code into an intermediate language called Java bytecode. Bytecode is in turn parsed and run (interpreted) by the Java Virtual Machine (JVM) — a translator between the language and the underlying operating system and hardware. A compiled Java program can run on any system that has a version of the JVM.
The Java platform is a software-only platform that can run on top of most hardware platforms. It consists of the JVM and the Java API — a large collection of ready-made components (classes) that ease application development and deployment. The Java API spans everything from basic objects, to networking and security, to XML generation and web services. It is grouped into libraries — known as packages — of related classes and interfaces.
The platform comes in three versions:
Along with the Java API, every full implementation of the Java platform includes:
The developerWorks Java technology zone maintains a complete glossary of the standard Java component technologies for the platform editions.
Scalability is one of the standout features of the Java platform and language. Applications can be written easily (or adapted from Java desktop applications) for devices with limited resources. Scaling up beyond the desktop, Java technology is an ideal framework for secure server-side web programming. Web components are supported by runtime platforms called web containers, whose services include request dispatching, security, concurrency, life-cycle management, and access to APIs such as naming, transactions, and email. At the high end, Java application servers serve as web containers for Java components, XML, and web services that can interact with databases and provide dynamic web content. Java application servers also provide an application-deployment environment for enterprise applications, with capabilities for transaction management, security, clustering, performance, availability, connectivity, and scalability.
By many measures, the Java language is the most popular programming language in use today. Its main benefit is the portability of Java applications across hardware platforms and operating systems — possible because the JVM installed on each platform understands the same bytecode.
The JVM is also a robust platform for executing languages other than the Java programming language. For example, Groovy, Scala, Clojure, and special implementations of Ruby and Python give developers the versatility to program for the JVM in a dynamic or functional language.
By supporting open standards in the enterprise, Java technology can use XML and web services to help share information and applications across business lines. Java technology serves as the backbone of many IBM products and technical consulting services and is critical to key IBM initiatives.
Java technology was developed by Sun Microsystems, now part of Oracle Corporation. The Java Community Process (JCP), an open organization of international Java developers and licensees, develops and revises Java technology specifications, reference implementations, and technology compatibility kits. In 2007, Sun made the bulk of its core Java technology available as open-source software — commonly called OpenJDK — under the GNU general public license version 2 (GPLv2).
Java technology continues to evolve. In "Java technology, IBM style: A new era in Java technology," you can read about enhancements in the latest Java SE version, including value-adds from the IBM Java Technology Center. One such major new functional area is an enhanced API for I/O, the topic of the two-part article "An NIO.2 primer."
And for a fascinating look at issues occupying the minds of the designers of the Java language's future versions, check out the Language designer's notebook column series.
Two superb resources for keeping on top of technology trends in the wider Java ecosystem are:
The Java language has long been a mainstay of web development, and recent years have seen an explosion of Java frameworks and tools that streamline web development and facilitate the creation of rich, interactive Web 2.0 applications.
Learn more about web development in the Java language:
Cloud computing solutions let their users conveniently access a shared pool of physical or virtual computing resources on demand, typically on a pay-as-you-go basis. The Java ecosystem is rapidly expanding to support developers who want to build, test, or deploy Java applications on the cloud. Especially relevant is Platform as a Service (PaaS), in which the cloud provider delivers not only on-demand hardware and operating-system services, but also application platforms and solution stacks. Learn more about it:
The popularity of smartphones, tablets, and other portable devices has surged in direct proportion to their ever-increasing capabilities. Java technology is in the mainstream of mobile development:
A service-oriented architecture (SOA) is a component model that relates the functional units of an application (services) through well-defined interfaces and contracts between the services. The interface is defined independently of the hardware, operating system, and programming language in which the service is implemented, letting services constructed on different systems interact with one another in a uniform, universal manner. SOAs are a loosely coupled alternative model to more-traditional, tightly coupled, object-oriented models.
The resulting web services let business rules and processes be defined in XML so software applications can communicate in a platform- and programming language-independent manner. XML technology makes data portable and facilitates the creation of messages, while Java technology makes code portable. The fact that XML and the Java language work well together makes them an ideal combination to build and deploy web services.
Learn more about it:
The Java development community has long embraced agile methodology — a highly collaborative, iterative, incremental, and quality-focused approach to software development. Agile development emphasizes flexibility, continuous testing and integration, and rapid delivery of functionality. Learn more:
Many aspiring Java developers have a wealth of experience in other languages. And even veteran Java developers appreciate that the Java programming language isn't the ideal language for every development need. Fortunately, the JVM's support for multiple languages lets the Java platform take advantage of the agility and features of modern dynamic scripting languages and functional languages for prototyping or building certain types of applications.
Learn more about it:
Open source software is an integral part of Java software development. Myriad third-party open source projects extend Java technology with libraries, tools, frameworks, applications, and application servers to help programmers harness this powerful technology. Among them are these three major projects:
OpenJDK is a free and open source implementation of the Java programming language, available under the GPLv2 license. In October 2010, IBM, previously the main corporate contributor of the competing Apache Harmony project, formed an alliance with Oracle to support OpenJDK and create a single, stable platform for Java development.
Learn more about IBM's core commitment to Java technology in "IBM, Oracle, OpenJDK, and the implications."
Eclipse is a vendor-neutral, open development platform and set of application frameworks for building software. The Eclipse platform is written in the Java language and provides a plug-in based framework that makes it easier to create, integrate, and use software tools. (IBM is a founding member of Eclipse and actively participates on the Eclipse.org Board of Stewards and its working subcommittees.) Learn more about some of the platform's component technologies for Java development:
The Apache Software Foundation is the umbrella organization for a panoply of open source projects that are predominantly Java language-based. Here's a sampling:
You can take two routes to learning Java technology and improving your skills: enroll in a course (for certification or just for the learning) or teach yourself (and of course, practice by writing code). Besides tapping the knowledge of experienced developers, the coursework or certification path can offer tangible evidence to prospective employers that you have the skills to build the technology they need. And by experimenting on your own and using available resources, you sharpen your skills in various areas of Java technology. The following resources should help either endeavor.
Java technology knowledge paths on developerWorks are focused learning guides that bring together diverse training resources:
These resources are arranged in sequence to guide you from conceptual awareness to task mastery. Knowledge paths keep track of your progress as you work through them, so at any point you can quickly resume exactly where you left off.
Start learning Java programming fundamentals with the Become a Java developer knowledge path.
Explore the Java technology zone's vast Technical library to discover a world of informative articles and hands-on Java tutorials.
Choose among a wide variety of online, classroom, and multimedia-based Java courses offered by IBM Global Services.
IBM offers professional certification in such related technologies as WebSphere® development (for enterprise Java applications), IBM Rational® software, DB2®, XML, and SOA.
For an even more interactive approach to learning how to use the Java language, dive into the Java discussion forums, moderated by noted experts with years of real-world experience in crafting Java-related technology.
IBM is on the front lines as one of the leading innovators in the use of Java technology. This section highlights tools and products IBM offers to Java developers.
IBM Rational tools are built on the Eclipse platform and can help make it easier to develop, test, and deploy high-quality applications. Rational tools for Java developers include:
WebSphere Application Server is a fully featured Java EE-certified application server that delivers the secure, scalable, resilient application infrastructure enterprises need for a service-oriented architecture. Learn more about Java development tools for the WebSphere family:
IBM offers a powerful family of relational database management system (RDBMS) servers along with software for business intelligence and performance management, data warehousing, data analysis, data mining, media asset management, enterprise content management, and information integration. Find out how IBM Information Management software supports Java programming, including client applications, server-side capabilities, and tools to make development and deployment easier.