Skip to content

Developer Manual Overview

Martin Lippert edited this page Jan 10, 2021 · 1 revision

This document provides an overview of the internal structure and architecture of the Spring Tools 4. The target audience of this overview are developers who want to understand how the Spring Tools 4 work under the hood, want to contribute to the project, and/or want to get a look inside.

Overview

The Spring Tools 4 consist out two central areas:

  • The language servers
  • The integration of the language servers into existing IDEs and editors together with additional client-side extensions to those IDEs and editors

Language Servers

Language Servers are implemented in Java and follow the overall architecture behind the language server protocol. If you not familiar with the concept of language servers, we strongly recommend to make yourself familiar with the concepts here: https://microsoft.github.io/language-server-protocol/

In total, this projects contain four different language servers:

  • Spring Boot language server: provides features for Spring projects and focuss on Spring specific things like editing Spring Boot property files, editing source code that inside of Spring Boot applications, quick navigation, etc. Details about the features from the users point of view can be found in the user guide wiki.

  • Cloud Foundry Manifest language server: provides basic features like hover help, content-assist, and validation for manifest.yml files that are used when deploying applications to Cloud Foundry.

  • Concourse language server: provides features like hover help, content-assit, and validation for build pipeline definition files for Concourse CI.

  • BOSH language server: provides features lile hover help, content-assist, and validation for YML files that are used when managing PaaS installations via BOSH.

The language servers are implemented in Java and can be found in headless-services directory. The share a few components that are implemented in the commons sub-directory.

More details about the structure, the architecture, and how to get started with each of those language servers can be found in their README.md files.

Extensions and integrations

Eclipse extensions

The integration of the language servers into the Eclipse Desktop IDE is done by implementing regular plug-ins for the Eclipse IDE and using the LSP4E project to integrate the language servers into that environment. The Eclipse projects can be found in the eclipse-language-servers directory.

In addition to the pure integration of the language servers into Eclipse, the project also contains a number of Eclipse-specific client-side extensions for the IDE. Those are located in the eclipse-extensions directory.

Eclipse distribution

In addition to the individual extensions for Eclipse, the project also implements the necessary files and configs to build a ready-to-use Eclipse distribution, which includes all the extensions pre-installed. Those definition files for the Spring Tools 4 Eclipse product can be found in the eclipse-distribution directory.

Visual Studio Code extensions

The extensions for Visual Studio Code are implemented in the directory vscode-extensions. They mainly contain a lightweight extension for Visual Studio Code to get the above mentioned language servers into the Visual Studio Code environment.

Where to get started?

The individual pieces of the project are quite decoupled from each other. So depending on the area you are most interested in, the way to get started is different.

The README.md files in each directory will provide you with the necessary information how to get started on each component and how to setup your dev environment for it.

Clone this wiki locally