# Development Tools

A general overview of all the tools available for Java developers so that you are aware of the breadth and depth of what's available. You do not need to install any of this at the movement, or only install what you need.

## IDE

|                          | IntelliJ                                                                  | VS Code                                                            | Eclipse                                                     |
| ------------------------ | ------------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------- |
| **Plugin**               | [Cloud Code](https://cloud.google.com/code/docs/intellij/quickstart-IDEA) | [Cloud Code](https://cloud.google.com/code/docs/vscode/quickstart) | [Google Cloud Tools](https://cloud.google.com/eclipse/docs) |
| **App Engine Support**   | Yes                                                                       | Yes                                                                | Yes                                                         |
| **Kubernetes Support**   | Yes                                                                       | Yes                                                                | No                                                          |
| **Add Client Libraries** | Yes                                                                       | Yes                                                                | No                                                          |

## Maven / Gradle Plugins

|                            | Maven                                                                                             | Gradle                                                                                         |
| -------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| **App Engine Support**     | [appengine-maven-plugin](https://cloud.google.com/appengine/docs/standard/java/tools/using-maven) | [appengine-gradle-plugin](https://cloud.google.com/appengine/docs/standard/java/tools/gradle)  |
| **Cloud Function Support** | [function-maven-plugin](https://github.com/GoogleCloudPlatform/functions-framework-java)          | N/A                                                                                            |
| **Containerize with Jib**  | [jib-maven-plugin](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin)      | [jib-gradle-plugin](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin) |

## Framework Support

### Spring Boot

[Spring Cloud GCP](https://spring.io/projects/spring-cloud-gcp) provides 10+ integrations with Spring Boot across Spring Data, Spring Integration, Spring Cloud Streams, and more to provide idiomatic access databases, Cloud Trace, and Cloud Logging.

### Micronaut

[Micronaut GCP](https://micronaut-projects.github.io/micronaut-gcp/latest/guide/index.html) provides integration with GCP services.

| Concerns                | GCP Service | Micronaut Abstraction |
| ----------------------- | ----------- | --------------------- |
| **Distributed Tracing** | Cloud Trace | Zipkin / Brave        |

### Hibernate

Use [Hibernate Cloud Spanner Dialect](https://cloud.google.com/spanner/docs/use-hibernate) to continue use Hibernate / JPA to use Cloud Spanner in your application.

### R2DBC

Use R2DBC to access database to produce highly concurrent non-blocking microservices.&#x20;

| Database                             | R2DBC Support                                                                                                                              |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Cloud Spanner**                    | [cloud-spanner-r2dbc](https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc)                                                          |
| **Cloud SQL - PostgreSQL**           | [r2dbc-postgresql](https://github.com/r2dbc/r2dbc-postgresql) with [Cloud SQL Proxy](https://cloud.google.com/sql/docs/postgres/sql-proxy) |
| **Cloud SQL - MySQL**                | [r2dbc-mysql](https://github.com/mirromutth/r2dbc-mysql) with [Cloud SQL Proxy](https://cloud.google.com/sql/docs/mysql/sql-proxy)         |
| **Cloud SQL - Microsoft SQL Server** | [r2dbc-mssql](https://github.com/r2dbc/r2dbc-mssql) with [Cloud SQL Proxy](https://cloud.google.com/sql/docs/sqlserver/sql-proxy)          |

## DevOps Tools

### Cloud Build

Declare your CI/CD pipeline and run it with Cloud Build. See [Cloud Build with Java application documentation](https://cloud.google.com/cloud-build/docs/building/build-java).

### Artifact Registry

Publish Java artifacts to Artifact Registry, which can host Maven repositories.  See [Artifact Repository](/app-dev/devops/artifact-repository.md) section.

### Cloud Trace

Use Spring Cloud Sleuth and send Distributed Tracing data to Cloud Trace, using Spring Cloud GCP.  See [Trace section](/app-dev/observability/trace.md).

### Cloud Logging

Aggregate logs into a centralized logging console to easily search and view logs. See [Logging section](/app-dev/observability/logging.md).

### Error Reporting

Automatically identifies Java exceptions and produce reports. Easily see new exceptions and their frequencies. See [Logging section](/app-dev/observability/logging.md#error-reporting).

### Cloud Monitoring

Collect system and application metrics, build dashboards, and setup alerts.  See [Metrics section](/app-dev/observability/metrics.md).

### Cloud Debugger

Cloud Debugger can debug your production application without halting the application. Cloud Debugger can capture application state as a Snapshot, and also able to add additional log messages without redeploying the code. See [Cloud Debugger section](/app-dev/observability/debugging.md).

### Cloud Profiler

Cloud Profiler can continuously profile CPU and heap usages in a production application with minimal overhead.  The profiled flame graph can help you understand performance hotspots. See [Cloud Profiler section](/app-dev/observability/profiling.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://spring-gcp.saturnism.me/app-dev/development-tools.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
