Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nasaworldwind/worldwindjava/llms.txt

Use this file to discover all available pages before exploring further.

NASA WorldWind Java (WWJ) is an open-source 3D virtual globe API for desktop Java, developed by NASA. It provides a geographic context with high-resolution terrain for visualizing geographic or geo-located information in both 3D and 2D. Built on OpenGL via the JOGL library, WorldWind Java enables developers to build rich, interactive geospatial desktop applications that run on Windows, macOS, and Linux — all from a single cross-platform Java codebase. The current stable release is v2.2.1, licensed under the Apache License 2.0.

Key Capabilities

WorldWind Java ships with a comprehensive feature set covering everything from satellite imagery rendering to interactive shape picking.

3D Interactive Globe

A fully interactive, OpenGL-accelerated virtual globe with smooth pan, zoom, tilt, and rotation. Supports both 3D perspective and 2D flat-map projections.

High-Resolution Terrain

Streaming terrain elevation data with adaptive tessellation. Developers can customize or replace the elevation model and surface geometry tessellator.

Satellite Imagery & WMS

Built-in support for OGC Web Map Service (WMS) layers, tiled imagery, and custom raster data sources. Compose multiple imagery layers with blending and opacity controls.

Geographic Shapes

A rich library of geographic shapes — polygons, polylines, paths, ellipses, cones, boxes, airspaces, and more — with full attribute styling and altitude modes.

KML / KMZ Support

Load and display KML and KMZ files including placemarks, overlays, ground overlays, screen overlays, and 3D models.

Symbology (MIL-STD-2525)

Built-in support for MIL-STD-2525 tactical symbols and icon retrieval, enabling defense and situational-awareness applications.

Picking & Select Events

Full object picking pipeline — click, hover, drag, and box-select on any rendered shape or placemark. Register SelectListener callbacks on the WorldWindow.

Data Import (GDAL)

Optional GDAL integration via gdal.jar for importing a wide range of raster and vector geospatial data formats into the globe.

Architecture Overview

WorldWind Java is structured around a small set of core interfaces and classes. Understanding these components helps you navigate the API and build applications effectively.
ComponentInterface / ClassRole
WorldWindowgov.nasa.worldwind.WorldWindowThe top-level interface implemented by all toolkit-specific rendering windows (e.g., WorldWindowGLCanvas). Acts as the entry point for attaching a Model, a View, and event listeners.
Modelgov.nasa.worldwind.ModelAggregates the Globe and the LayerList. Accessed via WorldWindow.getModel(). A default model is defined in worldwind.xml.
Globegov.nasa.worldwind.globes.GlobeRepresents the planetary body with its elevation model and surface geometry tessellator. Interchangeable — swap in a flat globe for 2D projection.
LayerListgov.nasa.worldwind.layers.LayerListAn ordered list of Layer objects drawn back-to-front. Built-in layers include imagery, compass, graticule, placenames, and view controls.
Viewgov.nasa.worldwind.ViewControls the camera: position, orientation, field of view, and navigation animations. The default implementation is BasicOrbitView.
SceneControllergov.nasa.worldwind.SceneControllerOrchestrates the rendering pipeline each frame: picks, pre-renders, renders, and post-renders the globe and all layers.
The typical object graph for a WorldWind application looks like this:
WorldWind Object Graph
WorldWindowGLCanvas (WorldWindow)
  └── BasicModel (Model)
        ├── Earth (Globe)
        │     └── EarthElevationModel
        └── LayerList
              ├── BMNGOneImage
              ├── BMNGWMSLayer
              ├── CompassLayer
              ├── PlaceNameLayer
              └── ... (your custom layers)

Version & Requirements

WorldWind Java v2.2.1 is the current production release. It is a maintenance release over v2.2.0, which modernized the SDK after a period of inactivity by upgrading to Java 11 and JOGL 2.4 and switching to the Apache 2.0 license.
RequirementValue
Version2.2.1
JavaJava 11 or higher
OpenGLJOGL 2.4 (bundled)
LicenseApache License 2.0
SourceGitHub — NASAWorldWind/WorldWindJava

Third-Party Libraries

WorldWind Java bundles the following open-source libraries:
  • JOGL 2.4 — Java OpenGL bindings (BSD License)
  • GlueGen — Native binding glue code for JOGL (BSD License)
  • GDAL — Geospatial Data Abstraction Library (MIT License)
  • Jackson Parser — JSON processing (Apache 2.0)

Supported Platforms

WorldWind Java runs on all major desktop operating systems. JOGL provides platform-native OpenGL rendering on each.
PlatformArchitectureNotes
Windowsx86-64Tested on Windows 10 and Windows 11
macOSUniversal (arm64 + x86-64)Supports Apple Silicon via universal native binary
Linuxx86-64Tested on Ubuntu and other common distributions
WorldWind requires a modern graphics card with an up-to-date driver. Most display problems — including a black or blank globe — are caused by out-of-date graphics drivers. On Windows, visit your GPU manufacturer’s website (NVIDIA, AMD/ATI, or Intel) and download the latest driver. On laptops, check the laptop manufacturer’s support site. Linux users should ensure Mesa or the proprietary driver is current. The minimum requirement is OpenGL 2.0 support.

Get Started

Quickstart

Create your first 3D globe application in under 5 minutes. Covers project setup, the simplest possible example, and adding your first layer.

Installation

Full installation guide — JAR download, Maven local repo install, Gradle setup, and platform-specific native library configuration.

WorldWindow Concepts

Deep dive into the WorldWindow interface: models, views, scene controllers, event listeners, and the rendering pipeline.

API Reference

Full Javadoc-based API reference for all public classes and interfaces in the gov.nasa.worldwind package hierarchy.

Build docs developers (and LLMs) love