Skip to content

SharedType/sharedtype

Repository files navigation

CI Maven Central

SharedType - Sharing Java Types made easy

From Java:

@SharedType
record User(String name, int age, String email) {}

To Typescript:

export interface User {
    name: string;
    age: number;
    email: string;
}

Go (Planed):

type User struct {
    Name string
    Age int
    Email string
}

Rust:

pub struct User {
    name: String,
    age: i32,
    email: String,
}

Features

  • Java8 support.
  • Generics support.
  • (Planed) Constant support.
  • Client source dependency is only @SharedType retained at source code level.
  • SharedType AP jar <150KB, only 2 small dependencies: jsr305 annotations and mustache.
  • Parsing takes milliseconds with -proc:only.
  • Intuitive defaults, put @SharedType and there you go. Global + class level options.

Documentation

Similar Projects

Authors

Cause Chung ([email protected])

License

CC BY 4.0 CC BY 4.0