Description
Background:
At the moment, the Java runner plugin requires you to use an existing template project and change it according to one’s needs.
Task:
Improve developer experience on the existing Java plugin runner so that we can attract and increase the number of users from the Java community.
Limitations:
- The architecture doesn’t manage multiple plugins. All need to be set in the same project
- The standard Java unit of deployment is the JAR.
- The plugin doesn’t allow for other widespread JVM-based languages (e.g., Scala, Kotlin, Clojure, Groovy). Though it would be technically feasible, we would need to change the template’s language
Requirements:
The new plugin runner:
- MUST use the JAR as the unit of deployment
- MUST not require the usage of a project template
- MAY require the plugin to follow a certain class hierarchy (i.e., extends JavaPlugin)
- MAY use a more specific format to enforce a structure
- MUST allow multiple plugins to be deployed
- MUST use isolated classloader for each plugin
- MUST allow any JVM-compatible bytecode to run, whatever the language it was generated from
- MAY allow hot reloading of Java plugins
- MAY require a single JAR per plugin (to ease the classpath management of shared libraries)
- MUST define a minimum JVM version
Difficulty: Normal
Project size: ~350 hours.