{"id":190307,"date":"2019-12-26T15:20:50","date_gmt":"2019-12-26T07:20:50","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=67223"},"modified":"2019-12-26T15:20:50","modified_gmt":"2019-12-26T07:20:50","slug":"java-weekly-issue-313","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/26\/java-weekly-issue-313\/","title":{"rendered":"Java Weekly, Issue 313"},"content":{"rendered":"<p>Last Java Weekly of 2019 &#8211; let&#8217;s jump right in here <img decoding=\"async\" src=\"https:\/\/i0.wp.com\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/1f642.png?w=640&#038;ssl=1\" alt=\"?\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" data-recalc-dims=\"1\" \/><\/p>\n<h2 data-id=\"spring-and-java\">1. Spring and Java<\/h2>\n<div class=\"bd-anchor\" id=\"spring-and-java\"><\/div>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/12\/java14-feature-freeze\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; Java 14 Is in Feature-Freeze and Release Rampdown<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<p>Now that the release process has begun, <strong>learn which JEPs made the cut<\/strong>.<\/p>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/djl-deep-learning-java\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; Getting to Know Deep Java Library (DJL)<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<p>A nice overview of Amazon&#8217;s <strong>engine-agnostic machine learning toolkit<\/strong> for Java.<\/p>\n<h4><a href=\"https:\/\/vladmihalcea.com\/jpa-hibernate-performance-issues\/\"><strong>&gt;&gt; The best way to prevent JPA and Hibernate performance issues<\/strong><\/a> [<span style=\"color: #800000;\">vladmihalcea.com<\/span>]<\/h4>\n<p>And see how <strong><em>FetchType.LAZY<\/em>\u00a0can prevent superfluous and inefficient queries<\/strong> in a <em>@ManyToOne<\/em> mapping.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"http:\/\/marxsoftware.blogspot.com\/2019\/12\/foreign-memory-access-in-jdk-14.html\">&gt;&gt; General, Safe, and Deterministic Foreign Memory Access in JDK 14<\/a><\/strong> [<span style=\"color: #800000;\">marxsoftware.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"http:\/\/macias.info\/entry\/201912201300_graal_aot.md\">&gt;&gt; Java JIT vs Java AOT vs Go for small, short-lived processes<\/a><\/strong> [<span style=\"color: #800000;\">macias.info<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/rieckpil.de\/github-actions-for-java-automate-your-maven-workflows\/\">&gt;&gt; GitHub Actions for Java \u2013 automate your Maven workflows<\/a><\/strong> [<span style=\"color: #800000;\">rieckpil.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/23\/spring-cloud-roadmap-and-hoxton-and-greenwich-maintenance-and-eol-announcements\"><strong>&gt;&gt; Spring Cloud Roadmap and Hoxton and Greenwich Maintenance and EOL Announcements<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.petrikainulainen.net\/programming\/testing\/writing-unit-tests-for-normal-spring-mvc-controllers-configuration\/\"><strong>&gt;&gt; Writing Unit Tests for \u201cNormal\u201d Spring MVC Controllers: Configuration<\/strong><\/a> [<span style=\"color: #800000;\">petrikainulainen.net<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/tomitribe4.wpengine.com\/blog\/tomee-webprofile-vs-tomee-microprofile-vs-tomee-vs-tomee-plume\/\">&gt;&gt; TomEE WebProfile vs. TomEE MicroProfile vs. TomEE+ vs. TomEE PluME<\/a><\/strong> [<span style=\"color: #800000;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Webinars and presentations:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/12\/20\/a-bootiful-podcast-reactor-teammate-simon-basl\">&gt;&gt; A Bootiful Podcast: Reactor teammate Simon Basl\u00e9<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/ff4j\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; FF4J: Feature Toggling for Spring\/Spring Boot Applications<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/spring-cloud-kubernetes\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; Spring Cloud on Kubernetes<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.petrikainulainen.net\/programming\/testing\/writing-unit-tests-for-a-spring-rest-api-with-kotlin-and-junit-5-configuration\/\">&gt;&gt; Writing Unit Tests for a Spring REST API With Kotlin and JUnit 5: Configuration<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">petrikainulainen.net<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/rabbitmq-kafka\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; RabbitMQ and Kafka<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.youtube.com\/watch?v=OdoyCjpaQKs\">&gt;&gt; Eclipse 2019-12 IDE Improvements: Java and Maven<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">youtube.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/presentations\/mastercard-distributed-gemfire\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; Scaling Beyond a Billion Transactions Per Day with Sub-second Responses<\/a><\/strong>\u00a0[<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Time to upgrade:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/19\/spring-tools-4-5-0-released\"><strong>&gt;&gt; Spring Tools 4.5.0 released<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/12\/23\/spring-for-apache-kafka-2-4-is-available\">&gt;&gt; Spring for Apache Kafka 2.4 is Available<\/a><\/strong> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/12\/21\/spring-cloud-hoxton-service-release-1-sr1-is-available\">&gt;&gt; Spring Cloud Hoxton Service Release 1 (SR1) is available.<\/a><\/strong> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"technical\">2. Technical<\/h2>\n<div class=\"bd-anchor\" id=\"technical\"><\/div>\n<h4><strong><a href=\"https:\/\/dev.to\/frosnerd\/concurrency-and-automatic-conflict-resolution-4i9o\">&gt;&gt; Concurrency and Automatic Conflict Resolution<\/a><\/strong> [<span style=\"color: #800000;\">dev.to<\/span>]<\/h4>\n<p>A comparison of two common approaches for resolving conflicts in concurrent applications.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/12\/axon-replaying-made-easy-with-endpoints\/\"><strong>&gt;&gt; Axon replaying made easy with endpoints<\/strong><\/a> [<span style=\"color: #800000;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/12\/kong-api-gateway-observability-with-prometheus-grafana-and-opsgenie\/\"><strong>&gt;&gt; Kong API Gateway \u2013 Observability with Prometheus, Grafana and OpsGenie<\/strong><\/a> [<span style=\"color: #800000;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/12\/publishing-application-metrics-to-cloudwatch-using-micrometer\/\">&gt;&gt; Publishing application metrics to CloudWatch using Micrometer<\/a><\/strong> [<span style=\"color: #800000;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"musings\">3. Musings<\/h2>\n<div class=\"bd-anchor\" id=\"musings\"><\/div>\n<h4><strong><a href=\"https:\/\/www.satisfice.com\/blog\/archives\/487091\">&gt;&gt; Assess Quality, Don\u2019t Measure It<\/a><\/strong> [<span style=\"color: #800000;\">satisfice.com<\/span>]<\/h4>\n<p>And though they&#8217;re nice to have, <strong>quality metrics are no substitute for a subjective assessment of quality<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/blog.scottlogic.com\/2019\/12\/19\/source-control-when.html\"><strong>&gt;&gt; When is the right time to commit or use a branch?<\/strong><\/a> [<span style=\"color: #800000;\">blog.scottlogic.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.frankel.ch\/my-blogging-stack-publishing-process\/\">&gt;&gt; My blogging stack and publishing process<\/a><\/strong> [<span style=\"color: #800000;\">blog.frankel.ch<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"comics\">4. Comics<\/h2>\n<div class=\"bd-anchor\" id=\"comics\"><\/div>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-12-20\"><strong>&gt;&gt; Worst Idea Ever<\/strong><\/a> [<span style=\"color: #800000;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-12-22\"><strong>&gt;&gt; Wally Uses Deep Fake<\/strong><\/a> [<span style=\"color: #800000;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-12-23\"><strong>&gt;&gt; Ship Without Manual<\/strong><\/a> [<span style=\"color: #800000;\">dilbert.com<\/span>]<\/h4>\n<h2 data-id=\"pick-of-the-week\">5. Pick of the Week<\/h2>\n<div class=\"bd-anchor\" id=\"pick-of-the-week\"><\/div>\n<h4><strong><a href=\"https:\/\/markmanson.net\/how-to-make-better-life-decisions\"  rel=\"noopener noreferrer\">&gt;&gt;\u00a05 Principles for Making Better Life Decisions<\/a> [<span style=\"color: #993300;\">markmanson.net<\/span>]<\/strong><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>A complete list of features selected for the Java 14 release, and a great write-up on automatic conflict resolution for concurrent applications.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-313\" title=\"Java Weekly, Issue 313\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/26\/java-weekly-issue-313\/\">\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-Nvt","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/190307"}],"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=190307"}],"version-history":[{"count":8,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/190307\/revisions"}],"predecessor-version":[{"id":215109,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/190307\/revisions\/215109"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=190307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=190307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=190307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}