Java 21 the new Java LTS (Long Term Support) is out and as a tribute to it I wanted to write a blog about it on the 21th day of Blogtober. What is new and which features are in it for me as a developer? I’ve taken a look at the release note from java release 18, 19, 20 and 21 and here is small summary of some new features. In this blog I only cover final released features and will exclude the features that are in preview or incubator.
Posts by Thomas de Groot
Recently I stumbled upon an example of why managing your dependencies in a maintainable way is important. The issue I had was in a multi-module project where individual Maven dependencies were overridden everywhere, the result was that a lot of dependencies were in conflict and upgrading these dependencies became quite troublesome. One of the countermeasures for me was the use of certain Maven Bill of Material (BOM).
With using a BOM I only had to set version of dependencies once and did not have to duplicate the dependency in the parent because the bom implicitly has it already.
As of the release of Java 17 a new LTS has been available, but what is in it for me exactly and which features can I use during projects?
Most of the blogs I read only describe 1 version upgrade and also discuss a lot of features that are/were still in preview.
I decided to summarize which features are released from java 11 to 17 (one LTS to another) and in specific only those that I thought could be interesting during my everyday work as a Java developer.
So in this blog I wont be talking about the features that are in Preview or tools that came with the new JDK’s.
You love to hate them, NullpointerExceptions… But they got a little better because from now on the exception will tell which variable is the culprit. And I know, the best NullpointerException is no NullpointerException at all, but still once they occur they better tell what’s wrong.
This feature has been released since Java 14, in Java 15 they made the extra information about which file/line had caused the error as default.
More and more companies are switching over to cloud native environments. As a developer this gives me a lot of services to create awesome applications. The challenge that occurred to me right away was how to use all those new components during development, since some companies do not have a testing/development environment in their cloud provider to play with. LocalStack piqued my interest to simulate an AWS environment locally on my laptop, or when running the CI/CD pipeline.
This blog will give a brief introduction in what LocalStack can do and how you can use it for your own projects.
During my last year at JCore I was given the opportunity to do deep-dive in a self-chosen topic in the form of a 'Specialisation'. For this 1-year project I chose to dive deep into AWS how it works and how I, as a developer, make use of it. Some of the topics I covered during this were: DevOps, CI/CD and Security. As a demo and as use case I created a simple pubquiz application in which you can register and have a custom form for your answers. During the development of this application I faced different challenges that I had to overcome. This blog is about how I created a simple API that is exposed to the internet and how I tried to tackle the challenges of security, scalability and adaptability.
The application I created consisted of a container image which hosts a simple API that is made with Java, Spring and AWS SDK. So for this backend application I created a Virtual Private Cloud(VPC) with a Fargate task in a private subnet so the application itself is not exposed to the internet. The goal was to make an API with the API Gateway that defines the API that redirects the correct call to my Fargate instance that is in a private subnet.
Here’s an overview of the infrastructure of my backend application: