Java SE Desktop Overview

Desktop Java technologies can be used to create rich client applications and applets that are fast, secure, and portable. This page introduces all of these technologies.

Most of the technologies are included as part of Java SE (also known as the JRE, or Java Runtime Environment), which is pre-installed on over 90% of all desktop systems on a wide range of operating systems. Other Desktop Java technologies are available as either separate downloadable Java extensions, or as open source projects on Finally, the Netbeans IDE with its integrated GUI builder brings everything together, allowing you to easily build your desktop application.


  • JavaDesktop Forums on This is our prime spot for discussing all things desktop. It mixes Q&A with advanced developer discussions, such as the direction and future of Java on the desktop. Many of the Desktop Java engineers at Oracle participate on these forums.
  • Java Forums on the OTN Forums: More of a Q&A forum, this is a great resource for both beginning and advanced developers.

Technology Overview

  • Java Web Start / JNLP
  • Java Web Start software provides a flexible and robust deployment solution for Java technology-based applications based on the Java Community Process program (JCP). The technology is being developed through the JCP program as JSR-56: The Java Network Launching Protocol & API (JNLP), which provides a browser-independent architecture for deploying Java 2 technology-based applications to the client desktop.

    Included in the Java SE platform  

  • Java Plug-In
  • Java Plug-in technology, included as part of the Java 2 Runtime Environment, Standard Edition (JRE), establishes a connection between popular browsers and the Java platform. This connection enables applets on Web sites to be run within a browser on the desktop.

    Included in the Java SE platform  

  • Swing
  • The Swing API provides a comprehensive set of GUI (Graphical User Interface) components and services which enables the development of commercial-quality desktop and Internet/Intranet applications. Swing is built on top of many of the other Desktop Java technologies found on this page, including JavaBeans, AWT, Java2D, Accessibility, and Internationalization. A great place to jump into Swing programming is The Swing Tutorial

    Included in the Java SE platform  

  • Java 2D
  • The Java 2D API is a set of classes for advanced 2D graphics and imaging, encompassing line art, text, and images in a single comprehensive model. The API provides extensive support for image compositing and alpha channel images, a set of classes to provide accurate color space definition and conversion, and a rich set of display-oriented imaging operators.

    Included in the Java SE platform  

  • Java 3D
  • Java 3D API provides a set of object-oriented interfaces that support a simple, high-level programming model you can use to build, render, and control the behavior of 3D objects and visual environments. With the Java 3D API, you can incorporate high-quality, scalable, platform-independent 3D graphics into applications and applets based on Java technology.

  • Java Sound
  • The Java Sound API specification provides low-level support for audio operations such as audio playback and capture (recording), mixing, MIDI sequencing, and MIDI synthesis in an extensible, flexible framework. Java Sound is Included in Java 2 Platform, Standard Edition (J2SE), version 1.3.x and higher. Read More

    Included in the Java SE platform  

  • Java Bindings for OpenGL (JOGL)
  • JOGL is a Java programming language binding for the OpenGL 3D graphics API. It supports integration with the Java platform's AWT and Swing widget sets while providing a minimal and easy-to-use API that handles many of the issues associated with building multithreaded OpenGL applications. JOGL provides access to the latest OpenGL routines (OpenGL 2.0 with vendor extensions) as well as platform-independent access to hardware-accelerated offscreen rendering ("pbuffers"). JOGL also provides some of the most popular features introduced by other Java bindings for OpenGL like GL4Java, LWJGL and Magician, including a composable pipeline model which can provide faster debugging for Java-based OpenGL applications than the analogous C program.

  • Java Advanced Imaging (JAI)
  • The Java Advanced Imaging API provides a set of object-oriented interfaces that support a simple, high-level programming model which lets you manipulate images easily. Read More

    Download JAI 

    Optional Java SE API

  • AWT (Abstract Window Toolkit)
  • The Abstract Window Toolkit (AWT) supports Graphical User Interface (GUI) programming. AWT features the core foundation of the Java SE desktop libraries. It includes a robust event-handling model; graphics and imaging tools including shape, color, and font classes; layout managers for flexible window layouts; data transfer classes (including drag and drop) that allow cut and paste through the native platform clipboard. AWT also includes a basic set of user interface components, such as windows, buttons, etc. Swing is built on top of AWT, and in most cases the Swing high-level components are recommended instead of those in AWT. However, there are many APIs in AWT that are important to understand when programming in Swing. Read More

    Included in the Java SE platform  

  • Internationalization
  • Internationalization is the process of designing software so that it can be adapted (localized) to various languages and regions easily, cost-effectively, and in particular without engineering changes to the software. Localization is performed by simply adding locale-specific components, such as translated text, data describing locale-specific behavior, fonts, and input methods. In the Java 2 Platform, internationalization support is fully integrated into the classes and packages that provide language- or culture-dependent functionality. Read More

    Included in the Java SE platform  

  • JavaBeans
  • JavaBeans technology is the component architecture for the Java 2 Platform, Standard Edition (J2SE). JavaBeans components (beans) are reusable software programs that you can develop and assemble easily to create sophisticated applications. Read More

    Included in the Java SE platform  

  • JavaHelp System
  • JavaHelp software is a full-featured, platform-independent, extensible help system that enables you to incorporate online help in applets, components, applications, operating systems, and devices. Authors can also use the JavaHelp software to deliver online documentation for the Web and corporate intranet. Written entirely in the Java programming language, the JavaHelp system can run on any platform and browser that supports the Java Runtime Environment (JRE), making it ideal for use in a heterogeneous environment such as the Web and corporate intranet.

  • Accessibility
  • Since 1973 when Section 508 of the Federal Rehabilitation Act was established, US Federal agencies have been required to purchase electronic and information technology products and services that meet the standards of Section 508. For the Java technology developer, accessibility means building the services and support into an application that enable people with disabilities to use the software. Java accessibility technologies are implemented in the Java Foundation Classes (JFC) and they comprise two separate packages: Java Accessibility API and the Java Accessibility Utilities. Read More

    Included in the Java SE platform  

  • JDesktop Integration Components

The JDesktop Integration Components (JDIC) project aims to make Java technology-based applications ("Java applications") first-class citizens of current desktop platforms without sacrificing platform independence. Its mission is to enable seamless desktop/Java integration.

JDIC provides Java applications with access to functionalities and facilities provided by the native desktop. It consists of a collection of Java packages and tools. JDIC supports a variety of features such as embedding the native browser, launching the desktop applications, creating tray icons on the desktop, registering file type associations, creating JNLP installer packages, etc. Many new features are contributed as incubator projects from the community.