At the very beginning of last year, I decided to track my reading habits and share the best stuff here, on Baeldung. Haven't missed a review since.
Here we go…
1. Spring and Java
Let's start with the yearly report from RebelLabs, providing some very interesting insights into the trends of our ecosystem.
>> How we fixed all database connection leaks [in.relation.to]
Very cool, to the point walk-through how the connection leaks in the large Hibernate test suite were handled.
>> JUnit 5 – An Early Test Drive – Part 1 [infoq.com]
An early look at the upcoming JUnit 5.
Reactive programing is coming to Spring with version 5 – we know that by now.
The question is – what are the scenarios where it's going to make a significant difference and how can we use it before Spring 5 comes out.
And this new installment does a good job answering both of these questions.
>> Custom Audit Log With Spring And Hibernate [bozho.net]
There are projects where you can use some of the nicer ways of doing audit. And then there are some codebases where that's not possible without major and painful refactoring. Luckily, there's a clean, manual way of doing audit as well.
Also worth reading:
>> How does persist and merge work in JPA [vladmihalcea.com]
>> Sorting Lists [javaspecialists.eu]
>> Spring-Managed Hibernate Event Listeners [bozho.net]
>> Null and not-null @DiscriminatorValue options [in.relation.to]
>> xplr: Utility For Migrations To Maven [adam-bien.com]
>> Robot Framework Tutorial 2016 – File Processing [codecentric.de]
>> Bean Validation 2.0 – A new JSR is born! [beanvalidation.org]
Webinars and presentations:
>> CQRS with Java and Lagom [eisele.net]
>> Live Webinar: What’s New in IntelliJ IDEA 2016.2 [jetbrains.com]
Time to upgrade:
>> Spring AMQP 1.6.1 available now [spring.io]
>> IntelliJ IDEA 2016.2.1 EAP updates Kotlin support to 1.0.3 [jetbrains.com]
>> Apache Tomcat 8.5.4 available [apache.org]
>> Apache Shiro 1.2.6 released [apache.org]
>> The Hardest Part About Microservices: Your Data [christianposta.com]
Data is of course the most complex part of doing Microservices well, and in my experience, the number one reason teams fail during these kinds of implementations.
It turns out that, for example – getting transactional boundaries right across multiple systems is a hard problem to solve, especially without a very good understanding of the semantics to achieve in the system and a clear set of self-imposed limitations at the start.
>> An approach to test your user interface more efficiently [ontestautomation.com]
A quick, interesting read using a pattern I knew very little about – Model-View-ViewModel.
Also worth reading:
>> IoT Analytics Platform [codecentric.de]
>> DDD Decoded – The Aggregate and Aggregate Root Explained (Part 1) [sapiensworks.com]
>> DDD Decoded – The Aggregate and Aggregate Root Explained (Part 2) [sapiensworks.com]
>> DDD Decoded – The Aggregate and Aggregate Root Explained (Part 3) [sapiensworks.com]
>> How to De-Brilliant Your Code [daedtech.com]
I enjoy reading through these listener questions, as they're a nice change of pace.
And, just as a quick side-note, writing a feature without using the if keyword anywhere is certainly a nice way to spend the weekend 🙂
>> How to Add Static Analysis to Your Process [daedtech.com]
An intro to the thinking, expectations and how-to of dipping your toe into the deep waters of static analysis.
>> Managing rapid growth [dandreamsofcoding.com]
During the last couple of years, the company I'm working for has grown from 2 to more than 600-700 (last time I checked).
It's definitely quite a ride to go through that kind of growth, and this writeup makes some good points about how to do that well.
>> Sources of Inspiration [daedtech.com]
A quick read, a solid reading list and some inspiration.
Also worth reading:
>> DockerCon 2016 Keynote [matt.aimonetti.net]
>> Drawbacks of Serverless Architectures [martinfowler.com]
>> Hosting Public Coderetreats [code-cop.org]
And my favorite Dilberts of the week: