# servicetalk **Repository Path**: projectczk/servicetalk ## Basic Information - **Project Name**: servicetalk - **Description**: A networking framework that evolves with your application - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README = 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:http://repo1.maven.org/maven2/io/servicetalk/[Maven Central]. For Gradle as well as other build tools that don't use Maven Central as a default repository, additional configuration is required. .Gradle, build.gradle [source,groovy] ---- repositories { jcenter() // combines Maven Central and other popular repositories } ---- 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. ==== Gradle Repositories ServiceTalk's build produces custom Gradle plugins and thus has regular (i.e. non-`buildscript`) dependencies on other plugins. This is the reason why the repositories that are provided if none are configured globally are the following: [source,groovy] ---- allprojects { buildscript { repositories { jcenter() maven { url "https://plugins.gradle.org/m2/" } } } repositories { jcenter() maven { url "https://plugins.gradle.org/m2/" } } } ---- If you have defined repositories or repository mirrors in your global Gradle config (`~/.gradle/init.gradle`), the build will detect them and attempt to inherit `buildscript` repositories into the main `repositories` of the sub-projects that produce custom Gradle plugins. NOTE: This inheritance mechanism can be disabled by setting a Gradle property: + `-PdisableInheritBuildscriptRepositories`. ==== Build Commands You should be able to run the following command to build ServiceTalk: [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.