apple / servicetalk

A networking framework that evolves with your application
https://docs.servicetalk.io
Apache License 2.0
911 stars 179 forks source link
framework grpc http http2 java microservices netty reactive reactive-streams rpc

= ServiceTalk

image:https://img.shields.io/maven-central/v/io.servicetalk/servicetalk-annotations?color=blue[Maven Central] image:https://github.com/apple/servicetalk/actions/workflows/ci-snapshot.yml/badge.svg[Snapshot Publisher] image:https://img.shields.io/nexus/s/io.servicetalk/servicetalk-annotations?color=blue&server=https%3A%2F%2Foss.sonatype.org[Sonatype Snapshot]

ServiceTalk is a JVM network application framework with APIs tailored to specific protocols (e.g. HTTP/1.x, HTTP/2.x, etc...) and supports multiple programming paradigms.

It is built on link:https://netty.io[Netty] and is designed to provide most of the performance/scalability benefits of Netty for common networking protocols used in service to service communication. ServiceTalk provides server support and "smart client" like features such as client-side load balancing and service discovery integration.

See the link:https://docs.servicetalk.io/[ServiceTalk docs] for more information.

== Getting Started

ServiceTalk releases are available on link:https://repo1.maven.org/maven2/io/servicetalk/[Maven Central].

Refer to the link:https://docs.servicetalk.io/[ServiceTalk docs] for various examples that will get you started with the different features of ServiceTalk.

NOTE: Builds of the development version are available in link:https://oss.sonatype.org/content/repositories/snapshots/io/servicetalk/[Sonatype's snapshots Maven repository].

== Supported JVM The minimum supported JDK version is 1.8.

== Compatibility ServiceTalk follows link:https://semver.org/#semantic-versioning-200[SemVer 2.0.0]. API/ABI breaking changes will require package renaming for that module to avoid runtime classpath conflicts.

NOTE: 0.x.y releases are not stable and are permitted to break API/ABI.

== Contributor Setup

IMPORTANT: If you're intending to contribute to ServiceTalk, make sure to first read the xref:CONTRIBUTING.adoc[contribution guidelines].

ServiceTalk uses link:https://gradle.org[Gradle] as its build tool and only requires JDK 8 or higher to be pre-installed. ServiceTalk ships with the Gradle Wrapper, which means that there is no need to install Gradle on your machine beforehand.

=== File Encoding

ServiceTalk's source code is UTF-8 encoded: make sure your filesystem supports it before attempting to build the project. Setting the JAVA_TOOL_OPTIONS env var to -Dfile.encoding=UTF-8 should help building the project in non-UTF-8 environments. Editors and IDEs must also support UTF-8 in order to successfully edit ServiceTalk's source code.

=== Build Commands

You should be able to run the following command to build ServiceTalk and verify that all tests and code quality checks pass:

[source,shell]

$ ./gradlew build

The supported IDE is link:https://www.jetbrains.com/idea[IntelliJ IDEA]. In order to generate IntelliJ IDEA project files for ServiceTalk, you can run the following command:

[source,shell]

$ ./gradlew idea

When done, running one of following commands would open ServiceTalk in IntelliJ:

.Generic [source,shell]

$ idea .

.macOS [source,shell]

$ open servicetalk.ipr

== Project Communication We encourage your participation asking questions and helping improve the ServiceTalk project. link:https://github.com/apple/servicetalk/issues[Github issues] and link:https://github.com/apple/servicetalk/pulls[pull requests] are the primary mechanisms of participation and communication for ServiceTalk.