# JDT Programmer's Guide

The Eclipse platform is delivered with a full featured Java integrated development environment (IDE). Java development tooling (JDT) allows users to write, compile, test, debug, and edit programs written in the Java programming language.

The JDT makes use of many of the platform extension points and frameworks described in the Platform Plug-in Developer Guide. It's easiest to think of the JDT as a set of plug-ins that add Java specific behavior to the generic platform resource model and contribute Java specific views, editors, and actions to the workbench.

This guide discusses the extension points and API provided by the JDT. We assume that you already understand the concepts of plug-ins, extension points, workspace resources, and the workbench UI.

Given that the JDT supplies a full featured Java IDE, why would you need to use the JDT API? If you are building a plug-in that interacts with Java programs or resources as part of its function, you may need to do one or more of the following things:

- Programmatically manipulate Java resources, such as creating projects, generating Java source code, performing builds, or detecting problems in code.
- Programmatically launch a Java program from the platform
- Provide a new type of VM launcher to support a new family of Java runtimes
- Add new functions and extensions to the Java IDE itself

The JDT is structured into three major components:

- JDT Core - the headless infrastructure for compiling and manipulating Java code.
- JDT UI - the user interface extensions that provide the IDE.
- JDT Debug - program launching and debug support specific to the Java programming language.

We'll examine each component's structure and the API it provides.