Browse Source

http4k: upgrade everything, simplify buildfiles, add new graalvm backend (#7758)

* upgrade http4k, convert to using rocker instead of pebble

* upgrade us pgclient in apache, jetty and sun

* add sunhttploom server option

* remove templating from GraalVM as not compatible with templating framework for now)

* upgrade http4k, kotlin, gradle. simplify loom jars for gradle 19

* added default and apache graal modules

* upgrade http4k and kotlin
David Denton 2 years ago
parent
commit
b18e5115fb
34 changed files with 251 additions and 177 deletions
  1. 20 0
      frameworks/Kotlin/http4k/apache-graalvm/build.gradle
  2. 92 0
      frameworks/Kotlin/http4k/apache-graalvm/config/reflect-config.json
  3. 9 0
      frameworks/Kotlin/http4k/apache-graalvm/config/resource-config.json
  4. 10 0
      frameworks/Kotlin/http4k/apache-graalvm/src/main/kotlin/http4k/Http4kGraalVMBenchmarkServer.kt
  5. 0 1
      frameworks/Kotlin/http4k/apache/build.gradle
  6. 0 1
      frameworks/Kotlin/http4k/apache4/build.gradle
  7. 21 0
      frameworks/Kotlin/http4k/benchmark_config.json
  8. 5 16
      frameworks/Kotlin/http4k/build.gradle
  9. 17 0
      frameworks/Kotlin/http4k/config.toml
  10. 1 2
      frameworks/Kotlin/http4k/graalvm/build.gradle
  11. 2 2
      frameworks/Kotlin/http4k/graalvm/src/main/kotlin/http4k/Http4kGraalVMBenchmarkServer.kt
  12. 1 1
      frameworks/Kotlin/http4k/gradle/wrapper/gradle-wrapper.properties
  13. 33 0
      frameworks/Kotlin/http4k/http4k-apache-graalvm.dockerfile
  14. 3 3
      frameworks/Kotlin/http4k/http4k-apache.dockerfile
  15. 3 3
      frameworks/Kotlin/http4k/http4k-apache4.dockerfile
  16. 3 3
      frameworks/Kotlin/http4k/http4k-graalvm.dockerfile
  17. 3 3
      frameworks/Kotlin/http4k/http4k-jetty.dockerfile
  18. 3 39
      frameworks/Kotlin/http4k/http4k-jettyloom-jdbc.dockerfile
  19. 3 39
      frameworks/Kotlin/http4k/http4k-jettyloom-pgclient.dockerfile
  20. 3 3
      frameworks/Kotlin/http4k/http4k-ktorcio.dockerfile
  21. 3 3
      frameworks/Kotlin/http4k/http4k-ktornetty.dockerfile
  22. 3 3
      frameworks/Kotlin/http4k/http4k-netty.dockerfile
  23. 3 3
      frameworks/Kotlin/http4k/http4k-ratpack.dockerfile
  24. 3 39
      frameworks/Kotlin/http4k/http4k-sunhttploom.dockerfile
  25. 3 3
      frameworks/Kotlin/http4k/http4k-undertow.dockerfile
  26. 3 3
      frameworks/Kotlin/http4k/http4k.dockerfile
  27. 0 1
      frameworks/Kotlin/http4k/jetty/build.gradle
  28. 0 1
      frameworks/Kotlin/http4k/ktorcio/build.gradle
  29. 0 1
      frameworks/Kotlin/http4k/ktornetty/build.gradle
  30. 0 1
      frameworks/Kotlin/http4k/netty/build.gradle
  31. 0 1
      frameworks/Kotlin/http4k/ratpack/build.gradle
  32. 1 0
      frameworks/Kotlin/http4k/settings.gradle
  33. 0 1
      frameworks/Kotlin/http4k/sunhttp/build.gradle
  34. 0 1
      frameworks/Kotlin/http4k/undertow/build.gradle

+ 20 - 0
frameworks/Kotlin/http4k/apache-graalvm/build.gradle

