The Wayback Machine - https://web.archive.org/web/20120402051314/http://www.ibm.com/developerworks/java/newto/
Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

New to Java™ programming? This page provides an overview of Java technology basics and explains how the technology fits into the context of contemporary software development. Links to relevant introductory developerWorks content, other educational resources, 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 Application Programming Interface (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 Java platform comes in three versions (see What are the three Java platform versions? below). Along with the Java API, every full implementation of the Java platform includes:

Portability, versatility, scalability, and open standards

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, and special implementations of Ruby and Python give developers the versatility to program for the JVM in a dynamic or functional language. (For more information, see How does Java technology relate to dynamic languages and functional programming? below.

The Java language and platform scale remarkably well. Applications can easily be written (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 supporting open standards in the enterprise, Java technology can use XML and web services to help share information and applications across business lines (see How does Java technology relate to SOA/web services? below). Java technology serves as the backbone of many IBM products and technical consulting services (see What IBM tools and products are available for Java programmers? below) 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 under the GNU general public license version 2 (GPLv2), commonly called OpenJDK. The Java platform is stable and its community vibrant, but Java technology continues to evolve, and fundamental changes are redefining the Java industry.

Thanks to mature open source frameworks and reliable for-rent deployment infrastructures, it's now possible to assemble, test, run, and maintain Java applications much more quickly and inexpensively than ever before. The Java development 2.0 column series explores the spectrum of technologies and tools that make this new Java development paradigm possible. (Also see How does Java technology relate to cloud computing? and How does Java technology relate to open source software development, below.)

In "Java platform roundtable, Spring 2010," nine leading thinkers in the Java community candidly discuss the current and emerging state of Java technology, culture, and industry.

Keep up with newest trends in Java technology via your MP3 player. Tune in to the Java technology zone technical podcast series to hear interviews with experts on important topics, technologies, and tools.

What are the three Java platform versions?

Three editions of the Java platform make it easier for software developers, service providers, and device manufacturers to target specific markets. The developerWorks Java technology zone maintains a complete glossary of the standard Java component technologies for the platform editions. Many of these components, optional packages, and extensions — the intricate parts that make up the whole — are available across the three editions.

Java SE (Java Platform, Standard Edition)

Java SE lets you develop and deploy Java applications on desktops and servers, as well as embedded and real-time environments. It includes classes that support the development of Java web services and provides the foundation for Java Platform, Enterprise Edition (Java EE). Java SE 6 is the current version of the Java SE platform. Explore Java SE in the following articles on developerWorks:

Learn about some of the important component technologies in Java SE:

Java EE (Java Platform, Enterprise Edition)

The enterprise version of the Java Platform helps you develop and deploy portable, robust, scalable, and secure server-side Java applications. Building on the foundation of Java SE, Java EE provides web services, component-model, management, and communications APIs for implementing enterprise-class service-oriented architecture (SOA) and Web 2.0 applications. Java EE 6 is the latest Java EE version. "Java EE 5: Power and productivity with less complexity" introduces you to version 5 of the Java EE platform — a major overhaul designed to enhance developer productivity through a simpler Java EE programming model (retained in Java EE 6) than in previous versions.

Learn about some of the important component technologies in Java EE:

Java ME (Java Platform, Micro Edition)

Java ME provides an environment for applications running on a broad range of mobile and embedded devices, such as mobile phones, PDAs, TV set-top boxes, and printers. The Java ME platform includes flexible user interfaces, a robust security model, a broad range of built-in network protocols, and extensive support for networked and offline applications that can be downloaded dynamically. Applications based on Java ME specifications are written once for a wide range of devices yet exploit each device's native capabilities.

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:

How does Java technology relate to SOA/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:

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 expanding to support developers who want to build, test, or deploy Java applications on the cloud.

Learn more about it:

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:

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. Many of the technologies discussed in this article are open source.

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.

The OpenJDK community is currently focused on the next major revision of the Java platform, Java 7, which is expected to include a number of the features noted in "A new era in Java technology" (some will likely end up in Java 8 per Oracle's latest roadmap) and the two-part article, "An NIO.2 primer."

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:

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:

Spring

The popular Spring framework is a layered framework for Java EE application development:

How can I improve my Java programming skills?

You can take two routes to 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

Books, websites, and events

Games

IBM technical training

Certification training

Forums

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

IBM Rational tools

IBM Rational® tools are built on the Eclipse 3.0 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 needed 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 data warehousing, data analysis, data mining, media asset management, enterprise content management, and information integration. IBM Information Management software supports Java programming, including client applications, server-side capabilities, and tools to make development and deployment easier:

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

Morty Proxy This is a proxified and sanitized view of the page, visit original site.