# Terminology * SmallRye - Out the box implementation of MicroProfiles, using JBoss stuff for getting up and running, basically "plugins", IBM competitor is openliberty * MicroProfile - Eclipse MicroProfile, microservice framework composed of made up of (bare min) * JAX-RS - API for creating REST APIs * JSON-P - API for processing JSON * CDI 2.0 - Glue JAX-RS and JSON-P together dependency injection using java beans, share a class and manage its lifecycle * JSON-B - JSON binding (similar to jackson databind) * Open Tracing - standardise requests across multiple services * Other stuff like Metrics (prometheus), watchdogs, retry, circuit breakers etc * Loom - Virtual threads approach to non-blocking IO (as opposed to event-loop) * Quarkus * ArC - CDI (injection framework), developed from Weld * Command mode - terminates exits after run as opposed to normal operation (wait for systemexit or pod to be killed) # General Notes Quarkus built upon VERT-X for non-blocking IO, VERT-X mostly built upon netty, Vert-X provides a 80+ connectors for non-blocking IO like Kafka, mongodb, AMQP etc Quarkus two main deploy modes - native (graalvm) and jvm, some things dont do so well natively ```java //Mutiny async construct, onItem <- the result, onFailure <- Failed calls Uni uni uni.onItem() .onFailure() ``` # The Job spec * Implement test scenarios and develop enterpirse applications for testing * Design and develop testing frameworks in Java for various environments, like cloud, multiple operating systems, large clusters, and containers * Provide root cause analysis for complex bugs reported by our customers and communicate the impact of these bugs to customers, developers, and support specialists * Participate in defining testing strategies * Analyze and prioritize the quality risks posed by Red Hat products and determine the tests required to mitigate these risks * Serve as an internal advocate for our customers to ensure that the product goes to customers without usability or user experience issues; properly document relevant information * Document new bugs and work with project managers and developers on prioritization and a fix * Mentor junior team members * Constantly learn new things and maintain an overview of current technologies like Java, MicroProfile, and Reactive programming ## Technical Job specs * Practical experience with Java EE, MicroProfile, or Spring development * Experience with testing in Junit or TestNG beyond unit tests * Experience with Maven, Git, Jenkins, continuous integration, and pipelines * Debugging and performance tuning skills * Ability to install and maintain Red Hat Enterprise Linux (RHEL) or UNIX-like operating systems; basic administration skills of Jenkins nodes ### Main technologies to learn about * Microprofile + SmallRye * JUnit * TestNG * Jenkins, CI, piplines Blue Ocean # The plan - [ ] Understand technologies and terminologies - [ ] Fire up Quarkus example - [ ] Design an LED conversion proxy for front porch - [ ] Listen to MQTT broker - [ ] Possibly use camel k to write mqtt to file or something - [ ] "Translate" and passthrough to porchLED # Refs * [What is microprofile](https://www.youtube.com/watch?v=TDhRcKFRlq8) * [What is SmallRye](https://www.youtube.com/watch?v=T3sh8M0t7yM) * [CDI explained](https://www.youtube.com/watch?v=Q8jHRDu9Fbo) * [Mutiny lib/Vert-X](https://www.youtube.com/watch?v=uTK73fpPznQ) * [Weld](http://weld.cdi-spec.org/)