{"id":184774,"date":"2019-12-13T10:39:37","date_gmt":"2019-12-13T02:39:37","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=66342"},"modified":"2019-12-13T10:39:37","modified_gmt":"2019-12-13T02:39:37","slug":"java-weekly-issue-311","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/13\/java-weekly-issue-311\/","title":{"rendered":"Java Weekly, Issue 311"},"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><strong><a href=\"http:\/\/cr.openjdk.java.net\/~briangoetz\/valhalla\/sov\/01-background.html\">&gt;&gt; State of Valhalla<\/a> <\/strong>[<span style=\"color: #993300;\">openjdk.java.net<\/span>]<\/h4>\n<p>A well-worth reading update to Project Valhalla and <strong>the future of Java<\/strong>.<\/p>\n<h4><a href=\"https:\/\/www.marcobehler.com\/guides\/java-microservices-a-practical-guide\"><strong>&gt;&gt; Java Microservices: A Practical Guide<\/strong><\/a> [<span style=\"color: #993300;\">marcobehler.com<\/span>]<\/h4>\n<p>A great <strong>primer on microservices<\/strong>, with practical advice on how to architect and build them in Java.<\/p>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/03\/spring-framework-maintenance-roadmap-in-2020-including-4-3-eol\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Framework maintenance roadmap in 2020 (including 4.3 EOL)<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<p>By the end of 2020, <strong>only Spring Framework 5.2.x and 5.3.x will be actively maintained<\/strong>.<\/p>\n<h4><a href=\"https:\/\/blog.codeleak.pl\/2019\/12\/junit-5-and-selenium-improving-project.html\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; JUnit 5 and Selenium &#8211; improving project configuration<\/strong><\/a> [<span style=\"color: #800000;\">blog.codeleak.pl<\/span>]<\/h4>\n<p>And a quick tutorial on <strong>leveraging the power of JUnit 5 with the Selenium Web Driver<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/blog.sebastian-daschner.com\/entries\/managing-java-installations\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Managing multiple Java installations<\/strong><\/a> [<span style=\"color: #800000;\">blog.sebastian-daschner.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"http:\/\/blog.code-cop.org\/2019\/12\/new-classes-in-java-10.html\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; New Classes in Java 10<\/strong><\/a> [<span style=\"color: #800000;\">blog.code-cop.org<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/tomitribe4.wpengine.com\/blog\/tomee-vs-tomcat\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; TomEE vs. Tomcat<\/strong><\/a> [<span style=\"color: #800000;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.scottlogic.com\/2019\/12\/05\/unit-test-your-architecture-with-archunit.html\"  rel=\"noopener noreferrer\">&gt;&gt; Unit Test Your Architecture with ArchUnit<\/a><\/strong> [<span style=\"color: #800000;\">blog.scottlogic.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/03\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-2-programming-model-continued\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Stream Processing with Spring Cloud Stream and Apache Kafka Streams. Part 2 &#8211; Programming Model Continued<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/12\/04\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-3-data-deserialization-and-serialization\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Part 3 &#8211; Data deserialization and serialization<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/12\/05\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-4-error-handling\"  rel=\"noopener noreferrer\"><strong><strong>&gt;&gt;Part 4 &#8211; Error Handling<\/strong><\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/12\/06\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-5-application-customizations\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Part 5 &#8211; Application Customizations<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/12\/09\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-6-state-stores-and-interactive-queries\"><strong>&gt;&gt; Part 6 &#8211; State Stores and Interactive Queries<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/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\/2019\/12\/05\/a-bootiful-podcast-pivotal-s-katrina-bakas-about-the-pivotal-healthwatch-product-kubernetes-cloud-foundry-and-so-much-more\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; A Bootiful Podcast: Pivotal&#8217;s Katrina Bakas about the Pivotal HealthWatch product, Kubernetes, Cloud Foundry and so much more<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-kotlin-boot-kofu\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; The State of Kotlin Support in Spring<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-reactor-kotlin-javafx-mongodb\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Fully Reactive: Spring, Kotlin, and JavaFX Playing Together<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/batch-lifecycle\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Batch Processing in 2019<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/webassembly-execution-architecture\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; WebAssembly: Revolution, Not Evolution<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<p><strong>Time to upgrade:<\/strong><\/p>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/12\/03\/spring-framework-5-2-2-and-5-1-12-available-now\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Framework 5.2.2 and 5.1.12 available now<\/a><\/strong> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/06\/spring-boot-2-2-2-is-now-available\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Boot 2.2.2 is now available<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]\u00a0and <a href=\"https:\/\/spring.io\/blog\/2019\/12\/06\/spring-boot-2-1-11-is-now-available\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Boot 2.1.11 is now available<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/06\/spring-data-r2dbc-goes-ga\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Data R2DBC goes GA<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/04\/spring-data-moore-sr3-and-lovelace-sr14-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Data Moore SR3 and Lovelace SR14 released<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/09\/spring-cloud-data-flow-2-3-0-ga-released\"><strong>&gt;&gt; Spring Cloud Data Flow 2.3.0 GA Released<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/04\/spring-batch-4-0-4-4-1-3-and-4-2-1-available-now\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Batch 4.0.4, 4.1.3 and 4.2.1 available now!<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/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:\/\/dev.to\/frosnerd\/hit-me-baby-one-more-time---what-are-cache-hits-and-why-should-you-care-4500\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Hit Me Baby One More Time &#8211; What Are Cache Hits and Why Should You Care?<\/strong><\/a> [<span style=\"color: #800000;\">dev.to<\/span>]<\/h4>\n<p>See the <strong>impact of CPU cache on two matrix multiplication algorithms<\/strong> that, on the surface, would seem to perform similarly.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/blog.frankel.ch\/six-interesting-features-programming-languages\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; 6 interesting features in programming languages<\/strong><\/a> [<span style=\"color: #800000;\">blog.frankel.ch<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/medium.com\/netflix-techblog\/open-sourcing-metaflow-a-human-centric-framework-for-data-science-fa72e04a5d9\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Open-Sourcing Metaflow, a Human-Centric Framework for Data Science<\/strong><\/a> [<span style=\"color: #800000;\">medium.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/advancedweb.hu\/2019\/12\/03\/sns_target_subscriber\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; How to target subscribers in an SNS topic<\/strong><\/a> [<span style=\"color: #800000;\">advancedweb.hu<\/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:\/\/michaelfeathers.silvrback.com\/scaling-and-the-friction-of-dimension#48486\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Scaling and the Friction of Dimension<\/strong><\/a> [<span style=\"color: #800000;\">michaelfeathers.silvrback.com<\/span>]<\/h4>\n<p>And a brief look at the <strong>tensions brought by increases in team size and architecture dependencies<\/strong>.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"http:\/\/www.paulgraham.com\/lesson.html\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; The Lesson to Unlearn<\/strong><\/a> [<span style=\"color: #800000;\">paulgraham.com<\/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\/2019-12-06\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Others Have Failed<\/strong><\/a> [<span style=\"color: #800000;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-12-09\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Sadist Designs Interface<\/strong><\/a> [<span style=\"color: #800000;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-12-11\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Saying You Are Dumb<\/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:\/\/randsinrepose.com\/archives\/one-thing\/\">&gt;&gt; One Thing<\/a> <\/strong>[<span style=\"color: #993300;\">randsinrepose.com<\/span>]<\/h4>\n","protected":false},"excerpt":{"rendered":"<p>The future of Java, a look at the Spring Framework maintenance roadmap for 2020, and a great article on CPU cache performance.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-311\" title=\"Java Weekly, Issue 311\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/13\/java-weekly-issue-311\/\">\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-M4e","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/184774"}],"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=184774"}],"version-history":[{"count":9,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/184774\/revisions"}],"predecessor-version":[{"id":215111,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/184774\/revisions\/215111"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=184774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=184774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=184774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}