bit.ly/quarkus-worldtour-jam Thanks for hosting us

bit.ly/quarkus-worldtour-jam 2 Here’s how it’s going to work tonight...

bit.ly/quarkus-worldtour-jam line up intros A taster demo More of an structured introduction to Quarkus Code Jam: follow along demos and examples with Q&A as we go wrap up and last questions

bit.ly/quarkus-worldtour-jam Who’s on stage today?

You too! ask questions on the chat, we’ll try to answer them as we go and we’ll wrap at the end

bit.ly/quarkus-worldtour-jam 5 Upfront setup JDK 8 or 11+ Maven Git bit.ly/quarkus-worldtour-jam Editor code

bit.ly/quarkus-worldtour-jam bit.ly/quarkus-worldtour-jam Developer Joy

bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam How Does a Framework Start?

Runtime Build Time

@ @

Packaging Load config file Classpath scanning Build its Start the (maven, from file system to find model of management gradle…) Parse it annotated classes the world. (thread, Attempt to load pool…) class to enable/disable features bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam The Quarkus Way

Runtime Build Time

@ @

@ @ Start load scan model Package

Build Time Runtime

bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam ● Quarkus is instrumentingDeveloper Joy & adapting code for performance ● Let’s use this for better developer tooling! ● less boilerplate, ● better defaults ● container centric development approach You’ve never seen Hot code replace like this !

bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam Three things:

Performance Capabilities Community

bit.ly/quarkus-worldtour-jam Performance

bit.ly/quarkus-worldtour-jam Performance is awesome

Quarkus tailors your application for GraalVM and HotSpot.

Amazing boot times, incredibly low RSS memory (not just heap size!)

near instant scale up and high density memory utilization

Spoiler: Graal is optional - you still get awesome perf without it

bit.ly/quarkus-worldtour-jam For performance, Quarkus framework + extensions

1. Reduce unneeded overheads 2. Migrate some startup code to build time! 3. Makes code aware 4. Makes code more Graal friendly

bit.ly/quarkus-worldtour-jam GraalVM

Standard Java is a challenge.

Java’s dynamic, open view is at odds with an AOT approach

Quarkus makes using Graal so much easier Quarkus takes a “container first” approach because tuning for kubernetes means your Java application works well - everywhere else!

bit.ly/quarkus-worldtour-jam Three things:

Performance Capabilities Community

bit.ly/quarkus-worldtour-jam You may have heard

Quarkus is just ...

bit.ly/quarkus-worldtour-jam It’s just a native It’s just for kubernetes compiler It’s just for small apps

Quarkus is just … so much more

bit.ly/quarkus-worldtour-jam quarkus.io

Supersonic Subatomic Java A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.

bit.ly/quarkus-worldtour-jam Comprehensive

A cohesive, fun to use, full-stack framework

leveraging a growing list of over 100 best-of-breed libraries that you love and use.

All wired on a standard backbone

bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam

Quarkus is not

Just a native compiler - it’s optional - use it where it makes sense. It’s much easier with Quarkus

Just for new apps - Quarkus is applicable to all forms of Java application - new, old, web based , desktop. Even CLI’s

Just for small apps - Quarkus scales across the range

A Spring-lite copy - Quarkus lets you use almost all your code and dependencies and all of your skills. The only differences are where it’s essential for the cloud

Just another framework! bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam

So what is Quarkus?

Quarkus is a comprehensive, inclusive, community driven, open source, practical reimaging of Java for the Cloud era

Quarkus takes all your frameworks, all your dependencies, all your code and helps make them work together in the best performing way for the Cloud

Quarkus improves the developer experience too - by using the same techniques to give you a much more productive toolkit for cloud application development

Bonus: The performance and productivity improvements work for your existing code - even if its not moving to the cloud bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam

Quarkus Extensions

The jewel of Quarkus is the mechanisms for making your dependencies just work in a container environment

Whether adding container awareness, performance improvements, wiring into kubernetes services (or other clouds) etc

Even the hard work of using Graal is made easier (and often invisible) since the extension framework generates the config, adapter code etc at build time.

There are core extensions that are part of Quarkus There are many more that are community created and owned.

bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jam Compute Cloud (EC2) Agroal AWS 2 Elastic Artemis JMS Amazon Alexa Container Service (ECS) AWS Lambda Amazon DynamoDB Apache Camel AWS 2 Elastic AWS Lambda HTTP Amazon IAM Kubernetes Service (EKS) AWS Lambda HTTP V1 Amazon KMS Apache Camel AWS 2 Eventbridge (deprecated) Amazon S3 Apache Camel AWS 2 Identity and AWS Lambda X-Ray Amazon SES Access Management (IAM) Azure Functions HTTP Amazon SNS Apache Camel AWS 2 Key Blaze-Persistence Amazon SQS Management Service (KMS) Container Image AMQP JMS client Apache Camel AWS 2 Kinesis Container Image Jib Apache Avro Apache Camel AWS 2 Lambda Container Image OpenShift Apache Camel ActiveMQ Apache Camel AWS 2 Managed Container Image S2I Apache Camel AMQP Streaming for Apache Kafka (MSK) DataStax Apache Cassandra client Apache Camel ArangoDb Apache Camel AWS 2 MQ Debezium Quarkus Outbox Apache Camel AS2 Apache Camel AWS 2 S3 Storage Eclipse Vertx GraphQL Apache Camel Async HTTP Client Service Elasticsearch REST client (AHC) Apache Camel AWS 2 Security Elasticsearch REST High Level Apache Camel Async HTTP Client Token Service (STS) Client (AHC) Websocket Apache Camel AWS 2 Simple Elytron Security JDBC Apache Camel AtlasMap Email Service (SES) Elytron Security LDAP Realm Apache Camel Atom bit.ly/quarkus-worldtour-jambit.ly/quarkus-worldtour-jamApache Camel AWS 2 Simple Elytron Security OAuth 2.0 Apache Camel Attachments Notification System (SNS) Elytron Security Properties File Apache Camel Avro Apache Camel AWS 2 Simple Flyway Apache Camel Avro RPC Queue Service (SQS) Funqy AWS Lambda Binding Apache Camel AWS 2 Athena Apache Camel AWS 2 Translate Funqy Google Cloud Functions Apache Camel AWS 2 CloudWatch Apache Camel AWS Elastic Funqy HTTP Binding Apache Camel AWS 2 DynamoDB Compute Cloud (EC2) Funqy Knative Events Binding Apache Camel AWS 2 Elastic Apache Camel AWS Elastic Google Cloud Bigquery Container Service (ECS) Google Cloud Functions Google Cloud Functions HTTP Apache Camel AWS Elastic Google Cloud Pubsub Kubernetes Service (EKS) gRPC Apache Camel AWS Identity and Hazelcast Client Access Management (IAM) Envers Apache Camel AWS Key Hibernate ORM Management Service (KMS) Hibernate ORM with Panache Apache Camel AWS Kinesis Hibernate ORM with Panache and Apache Camel AWS Lambda Kotlin Apache Camel AWS S3 Storage Hibernate Reactive Service Hibernate Reactive with Panache Apache Camel AWS Simple Hibernate Search + Elasticsearch Notification System (SNS) Hibernate Validator Apache Camel AWS Simple Queue Infinispan Client Service (SQS) Integration Apache Camel AWS Simple Jackson Workflow (SWF) JAXB Apache Camel AWS SimpleDB JDBC Driver - DB2 (SDB) JDBC Driver - Derby Apache Camel AWS Translate JDBC Driver - H2 Apache Camel Azure JDBC Driver - MariaDB Apache Camel Azure Event Hubs JDBC Driver - Microsoft SQL Apache Camel Azure Storage Blob Server Service JDBC Driver - MySQL Apache Camel Azure Storage JDBC Driver - PostgreSQL Queue Service JGit Apache Camel Base64 JSON-B Apache Camel Bean JSON-P Apache Camel Bean Validator Keycloak Admin Client Apache Camel Bindy Keycloak Authorization Apache Camel Box Kogito Apache Camel Braintree Kotlin Apache Camel Browse Kubernetes Apache Camel Caffeine Cache Kubernetes Client Apache Camel Caffeine LRUCache Kubernetes Config Apache Camel Cassandra CQL Kubernetes Service Binding Apache Camel CBOR Liquibase Apache Camel Cloud Logging GELF Apache Camel Component DSL Logging JSON Apache Camel Consul Logging Sentry Apache Camel Control Bus Micrometer metrics Apache Camel Core Minikube Apache Camel CouchDB Minio Client extension Apache Camel Cron MongoDB client Apache Camel Crypto (JCE) MongoDB with Panache Apache Camel CSimple MongoDB with Panache for Kotlin Apache Camel CSV Mutiny Apache Camel Data Format Mutiny support for REST Client Apache Camel Debezium Narayana JTA - Transaction MongoDB Connector manager Apache Camel Debezium MySQL Narayana STM - Connector Transactional Memory Apache Camel Debezium Neo4j client PostgresSQL Connector OpenID Connect Apache Camel Debezium SQL OpenID Connect Client Server Connector OpenID Connect Client Filter Apache Camel Direct OpenID Connect Token Apache Camel Disruptor Propagation Apache Camel Dozer OpenShift Apache Camel Dropbox OpenShift Client Apache Camel Elasticsearch Rest OptaPlanner AI constraint solver Apache Camel Endpoint DSL OptaPlanner Jackson Apache Camel Exec OptaPlanner JSON-B Apache Camel FHIR Picocli Apache Camel File Quarkus Extension for Spring Boot Apache Camel File Watch properties Apache Camel Flatpack Quarkus Extension for Spring Apache Camel FOP Cache API Apache Camel FTP Quarkus Extension for Spring Apache Camel Geocoder Cloud Config Client Apache Camel Git Quarkus Extension for Spring Data Apache Camel GitHub JPA API Apache Camel Google BigQuery Quarkus Extension for Spring Data Apache Camel Google Calendar REST Apache Camel Google Drive Quarkus Extension for Spring DI Apache Camel Google Mail API Apache Camel Google Pubsub Quarkus Extension for Spring Apache Camel Google Sheets Scheduled Apache Camel GraphQL Quarkus Extension for Spring Apache Camel Grok Security API Apache Camel gRPC Quarkus Extension for Spring Web Apache Camel Gson API Apache Camel Hazelcast Atomic Quartz Number Qute Templating Apache Camel Headersmap Reactive Apache Camel HTTP Reactive DB2 client Apache Camel HTTP client support Reactive HTTP and WebSocket with Vertx Connector Apache Camel Hystrix Reactive MySQL client Apache Camel iCal Reactive PostgreSQL client Apache Camel Infinispan Reactive Routes Apache Camel InfluxDB Redis Client Apache Camel integration with REST Client SmallRye Reactive Messaging REST Client Jackson Apache Camel IPFS REST Client JAXB Apache Camel Jackson REST Client JSON-B Apache Camel JacksonXML REST resources for Hibernate Apache Camel Javax Websocket ORM with Panache (JSR 356) REST resources for MongoDB with Apache Camel JAXB Panache Apache Camel JDBC RESTEasy Jackson Apache Camel Jing RESTEasy JAX-RS Apache Camel Jira RESTEasy JAXB Apache Camel JMS RESTEasy JSON-B Apache Camel Johnzon RESTEasy Multipart Apache Camel JOLT RESTEasy Mutiny Apache Camel JPA RESTEasy Qute Apache Camel JSLT RESTEasy Reactive Apache Camel JSON Path RESTEasy Reactive Jackson Apache Camel JSON Schema RESTEasy Reactive JSON-B Validator RESTEasy Reactive Qute Apache Camel JSON-B Scala Apache Camel JSONATA Scheduler - tasks Apache Camel JTA Security JPA Apache Camel Kafka SmallRye Context Propagation Apache Camel Kamelet SmallRye Fault Tolerance Apache Camel Kotlin SmallRye GraphQL Apache Camel Kubernetes SmallRye Health Apache Camel Kudu SmallRye JWT Apache Camel LevelDB SmallRye JWT Apache Camel Log SmallRye JWT Build Apache Camel Lumberjack SmallRye Metrics Apache Camel LZF compression SmallRye OpenAPI support SmallRye OpenTracing Apache Camel Mail SmallRye Reactive Messaging Apache Camel Main SmallRye Reactive Messaging - Apache Camel Master AMQP Connector Apache Camel Micrometer SmallRye Reactive Messaging - Apache Camel Microprofile Fault Kafka Connector Tolerance SmallRye Reactive Messaging - Apache Camel MicroProfile Health MQTT Connector Apache Camel MicroProfile Metrics Undertow Servlet Apache Camel Minio Undertow WebSockets Apache Camel Mock Vault Apache Camel MongoDB WebJar Locator Apache Camel MongoDB GridFS YAML Configuration Apache Camel MSV Apache Camel Mustache Apache Camel Nagios Apache Camel Nats Apache Camel Netty Apache Camel NSQ Apache Camel OAI-PMH Apache Camel Olingo4 Apache Camel OpenAPI Java Apache Camel OpenTracing Apache Camel OptaPlanner Apache Camel Paho Apache Camel PDF Apache Camel Platform HTTP Apache Camel PostgresSQL Event Apache Camel PostgresSQL Replication Slot Apache Camel Protobuf Apache Camel PubNub Apache Camel Quarkus LZF Apache Camel Quarkus Zip Deflate Apache Camel Quartz Apache Camel Qute Apache Camel RabbitMQ Apache Camel Reactive Executor Apache Camel Reactive Streams Apache Camel Ref Apache Camel Rest Apache Camel REST OpenApi Apache Camel RSS Apache Camel Saga Apache Camel Salesforce Apache Camel SAP NetWeaver Apache Camel Scheduler Apache Camel SCP Apache Camel SEDA Apache Camel ServiceNow Apache Camel Servlet Apache Camel Shiro Apache Camel Simple JMS Apache Camel Simple JMS2 Apache Camel Slack Apache Camel SmallRye Reactive Messaging Apache Camel SnakeYAML Apache Camel SOAP dataformat Apache Camel Solr Apache Camel Spring RabbitMQ Apache Camel SQL Apache Camel SSH Apache Camel StAX Apache Camel Stream Apache Camel String Template Apache Camel Syslog Apache Camel TagSoup (aka TidyMarkup) Apache Camel Tar File Apache Camel Telegram Apache Camel ThreadPoolFactory Vertx Apache Camel Tika Apache Camel Timer Apache Camel Twilio Apache Camel Twitter Apache Camel uniVocity CSV Apache Camel Validator Apache Camel Velocity Apache Camel Vertx Apache Camel Vertx HTTP Client Apache Camel Vertx Kafka Apache Camel Vertx WebSocket Apache Camel VM Apache Camel Weather Apache Camel WebSocket support with Vertx Apache Camel XML IO Apache Camel XML JAXB Apache Camel XML JAXP Apache Camel XML Security Sign Apache Camel XPath Apache Camel XSLT Apache Camel XStream Apache Camel Zendesk Apache Camel Zip Deflate compression support Apache Camel Zip File Apache Kafka Client Apache Kafka Streams Apache Tika Three things:

