The developerWorks Java™ technology zone contains hundreds
of articles, tutorials, tips, and community resources to help software developers
make the most of the Java platform and related technologies. But when you're looking for a place to get started, sifting through the volume of resources available on the Web today can be overwhelming. This page provides an overview of Java technology basics within the overall context of the language as well as the evolving Java platform. It includes starting points for further investigation in the form of links to relevant introductory developerWorks content, other educational resources, and IBM downloads and products.
Java technology is both a programming language and a platform:
The Java programming language is a high-level, object-oriented language. The
language is unusual because Java programs are both compiled and
interpreted. Compilation, which happens once per program, translates Java code
into an intermediate language called Java bytecode. Bytecode is then parsed and run (interpreted) by the Java Virtual Machine (JVM) — a translator between the language and the underlying operating system and hardware. All implementations of the programming language must emulate the JVM, enabling Java programs to run on any system that has a version of the JVM.
The Java platform is a software-only platform that runs on top of various
hardware platforms. It comes in three versions (see Multiple
editions of the Java platform, below). It consists of the JVM and the Java Application
Programming Interface (API) — a large collection of ready-made software
components (classes) that ease the development and deployment of applets and
applications. The Java API spans everything from basic objects to networking and
security and from XML generation to Web services. It is grouped into libraries — known as packages — of related classes and interfaces.
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
User interface toolkits that let you create sophisticated graphical user interfaces (GUIs)
Integration libraries that let programs access databases and manipulate remote objects
The JVM has also proven to be a robust platform for executing languages other than the
Java 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. JavaFX Script is another addition to the evolving Java platform and language. (For more information, see How does Java technology relate to dynamic languages and functional programming? below.)
Java technology was developed by Sun Microsystems, which is currently under agreement to be purchased by 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). (For more information, see How does Java technology relate to open source software development? below.)
The main benefit of the Java language 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 Java language and platform scale impressively. Applications can be written easily (or adapted from existing Java desktop applications) for devices with limited resources. Scaling up, the language is an ideal framework for server-side Web programming, extending a user's computing power from the desktop to the Web's resources. Because it was designed to run in a secure manner over networks, the language affords this level of security when operating over the Internet. Web components are supported by runtime platforms called Web containers, whose services include request dispatching, security, concurrency, life-cycle management, and access to APIs that handle operations such as naming, transactions, and e-mail. 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; they also provide an application-deployment environment for enterprise applications, with capabilities for transaction management, security, clustering, performance, availability, connectivity, and scalability.
Learn more about IBM's Smart SOA
approach to Service Oriented Architecture, a business-centric IT architectural style that supports integrating your business as linked, repeatable business tasks or services. To help you get started, IBM also offers a series of SOA Entry Points for both business and IT users.
IBM's Business Process
Management enabled by SOA offers software and services that help organizations
optimize business performance by discovering, documenting, automating, and continuously improving business processes. Offerings are based on a flexible, extensible, open standards-based software — including Java technology — and hardware infrastructure.
IBM WebSphere sMash
is an IBM project focused on agile development of Web 2.0 applications based on SOA.
WebSphere sMash introduces a simple environment for creating, assembling, and
executing applications based on popular Web technologies, including a scripting
runtime for Groovy and PHP, with APIs optimized for producing REST-style services,
integration mashups, and Web interfaces. Project Zero is the development
community for WebSphere sMash, and also offers a no-charge development platform.
Multiple editions of the Java platform
Three editions of the Java platform make it easier for software developers, service providers, and device manufacturers to target specific markets:
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.
Java SE includes classes that support the development of Java Web services and
provides the foundation for Java Platform, Enterprise Edition (Java EE). Java SE 6
("Mustang") is the current version of the Java SE platform and has brought essential
performance and deployment to the platform,
particularly on the client side. The update release was an interim step toward Java
7, expected in fall 2010, which promises more extensive changes to the
Java platform and language. Many Java developers and development organizations still use Java SE 5, also known as
Java 5.0 or "Tiger."
The Taming Tiger column series provides an excellent overview of Java SE 5. Many existing Java applications are based on Java SE 5, and most of the concepts in the series are relevant to Java SE 6 programming.
"Create rich applications with JavaFX Script" introduces a scripting language that runs on top of Java SE 6 and makes it easy to code sophisticated rich Internet applications. (See JavaFX below for more about the JavaFX family of tools.)
Two articles in the Java
theory and practice series are dedicated to one of the highly anticipated changes coming in
Java 7: fork-join parallelism. Read "Stick a fork in it,
Part 1" and Part 2 to learn
how to exploit fine-grained parallelism using the fork-join framework.
Java EE (Java Platform, Enterprise Edition). The enterprise version is geared
specifically to help 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 applications. Java EE 6, released late in 2009, greatly improves the Web tier technologies,
including Servlet 3.0 and JSF
2. Also of note, is the reduced complexity in EJB 3.1.
"Java EE meets Web 2.0" is an honest look at some of the downsides of using Java EE for Web 2.0 development with suggestions for using asynchronous, event-driven architectures to work around them.
The Transaction strategies series digs into one of the cornerstones of Java enterprise development: transaction processing.
Check out The Spring series to learn about this very popular framework for building lightweight, robust Java EE applications. Also see "Introduction to Spring 2 and JPA" to find out how the Spring Framework implements the all-important Java Persistence API.
Grails is another groundbreaking Web development framework that supports and simplifies select Java EE APIs. Read "Mastering Grails: Grails in the enterprise" to learn how Grails works with Java EE's Java Management Extensions API, among others.
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.
Learn more in the comprehensive four-part series of two tutorials and two companion articles that focus on J2ME and the Mobile Information Device Profile (MIDP).
JavaFX
JavaFX is not quite another edition of the Java platform, nor is it entirely separate. JavaFX is built on top of the JVM and interacts seamlessly with Java SE 6 classes and functionality. JavaFX provides an integrated development environment for building rich, immersive multimedia applications for desktop, Web, and television. The JavaFX platforms includes the JavaFX SDK 1.2 and NetBeans IDE 6.5.1, and JavaFX Script, a declarative scripting language. (See "Create rich applications with JavaFX Script" to learn more about JavaFX and JavaFX Script.)
The developerWorks Java technology zone maintains a complete glossary of the standard Java component technologies. The following is a partial list of components, optional packages, and extensions for each edition of the platform — the intricate parts that make up the whole — complete with a short description and a link to a resource to demonstrate its place in the Java development world. Note that many of the following resources are available across the three editions.
JavaHelp is a platform-independent, extensible help system that enables developers and authors to incorporate online help in applets, components, applications, operating systems, and devices and to deliver Web-based online documentation. (See "Lend a helping hand to your Java applications.")
Java Native Interface (JNI) lets Java code that runs inside a JVM interoperate with applications and libraries written in other programming languages. (See "Best practices for using the Java Native Interface.")
Java Platform Debugger Architecture (JPDA) is the debugging support infrastructure for Java SE. (See "The future of software development.")
Java 2D API is a set of classes for advanced 2D graphics and imaging that provides extensive support for image compositing and alpha channel images, a set of classes to provide accurate color space definition and conversion, and a set of display-oriented imaging operators. (See the tutorial "Introduction to Java 2D.")
Java Web Start helps you simplify deployment of Java applications by letting users download and launch full-featured applications (such as spreadsheets) with a single click, without going through installation procedures. (See "Java Web Start.")
Certification Path API provides a set of APIs for creating, building, and verifying certification paths (also known as "certificate chains") for securely establishing the mapping of a public key to a subject. (See "Generate certificate chains for testing Java applications.")
Java Database Connectivity (JDBC) is an API that lets you access most tabular data sources from within Java code, providing cross-DBMS connectivity to a wide range of SQL databases and access to other tabular data sources, such as spreadsheets or flat files. (See "What's new in JDBC 3.0" and the tutorial "Understanding JDBC.")
Java Cryptography Extension (JCE) is a set of packages that provides a framework and implementations for encryption, key generation and agreement, and Message Authentication Code (MAC) algorithms. It provides encryption support for symmetric, asymmetric, block, and stream ciphers, and it supports secure streams and sealed objects. (See the tutorial "Java security: Crypto basics.")
Java Data Objects (JDO) is a standard interface-based Java model
abstraction of persistence that lets programmers directly store their Java domain
model instances into the persistent store (database), potentially replacing such methods as direct file I/O, serialization, JDBC, and EJB Bean Managed Persistence (BMP) or Container Managed Persistence (CMP) Entity Beans. (See the tutorial "Hands-on Java Data Objects.")
Java Management Extensions (JMX) provides tools for building distributed, Web-based, modular and dynamic applications for managing and monitoring devices, applications, and service-driven networks. (See "Using Java platform management beans.")
Java Media Framework (JMF) enables audio, video, and other time-based media to be added to Java applications and applets. (See the tutorial "Java Media Framework basics.")
Java Naming and Directory Interface (JNDI) provides Java applications with a unified interface to multiple naming and directory services in the enterprise, enabling seamless connectivity to heterogeneous enterprise naming and directory services. (See "Industrial-strength JNDI optimization"; also try "Navigate the JNDI maze.")
Java Secure Socket Extensions (JSSE) is a set of packages that enables secure Internet communications, implementing a Java version of SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols and including functionality for data encryption, server authentication, message integrity, and optional client authentication. (See "Java security with JAAS and JSSE"; also try the tutorial "Using JSSE for secure socket communication.")
Java 3D is an API developers can use to incorporate scalable, platform-independent 3D graphics into Java applications easily by providing a set of object-oriented interfaces that support a simple, high-level programming model. (See the tutorial "Java 3D joy ride.")
Metadata Facility lets you mark classes, interfaces, fields, and methods as having particular attributes so that they can be processed in special ways by development tools, deployment tools, or runtime libraries. (See "Annotations in Tiger, Part 1: Add metadata to Java code.")
Java Content Repository API is an API for accessing content repositories in Java SE independently of implementation. A content repository is a high-level information-management system that is a superset of traditional data repositories. (See "Introducing the Java Content Repository API.")
Enumerations are a type that lets you represent specific pieces of data as constants, all in a type-safe manner. (See "Getting started with enumerated types.")
Concurrency Utilities are a set of medium-level utilities that provide functionality commonly needed in concurrent programs. (See the tutorial "Concurrency in JDK 5.0.")
Java API for XML Processing (JAXP) lets Java applications parse and transform XML documents independently of a particular XML processing implementation and gives you the flexibility to swap between XML processors without making application code changes. Java API for XML Binding (JAXB) lets you automate the mapping between XML documents and Java objects. (See the three-part tutorial "XML programming in Java technology"; dig deeper into JAXP with "All about JAXP, Part 1" and "All about JAXP, Part 2"; explore further in the Practical data binding article series; also check out the developerWorks XML zone.)
SOAP with Attachments API for Java (SAAJ) enables developers to produce and consume messages conforming to the SOAP 1.1 specification and SOAP with Attachments note. (Read "Send and receive SOAP messages with SAAJ".)
JavaMail is an API that provides a set of abstract classes that model a mail system. (See the tutorial "Fundamentals of JavaMail API.")
Java Message Service (JMS) is an API that enables the development of portable, message-based applications for the Java platform by defining a common set of messaging concepts and programming strategies for all JMS technology-compliant messaging systems. (See the tutorial "Introducing the Java Message Service.")
JavaServer Faces (JSF) provides a programming model that 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 the three-part
series "JSF2
fu"
and explore the JSF
for nonbelievers, which provides fundamental JSF guidance (though on a previous
version); also see the article "Facelets fits JSF like a glove.")
JavaServer Pages (JSP) lets Web developers rapidly develop and easily
maintain dynamic, platform-independent Web pages with separate user interfaces and content generation so designers can change the page layout without altering the dynamic content. The technology uses XML-like tags that encapsulate the logic that generates the content for the page. (See the tutorial "Introduction to JavaServer Pages technology"; also see the series JSP best practices.)
Standard Tag Library for JavaServer Pages (JSTL) is a collection of custom tags that enable many common Web site functions in a standardized format. (See the four-part article series "A JSTL primer.")
Java Servlets, now version 3.0 and included in JEE 6, extend and
enhance the reach of Web servers by providing a component-based,
platform-independent method for building Web-based applications. Servlet 3.0
improves extensibility.
J2EE Management Specification (JMX) defines a management information model for the J2EE platform. The J2EE Management Model is designed to be interoperable with many management systems and protocols and includes standard mappings of the model to the Common Information Model (CIM), an SNMP Management Information Base (MIB), and to the Java object model through a server resident EJB component, the J2EE Management EJB Component (MEJB). (See "From black boxes to enterprises: Management, JMX 1.1 style and "Java theory and practice: Instrumenting applications with JMX" to learn more.)
Java Transaction API (JTA) is a high-level, implementation- and protocol-independent API that lets applications and application servers access transactions. Java Transaction Service (JTS) specifies the implementation of a Transaction Manager that supports JTA and implements the Java mapping of the OMG Object Transaction Service (OTS) 1.1 specification at the level below the API. JTS propagates transactions using the Internet Inter-ORB Protocol (IIOP). (See "Understanding JTS — An introduction to transactions.")
Connected Device Configuration (CDC) is a standards-based framework for building and delivering applications that can be shared across a range of network-connected consumer and embedded devices. (See "Securing wireless J2ME.")
Mobile 3D Graphics API for J2ME (M3G) is a lightweight, interactive 3D graphics API that sits alongside J2ME and MIDP as an optional package. (See the two-part article "3D graphics for Java mobile devices.")
The Java language has long been a mainstay of Web development, and recent years have seen an explosion of frameworks and tools that streamline Java Web development and facilitate the creation of rich, interactive Web 2.0 applications.
Learn more about Web development using the Java language and platform:
Java development 2.0 is a series focusing on the evolution of the Java platform, with columns devoted to Java-powered cloud computing platforms, databases and technologies that are changing the future right now.
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 you as a Java developer in the multi-part article, "Ajax and Java development made simpler" and the Ajax for Java developers series. And visit the developerWorks Ajax resource center for more on Ajax. Also see the three-article series JavaScript EE which introduces the javax.script API.
JavaServer Faces (JSF) is a programming model that helps developers 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 the two-part tutorial "Getting
started with JavaServer Faces and JSF2 fu")
Some of today's hottest Web platforms, infrastructures and technologies are based on
the
Java platform or at least leverage it mightily. Learn more about them:
A service-oriented architecture is a component model that relates the functional units of an application (known as services, hence Web services) through well-defined interfaces and contracts between the services. The interface is defined in a neutral manner 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 the 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.
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 Web services architectural style called Representational State Transfer (REST) and shows how to use a Java framework for building RESTful Web services.
Understanding the Java APIs for XML-Based RPC (JAX-RPC) is an important step toward writing efficient and effective Web services in the Java language. The tutorial "Build an RPC service and client using JAX-RPC" is a great place to start.
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.
Other frameworks are shaping the way Java frameworks are built, and the concepts other languages use can inform your Java programming. The Crossing borders column series discusses programming concepts and techniques that differ from Java development but are still relevant to it.
The Groovy scripting language puts the features and libraries Java developers are most
familiar with into an agile development framework that doesn't require compilation, eases syntactical constructs, and lets its scripts be used inside normal Java applications. The developerWorks Practically Groovy column series is a first stop for learning what Groovy can do to speed up your application development experience. Groovy fanatics might also want to check out the Mastering Grails series.
The Java Scripting API, new in Java SE 6 and backward-compatible to Java SE 5, 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 runtime, enabling you to change a running application's behavior. Read more about it in the two-part article "Invoke dynamic languages dynamically."
Are you a fan of functional programming? 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.
Perhaps you're curious about Clojure? This Lisp dialect is a functional language with features that are particularly valued for their effectiveness in concurrency programming. Learn more about Clojure by reading "The Clojure programming language," which also introduces the Clojure plug-in for Eclipse.
JavaFX Script, part of the Java FX family of technologies, is a declarative scripting language designed to be used in building next-generation rich Internet applications. Read the developerWorks guide to JavaFX Script essentials to learn more about it.
The Java language itself is evolving, in part to keep up with the newer possibilities
and trends introduced by dynamic languages. "The closures debate" addresses one of the most important (and controversial) updates proposed for Java 7; "Java theory and practice: Going wild with generics" discusses generics, which were introduced in Java 5.
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.
In addition to ever-expanding support for alternate languages on the standard JVM, the
Da Vinci Machine project has been
established to prototype extensions to the JVM that will enable it to run non-Java
languages faster and more efficiently. The Da Vinci Machine project is part of OpenJDK, an open-source implementation of Java SE.
Myriad open source projects extend Java technology with libraries, tools, frameworks, applications, and application servers to help programmers harness this powerful technology. Various open source technologies have been incorporated into the Java platform itself, and others are perennial favorites (and in some cases de facto standards) for Java developers.
Learn more about some of the prominent open source technologies for Java programming:
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:
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.")
Apache Solr is an enterprise-ready, Lucene-based search server that supports faceted searching, hit highlighting, and multiple output formats. (See "Search
smarter with Apache Solr" for an introduction.)
The need for machine-learning techniques like clustering, collaborative filtering,
and categorization has never been greater, be it for finding commonalities among
large groups of people or automatically tagging large volumes of Web content. The Apache Mahout project aims to make building intelligent applications easier and faster. (See "Introducing
Apache Mahout" for an introduction to the basic concepts of machine learning and details
for how to use Mahout to cluster documents, make recommendations, and organize content.)
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 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:
AspectJ is an aspect-oriented extension to
the Java language that can be used to modularize cross-cutting concerns, such as logging and exception handling. (See the tutorial "An introduction to AOP" and explore further in several articles in the AOP at work series.)
Spring
Security — formerly known as the Acegi Security System for Spring — is a
powerful, flexible security solution for enterprise applications developed using the Spring Framework. Learn more in the four-part article "Securing Java applications with Acegi".
In open sourcing the Java platform, Sun Microsystems seeded three new community projects under the java.net umbrella:
You can take two routes to improving your skills: take a course (for certification or just for 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 proof to prospective employers that you possess the skills needed to build the technology they require. 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:
Translating design theory into practical application(s) is the focus of the Java theory and practice series.
Java programmers are wise to design applications with integrated bug detection and
testing. developerWorks offers a collection of columns on Java debugging (focusing on
a tool known as bug patterns) called Diagnosing Java code. Other helpful resources for learning about this topic include Andrew Glover's In pursuit of code quality column series and the Testing with leverage articles from Brian Goetz. "Kill bugs dead" is an article by the same author, and "Automation for the people is a column series that introduces tools for automating the design and development process.
Java development 2.0 is a column series dedicated to the changing landscape of Java technology. The series is particularly good for learning about Java-compatible open source frameworks and deployment infrastructures that let you assemble, test, run, and maintain Java applications quickly and inexpensively, without engaging the Java platform in its entirety.
No better place to start than with "Essential Java Resources," a comprehensive listing of must-have books, sites, blogs, events, and more.
Community and networking
My
developerWorks is a new way to connect and interact with your fellow developers.
Creating your own personal profile and custom home page gets you instant access to the
people, feeds, tags, bookmarks, blogs, groups, forums, etc. that you care about.
Here's some of what My developerWorks has to offer:
Groups: Micro user communities focused
on software projects, development activity, and other technical subjects of interest. Join a group or start your own.
Blogs: Follow technical experts, software projects, or personal musings on technology
Forums: A place to connect directly with other developers and exchanges questions and knowledge. Forums for the Java technology zone focus on topics like code quality, server-side Java programming, and Java security.
Wikis: An easy way for you and your peers to share information on topics of interest to developers. Use the wikis to get the information you need. Help make the wikis a valuable resource for the entire developerWorks community.
Choose among a wide variety of online, classroom, and multimedia-based Java courses offered by IBM Global Services.
Certification training
If you're thinking about certifying your Java skills, you can take several exams. Visit the Java Certification site to locate certification training resources.
IBM offers professional
certification in such related technologies as WebSphere development (for enterprise
Java applications), IBM Rational software, DB2, XML, and SOA.
No Fluff, Just Stuff: Nowhere else will the
Java developer find the same intense focus on technical topics at a better
price point or held in a more convenient location: Your home town.
JavaOne: Though its
continued existence is debated due to the Oracle acquisition of Sun, no other gathering brings quite
as many key Java movers-and-shakers together into one place like JavaOne
does. If it lives on, you should attend at least once.
JAOO or its sister conference,
QCon: If you're looking to stretch your
viewpoint, these conferences offer a cross-technology opportunity, in addition to
being more convenient to European developers. Sit in on a Java session in the morning, chat with some
C++ developers over lunch, catch the latest developments on Microsoft's
Silverlight (or whatever else is new) in the afternoon, and share some beer
with Smalltalkers in the evening.
Devoxx: The winter
version of JavaOne? This conference in Antwerp, Belgium retains great
speakers and has been, of late, the place to find out what Sun is up to
with regard to Java 7.
IBM is a leading innovator in the use of Java technology. The section below highlights tools and products IBM offers to Java developers.
No-charge downloads
The Kick-start Your Java Apps suite — DB2 Express-C, WebSphere Application Server Community Edition, and the Eclipse IDE — gives you everything you need to get simple Java Web applications and Web services up and running today.
Java Developer Kits are offered by IBM for creating and testing Java SE applets and applications and Java ME applications on popular platforms, including Windows, Linux, and AIX.
IBM Monitoring and Diagnostic Tools for Java is a complete diagnostic toolset that assists in the understanding, monitoring, and problem diagnosis of applications and deployments running IBM Runtime Environments for Java. The toolset consists of:
Health Center: A lightweight tool that monitors active IBM Virtual
Machines for Java with minimal performance overhead.
Memory Analyzer: A powerful and flexible tool for analyzing Java heap
memory using system dump or heap dump snapshots of a Java process.
Garbage Collection and Memory Visualizer (GCMV): Used to monitor and fine-tune Java heap size and garbage collection performance.
Dump Analyzer: A tool that helps you determine the cause of a Java
application failures using an operating system level dump.
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.
Simultaneous release projects from Eclipse lets you download free Eclipse open source software bundles from developerWorks, including Galileo, Ganymede, Callisto, and Europa simultaneous release projects.
Java technology on alphaWorks is a
virtual warehouse of emerging IBM-generated Java-related technologies, including APIs,
integrated development environments and devkits, components, reference
implementations, and utilities. Here are just a few:
Analysis and Generation of Ant Build File. A tool that helps analyze and generate a testable Ant build file for Java EE and SCA projects developed using Eclipse, Rational, or WebSphere IDEs.
HeapAnalyzer. A graphical tool for discovering possible Java heap leaks.
Toolkit for MPEG-4. A set of Java classes and APIs with sample applications for generating MPEG-4 content for use with MPEG-4-compliant devices.
Secure Shell Library for Java. A
lightweight implementation of the Internet Engineering Task Force (IETF) Secure Shell (SSH-2) protocol for secure remote log-in and other secure network services over an unsecure network.
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:
Rational Application Developer for WebSphere Software, a rapid application development tool for developing, analyzing, testing, profiling, and deploying Web, SOA, Java, J2EE, 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:
WebSphere sMash is a platform for building and running dynamic Web 2.0-based applications using SOA principles, based on Project Zero.
Visit the WebSphere development tools area for latest technical and how-to information for using WebSphere tools to create, test, and deploy enterprise-scale Java EE applications.
Rational Application
Developer for WebSphere Software is a rapid application development tool for
developing, analyzing, testing, profiling, and deploying Web, SOA, Java, J2EE, and
portal applications on an IBM WebSphere platform.
The WebSphere
Portal zone provides portlets, tools, tutorials, and news for developers who use the
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 multi-tiered 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 is 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:
DB2 UDB is a natural fit for an open, standards-based business.
IBM Informix software delivers superior database performance for transaction-intensive environments.
IBM InfoSphere integrates and transforms data improving productivity, flexibility and performance, so you have the right information for your business.