[New] Java SDK & ecosystem development Q3/Q4

Application Status

Status: New
Last updated: 04.07.2023
Submited by: Michel Meier, [email protected]
Team: Michel Meier, Marco Walz
Approved Budget (in h):
Used Budget (in h):
Planned Delivery:

Specify the funding category

Open Source Development

Application Title

aepp-sdk-java & contraect-maven-plugin - integration of calldata lib, SDK update and further development and optimizations

Applicant

Michel Meier, [email protected]

Value Application

The Java SDK is actively used by service providers like Venly and Ammercard and opens aeternity development support to a broader audience.
The proposal aims to bring the SDK to the current state and solve existing issues and open topics. Furthermore there will be refactoring between SDK and Plugin to leverage synergies (mapping of Sophia Types in Java) and to overall optimize SDK utilization within the plugin.
The most important aspect will be the integration of the calldata lib into the SDK which will omit the necessity to call the compiler and will result in a faster and more robust SDK and plugin.
The release addresses updates of dependencies and issues fixes due to security issues and possible vulnerabilities, optimizations, refactorings and the inclusion of the calldata lib as we as additional functionalities.

Definition of Terms

The aepp-sdk-java is a standalone Java library, which empowers Java, Kotlin and Scala developers to easily interact synchronously and asynchronously with the aeternity blockchain. The SDK realizes a generic approach to provide support for every kind of transaction type based on strongly typed models. A developer just needs to create a model for a certain transaction type and the mapping, byte transformation and interaction is executed transparently.
The contraect-maven-plugin comes as handy maven plugin which generates a Java class out of a Sophia Smart contract by leveraging the services provided by the SDK. Every generated class contains methods to easily and typesafe interact with the contract (deploy, call function endpoints).

Status Quo

Currently the aepp-sdk-java is released in version 3.0.1, the contraect-maven-plugin in version 2.0.0. At the moment, there is a lot of interaction with the compiler necessary to realize the communication with contracts, which results in reduced contract interaction performance in both SDK and plugin generated classes.
There is a lack of sufficient and in detail documentation and high quality samples wired together. Additionally, there is a strong need to update project dependencies and catch up the latest changes of aeternity.

Required Work

Integrate calldata lib

  • Integration of the calldata Lib to eliminate the interaction with the compiler, based on the implementation within the Javascript SDK by Denis - feedback is very welcome and will be incorporated accordingly.
  • Update and enhance affected tests within the SDK and Plugin
  • Update the Plugin according to the changes done when interacting with the compiler

Refactoring

This milestone will focus on maintenance and refactoring existing known topics
Tasks

Enhancements

This milestone will focus implementing enhancements and new features
Tasks

Documentation and Showcases

This milestone will focus on updating the documentation and the showcases which demo the use of SDK and Plugin features as template for developers.
Tasks

Bugfixes and open topics

This milestone handles to following bugfixes and open issues

  • Analysing a potential memory leak #232
  • Custom contract types in Plugin #60

Deliverables:

It is planned to ship the release after all (implementation) tasks are finished. A release after each task can be discussed.

  • A new major version of the libraries (SDK and Plugin) is published and available via public artifactories (mvn central).
  • An updated version of the documentation will be published on gitbook SDK / gitbook plugin.
  • Blog articles about the new versions will be published on medium.

Estimate

Similar to other proposals, i will be working on the SDK development based on my availability (currently 5 days a week possible), probably over the next 3-4 months.
Rough estimation (in working hours) of the tasks to be implemented:

  • Integrate calldata lib: ~100-160
  • Refactoring: ~80-120
  • Enhancements: ~60-100
  • Update documentation and showcases: ~30-60
  • Bugfixes and open topics: ~30-40

Known Limitations

Outlook

  • Providing state channel support for node interaction using websockets. Accompanied with a demo project it will be shown, how a java backend using the SDK can be leveraged to use the existing state channel demo
  • Provide chain-event subscription and demo project which showcases listening on chain and contract events.
  • Further improvements in form of eliminating the duplicated model classes are possible to remove complexity and improve maintainability, whereas this step has to be analyzed further on potential side effects.
  • Preparation for the upcoming Ceres hardfork

Publishment

Research and development will be published free of any proprietary license (open-source, open-access)
GitHub Repos:

Maintainance

  • I confirm that my research and code will be maintained with bug fixing free of charge for one year after publishing it. I cannot guarantee an ETA for providing bugfixes, since it dependes on my availability, but i will ship them asap.
4 Likes