com.github.avasin:yarmij

Yarmij is a library to replace standard Java RMI for the case when you need it on Android.

License

License

GroupId

GroupId

com.github.avasin
ArtifactId

ArtifactId

yarmij
Last Version

Last Version

0.1.1
Release Date

Release Date

Type

Type

jar
Description

Description

com.github.avasin:yarmij
Yarmij is a library to replace standard Java RMI for the case when you need it on Android.
Project URL

Project URL

https://github.com/avasin/yarmij
Source Code Management

Source Code Management

https://github.com/avasin/yarmij

Download yarmij

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.avasin/yarmij/ -->
<dependency>
    <groupId>com.github.avasin</groupId>
    <artifactId>yarmij</artifactId>
    <version>0.1.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.avasin/yarmij/
implementation 'com.github.avasin:yarmij:0.1.1'
// https://jarcasting.com/artifacts/com.github.avasin/yarmij/
implementation ("com.github.avasin:yarmij:0.1.1")
'com.github.avasin:yarmij:jar:0.1.1'
<dependency org="com.github.avasin" name="yarmij" rev="0.1.1">
  <artifact name="yarmij" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.avasin', module='yarmij', version='0.1.1')
)
libraryDependencies += "com.github.avasin" % "yarmij" % "0.1.1"
[com.github.avasin/yarmij "0.1.1"]

Dependencies

compile (2)

Group / Artifact Type Version
com.esotericsoftware : kryo jar 5.0.3
com.google.code.findbugs : jsr305 jar 3.0.1

provided (1)

Group / Artifact Type Version
org.slf4j : slf4j-api jar 1.7.30

test (3)

Group / Artifact Type Version
org.apache.logging.log4j : log4j-slf4j-impl jar 2.14.0
junit : junit jar 4.12
org.mockito : mockito-core jar 3.7.7

Project Modules

There are no modules declared in this project.

yarmij

Yet another RMI for Java

This project was created because I was deeply disappointed when I decided to write a pretty small and dumb client-server applicaion for Android. Here is why:

  1. Android by itseld does not support java.rmi package, so native implementation from Java cannot be used to solve the task described above.
  2. Standard way to solve the goal from the top on Android is to use grpc library, but it brings the following unnecessary complexity:
    1. It requires at least one additional *.proto file with message and service declarations.
    2. It requires maven build script dedicated configurations, so *.java files will be automatically regenerated every build.
    3. Source code requires additional level of conversion process. In case you have your own model, you cannot use it directly as messages or message parts. You would need to convert your own model into *.java classes generated from *.proto message definitions.

All 2.* subitems above are bringing significant inconvinience in case you need to write something simple and quick and you don't want to waste time on doing proper configurations.

There is only one significant restriction which is coming from serialization, which is provided by EsotericSoftware / kryo library - you need to define at least private no-arg constructor, so your class would be able to be instantiated.

Versions

Version
0.1.1
0.1.0