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

Java, Life is Short

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Java, Life is Short

Avatar for Kevin Dubois

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.