Awesome Open Source
Awesome Open Source

= ServiceTalk

image:https://img.shields.io/maven-central/v/io.servicetalk/servicetalk-annotations?color=blue[Maven Central]

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.


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (31,579
framework (1,117
http (931
microservices (463
grpc (303
rpc (286
reactive (282
netty (154
http2 (136
reactive-streams (60