Home » Desktop Java Tutorials

Desktop Java Tutorials

Java 8 Tutorials

In this detailed Resource page, we feature an abundance of Desktop Java Tutorials!

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 java.net. Finally, the Netbeans IDE with its integrated GUI builder brings everything together, allowing you to easily build your desktop application.

Technology Overview


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.

Here are some examples:

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.

Here are some examples:

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.

Here are some examples:


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.

Here are some examples:


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.

Here are some examples:


JavaFX is a software platform for creating and delivering desktop applications, as well as rich Internet applications (RIAs) that can run across a wide variety of devices. JavaFX is intended to replace Swing as the standard GUI library for Java SE, but both will be included for the foreseeable future. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS. JavaFX is no longer bundled with the latest Java, nor will be supported by Oracle, while it still is supported for the current long-term version Java SE 8 through March 2022.

Here are some examples:


Xuggler is the easy way to uncompress, modify, and re-compress any media file (or stream) from Java.

Xuggler consists of a set of Java and Native libraries, and comes with two different APIs:

  • MediaTools API A simple API for encoding and decoding audio and video.
  • Xuggler API An advanced-use API (accessible from MediaTools) for encoding and decoding audio and video.

Here are some examples:



Eclipse is an integrated development environment (IDE) used in computer programming, and is the most widely used Java IDE. It contains a base workspace and an extensible plug-in system for customizing the environment.

Here are some examples:


IntelliJ IDEA is a Java integrated development environment (IDE) for developing computer software. It is developed by JetBrains (formerly known as IntelliJ), and is available as an Apache 2 Licensed community edition, and in a proprietary commercial edition. Both can be used for commercial development.

Here are some examples:


NetBeans is an integrated development environment (IDE) for Java. NetBeans allows applications to be developed from a set of modular software components called modules. NetBeans runs on Windows, macOS, Linux and Solaris. In addition to Java development, it has extensions for other languages like PHP, C, C++, HTML5,[4] and JavaScript. Applications based on NetBeans, including the NetBeans IDE, can be extended by third party developers.

Here are some examples:

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.

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.

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.


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.

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.

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.

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.

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.


The javax prefix is used by the Java programming language for a package of standard Java extensions. These include extensions such as javax.print, javax.imageio, javax.sound.sampled etc.


Provides the principal classes and interfaces for the JavaTM Print Service API. The Java Print Service API enables client and server applications to:

  • Discover and select print services based on their capabilities
  • Specify the format of print data
  • Submit print jobs to services that support the document type to be printed.

Here are some examples:


Many common image I/O operations may be performed using the static methods of the ImageIO class.

This package contains the basic classes and interfaces for describing the contents of image files, including metadata and thumbnails (IIOImage); for controlling the image reading process (ImageReader, ImageReadParam, and ImageTypeSpecifier) and image writing process (ImageWriter and ImageWriteParam); for performing transcoding between formats (ImageTranscoder), and for reporting errors (IIOException).

Here are some examples:


Provides interfaces and classes for capture, processing, and playback of sampled audio data.

Here are some examples: