Lots of interesting writeups on Java 9 this week.
Here we go…
1. Spring and Java
>> Are Java 8 Streams Truly Lazy? Not Completely! [blog.jooq.org]
It turns out that the Java 8 Streams API is not as lazy as you might think – the flatmap() operation evaluates the inner Stream eagerly – which is not the case when working with Scala or Vavr.
>> Simple Spring Boot Admin Setup [techblog.bozho.net]
The cool Spring Boot Admin dashboard setup can be slightly unintuitive – here a good overview of how to set it up.
>> What’s new in JPA 2.2 – Stream the result of a Query execution [vladmihalcea.com]
The new addition to JPA 2.2 – returning Query results as Stream – is an interesting addition but still not as efficient as a paginated ResultSet.
>> Why you should avoid CascadeType.REMOVE for to-many associations and what to do instead [thoughts-on-java.org]
Using CascadeType.REMOVE can be quite dangerous – besides generating way too many queries, it can also remove more than expected.
Also worth reading:
>> Java Module Platform System (JSR 376) Passes the Public Review Reconsideration Ballot [infoq.com]
>> Why the JVM is a Good Choice for Serverless Computing: John Chapin Discusses AWS Lambda at QCon NY [infoq.com]
>> Docker Monitoring: 5 Methods for Monitoring Java Applications in Docker [blog.takipi.com]
>> Java Command-Line Interfaces (Part 4): Commandline [marxsoftware.blogspot.com]
>> Java Command-Line Interfaces (Part 5): JewelCli [marxsoftware.blogspot.com]
>> Implementing a custom Spring Boot starter for CXF and Swagger [tech.asimio.net]
Webinars and presentations:
>> Parasitic Programming Languages [infoq.com]
Time to upgrade:
>> Hibernate Validator 6.0.0.CR1 is out with Bean Validation 2.0.0.CR1 support [in.relation.to]
>> Spring Cloud Data Flow 1.2.2 Released [spring.io]
>> New release of SSL/TLS Deployment Best Practices [blog.ivanristic.com]
2. Technical
>> A Basic Programming Pattern: Filter First, Map Later [jooq.org]
In order to leverage the laziness of the Stream API and keep the complexity of the operations down, it's important to rely on well-placed limits as much as possible – although even this might not enforce laziness in all scenarios.
>> ORMs Should Update “Changed” Values, Not Just “Modified” Ones [jooq.org]
Many ORMs update values that were “touched” but not necessarily changed – which is not ideal. Read the whole article to dive deeper into the problem and a few possible solutions.
3. Musings
>> A Look at 5 NoSQL Solutions [daedtech.com]
A quick and practical introduction to NoSQL and the most popular solutions.
>> Stop waiting for perfection and learn from your mistakes [allthingsdistributed.com]
Errors/mistakes happen and we need to learn how to embrace them in order to improve and innovate because they are the part of the process.
Also worth reading:
>> How AI differs from ML [horicky.blogspot.com]
>> The Key to Becoming a Software Consultant [daedtech.com]
>> Be clear and explicit about your values and expectation [mehdi-khalili.com]
>> How to move up from being good to being great? [ontestautomation.com]
>> Essentialism for developers [blog.codecentric.de]
>> Freelance Programming without a Marketing Presence [daedtech.com]
4. Comics
And my favorite Dilberts of the week: