Code Monkey home page Code Monkey logo

servicetalk's Introduction

ServiceTalk

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 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 ServiceTalk docs for more information.

Getting Started

ServiceTalk releases are available on 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
repositories {
  jcenter() // combines Maven Central and other popular repositories
}

Refer to the 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 Sonatype’s snapshots Maven repository.

Supported JVM

The minimum supported JDK version is 1.8.

Compatibility

ServiceTalk follows 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 contribution guidelines.

ServiceTalk uses 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:

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 and verify that all tests and code quality checks pass:

$ ./gradlew build

The supported IDE is IntelliJ IDEA. In order to generate IntelliJ IDEA project files for ServiceTalk, you can run the following command:

$ ./gradlew idea

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

Generic
$ idea .
macOS
$ open servicetalk.ipr

Project Communication

We encourage your participation asking questions and helping improve the ServiceTalk project. Github issues and pull requests are the primary mechanisms of participation and communication for ServiceTalk.

servicetalk's People

Contributors

idelpivnitskiy avatar scottmitch avatar lewisd32 avatar ddossot avatar jayv avatar servicetalk-bot avatar tkountis avatar tomerd avatar volyx avatar normanmaurer avatar dependabot[bot] avatar karim-elngr avatar colestanfield avatar shekhar-rajak avatar sonicloong avatar divb0 avatar muthupalaniappan avatar sullis avatar fanjups avatar jen20 avatar johnlabarge avatar mrk-andreev avatar heowc avatar blake-bauman avatar suman-ganta avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.