Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java, Life is Short - Code Europe 2023

Java, Life is Short - Code Europe 2023

Kevin Dubois

May 23, 2023
Tweet

More Decks by Kevin Dubois

Other Decks in Programming

Transcript

  1. @kevindubois #CodeEurope Disclaimer This is an opinionated talk. There are

    many ways and tools that can help you be more productive. This is a session about my personal experiences & recommendations.
  2. @kevindubois #CodeEurope Kevin Dubois • Developer Advocate at Red Hat

    • 18+ years of experience writing and delivering software • Speak English, Dutch, French, Italian • Passionate about improving Dev Experience with Open Source @[email protected] youtube.com/@thekevindubois linkedin.com/in/kevindubois github.com/kdubois
  3. @kevindubois #CodeEurope GPT jbang --preview init cat.java “Print a cat”

    jbang --preview init cli.java "create a currency converter" https://jbang.dev
  4. @kevindubois #CodeEurope Managing multiple (Java) versions Legacy project running Java

    8 “Newer projects”: Java 11 “State of the art”: Java 17 “Experimentation”: Java 20/21 Vendor supported: Java 17 GraalVM: 22
  5. @kevindubois #CodeEurope https://sdkman.io $ sdk list java $ sdk install

    java 11.0.19-open $ sdk install java 17.0.6-tem $ sdk use java 17.0.6-tem …. $ sdk install maven $ sdk install jbang $ sdk upgrade jbang $ sdk install quarkus 3.0.1.Final
  6. @kevindubois #CodeEurope Developer Flow Outer loop Inner loop Pull/Merge Request

    Production Build / Package Code Push Debug Code Review Build Deploy Security Tests Compliance Inner loop Outer loop Developer Test
  7. @kevindubois #CodeEurope apiVersion: v1 kind: Service metadata: name: code-with-quarkus spec:

    ports: - name: https port: 443 protocol: TCP targetPort: 8443 - name: http port: 80 protocol: TCP targetPort: 8080 selector: app.kubernetes.io/name: code-with-quarkus app.kubernetes.io/version: 1.0.0-SNAPSHOT type: ClusterIP apiVersion: apps/v1 kind: Deployment metadata: name: code-with-quarkus spec: replicas: 1 selector: matchLabels: app.kubernetes.io/version: 1.0.0-SNAPSHOT app.kubernetes.io/name: code-with-quarkus template: spec: containers: - env: - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: quay.io/kevindubois/code-with-quarkus:1.0.0 imagePullPolicy: Always name: code-with-quarkus ports: - containerPort: 8080 name: http protocol: TCP - containerPort: 8443 name: https protocol: TCP serviceAccountName: code-with-quarkus
  8. @kevindubois #CodeEurope $ quarkus extension add kubernetes $ quarkus deploy

    $ kn service create code-with-quarkus --image=quay.io/kevindubois/qwq:1.0
  9. @kevindubois #CodeEurope project : name: quarkus-knative version : 1.0.0-SNAPSHOT description

    : Quarkus Knative Demo App longDescription : Demo App demonstrating using Quarkus with Knative authors : - Kevin Dubois license : Apache-2.0 links: homepage : https://github.com/kdubois/quarkus-knative java: groupId : com.redhat.developer.demo version : 17 artifactId : quarked inceptionYear : 2023 release : github: overwrite : true changelog : formatted : ALWAYS preset: conventional-commits contributors : format: '- {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}}' assemble : javaArchive : quarked : active: ALWAYS formats : [ ZIP ] fileSets : - input: '.' includes : [ 'LICENSE' ] mainJar : path: target/{{distributionName}}-{{projectVersion}}-runner.jar
  10. @kevindubois #CodeEurope $ jreleaser init $ jreleaser assemble $ jreleaser

    full-release https://jreleaser.org https://github.com/kdubois/quarkus-jreleaser $ ./mvnw -Pnative,dist package $ ./mvnw -Prelease jreleaser:full-release
  11. @kevindubois #CodeEurope Start exploring in the OpenShift Sandbox. Learn containers,

    Kubernetes, and OpenShift in your browser. developers.redhat.com/developer-sandbox Try Red Hat's products and technologies without setup or configuration.