Performance Capabilities Community

bit.ly/quarkus-worldtour-jam Community

over 450 committers: Inclusive, open, practical, pragmatic, inventive. Not all from Red Hat!

But that’s just Quarkus.

*

bit.ly/quarkus-worldtour-jam Community the unique Red Hat contribution

Red Hat - or rather Red Hatters - connect across the open source communities that make up software stack we use today.

Whether Linux kernel, OpenJDK, Kubernetes, Docker, Java Frameworks or small project

bit.ly/quarkus-worldtour-jam Quarkus isn’t just another framework

Quarkus is a practical vision of modern Java

Bringing together all the parts we need to build the next generation of Java masterpieces

bit.ly/quarkus-worldtour-jam bit.ly/quarkus-worldtour-jam 33 What we’re going to show

Quarkus project generation Quarkus “dev mode” Quarkus “remote dev mode”

bit.ly/quarkus-worldtour-jam bit.ly/quarkus-worldtour-jam Had a good time? let everyone know! #quarkusrocks Want to know more? Links are in the jam doc below Web quarkus.io Talk quarkusio.zulipchat.com Twitter @quarkusio tour [email protected] More quarkus.io/worldtour/soundcheck book bit.ly/q-book

bit.ly/quarkus-worldtour-jam 36 Swag is sent to your JUG leaders

Swag varies by country

Swag will be as awesome as we can make it !

bit.ly/quarkus-worldtour-jam Three things:

Quarkus: accelerates your day-2-day Java development Quarkus: makes all your Java applications supersonic Quarkus: for Java everywhere

bit.ly/quarkus-worldtour-jam

Next tour stop

bit.ly/quarkus-worldtour-jam