Crnk alternatives and similar libraries
Based on the "REST Frameworks" category.
Alternatively, view Crnk alternatives based on common mentions on social networks and blogs.
-
Spark
A simple expressive web framework for java. Spark has a kotlin DSL https://github.com/perwendel/spark-kotlin -
rest.li
Rest.li is a REST+JSON framework for building robust, scalable service architectures using dynamic discovery and simple asynchronous APIs. -
RestExpress
Minimalist Java framework for rapidly creating scalable, containerless, RESTful microservices. Ship a production-quality, headless, RESTful API in the shortest time possible. Uses Netty for HTTP, Jackson for JSON, Metrics for metrics, properties files for configuration. Sub-projects and plugins enable, NoSQL, Swagger, Auth0, HAL integration, etc. -
Microserver
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles. -
Hexagon
Hexagon is a microservices toolkit written in Kotlin. Its purpose is to ease the building of services (Web applications or APIs) that run inside a cloud platform. -
StubbornJava
Unconventional Java code for building web servers / services without a framework. Think dropwizard but as a seed project instead of a framework. If this project had a theme it would be break the rules but be mindful of your decisions. -
Restler
Restler is a library that automatically generates a client for a web service at run time, by analyzing the respective annotated Spring controller interface
InfluxDB high-performance time series database

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Crnk or a related project?
Popular Comparisons
README
crnk.io - Crank up the development of RESTful applications!
<!-- currently broken: https://github.com/badges/shields/issues/658 https://img.shields.io/bintray/v/crnk-project/maven/crnk-core.svg
-->
release on jcenter\
latest in private repository
What is Crnk?
Crnk is an implementation of the JSON API specification and recommendations in Java to facilitate building RESTful applications. It provides many conventions and building blocks that application can benefit from. This includes features such as sorting, filtering, pagination, requesting complex object graphs, sparse field sets, attaching links to data or atomically execute multiple operations. Further integration with frameworks and libraries such as Spring, CDI, JPA, Bean Validation, Dropwizard, Servlet API, Zipkin and and more ensure that JSON API plays well together with the Java ecosystem. Have a look at www.crnk.io and the documentation for more detailed information.
Release notes can be found in http://www.crnk.io/releases/.
Repository
Crnk Maven artifacts are available from jcenter/bintray: https://bintray.com/crnk-project.
Note that due to reliability issues of MavenCentral we only rarely publish there.
Requirements
Crnk requires Java 1.8 or later and an SLF4J setup for logging.
Example
See https://github.com/crnk-project/crnk-example/
Gradle settings.gradle
can look like:
gradle.beforeProject { Project project ->
project.with {
buildscript {
repositories {
jcenter()
// maven { url 'https://dl.bintray.com/crnk-project/mavenLatest/' }
}
}
repositories {
jcenter()
// maven { url 'https://dl.bintray.com/crnk-project/mavenLatest/' }
}
}
}
and the build.gradle
:
dependencies {
implementation platform('io.crnk:crnk-bom:INSERT_VERSION_HERE')
annotationProcessor platform('io.crnk:crnk-bom:INSERT_VERSION_HERE')
annotationProcessor 'io.crnk:crnk-gen-java'
implementation "io.crnk:crnk-setup-spring-boot2"
implementation "io.crnk:crnk-data-jpa"
implementation "io.crnk:crnk-data-facet"
implementation "io.crnk:crnk-format-plain-json"
implementation "io.crnk:crnk-validation"
implementation "io.crnk:crnk-home"
implementation "io.crnk:crnk-ui"
implementation "io.crnk:crnk-operations"
implementation "io.crnk:crnk-security"
}
and a basic Java example:
@JsonApiResource(type = "vote")
@Data
public class Vote {
@JsonApiId
private UUID id;
private int stars;
}
public class VoteRepository extends ResourceRepositoryBase<Vote, UUID> {
public Map<UUID, Vote> votes = new ConcurrentHashMap<>();
public VoteRepository() {
super(Vote.class);
}
@Override
public ResourceList<Vote> findAll(QuerySpec querySpec) {
return querySpec.apply(votes.values());
}
@Override
public <S extends Vote> S save(S entity) {
votes.put(entity.getId(), entity);
return null;
}
@Override
public void delete(UUID id) {
votes.remove(id);
}
}
or with JPA:
@JsonApiResource(type = "person")
@Entity
@Data
public class PersonEntity {
@Id
private UUID id;
private String name;
private int year;
@OneToMany(mappedBy = "movie")
private List<RoleEntity> roles = new ArrayList<>();
@Version
private Integer version;
}
public class PersonRepository extends JpaEntityRepositoryBase<PersonEntity, UUID> {
public PersonRepository() {
super(PersonEntity.class);
}
@Override
public PersonEntity save(PersonEntity entity) {
// add your save logic here
return super.save(entity);
}
@Override
public PersonEntity create(PersonEntity entity) {
// add your create logic here
return super.create(entity);
}
@Override
public void delete(UUID id) {
// add your save logic here
super.delete(id);
}
}
Crnk integrates well with many frameworks. Have a look at the documentation and carefully choose what you need. Don't hesitate to ask for help and suggest improvements!
Licensing
Crnk is licensed under the Apache License, Version 2.0. You can grab a copy of the license at http://www.apache.org/licenses/LICENSE-2.0.
Building from Source
Crnk make use of Gradle for its build. To build the complete project run
gradlew clean build
Note as part of the build a local Node installation is downloaded to build the frontend parts (crnk-ui) of the project.
Links
Endorsements
We thank YourKit for supporting open source projects with profiler and monitoring tooling.
*Note that all licence references and agreements mentioned in the Crnk README section above
are relevant to that project's source code only.