ποΈ Null-Restricted and Nullable Types for Java - DevTips Weekly #10
Bad Agile vs. Real Agile, Hexagonal Architecture, Go is on the rise (again), Rust via Flutter, and Kubernetes 1.31
Welcome to another issue of DevTips Weekly (#10)! π° This week, as usual, I have handpicked articles and resources to keep you at the forefront of technology.
A LinkedIn post titled βWaterfall vs. Bad Agile vs. Real Agileβ was very interesting to me. This illustration describes the difference between Waterfall, Bad Agile, and Real Agile. There is a tone of experience and knowledge behind this illustration.
Besides this LinkedIn post, I found an article about a JEP draft that wants to bring βNull-Restricted and Nullable Typesβ to Java interesting. I have other interesting articles that I want to share with you. I hope that you will enjoy them.
Null-Restricted and Nullable Types for Java
The article discusses the release of version 1.0.0 of the JSpecify project and the introduction of Draft JEP 8303099. JSpecify focuses on providing type-use annotations to indicate nullability in Java, while the draft JEP aims to bring optional nullness-marking to the Java language π. The proposal introduces null markers to specify whether a type can include null values, enhancing compile-time safety and allowing for gradual adoption π. The article also features an interview with Kevin Bourrillion, who explains the overlap between JSpecify and the draft JEP and offers advice on adopting JSpecify today π.
Hexagonal Architecture β A Favorite Lyrics Spring Boot β Java Example
The article discusses Hexagonal Architecture, a concept introduced by Alistair Cockburn in 2005. This architecture, also known as Ports and Adapters, aims to separate the business logic (core) from external interactions (ports and adapters). The core handles the business logic, while primary ports (inbound) and secondary ports (outbound) manage communication with external entities. Adapters implement these ports, allowing flexibility and independence from the core. The article provides a practical example using Spring Boot to create a lyrics storage system, demonstrating how to implement this architecture with REST services and JPA repositories. π οΈπ¦
Why Go programming language is on the rise (again)
The article discusses the journey of the Go programming language since its release in 2009. Initially, Go gained rapid popularity and was named the 2009 Programming Language of the Year. Despite some fluctuations in its ranking, Go has maintained a strong position, especially with recent endorsements from the US National Security Agency for its memory safety. Known for its simplicity, readability, and efficient concurrency, Go is widely used in cloud-native applications and DevOps tools like Kubernetes and Docker. Its active community and continuous improvements make it a developer favorite, with a 93% satisfaction rate. Goβs potential in AI and machine learning is also highlighted, making it a versatile and modern choice for developers. π
Rust GUI library via Flutter, done simple
The article discusses creating a GUI in Rust using Flutter and the flutter_rust_bridge
library. π Flutter is praised for its popularity, cross-platform capabilities, and extensive ecosystem, making it a great choice for UI development. π± The bridge allows seamless integration between Rust and Flutter, enabling developers to use Rust for logic and state management while leveraging Flutter for the UI. The article provides a step-by-step guide and examples, highlighting the benefits of this approach, such as hot-reload for faster development. π Overall, it showcases a practical method to combine the strengths of both Rust and Flutter for building modern applications. π
Kubernetes 1.31 Arrives with New Support for AI/ML, Networking
The latest Kubernetes release, v1.31.0, introduces significant advancements, especially for AI/ML workloads and networking. π This βmajor minor releaseβ includes the new Device Resource Assignment (DRA) feature, standardizing access to hardware accelerators like GPUs. π It also simplifies changing large language models using OCI images as volume sources. Additionally, improvements to Kube-proxy enhance network performance and reliability. π Overall, this release marks a substantial step forward in Kubernetesβ capabilities. π
ποΈ Previous issues of the DevTips Weekly
You can also support me in buying a latte βοΈ !(one time or monthly):