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:
- Java SE (Java Platform, Standard Edition) for desktop and server applications
- Java EE (Java Platform, Enterprise Edition) for web and enterprise applications
- Java ME (Java Platform, Micro Edition) for applications running on resource-constrained devices
Along with the Java API, every full implementation of the Java platform includes:
- Development tools for compiling, running, monitoring, debugging, and documenting applications
- Standard mechanisms for deploying applications to users
- Toolkits for creating sophisticated graphical user interfaces (GUIs)
- Integration libraries that let programs access databases and manipulate remote objects
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:
- "Java PaaS shootout" explains the basic concepts underlying Java PaaS and compares three major offerings for Java developers.
- The Java development 2.0 series explores the many ways in which PaaS and other cloud services make it possible to assemble, test, run, and maintain
Java applications quickly and inexpensively:
- "Hello Google App Engine" will get you started quickly with Google's cloud-computing platform for Java developers. (For even more GAE background, see the three-part article "Google App Engine for Java.") In "Gaelyk for Google App Engine," read about a Groovy-based framework that makes rapid development on Google App Engine even faster.
- "You can borrow EC2 too," "Easy EC2," "Climb the Elastic Beanstalk," Cloud storage with Amazon's SimpleDB, Part 1 and Part 2," and "Cloud-based messaging with Amazon SQS" explore Amazon's cloud platform and some Java-based tools you can use with it.
- In "Git-commit your Java apps with Heroku's PaaS," read about a PaaS option that combines the Ruby language's approach to application development with Git's distributed deployment model, making both accessible to Java developers.
- Find out about accelerating business transformation with IBM SmartCloud capabilities.
- IBM PureSystems is an integrated system that uses built-in patterns to automate many of the complex cloud-related development, deployment, and configuration tasks.
- In "Get started with Hadoop-based data analytics on IBM SmartCloud Enterprise," see how cloud computing and Java-based big data analytics go together. Cloud provides the benefits of elasticity, on-demand access to resources, and utility-like billing while big data processing/analytics delivers a framework to take advantage of cloud resources.
- Be sure to visit the developerWorks Cloud computing technical topic for many more cloud resources.
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.
- JAX-WS is a fundamental technology for developing Java 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:
- Check out the Agile transformation topic on developerWorks.
- Explore the Evolutionary architecture and emergent design column series for a solid grounding in two important agile practices.
- The In pursuit of code quality column series is a comprehensive tour of test-driven Java development practices.
- Get an introduction to extreme programming— a form of agile software development — in the Demystifying extreme programming column series.
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."
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 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:
- "A tour of Eclipse Helios" gives you a look at the latest simultaneous release of multiple Eclipse projects.
- Read "Eclipse e4 highlights" to learn what's coming in the next generation of the Eclipse platform.
- Visit the developerWorks Eclipse IDE project resources for loads more Eclipse articles and tutorials.
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:
- Apache Ant is the de facto standard build tool for Java development. (See the tutorial "Invoking Apache Ant programmatically.")
- The Apache Maven build tool is designed to meet the challenges of modern software projects that require dynamic collaboration among project teams and depend on a mix of globally created and maintained components. (See the tutorial "Introduction to Apache Maven 2" and the article "5 things you didn't know about ... Apache Maven")
- Read "Using Apache Lucene to search text" to learn about Apache's full-featured, text search-engine library.
- "Introducing Apache Mahout" introduces an Apache project that's building scalable machine-learning libraries, and the follow-up article "Apache Mahout: Scalable machine learning for everyone" updates readers on the current version and on how to deploy and scale some of Mahout's more popular algorithms..
- Apache Tomcat is a popular web container that supports servlets and JavaServer Pages technology.
- The Apache Geronimo project is building a fully compliant Java EE application server based entirely on open source components. (Visit the developerWorks Apache Geronimo project resources for a wealth of Geronimo information.)
- Apache Derby is a relational database implemented entirely in the Java language. (Get started with "Developing with Apache Derby — Hitting the Trifecta: Introduction to Apache Derby" and visit the developerWorks Apache Derby project resources for tons more on Derby.)
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.
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.
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.
- 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:
- Rational Method Composer, a configurable software development process platform.
- Software configuration management tools such as ClearCase and ClearQuest.
- Testing tools such as Rational Robot, Quality Manager, and Test RealTime.
- Requirements and analysis tools such as RequisitePro.
- Visual modeling and development tools such as Rational Systems Developer, PurifyPlus, and Rose Technical Developer.
- Rational Application Developer for WebSphere Software, a rapid application development tool for developing, analyzing, testing, profiling, and deploying web, SOA, Java SE, Java EE, and portal applications on the IBM WebSphere platform.
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:
- Visit the New to WebSphere page and the rest of the developerWorks WebSphere technical resources to get up to speed with this key integration software platform from IBM.
- WebSphere Enterprise Service Bus provides web services connectivity, Java Message Service (JMS) messaging, and service-oriented integration to power your SOA.
- WebSphere Process Server and WebSphere Integration Developer deliver a rich process integration platform for enterprise services based on SOA.
- WebSphere sMash is a platform for building and running dynamic Web 2.0-based applications using SOA principles.
- Visit the WebSphere development tools area for the latest technical and how-to information for using WebSphere tools to create, test, and deploy enterprise-scale Java EE applications.
- The WebSphere Portal zone provides portlets, tools, tutorials, and news for developers who use WebSphere Portal technology.
- WebSphere MQ is an application programming service that enables application programs to communicate.
- WebSphere MQ Everyplace allows access to enterprise data for mobile workers and remote devices with assured message delivery.
- Branch Transformation Toolkit for WebSphere Studio is an application framework and a set of specialized Eclipse-based tools that accelerate the build phase for multitiered front office transactional applications.
- WebSphere Message Broker delivers an advanced Enterprise Service Bus providing connectivity and universal data transformation for both standard and nonstandards-based applications and services to power SOAs.
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.