Java Library

Meteor

A lightweight Java RPC library that makes distributed applications feel local.

Current version: v1.0.4

How It Works

Server 1Server 2API INTERFACEMap<String, Integer> getScores()BLOCKING INVOCATIONSERIALIZE REQUESTTRANSMIT REQUESTHANDLE RESPONSERECEIVE REQUESTDESERIALISE REQUESTINVOCATION REBUILTINVOKE APIIMPLEMENTATIONHANDLE RETURN VALUETRANSMIT RETURNVALUEYOUR APIIMPLEMENTATIONMap<String, Integer> getScores()Invocation captured by Meteor ProxyTransport layer of your choosingTransport layer of your choosingReturn value or Exception capturedReflect callMeteor RPC FlowA general-purpose Java RPC library that plugs in like magic

Meteor handles the complexity of RPC, allowing you to focus on your business logic rather than distributed systems implementation details.

Simple to Use

ServerApplication.java

// Define your service interface and implementation
public interface UserService {
    User findById(String userId);
    void updateProfile(String userId, Profile profile);
}

Meteor meteor = new Meteor(new RedisTransport("localhost", 6379, "user-service"));
meteor.registerImplementation(new UserServiceImpl(), "user-service");
ClientApplication.java

// Now, within a completely separate JVM, you can call the service as if it were local
UserService userService = meteor.registerProcedure(
    UserService.class,
    "user-service"
);

// Then, on an entirely different server, call methods as if they're local
User user = userService.findById("user-123");

Key Features

TS
Type Safety

Full compile-time type checking with IDE support. No runtime surprises.

FT
Flexible Transport

Built-in Redis support with custom transport layer options.

ZB
Zero Boilerplate

Define an interface, register it, and start using it. No setup complexity.

HP
High Performance

Minimal overhead with efficient serialization for remote procedure calls.

Get Started

Add Meteor to your Maven project:

<dependency>
    <groupId>dev.pixelib.meteor</groupId>
    <artifactId>meteor-core</artifactId>
    <version>1.0.4</version>
</dependency>
For more details, check our documentation

Why We Built It

We built Meteor because we were tired of the complexity in existing Java RPC libraries. Most solutions require extensive configuration and boilerplate code just to make a simple remote method call.

Meteor strips away this complexity. It lets you write distributed applications that feel like they're running locally, with type safety and minimal overhead.

D
M
Duco & Mats