To celebrate the OpenJDK and Foojay.io as a community platform for its users, we’re kicking off the Virtual Foojay JUG Tour. Ari Waller, JFrog's Event Manager, well known to many JUGs, now wears a second hat—that of Foojay Event Manager. During March and April, contributors to Foojay will be making a whistle stop tour through as many JUGs as possible, via their virtual meetups! (And if you're not holding virtual events or don't have the facilities for this, we can support by making these available as needed.)
At each stop of the tour, there'll be a brief introduction to Foojay.io followed by a session of 30 minutes on a topic presented by a Foojay community member.
The JUG can pick the topic of their choice and anyone reading this and wanting their JUG to be involved should contact Ari (ariw at jfrog dot com) and suggest dates, ideally during March and April, when they'd like to host the Foojay program!
Here's the (growing) roster of topics!
- Getting the Most from Modern Java, Simon Ritter (Azul): "Java is changing faster than ever with new features being added every six months. Despite being over 25 years old, Java is still adapting to ensure it remains one of the most popular platforms on the planet. With the release of JDK 16, we will have had eight (yes eight!) versions of Java in less than four years. Many of these new features provide exciting new language level changes, as well as useful new APIs. In this session, we’ll explore in detail what these changes are and how best to use them (as well as advice on when not to use them). We’ll also explain the significance of preview features and incubator modules."
Status: Booked April 8, Manchester Java Community
- Do You Know These Libraries? Roberto Cortez (Red Hat): "One of Java's biggest strengths is its ecosystem. You can find libraries left and right to help you with your code, so that you can focus on what you need to implement. Maybe you are using full blown frameworks like Spring that already provide you with an entire programming model to develop your project. You can also find small and standalone libraries that stand on their own and are a great addition to any project. We are going to look into standalone libraries that every project should use to improve their code and increase developer productivity."
Status: Booked April 28, Silesia JUG (Poland)
- Functional Reactive with Core JDK. Sven Ruppert (JFrog): "There are a lot of reactive frameworks in the field, some with functional languages for the JVM. However, Java gives you both. But how can you combine this and use this without adding the next big framework to your project? We will have a Core Java journey to explore a lot of excellent possibilities based on the JDK."
- Stranger Danger: Finding Security Vulnerabilities Before They Find You! Simon Maple (Snyk): "Open source modules are undoubtedly awesome. However, they also represent an undeniable and massive risk. You’re introducing someone else’s code into your system, often with little or no scrutiny. The wrong package can introduce severe vulnerabilities into your application, exposing your application and your user's data. This talk will use a sample application, Goof, which uses various vulnerable dependencies, which we will exploit as an attacker would. For each issue, we'll explain why it happened, show its impact, and – most importantly – see how to avoid or fix it. We'll live hack exploits like the classic struts vulnerability that recently made it famous, along with the Equifax hack, Spring Break and several others."
Status: Booked, JUG Munich
- Know Thy Neighbours: Dependency Management Done Right, Brian Vermeer (Snyk): "Modern Java development is heavily dependent on third-party libraries. When looking at an average project, the amount of your code can be as little as 1%. As we do care a lot about the code we write, how do we augment this on the packages we depend on? Let’s look at best practices on how to build a proper dependency management strategy. How to pick dependencies, update them, and clean out manifest files with tons of dependencies. And maybe even more important, what happens if we are not on top of this?"
- Migrating from Imperative to Reactive in the Cloud, Nicolas Frankel (Hazelcast): "While Reactive Programming is very different from the usual Imperative way, there’s no denying it fits “the Cloud”, as every bit of resource is used to its fullest. Let’s see how to migrate from the latter to the former using a Spring Boot web app as an example. In this demo-based talk, I’ll show how to migrate a traditional Spring Boot application that uses WebMVC, Spring Data JPA, and Spring Cache to its Reactive equivalent in a step-by-step process."
Status: Booked March 13, Hyderabad JUG
- Jakarta EE 9 and Beyond, Ivar Grimstad (Eclipse Foundation): "Jakarta EE 9 lowers the barriers of entry, ease migration, and lays a foundation for future innovation. In this session, I will go through what Jakarta EE 9 brings to the table and how this release lowers the barriers of entry, eases migration, and lays the foundation for a platform for future innovation. We will also look ahead to what future releases may bring. The session includes a demo including converting from the javax. to jakarta. namespace as well as looking at available implementations."
Status: Booked April 15, KnoxJava
- A Guided Tour of MicroProfile 4.0, Rudy De Busscher (Payara): "With the latest MicroProfile 4.0 release, MicroProfile aligns with the Jakarta EE 8 specification. There are also many new features and behaviors introduced to facilitate microservices with Java Enterprise even more. MicroProfile has become a mandatory toolbox for today's application development—and not only for microservices architectures. This presentation will showcase how to use each of the new features of MP 4.0 to create state of the art applications. Using the concepts of Config, Rest Client, Fault Tolerance, OpenTracing, JWT based authentication, and Metrics and Health Checks, we will build an application using Payara Server and Payara Micro."
- Jakarta MVC 2.0 - The Good Parts!, Ivar Grimstad (Eclipse Foundation): "Server-Side Rendering seems to be getting a revival this year, so maybe it is time to take a look at Jakarta MVC again? Jakarta MVC 2.0 was released in December 2020 and supports the jakarta.* namespace introduced in Jakarta EE 9. In this demo-driven session, we will explore the features of Jakarta MVC in practice. You will learn how to implement the models, views and controllers of a Jakarta MVC application. We will also see in practice how Jakarta MVC supports data binding, security, internationalization and observability. To spice it up, we will play around with the wide range of view engines supported by Eclipse Krazo."
- Reactive Microservices with Spring Boot and JHipster, Matt Raible (Okta), "Microservice architectures are all the rage in JavaLand. They allow teams to develop services independently and deploy autonomously. Why microservices? IF you are developing a large/complex application AND you need to deliver it rapidly, frequently, and reliably over a long period of time THEN the Microservice Architecture is often a good choice. Reactive architectures are becoming increasingly popular for organizations that need to do more, with less hardware. Reactive programming allows you to build systems that are resilient to high load. In this session, I'll show you how to use JHipster to create a reactive microservices architecture with Spring Boot, Spring Cloud, Keycloak, and run it all in Docker. You will leave with the know-how to create your own resilient apps!"
- Level up your Java Containers, Melissa McKay (JFrog): "Your Dockerfile is written, your Java app is packed into an image, and your containers run successfully. Do you have an uneasy feeling that you’ve missed something or that something might be wrong? This talk will leave you with the knowledge you need to be confident in your Java container images, diving into the best practices of packing your Java container images efficiently and effectively for the trip to production. You will learn valuable information about cloud-native tools available today for building and running containers (including Docker alternatives), container image formats, image storage concerns, and common gotchas to avoid."
Status: Booked March 25, Chicago JUG
- Secure Docker Containers for Java Developers, Brian Vermeer (Snyk): "Docker is the most widely used way to containerize your application. With Docker Hub, it is easy to create and pull pre-created images. This is very convenient as you can use these images from Docker Hub to quickly build an image for your Java application. However, the naive way of creating custom Docker images for your Java applications comes with many security concerns. So, how do we make security an essential part of Docker images for Java?"
Status: Booked March 29, Jozi JUG
- Kubernetes and the Data Gateway Pattern, Cédrick Lunven (DataStax): "Join us to learn about Stargate.io, an open source data gateway deployed between client applications and your Kubernetes databases. It's built with extensibility as a first-class citizen and makes it easy to use a database for any application workload by adding plugin support for new APIs, data types, and access methods. After detailing the architecture and ideas behind the frameworks, we will demo the creation of REST and GraphQL APIs on top of Cassandra through simple configuration. Bring back home a working sample!"
Status: Booked April 20, Atlanta JUG
- Microservices at Scale with Apache Cassandra, Cédrick Lunven (DataStax): "Microservices have become an important approach when implementing modern applications which requires the design of increasingly distributed architectures, requiring significant scalability to manage large volumes of data in real time. Apache Cassandra is a distributed NoSQL database designed to meet these requirements. This talk will introduce you to the benefits of using Apache Cassandra to scale your Microservices in a highly available manner. During this talk, you'll learn about: The sweetspots between Cassandra and Microservices Techniques and best practices for implementation The different architectural patterns And will answer all your questions!"
- Kubernetes Native Java with MicroProfile and Quarkus, Roberto Cortez (Red Hat): Java doesn’t work well in a container on Kubernetes right? Too big? Too slow to start? Not anymore with Quarkus! Quarkus significantly reduces the container resource requirements for memory and startup, while still supporting standard APIs like Eclipse MicroProfile.
- Creating a Kubernetes Operator in Java, Rudy De Busscher (Payara): "Kubernetes is much more than a runtime platform for Docker containers. Through its API, not only can you create custom clients, but you can also extend Kubernetes. Those custom Controllers are called Operators and work with application-specific custom resource definitions. Not only can you write those Kubernetes operators in Go, but you can also do this in Java. Within this talk, you will be guided through setting up and your first explorations of the Kubernetes API within a plain Java program. We explore the concepts of resource listeners, programmatic creation of deployments and services and how this can be used for your custom requirements."
Status: Booked, March 11, St. Louis JUG
- How Class Data Sharing Can Speed up Your Application Startup, Rudy De Busscher (Payara): "Java Byte code is OS independent, which means that your application's startup takes more time than a native image. Using the Class Data Sharing functionality introduced in more recent versions of the JVM, you can prepare your application so that it will load very fast. In this presentation, I'll go into more detail what Class Data Sharing is and how you can use it with OpenJDK versions. With some Jakarta EE demo applications, you will see gains that you can achieve and reduce memory footprint a lot in Docker containers by sharing memory."
- Cross-Platform User Interface Development in Java with OpenJFX, Johan Vos (Gluon): "The JavaFX API's allow Java developers to create Java applications with a user interface. The JavaFX code (API's and implementations) is developed in the OpenJFX project, under the OpenJDK umbrella. JavaFX brings the cross-platform paradigm of Java to user interfaces (UI). A UI created with JavaFX can be rendered on different desktop or laptop systems, but also on mobile devices (iOS/Android) and embedded devices. In this session, we will give an overview of the structure and the capabilities of JavaFX. We will also explain how the development process is organised. We will show demos explaining how the code is integrated with IDE's, and we will discuss features that are currently on the roadmap."
Status: Booked April 22, JUG Hamburg
- Modern Java Clients with JavaFX: The Definitive Guide, Stephen Chin (JFrog): "This session is for professionals building Java applications for desktop, mobile, and embedded devices in the Cloud age. It will help you to build enhanced visual experiences and to deploy modern, easy to maintain, client applications across a variety of platforms. These applications can take advantage of the latest user interface components, 3D technology, and cloud services to create immersive visualizations and allow high-value data manipulation. Learn how to leverage the latest open-source Java client technologies to build rich, responsive, and modern UIs from the authors of the definitive Java Client reference."
Status: Booked March 10, Denver JUG (Details here.)
- Practical Introduction to FXGL Game Engine, Almas Baimagambetov (University of Brighton): "Modern JavaFX provides hardware acceleration support on a range of platforms, including desktop, mobile and embedded, allowing the development of high-performance cross-platform applications. However, to develop games with JavaFX effectively, numerous domain-specific concepts are needed. To address this need, the FXGL game engine extends JavaFX and brings support for real-world game development techniques. These include the entity-component model, A* pathfinding, particle systems, sprite sheet animations, and many other features. As a result, JavaFX (including Java and Kotlin) developers can produce games more quickly and more effectively with FXGL."
- The Future of Java on Raspberry Pi: Java, JavaFX, Raspberry Pi and Electronics: Frank Delporte (Toadi): "Java on the Raspberry Pi is still a controversial topic, but recent evolutions of both the JDK and OpenJFX have proven they are a perfect match! In this talk, we will look into some examples and discuss what could be the next steps. We will take a look at the current state of Java, JavaFX, and Pi4J on the Raspberry Pi. Still, most Java developers didn't consider the Raspberry Pi yet to be the perfect board to run their applications, but with its low price but high specifications, the Raspberry Pi is opening whole new worlds.”
Status: Booked March 17, Virtual JUG
- DevOps Tools for Java Developers, Steve Chin (JFrog): "With the rise of DevOps, low cost Cloud Computing, and emerging Container technologies, the landscape for how you approach development has dramatically changed. This talk is focused on helping Java developers to adapt to this new landscape and take advantage of microservices, serverless, and cloud-native technologies with the latest DevOps techniques to simplify their build and create hyperproductive teams. Some of the technologies you will learn about in this talk include source control, build declaration, CI/CD, package management, containerization, and security. Learn from the combined experience of the presenters who are experts in the Java and DevOps domains on the best tools, technologies, and methodologies to build your next cloud-native application or refactor your monolith. We cover the entire DevOps toolchain from source control through CI/CD through containerized deployments with an emphasis on maintaining efficiency and control from the source code and dependencies.”
Status: Booked April 6, Coimbra JUG
- An Experiment in Continuous Deployment of JVM Applications, Nicolas Frankel (Hazelcast): "Continuous deployment doesn’t necessarily mean Jenkins, or the latest hype tool. For JVM applications, one can directly deliver bytecode in production. Achieving true continuous deployment of bytecode on one single JVM instance is possible if one changes one’s way of looking at things. What if compilation could be seen as changes? What if those changes could be stored in a data store, and a listener on this data store could stream those changes to the running production JVM via the Attach API? In this talk, I’ll demo exactly that using Hazelcast and Hazelcast Jet - but it’s possible to re-use the principles that will be shown using other streaming technologies."
- Disco API: OpenJDK Distributions As A Service, Gerrit Grunwald (Azul): "At Azul, we have spent some time to create a little API that should help you to discover builds of OpenJDK from different distributions in a general way. In this session, I will give you a short introduction on what the Disco API is and how it can help you to find the JDK/JRE of your choice. At the moment, the API can help you to get builds of the OpenJDK from the following distributions -- AdoptOpenJDK, Corretto, Dragonwell, Liberica, Oracle OpenJDK, SAP Machine, and Zulu."
Status: Booked March 2, JUG Bonn