0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Joobyはいいぞ

Posted at

#とりあえず公式
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のローカルで試しましたが使えそうでした。)

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?