Skip to main content

Introduction to the Temporal Java SDK

Welcome to Temporal Java SDK developer’s guide.

Temporal Java SDK API reference

The Temporal Java SDK released on March 28, 2020. The Temporal Java SDK developers guide documents the concepts, features, and tools that you’ll use to create, test, and execute Temporal applications in Java.

Supported runtimes

What are the supported Java runtimes?

Developing applications with the Temporal Java SDK requires Java 1.8+.

Build configuration

Where can I get a build configuration?

Find the latest release of the Temporal Java SDK at Maven Central.

Add temporal-sdk as a dependency to your pom.xml:

<dependency>
<groupId>io.temporal</groupId>
<artifactId>temporal-sdk</artifactId>
<version>N.N.N</version>
</dependency>

or to build.gradle:

compile group: 'io.temporal', name: 'temporal-sdk', version: 'N.N.N'

Expected skills and experiences

What Java programming skills and experiences should a developer have to succeed with the Java SDK?

The Temporal Platform enables developers to build a wide range of applications that serve a variety of use cases.

We recommend that developers are equipped with some of the following skills to develop production-level Temporal Applications:

Recommended

Core fundamentals:

  • Java Syntax and Structure
  • Data Types
  • Operators
  • Control Statements: loops, conditionals
  • Basic Input/Output
  • Understanding of Java Virtual Machine (JVM)

Object-oriented programming:

  • Classes and Objects
  • Interfaces
  • Inheritance
  • Encapsulation
  • Polymorphism

Java language features:

  • Annotations
  • Exception handling
  • Collections Framework
  • Java Stream API
  • Lambdas and Functional Interfaces
  • Threads and concurrency
Nice to have

Tools

We recommend that developers have a beginner to moderate level of experience using a Java IDE, such as IntelliJ IDEA or Eclipse

Testing

We recommend that developers have some experience with a testing library and framework such as JUnit or Mockito.

Code base version control

We recommend that developers have some experience using a version control system, such as Git.

Dependency management

We recommend that developers have some experience using a dependency management system such as Maven or Gradle.

Listing and sorting

We recommend that developers have some experience with SQL-like syntax and CRUD operational concepts to make use of Temporal’s Visibility tools.

Security

To onboard with Temporal Cloud or set up a Self-Hosted Cluster, we recommend that developers have some understanding and experience with TLS, security certificates, and private keys.

Privacy

For applications that process any amount of user data we recommend that developers have some understanding and experience with PII and sensitive information encryption.

Complex and large scale use cases

Large scale use cases

For complex and large-scale use cases, having at least some experience with a variation of the following could be helpful:

  • Deeper JVM understanding of the following:
    • Memory Management
    • Garbage Collection
    • JIT Compilation
  • Design Patterns:
    • Singleton, Factory, Strategy, Observer, etc.
  • Distributed system architectures
    • Event-driven architectures: Understanding of how events can drive processes and how they fit into Workflows.
    • Stateful vs. stateless processes: Knowledge about the advantages and pitfalls of both.
    • Scalability: Understanding the implications, of scaling services, on performance and reliability.
    • Fault tolerance: Knowledge of supervisor systems that check progress and resume after suspensions.

Code samples and resources

Where can I find code samples and other resources to learn to use the Java SDK?

Where can I get help with using the Java SDK?

Updates

How to follow updates to the Java SDK

Contribution

How to contribute to the Temporal Java SDK

The Temporal Java SDK is an Apache 2.0 licensed, and contributions are welcome. Please review our contribution guidelines.