@@ -0,0 +1,20 @@
+dependencies {
+    api(project(":core-jdbc"))
+    api(project(":apache"))
+}
+
+apply plugin: 'application'
+mainClassName = "http4k.Http4kGraalVMBenchmarkServerKt"
+apply plugin: 'com.github.johnrengelman.shadow'
+
+jar {
+    manifest {
+        attributes 'Main-Class': mainClassName
+    }
+}
+
+shadowJar {
+    baseName = "http4k-benchmark"
+    classifier = null
+    version = null
+}

+ 92 - 0
frameworks/Kotlin/http4k/apache-graalvm/config/reflect-config.json

@@ -0,0 +1,92 @@
+[
+  {
+    "name": "com.zaxxer.hikari.HikariConfig",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "com.zaxxer.hikari.HikariDataSource",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ],
+    "allDeclaredFields": true
+  },
+  {
+    "name": "com.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry[]"
+  },
+  {
+    "name": "Fortune",
+    "allDeclaredConstructors": true,
+    "allPublicConstructors": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
+  {
+    "name": "FortunesList",
+    "allDeclaredConstructors": true,
+    "allPublicConstructors": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
+  {
+    "name": "com.zaxxer.hikari.util.ConcurrentBag",
+    "allDeclaredConstructors": true,
+    "allPublicConstructors": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
+  {
+    "name": "com.zaxxer.hikari.pool.PoolEntry",
+    "allDeclaredConstructors": true,
+    "allPublicConstructors": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true,
+    "allDeclaredClasses": true,
+    "allPublicClasses": true
+  },
+  {
+    "name": "java.sql.Statement[]"
+  },
+  {
+    "name": "org.postgresql.Driver"
+  },
+  {
+    "name": "java.lang.SecurityManager",
+    "methods": [
+      {
+        "name": "checkPermission",
+        "parameterTypes": [
+          "java.security.Permission"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.lang.System",
+    "methods": [
+      {
+        "name": "getSecurityManager",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.security.AccessController",
+    "methods": [
+      {
+        "name": "doPrivileged",
+        "parameterTypes": [
+          "java.security.PrivilegedExceptionAction"
+        ]
+      }
+    ]
+  }
+]

+ 9 - 0
frameworks/Kotlin/http4k/apache-graalvm/config/resource-config.json

@@ -0,0 +1,9 @@
+{
+  "resources": {
+    "includes": [
+      {
+        "pattern": ".*peb$"
+      }
+    ]
+  }
+}

+ 10 - 0
frameworks/Kotlin/http4k/apache-graalvm/src/main/kotlin/http4k/Http4kGraalVMBenchmarkServer.kt

@@ -0,0 +1,10 @@
+package http4k
+
+import Http4kBenchmarkServer
+import PostgresDatabase
+import TfbApacheServer
+import start
+
+fun main() {
+    Http4kBenchmarkServer(PostgresDatabase()).start(TfbApacheServer(9000))
+}

+ 0 - 1
frameworks/Kotlin/http4k/apache/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/apache4/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 21 - 0
frameworks/Kotlin/http4k/benchmark_config.json

@@ -92,6 +92,27 @@
         "notes": "https://http4k.org",
         "notes": "https://http4k.org",
         "versus": "servlet"
         "versus": "servlet"
       },
       },
+      "apache-graalvm": {
+        "orm": "Raw",
+        "database_os": "Linux",
+        "cached_query_url": "/cached?queries=",
+        "db_url": "/db",
+        "query_url": "/queries?queries=",
+        "update_url": "/updates?queries=",
+        "database": "Postgres",
+        "json_url": "/json",
+        "plaintext_url": "/plaintext",
+        "port": 9000,
+        "approach": "Realistic",
+        "classification": "Micro",
+        "framework": "http4k",
+        "language": "Kotlin",
+        "platform": "graalvm",
+        "webserver": "None",
+        "os": "Linux",
+        "notes": "https://http4k.org",
+        "versus": "servlet"
+      },
       "graalvm": {
       "graalvm": {
         "orm": "Raw",
         "orm": "Raw",
         "database_os": "Linux",
         "database_os": "Linux",

+ 5 - 16
frameworks/Kotlin/http4k/build.gradle

@@ -1,6 +1,6 @@
 buildscript {
 buildscript {
-    ext.kotlin_version = "1.7.21"
-    ext.http4k_version = "4.34.1.0"
+    ext.kotlin_version = "1.7.22"
+    ext.http4k_version = "4.34.2.0"
 
 
     repositories {
     repositories {
         mavenCentral()
         mavenCentral()
@@ -20,24 +20,13 @@ allprojects {
 
 
     apply plugin: "kotlin"
     apply plugin: "kotlin"
 
 
-    compileKotlin.kotlinOptions.jvmTarget = "11"
+    compileKotlin.kotlinOptions.jvmTarget = "17"
 
 
-    sourceCompatibility = JavaVersion.VERSION_11
-    targetCompatibility = JavaVersion.VERSION_11
+    sourceCompatibility = JavaVersion.VERSION_17
+    targetCompatibility = JavaVersion.VERSION_17
 
 
     version = project.hasProperty('releaseVersion') ? project.releaseVersion : 'LOCAL'
     version = project.hasProperty('releaseVersion') ? project.releaseVersion : 'LOCAL'
     group = 'org.http4k'
     group = 'org.http4k'
 
 
     compileTestKotlin.kotlinOptions.languageVersion = "1.7"
     compileTestKotlin.kotlinOptions.languageVersion = "1.7"
 }
 }
-
-dependencies {
-    api(project(":core"))
-    api(project(":apache"))
-    api(project(":jetty"))
-    api(project(":ktorcio"))
-    api(project(":ktornetty"))
-    api(project(":netty"))
-    api(project(":ratpack"))
-    api(project(":undertow"))
-}

+ 17 - 0
frameworks/Kotlin/http4k/config.toml

@@ -181,6 +181,23 @@ platform = "apache-httpcore"
 webserver = "None"
 webserver = "None"
 versus = "servlet"
 versus = "servlet"
 
 
+[apache-graalvm]
+urls.plaintext = "/plaintext"
+urls.json = "/json"
+urls.db = "/db"
+urls.query = "/queries?queries="
+urls.update = "/updates?queries="
+urls.cached_query = "/cached?queries="
+approach = "Realistic"
+classification = "Micro"
+database = "Postgres"
+database_os = "Linux"
+os = "Linux"
+orm = "Raw"
+platform = "graalvm"
+webserver = "None"
+versus = "servlet"
+
 [graalvm]
 [graalvm]
 urls.plaintext = "/plaintext"
 urls.plaintext = "/plaintext"
 urls.json = "/json"
 urls.json = "/json"

+ 1 - 2
frameworks/Kotlin/http4k/graalvm/build.gradle

@@ -1,6 +1,6 @@
 dependencies {
 dependencies {
     api(project(":core-jdbc"))
     api(project(":core-jdbc"))
-    api(project(":apache"))
+    api(project(":sunhttp"))
 }
 }
 
 
 apply plugin: 'application'
 apply plugin: 'application'
@@ -17,5 +17,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 2 - 2
frameworks/Kotlin/http4k/graalvm/src/main/kotlin/http4k/Http4kGraalVMBenchmarkServer.kt

@@ -2,9 +2,9 @@ package http4k
 
 
 import Http4kBenchmarkServer
 import Http4kBenchmarkServer
 import PostgresDatabase
 import PostgresDatabase
-import TfbApacheServer
+import org.http4k.server.SunHttp
 import start
 import start
 
 
 fun main() {
 fun main() {
-    Http4kBenchmarkServer(PostgresDatabase()).start(TfbApacheServer(9000))
+    Http4kBenchmarkServer(PostgresDatabase()).start(SunHttp(9000))
 }
 }

+ 1 - 1
frameworks/Kotlin/http4k/gradle/wrapper/gradle-wrapper.properties

@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
 zipStorePath=wrapper/dists

+ 33 - 0
frameworks/Kotlin/http4k/http4k-apache-graalvm.dockerfile

@@ -0,0 +1,33 @@
+FROM gradle:7.6-jdk17 as gradle
+USER root
+WORKDIR /http4k
+COPY build.gradle build.gradle
+COPY settings.gradle settings.gradle
+COPY apache apache
+COPY core core
+COPY core-jdbc core-jdbc
+COPY core-pgclient core-pgclient
+COPY apache-graalvm apache-graalvm
+
+RUN gradle --quiet --no-daemon apache-graalvm:shadowJar
+
+FROM ghcr.io/graalvm/graalvm-ce:ol7-java17-22.3.0 as graalvm
+RUN gu install native-image
+
+COPY --from=gradle /http4k/core/src/main/resources/* /home/app/http4k-apache-graalvm/
+COPY --from=gradle /http4k/apache-graalvm/build/libs/http4k-benchmark.jar /home/app/http4k-apache-graalvm/
+COPY --from=gradle /http4k/apache-graalvm/config/*.json /home/app/http4k-apache-graalvm/
+
+WORKDIR /home/app/http4k-apache-graalvm
+
+RUN native-image \
+    -H:ReflectionConfigurationFiles=reflect-config.json \
+    -H:ResourceConfigurationFiles=resource-config.json \
+    --initialize-at-build-time="org.slf4j.LoggerFactory,org.slf4j.simple.SimpleLogger,org.slf4j.impl.StaticLoggerBinder" \
+    --no-fallback -cp http4k-benchmark.jar http4k.Http4kGraalVMBenchmarkServerKt
+
+FROM frolvlad/alpine-glibc
+RUN apk update && apk add libstdc++
+EXPOSE 9000
+COPY --from=graalvm /home/app/http4k-apache-graalvm/http4k.http4kgraalvmbenchmarkserverkt /app/http4k-apache-graalvm
+ENTRYPOINT ["/app/http4k-apache-graalvm"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-apache.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY apache apache
 COPY core core
 COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
-RUN gradle --quiet apache:shadowJar
+RUN gradle --quiet --no-daemon apache:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "apache/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "apache/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-apache4.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY apache4 apache4
 COPY core core
 COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
-RUN gradle --quiet apache4:shadowJar
+RUN gradle --quiet --no-daemon apache4:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "apache4/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "apache4/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-graalvm.dockerfile

@@ -1,15 +1,15 @@
-FROM gradle:7.5.1-jdk11 as gradle
+FROM gradle:7.6-jdk17 as gradle
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
 COPY settings.gradle settings.gradle
 COPY settings.gradle settings.gradle
-COPY apache apache
 COPY core core
 COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY graalvm graalvm
 COPY graalvm graalvm
+COPY sunhttp sunhttp
 
 
-RUN gradle --quiet graalvm:shadowJar
+RUN gradle --quiet --no-daemon graalvm:shadowJar
 
 
 FROM ghcr.io/graalvm/graalvm-ce:ol7-java17-22.3.0 as graalvm
 FROM ghcr.io/graalvm/graalvm-ce:ol7-java17-22.3.0 as graalvm
 RUN gu install native-image
 RUN gu install native-image

+ 3 - 3
frameworks/Kotlin/http4k/http4k-jetty.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY jetty jetty
 COPY jetty jetty
-RUN gradle --quiet jetty:shadowJar
+RUN gradle --quiet --no-daemon jetty:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "jetty/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "jetty/build/libs/http4k-benchmark.jar"]

+ 3 - 39
frameworks/Kotlin/http4k/http4k-jettyloom-jdbc.dockerfile

@@ -1,35 +1,4 @@
-# START: WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-FROM eclipse-temurin:19-jdk-alpine as gradle
-
-CMD ["gradle"]
-
-ENV GRADLE_HOME /opt/gradle
-
-RUN set -o errexit -o nounset \
-    && echo "Adding gradle user and group" \
-    && addgroup --system --gid 1000 gradle \
-    && adduser --system --ingroup gradle --uid 1000 --shell /bin/ash gradle \
-    && mkdir /home/gradle/.gradle \
-    && chown -R gradle:gradle /home/gradle \
-    \
-    && echo "Symlinking root Gradle cache to gradle Gradle cache" \
-    && ln -s /home/gradle/.gradle /root/.gradle
-
-VOLUME /home/gradle/.gradle
-
-WORKDIR /home/gradle
-
-ENV GRADLE_VERSION 7.6-milestone-1
-ARG GRADLE_DOWNLOAD_SHA256=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4
-RUN set -o errexit -o nounset \
-    && wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \
-    && unzip -qq gradle.zip \
-    && rm gradle.zip \
-    && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
-    && ln -s "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle \
-    && gradle --version
-# END : WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-
+FROM gradle:7.6-jdk19
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -37,13 +6,8 @@ COPY settings.gradle settings.gradle
 COPY core core
 COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY jettyloom-jdbc jettyloom-jdbc
 COPY jettyloom-jdbc jettyloom-jdbc
-RUN gradle --quiet jettyloom-jdbc:shadowJar
-
-FROM openjdk:19-jdk-slim as java
-COPY --from=gradle /http4k/jettyloom-jdbc/build/libs/http4k-benchmark.jar /home/app/
-
-WORKDIR /home/app
+RUN gradle --quiet --no-daemon jettyloom-jdbc:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "/home/app/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "jettyloom-jdbc/build/libs/http4k-benchmark.jar"]

+ 3 - 39
frameworks/Kotlin/http4k/http4k-jettyloom-pgclient.dockerfile

@@ -1,35 +1,4 @@
-# START: WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-FROM eclipse-temurin:19-jdk-alpine as gradle
-
-CMD ["gradle"]
-
-ENV GRADLE_HOME /opt/gradle
-
-RUN set -o errexit -o nounset \
-    && echo "Adding gradle user and group" \
-    && addgroup --system --gid 1000 gradle \
-    && adduser --system --ingroup gradle --uid 1000 --shell /bin/ash gradle \
-    && mkdir /home/gradle/.gradle \
-    && chown -R gradle:gradle /home/gradle \
-    \
-    && echo "Symlinking root Gradle cache to gradle Gradle cache" \
-    && ln -s /home/gradle/.gradle /root/.gradle
-
-VOLUME /home/gradle/.gradle
-
-WORKDIR /home/gradle
-
-ENV GRADLE_VERSION 7.6-milestone-1
-ARG GRADLE_DOWNLOAD_SHA256=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4
-RUN set -o errexit -o nounset \
-    && wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \
-    && unzip -qq gradle.zip \
-    && rm gradle.zip \
-    && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
-    && ln -s "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle \
-    && gradle --version
-# END : WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-
+FROM gradle:7.6-jdk19
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -37,13 +6,8 @@ COPY settings.gradle settings.gradle
 COPY core core
 COPY core core
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY jettyloom-pgclient jettyloom-pgclient
 COPY jettyloom-pgclient jettyloom-pgclient
-RUN gradle --quiet jettyloom-pgclient:shadowJar
-
-FROM openjdk:19-jdk-slim as java
-COPY --from=gradle /http4k/jettyloom-pgclient/build/libs/http4k-benchmark.jar /home/app/
-
-WORKDIR /home/app
+RUN gradle --quiet --no-daemon jettyloom-pgclient:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "/home/app/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "jettyloom-pgclient/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-ktorcio.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY ktorcio ktorcio
 COPY ktorcio ktorcio
-RUN gradle --quiet ktorcio:shadowJar
+RUN gradle --quiet --no-daemon ktorcio:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "ktorcio/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "ktorcio/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-ktornetty.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY ktornetty ktornetty
 COPY ktornetty ktornetty
-RUN gradle --quiet ktornetty:shadowJar
+RUN gradle --quiet --no-daemon ktornetty:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "ktornetty/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "ktornetty/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-netty.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY netty netty
 COPY netty netty
-RUN gradle --quiet netty:shadowJar
+RUN gradle --quiet --no-daemon netty:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "netty/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "netty/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-ratpack.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY ratpack ratpack
 COPY ratpack ratpack
-RUN gradle --quiet ratpack:shadowJar
+RUN gradle --quiet --no-daemon ratpack:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "ratpack/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "ratpack/build/libs/http4k-benchmark.jar"]

+ 3 - 39
frameworks/Kotlin/http4k/http4k-sunhttploom.dockerfile

@@ -1,35 +1,4 @@
-# START: WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-FROM eclipse-temurin:19-jdk-alpine as gradle
-
-CMD ["gradle"]
-
-ENV GRADLE_HOME /opt/gradle
-
-RUN set -o errexit -o nounset \
-    && echo "Adding gradle user and group" \
-    && addgroup --system --gid 1000 gradle \
-    && adduser --system --ingroup gradle --uid 1000 --shell /bin/ash gradle \
-    && mkdir /home/gradle/.gradle \
-    && chown -R gradle:gradle /home/gradle \
-    \
-    && echo "Symlinking root Gradle cache to gradle Gradle cache" \
-    && ln -s /home/gradle/.gradle /root/.gradle
-
-VOLUME /home/gradle/.gradle
-
-WORKDIR /home/gradle
-
-ENV GRADLE_VERSION 7.6-milestone-1
-ARG GRADLE_DOWNLOAD_SHA256=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4
-RUN set -o errexit -o nounset \
-    && wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \
-    && unzip -qq gradle.zip \
-    && rm gradle.zip \
-    && mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
-    && ln -s "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle \
-    && gradle --version
-# END : WE ARE BUILDING A CUSTOM GRADLE IMAGE BECAUSE JAVA 19 IS NOT CURRENTLY SUPPORTED IN PUBLIC IMAGES
-
+FROM gradle:7.6-jdk19
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -37,13 +6,8 @@ COPY settings.gradle settings.gradle
 COPY core core
 COPY core core
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY sunhttploom sunhttploom
 COPY sunhttploom sunhttploom
-RUN gradle --quiet sunhttploom:shadowJar
-
-FROM openjdk:19-jdk-slim as java
-COPY --from=gradle /http4k/sunhttploom/build/libs/http4k-benchmark.jar /home/app/
-
-WORKDIR /home/app
+RUN gradle --quiet --no-daemon sunhttploom:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "/home/app/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "--enable-preview", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "sunhttploom/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k-undertow.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY undertow undertow
 COPY undertow undertow
-RUN gradle --quiet undertow:shadowJar
+RUN gradle --quiet --no-daemon undertow:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "undertow/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "undertow/build/libs/http4k-benchmark.jar"]

+ 3 - 3
frameworks/Kotlin/http4k/http4k.dockerfile

@@ -1,4 +1,4 @@
-FROM gradle:7.5.1-jdk11
+FROM gradle:7.6-jdk17
 USER root
 USER root
 WORKDIR /http4k
 WORKDIR /http4k
 COPY build.gradle build.gradle
 COPY build.gradle build.gradle
@@ -7,8 +7,8 @@ COPY core core
 COPY core-jdbc core-jdbc
 COPY core-jdbc core-jdbc
 COPY core-pgclient core-pgclient
 COPY core-pgclient core-pgclient
 COPY sunhttp sunhttp
 COPY sunhttp sunhttp
-RUN gradle --quiet sunhttp:shadowJar
+RUN gradle --quiet --no-daemon sunhttp:shadowJar
 
 
 EXPOSE 9000
 EXPOSE 9000
 
 
-CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AggressiveOpts", "-XX:+AlwaysPreTouch", "-jar", "sunhttp/build/libs/http4k-benchmark.jar"]
+CMD ["java", "-server", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-XX:+AlwaysPreTouch", "-jar", "sunhttp/build/libs/http4k-benchmark.jar"]

+ 0 - 1
frameworks/Kotlin/http4k/jetty/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/ktorcio/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/ktornetty/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/netty/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/ratpack/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 1 - 0
frameworks/Kotlin/http4k/settings.gradle

@@ -3,6 +3,7 @@ include 'core'
 include 'core-jdbc'
 include 'core-jdbc'
 include 'core-pgclient'
 include 'core-pgclient'
 include 'apache'
 include 'apache'
+include 'apache-graalvm'
 include 'apache4'
 include 'apache4'
 include 'graalvm'
 include 'graalvm'
 include 'jetty'
 include 'jetty'

+ 0 - 1
frameworks/Kotlin/http4k/sunhttp/build.gradle

@@ -10,5 +10,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }

+ 0 - 1
frameworks/Kotlin/http4k/undertow/build.gradle

@@ -11,5 +11,4 @@ shadowJar {
     baseName = "http4k-benchmark"
     baseName = "http4k-benchmark"
     classifier = null
     classifier = null
     version = null
     version = null
-    mergeServiceFiles()
 }
 }