Gang,
I played a little bit with Polygene and Kotlin:
val application = Energy4Java().newApplication(
ApplicationAssembler { factory ->
factory.newApplicationAssembly("Application 1") {
mode = Application.Mode.development
version = "1"
setMetaInfo(Object())
val layer1 = layer("Layer 1") {
module("Module 1/A") {
values(Some::class) {
withTypes(Some::class)
forMixin(Some::class).declareDefaults {
foo().set("bar")
}
}
}
}
val layer2 = layer("Layer 2") {
module("Module 2/A") {
services(Some::class) {
instantiateOnStartup()
}
}
}
layer2.uses(layer1)
}
})
application.activate()
application.passivate()
To get to the code above I added a few Kotlin extensions methods to the
bootstrap api:
https://kotlinlang.org/docs/reference/extensions.html
I'll push some library/lang-kotlin later, but it looks promising
already.