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

Java, Life is Short

Java, Life is Short

Kevin Dubois

June 06, 2023
Tweet

More Decks by Kevin Dubois

Other Decks in Technology

Transcript

  1. @kevindubois 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 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 @kevindubois.com
  3. @kevindubois GPT jbang --preview init cat.java “Print a cat” jbang

    --preview init cli.java "create a currency converter" https://jbang.dev
  4. @kevindubois 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 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 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 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 $ quarkus extension add kubernetes $ quarkus deploy $

    kn service create cwq --image=quay.io/kevindubois/cwq:1.0 $ quarkus deploy knative
  9. @kevindubois $ jreleaser init $ jreleaser assemble $ jreleaser full-release

    https://jreleaser.org https://github.com/kdubois/quarkus-jreleaser $ mvn -Pnative,dist package $ mvn -Prelease jreleaser:full-release
  10. @kevindubois 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.