Java Software Engineering Weekly Newsletter

Java Software Engineering Weekly Newsletter

Oleksandr Stefanovskyi

Hello all,

It is hard times outside. And it's crucial to keep strong contacts during the crisis as never before. Here is the article with key concepts described in detail "Communication with the Client. Rules of the game the books won’t tell you". Be strong, be reliable, answer in time and don't forget "The power of naïve optimism".

In team management and in communication with the customer important to find the best solutions even if these are not popular. Decisions are only as good as the dialogue around them. If there is only one side of the argument, you will not be able to make good decisions consistently. For constructive dialogue to happen, multiple facets need to be surfaced. Tom Sommer in his post on medium "The Value Of Highlighting Unpopular Opinions" explains the importance of quality discussions.

👉 Update Java to version 11 on AWS Elastic Beanstalk in production — real-life story about the legacy system, easy decisions, and complex solutions, where documentation didn`t work and StackOverflow says nothing. Even all my skills of googling didn't help, by the way, I wrote the article on how to google anything like a pro, truly saying this skill saved me many times.

👑 If You’re So Successful, Why Are You Still Working 70 Hours a Week?

Java

  1. Liveness and Readiness Probes with Spring Boot — Additional support for managing Kubernetes application and container lifecycle is coming to Spring Boot 2.3
  2. Spring Boot Tutorial: Building Microservices Deployed to Google Cloud — A quick guide to help you leverage GKE, Jib, GCP, and Skaffold to build and deploy Spring Boot services.
  3. The best way to use the JPA SqlResultSetMapping — And a look at its three mapping options: @EntityResult, @ConstructorResult, and @ColumnResult.
  4. @DynamicPropertySource in Spring Framework 5.2.5 and Spring Boot 2.2.6 — a short tutorial about how to use new Spring property with Testcontainers to reduce the amount of boilerplate code.
  5. Coping with incompatible code in Graal VM AOT compilation
  6. Strings with Zero HashCode — In Java 2, the computational time complexity of String#hashCode() became linear, as it used every character to calculate the hash. Java 3 cached the hash code so that it would not need to be recalculated every time we called hashCode(), except in the case that the hash code was zero. Java 13 finally fixes that inefficiency with an additional boolean field.
  7. Does Java have default parameters? — I bet, you know the answer, but the article shows you how to simulate them in different ways.
  8. Spring Tips: Spring Cloud Loadbalancer — The header says by itself. BTW here is the full playlist 📼of Spring Tips, don't miss it.
  9. Spring Boot Application Events Explained — This tutorial gives an overview of how to publish and listen to custom events and explains Spring Boot’s built-in events

Technical

  1. See how Google is tracking your location. With Python, Jupyter, Pandas, Geopandas and Matplotlib — If you have location services enabled, you can use this Jupyter Notebook pipeline to learn how much geolocation history Google collects.
  2. Configuring the OCI Gradle Build Cache plugin with GitHub Actions — Short and easy to use tutorial.
  3. Pair programming without a keyboard  — And pairing at the whiteboard can be more effective than jumping straight into the code when the design isn't clear.

Testing

  1. Spring Boot tests with Testcontainers and PostgreSQL, MySQL or MariaDB — How to use the JPA SqlResultSetMapping, as well as the EntityResult, ConstructorResult, and ColumnResult options.
  2. Guide to Testing with Spring Boot Starter Test — It is what the header says.
  3. TDD an Immediate Mode UI — It sounds kinda crazy, but it looks like it's working.

Databases

  1. awesome-mongodb: A Curated List of Awesome MongoDB Resources, Libraries, Tools and Applications — We’ve shared this before, but it is still seeing occasional updates and remains a decent resource for MongoDB users of all types.
  2. Importing Spatial Data to PostGIS on PostgreSQL — A nice accessible introduction to working with spatial data.
  3. Hackers Have Wiped and Defaced More Than 15,000 Elasticsearch Servers — We’ve seen many stories over the years of remotely accessible databases being targeted en masse by hackers and now it’s Elasticsearch’s turn. A reminder, if you needed one, to audit your databases and overall security situation.
  4. Running 'Redis' on NVMe with ScyllaDB? — Redis is a popular in-memory data structure server but ScyllaDB has implemented (very) basic Redis protocol/command support enabling it to be used in a similar way. How does the initial performance compare with the real thing?
  5. GridDB Hits 5 Million Writes Per Second and 60 Million Reads Per Second with 20 Nodes — GridDB is a scalable, in-memory NoSQL time-series database from Toshiba aimed at the IoT world, and to prove just how scalable, they’ve run it across 20 nodes on Google Cloud Platform and hit some huge throughput figures.
  6. A Tale About Migrating a PostgreSQL Database Between Providers — A story from the folks at Percona about migrating a production Postgres database between two DBaaS platforms by using an intermediate server.
  7. 5 Ways the Role of the Database Administrator Has Changed — The rules around IT service delivery are changing. This is because we’re in a world where IT stability is a set expectation rather than an ask. Instead of bells and whistles, the hallmarks of IT infrastructure today are more associated with robustness, scalability, and reliability, while becoming a utility that serves as an electrical outlet for applications and databases to plug into as needed.
  8. How Container Networking Affects Database Performance — Networking has an outsized impact on database performance in most Kubernetes environments and Percona set out to run some benchmarks measuring database throughput vs network bandwidth using numerous Kubernetes container networking plugins.
  9. Building a Scalable Product Recommender with Keras, Docker, GCP, and GKE — Pair is a curious app that takes a product image, analyzes its design features, then recommends other products with similar stylistic elements.

You could check out previous issues at my site, telegram or twitter.