Apple有开源的ServiceTalk,这是一个JVM网络应用框架,它提供了一个基于Netty的公共的可扩展的网络抽象。ServiceTalk的目的是改进Netty提供的底层抽象,比如线程和可用性。ServiceTalk为常用协议(如HTTP/1)提供了更高级、更有针对性的api。具有一致的网络堆栈和功能集(包括客户端负载平衡和服务发现集成)的x、HTTP/2.0和gRPC。
ServiceTalk的设计目的是支持基于响应流的不同编程范例,包括各种阻塞模式,并具有特别强大的实用程序来跨越同步和异步API边界。这允许开发人员在应用程序中当前不需要异步控制流的地方延迟异步控制流的复杂性。响应流操作符的本机实现主要关注于限制内存消耗、横切特性(如AsyncContext和阻塞缺省安全)和利用响应流规范中的并发规则来优化服务器端用例。
开源ServiceTalk的目标是提供支持Java社区贡献的构建块。利用苹果在Java社区中预先建立的关系,他们希望通过ServiceTalk建立一个类似的社区。苹果告诉InfoQ,在ServiceTalk开源的短时间内,来自Project Reactor、Micronaut、RxJava、gRPC和Vert.x等项目的兴趣不断增长。
Apple还告诉InfoQ, Java社区在以下方面有很多机会可以为ServiceTalk做出贡献:与Spring Boot、Micronaut和Project Reactor的集成;对现有和新协议的增强;通过可插拔的ServiceDiscoverer API集成服务发现;实现新的反应流操作符;以及客户端负载平衡领域的工作。
开发人员可以通过研究异步和阻塞环境的HTTP和gRPC示例来开始ServiceTalk。