#とりあえず公式
https://jooby.io/
#Jooby?
Java/Kotlinを使用できるマイクロフレームワークです。
古めかしいフレームワークチックな気配は感じられなくとても楽にパパっとコードが組めちゃいます。
Windows上でも開発できますが、できればLinux上で開発したほうがよさげです
(体験談)公式に配布されてるCLIがWindows上でうまく動作しなかった。
プラグインも豊富でそれなりの規模のアプリケーションにも対応できそうな感じです。
build.gradleから抜粋(慣れてる人は.ktsで良いと思います!)
dependencies {
// DataSource via HikariCP
implementation 'io.jooby:jooby-hikari:2.7.1'
// Jdbi Module
implementation 'io.jooby:jooby-jdbi:2.7.2'
// Flyway Module
implementation 'io.jooby:jooby-flyway:2.7.1'
// mysql-connector
implementation 'mysql:mysql-connector-java:8.0.19'
// okhttp3
implementation "com.squareup.okhttp3:okhttp:4.3.1"
compile "io.jooby:jooby-netty"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "ch.qos.logback:logback-classic"
compile 'io.jooby:jooby-jackson:2.6.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.10.3'
compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.10.3'
compile "org.jetbrains.exposed:exposed-core:0.22.1"
compile "org.jetbrains.exposed:exposed-dao:0.22.1"
compile "org.jetbrains.exposed:exposed-jdbc:0.22.1"
compile "javax.xml.bind:jaxb-api:2.3.1"
testImplementation "com.nhaarman:mockito-kotlin:1.5.0"
testCompile "org.junit.jupiter:junit-jupiter-api"
testCompile "org.junit.jupiter:junit-jupiter-engine"
testCompile "io.jooby:jooby-test"
testCompile "com.squareup.okhttp3:okhttp"
}
1つ謎な点を挙げるとプラグインによっては読み込む位置が違うとうまく動作しなかった点かな
コード的な観点というと特徴的なのはApp.ktとかルーティングの部分くらい(詳しくは公式へ)
App.kt
class App : Kooby({
/** Jacksonモジュール、ここで読み込まないと効果がない */
install(JacksonModule())
/** CORS用のハンドラー、ここで読み込まないと効果がない */
val cors = Cors.from(config)
decorator(CorsHandler(cors))
get("/") {
Const.env.getString("tmp.imageFilePath")
}
// use(path,**())で別のルートテーブルを読み込める、パスごとにまとめれるので便利
use("/WebXX", WebXX())
})
fun main(args: Array<String>) {
runApp(args, App::class)
}
<まだ試してないこと>
元々Java8で始まったフレームワークっぽいですが、11でビルドしても問題なく動作してます。
それならJLinkと組ませてミニマムなJRE生成までセットでできたら良いかなぁ。。。
badass-runtime-plugin
ExampleにKotlinでの例もあります。(一回Windowsのローカルで試しましたが使えそうでした。)
以上