{"id":208191,"date":"2020-01-06T10:33:42","date_gmt":"2020-01-06T02:33:42","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=68786"},"modified":"2020-01-06T10:33:42","modified_gmt":"2020-01-06T02:33:42","slug":"java-weekly-issue-315","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2020\/01\/06\/java-weekly-issue-315\/","title":{"rendered":"Java Weekly, Issue 315"},"content":{"rendered":"<h2 data-id=\"spring-and-java\"><strong>1. Spring and Java<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"spring-and-java\"><\/div>\n<h4><a href=\"https:\/\/blog.codeleak.pl\/2020\/01\/manage-multiple-java-sdks-with-sdkman.html\"><strong>&gt;&gt; Manage multiple Java SDKs with SDKMAN! with ease<\/strong><\/a> [<span style=\"color: #800000\">blog.codeleak.pl<\/span>]<\/h4>\n<p>A good intro to this handy tool for <strong>installing and switching between multiple versions of Java<\/strong>, Maven, Gradle, Spring Boot CLI, and more. Very cool.<\/p>\n<h4><a href=\"https:\/\/reflectoring.io\/spring-boot-profiles\/\"><strong><span class=\"t-bg-white l-pa2 l-d-i\">&gt;&gt; One-Stop Guide to Profiles with Spring Boot<\/span><\/strong><\/a><span class=\"t-bg-white l-pa2 l-d-i\"> [<span style=\"color: #800000\">reflectoring.io<\/span>]<\/span><\/h4>\n<p>A nice intro to profiles, along with practical advice regarding <strong>when to use them and, just as important, when not to use them<\/strong>.<\/p>\n<h4><a href=\"https:\/\/blog.scottlogic.com\/2020\/01\/03\/rethinking-the-java-dto.html\"><strong>&gt;&gt; Rethinking the Java DTO<\/strong><\/a> [<span style=\"color: #800000\">blog.scottlogic.com<\/span>]<\/h4>\n<p>And an interesting approach to request\/response DTO design in Java using a proliferation of enums, interfaces, and Lombok annotations.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.mscharhag.com\/spring\/spring-method-parameter-validation\"><strong>&gt;&gt; Method parameter validation with Spring and JSR 303<\/strong><\/a> [<span style=\"color: #800000\">mscharhag.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/medium.com\/@milosbiljanovic\/springboot-autocomplete-with-elasticsearch-11ea95d58854\">&gt;&gt; Spring Boot Autocomplete with Elasticsearch<\/a> <\/strong>[<span style=\"color: #800000\">medium.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/solidsoft.wordpress.com\/2020\/01\/02\/migrating-spock-1-3-tests-to-spock-2-0\/\"><strong>&gt;&gt; Migrating Spock 1.3 tests to Spock 2.0<\/strong><\/a> [<span style=\"color: #800000\">solidsoft.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codeleak.pl\/2020\/01\/macos-essential-tools-for-java-developer.html\"><strong>&gt;&gt; macOS: Essential Tools For (Java) Developer<\/strong><\/a> [<span style=\"color: #800000\">blog.codeleak.pl<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<p><strong>Webinars and presentations:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2020\/01\/03\/a-bootiful-podcast-spring-boot-and-spring-cloud-co-founder-dr-dave-syer\"><strong>&gt;&gt; A Bootiful Podcast: Spring Boot and Spring Cloud co-founder Dr. Dave Syer<\/strong><\/a> [<span style=\"color: #800000\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/monoliths-modules\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; Building Better Monoliths: Implementing Modulithic Applications with Spring<\/strong><\/a> [<span style=\"color: #800000\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/spring-jib-scaffold-kubernetes\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; Best Practices to Spring to Kubernetes Easier and Faster<\/a><\/strong> [<span style=\"color: #800000\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"technical\"><strong>2. Technical<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"technical\"><\/div>\n<h4><a href=\"https:\/\/bravenewgeek.com\/microservice-observability-part-2-evolutionary-patterns-for-solving-observability-problems\/\"><strong>&gt;&gt; Microservice Observability, Part 2: Evolutionary Patterns for Solving Observability Problems<\/strong><\/a> [<span style=\"color: #800000\">bravenewgeek.com<\/span>]<\/h4>\n<p>A roundup of strategies, patterns, and best practices for <strong>building an observability pipeline<\/strong>.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.troyhunt.com\/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy\/\"><strong>&gt;&gt; Promiscuous Cookies and Their Impending Death via the SameSite Policy<\/strong><\/a> [<span style=\"color: #800000\">troyhunt.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/lucumr.pocoo.org\/2020\/1\/1\/async-pressure\/\"><strong>&gt;&gt; I&#8217;m not feeling the async pressure<\/strong><\/a> [<span style=\"color: #800000\">lucumr.pocoo.org<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"http:\/\/blog.code-cop.org\/2020\/01\/graphml-charting-module-dependencies.html\"><strong>&gt;&gt; Visualising Architecture: GraphML Charting Module Dependencies<\/strong><\/a> [<span style=\"color: #800000\">blog.code-cop.org<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"musings\"><strong>3. Musings<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"musings\"><\/div>\n<h4><a href=\"https:\/\/blog.frankel.ch\/developers-productivity\/\"><strong>&gt;&gt; On Developers&#8217; Productivity<\/strong><\/a> [<span style=\"color: #800000\">blog.frankel.ch<\/span>]<\/h4>\n<p>A fresh look at <strong>the myth of the 10x developer<\/strong> and the problems associated with evaluating developer productivity.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/pointersgonewild.com\/2020\/01\/03\/maybe-planets-are-overrated\/\"><strong>&gt;&gt; Maybe Planets are Overrated?<\/strong><\/a> [<span style=\"color: #800000\">pointersgonewild.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/12\/lessons-learned-from-a-successful-project\/\"><strong>&gt;&gt; Lessons learned from a successful project<\/strong><\/a> [<span style=\"color: #800000\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"comics\"><strong>4. Comics<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"comics\"><\/div>\n<p>And my favorite Dilberts of the week:<\/p>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2020-01-02\"><strong>&gt;&gt; Inefficiency<\/strong><\/a> [<span style=\"color: #800000\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2020-01-03\"><strong>&gt;&gt; Incompetent Employees<\/strong><\/a> [<span style=\"color: #800000\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2020-01-07\"><strong>&gt;&gt; Court of Stupidity<\/strong><\/a> [<span style=\"color: #800000\">dilbert.com<\/span>]<\/h4>\n<h2 data-id=\"pick-of-the-week\"><strong>5. Pick of the Week<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"pick-of-the-week\"><\/div>\n<h4><strong><a href=\"https:\/\/sivers.org\/expire\">&gt;&gt; Keep earning your title, or it expires<\/a>\u00a0<\/strong>[<span style=\"color: #800000\">sivers.org<\/span>]<\/h4>\n","protected":false},"excerpt":{"rendered":"<p>An overview of installing and managing multiple Java SDKs with SDKMAN!, and a collection of patterns for building an observability pipeline for microservices.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-315\" title=\"Java Weekly, Issue 315\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2020\/01\/06\/java-weekly-issue-315\/\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"slim_seo":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2,315,2149,7],"tags":[398,402,397,414,413,410,409,407,408,11,406,399,400,394,318,375,558,560,555,561,553,554,562,524,10,401,396,381,403,412,411,395,405,404,457,454,316],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7prtj-S9V","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/208191"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/comments?post=208191"}],"version-history":[{"count":4,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/208191\/revisions"}],"predecessor-version":[{"id":215107,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/208191\/revisions\/215107"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=208191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=208191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=208191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}