New to Java™ programming

Your starting point to learn how to develop programs with Java technology

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.

What is Java technology and why is it important?

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, portability, versatility, and open standards

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.

The evolving Java universe

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 platform roundtable, Spring 2010" is a snapshot of nine Java thought leaders' ideas about the then-current and emerging state of Java technology, culture, and industry in the light of the platform's maturity and the changes in its corporate stewardship.

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 technology zone technical podcast series: Listen to interviews with experts on important, up-to-the minute topics, technologies, and tools.
  • The Java development 2.0 column series: Thanks to mature open source frameworks and reliable, for-rent deployment infrastructures, Java developers can build and run applications more quickly and inexpensively than ever before. The series explores the spectrum of technologies and tools that make this new Java development paradigm possible.

How does Java technology relate to web application development?

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:

  • The Mastering Grails column series is a guide to Grails, a modern web development framework written in Groovy (for more information about Groovy, see How does Java technology relate to dynamic languages and functional programming?). Grails seamlessly integrates legacy Java code while adding the flexibility and dynamism of a scripting language.
  • Ajax, a programming methodology that uses client-side scripting to exchange data with the web server, enables faster page updates without multiple page reloads. Get a handle on how Ajax applies to Java development in the multipart article "Ajax and Java development made simpler" and the Ajax for Java developers series. And visit the developerWorks Ajax resource center for lots more on Ajax.
  • JavaServer Faces (JSF) — a component of Java EE — helps you craft web applications by assembling reusable UI components in a page, connecting these components to an application data source, and wiring client-generated events to server-side event handlers. See JSF 2 fu for an introduction to the latest JSF version, followed by a series of in-depth articles.
  • You can also visit the developerWorks Web development zone for many more excellent web application development resources.

How does Java technology relate to cloud computing?

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:

How does Java technology relate to mobile application development?

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:

  • Java ME provides an environment for applications running on a broad range of mobile (and other resource-constrained) devices. It includes flexible user interfaces, a robust security model, built-in network protocols, and support for networked and offline applications that can be downloaded dynamically. Java ME applications are written once for a wide range of devices yet exploit each device's native capabilities. Learn more in the comprehensive four-part series of two tutorials and two companion articles that focus on Java ME and the Mobile Information Device Profile (MIDP).
  • The Java language is the tool of choice for developing applications for Google's mobile platform, Android. The Android runtime uses its own virtual machine, Dalvik — not the JVM that comes with Java ME. See "Introduction to Android development" for an overview, and learn more by visiting the developerWorks Mobile development technical topic.

How does Java technology relate to SOA and web services?

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 New to SOA and web services and New to XML pages on developerWorks will help you get oriented in these complex technologies.
  • The Java web services series explores Java web services frameworks and new layers of functionality built on top of web services.
  • "Build a RESTful web service" introduces the elegant architectural style called Representational State Transfer (REST) and shows how to use a Java-based framework for building RESTful web services.

How does Java technology relate to agile software development?

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:

How does Java technology relate to dynamic languages and functional programming?

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:

  • Are you a fan of (or intrigued by) functional programming? Check out the Functional thinking column series to explore functional programming concepts, frameworks that allow functional programming within the Java language, and functional programming languages that run on the JVM.
  • The busy Java developer's guide to Scala column series introduces Scala, a programming language that combines functional and object-oriented techniques for the JVM.
  • In "The Clojure programming language," get acquainted with Clojure, a Lisp dialect that runs on the Java platform.
  • The Groovy scripting language puts the features and libraries Java developers are most familiar with in an agile development framework that doesn't require compilation, eases syntactical constructs, and lets its scripts be used inside normal Java applications. Get a comprehensive look at what Groovy can do in the Practically Groovy column series.
  • The Java scripting API provides a simple way to invoke dozens of scripting languages using a small set of interfaces and concrete classes. It also lets you read and invoke external scripts at run time, enabling you to change a running application's behavior. Read more about it in the two-part article "Invoke dynamic languages dynamically."
  • Support for alternative languages has been a JVM feature for quite a while. Check out the alt.lang.jre column series to learn about using implementations of Rexx, Ruby, JavaScript, Python, and other languages on the Java platform.

How does Java technology relate to open source software development?

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

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

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:

Apache

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:

How can I learn Java programming skills and work on improving them?

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.

Tutorials and articles

Explore the Java technology zone's vast Technical library to discover a world of informative articles and hands-on Java tutorials.

Books, websites, and events

  • No better place to start than with "Essential Java resources," a comprehensive listing of must-have books, sites, blogs, events, and more.
  • Check out the Java technology zone's Events page to find conferences, seminars, workshops, and webcasts relevant to Java developers.

IBM technical training

Choose among a wide variety of online, classroom, and multimedia-based Java courses offered by IBM Global Services.

Certification training

IBM offers professional certification in such related technologies as WebSphere® development (for enterprise Java applications), IBM Rational® software, DB2®, XML, and SOA.

Forums

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.

What IBM tools and products are available for Java programmers?

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.

Free downloads

  • WebSphere Application Server Community Edition is an open source, lightweight Java EE application server that provides a readily accessible and flexible foundation for building Java applications.
  • Java Developer Kits are offered by IBM for creating and testing Java SE applets and applications on popular platforms including Windows®, Linux®, and AIX®, and Java ME applications on small mobile devices.
  • In the five-part series Java diagnostics, IBM style, learn how to get and use diagnostic tools available from IBM that help you solve problems in your Java applications.
  • Download free Eclipse Helios (Annual Release) bundles and IBM Rational software from one convenient location.
  • IBM Development Package for Eclipse is an unsupported Eclipse-based development tool that enables developers to build and run Java applications with its ready-to-run development environment out of the box.

IBM Rational tools

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:

IBM WebSphere

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 Information Management software

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.