{"id":121790,"date":"2019-04-02T23:25:44","date_gmt":"2019-04-02T15:25:44","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=51599"},"modified":"2019-04-02T23:25:44","modified_gmt":"2019-04-02T15:25:44","slug":"java-weekly-issue-275","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/04\/02\/java-weekly-issue-275\/","title":{"rendered":"Java Weekly, Issue 275"},"content":{"rendered":"<p><strong>Here we go\u2026<\/strong><\/p>\n<h2><strong>1. Spring and Java<\/strong><\/h2>\n<h4><a href=\"https:\/\/blog.frankel.ch\/comparison-assertion-libraries\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; A comparison of assertion libraries<\/strong><\/a> [<span style=\"color: #993300;\">blog.frankel.ch<\/span>]<\/h4>\n<p>A side-by-side comparison of <strong>Strikt and Atrium libraries for Kotlin and how they stack up against AssertJ<\/strong>.<\/p>\n<h4><a href=\"https:\/\/reflectoring.io\/spring-data-mvc-pagination\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Paging with Spring and Spring Boot<\/strong><\/a> [<span style=\"color: #993300;\">reflectoring.io<\/span>]<\/h4>\n<p>A deep dive into <strong>Spring Data&#8217;s <em>Pageable<\/em>, <em>Page<\/em>, <em>Slice<\/em>, and <em>Sort<\/em> interfaces<\/strong>, and how to use them together in Spring controllers.<\/p>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/03\/28\/reactor-debugging-experience\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Reactor Debugging Experience<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<p>And a quick introduction to <strong>BlockHound and the Reactor Debug agent<\/strong> \u2014 two experimental tools for debugging Reactive code. Very cool.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/04\/wildfly16-released?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Wildfly 16: Improvements to Messaging and Clustering<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/04\/02\/event-driven-java-with-spring-cloud-stream-and-azure-event-hubs-guest-post\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Event-driven Java with Spring Cloud Stream and Azure Event Hubs [Guest Post]<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/4comprehension.com\/java-stream-api-was-broken-before-jdk10\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Java Stream API was Broken Before JDK10<\/strong><\/a> [<span style=\"color: #993300;\">4comprehension.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.graphqleditor.com\/Getting-started-with-GraphQL-Java\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Getting started with GraphQL Java<\/strong><\/a> [<span style=\"color: #993300;\">blog.graphqleditor.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Webinars and presentations:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/03\/29\/a-bootiful-podcast-josh-mckenty-better-josh-on-data-sovereignty-microservices-cloud-foundry-python-the-cloud-pivotal-and-more\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; A Bootiful Podcast: Josh Mckenty &#8211; &#8220;Better Josh&#8221; &#8211; on data sovereignty, microservices, Cloud Foundry, Python, the cloud, Pivotal, and more<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/04\/03\/spring-tips-webmvc-fn-the-functional-dsl-for-spring-mvc\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Tips: WebMvc.fn &#8211; the functional DSL for Spring MVC<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-cloud-pks?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Cloud on PKS<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-framework-slow?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\">&gt;&gt; How Fast is Spring?<\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-cloud-kafka-streams-cqrs?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Building Cloud-Native Data-Intensive Applications with Spring<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/gcp-cloud-native-arch?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Google Cloud-Native Architecture with Spring Cloud GCP<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/microservices-financial-times?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Mature Microservices and How to Operate Them<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.sebastian-daschner.com\/entries\/reloading-javaee-apps-wad\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Hot-deploying Java Enterprise with WAD &amp; Docker (Video)<\/strong><\/a> [<span style=\"color: #993300;\">blog.sebastian-daschner.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\/04\/01\/spring-framework-5-1-6-5-0-13-and-4-3-23-available-now\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Framework 5.1.6, 5.0.13 and 4.3.23 available now<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/04\/03\/spring-security-5-1-5-5-0-12-4-2-12-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Security 5.1.5, 5.0.12, 4.2.12 Released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/04\/03\/spring-boot-1-5-20-available-now\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Boot 1.5.20 available now<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>], <a href=\"https:\/\/spring.io\/blog\/2019\/04\/03\/spring-boot-2-0-9-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Boot 2.0.9 Released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/04\/04\/spring-boot-2-1-4-released\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Boot 2.1.4 released<\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/03\/29\/spring-tools-4-2-0-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Tools 4.2.0 released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/03\/27\/spring-tool-suite-3-9-8-released\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Tool Suite 3.9.8 released<\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/03\/microprofile-reactive-stream-1.0?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; MicroProfile Releases Reactive Streams Operators 1.0<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>2. Technical and Musings<\/strong><\/h2>\n<h4><a href=\"https:\/\/vladmihalcea.com\/relational-database-sql-prepared-statements\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; How does a relational database execute SQL statements and prepared statements<\/strong><\/a> [<span style=\"color: #993300;\">vladmihalcea.com<\/span>]<\/h4>\n<p>An overview of the <strong>Parser, Optimizer, and Executor modules<\/strong> that are responsible for processing SQL and prepared statements.<\/p>\n<h4><a href=\"https:\/\/advancedweb.hu\/2019\/04\/02\/sg_allow_ip\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; AWS: Increase instance security by allowing SSH only from your IP<\/strong><\/a> [<span style=\"color: #993300;\">advancedweb.hu<\/span>]<\/h4>\n<p>A handy shell script that lets you SSH into your AWS instance from a single IP, <strong>while keeping it blocked for the rest of the world<\/strong>.<\/p>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/impact-ethics-conversational-ai?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; The Impact and Ethics of Conversational Artificial Intelligence<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<p>And, as conversational AI technology continues to advance, we must ask ourselves not only what we <em>can<\/em> do, but also <strong>what we <em>should<\/em> and <em>should not<\/em> do with it<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/03\/TensorFlow-Privacy?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt;\u00a0 Introducing TensorFlow Privacy, a New Machine Learning Library for Protecting Sensitive Data<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/nvoulgaris.com\/comparing-tdd-flavours\/\"><strong>&gt;&gt; Comparing TDD flavours<\/strong><\/a> [<span style=\"color: #993300;\">nvoulgaris.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.ontestautomation.com\/why-test-automation-is-a-lot-like-bubble-wrap\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Why test automation is a lot like bubble wrap<\/strong><\/a> [<span style=\"color: #993300;\">ontestautomation.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/04\/traefik-2-0-configuration-routing-rule-syntax\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Traefik 2.0 \u2013 Configuration &amp; new routing rule syntax<\/strong><\/a> [<span style=\"color: #993300;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/techblog.bozho.net\/audit-trail-in-it-context\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Audit Trail in IT Context<\/strong><\/a> [<span style=\"color: #993300;\">techblog.bozho.net<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/phauer.com\/2019\/focus-integration-tests-mock-based-tests\/\">&gt;&gt; Focus on Integration Tests Instead of Mock-Based Tests<\/a><\/strong> [<span style=\"color: #993300;\">phauer.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/daedtech.com\/software-career-anti-patterns-career-development-by-coincidence\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Software Career Anti-Patterns: Career Development by Coincidence<\/strong><\/a> [<span style=\"color: #993300;\">daedtech.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>3. Comics<\/strong><\/h2>\n<h4>And my favorite Dilberts of the week:<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-04-01\"  rel=\"noopener noreferrer\"><strong>&gt;&gt;\u00a0Nuclear Power Invention<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-04-03\"  rel=\"noopener noreferrer\"><strong>&gt;&gt;\u00a0It Already Works<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-03-29\"  rel=\"noopener noreferrer\"><strong>&gt;&gt;\u00a0Wally Blames the Chemtrails<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2><strong>4. Pick of the Week<\/strong><\/h2>\n<h4><strong><a href=\"https:\/\/towardsdatascience.com\/learn-enough-docker-to-be-useful-b7ba70caeb4b\"  rel=\"noopener noreferrer\">&gt;&gt; Learn Enough Docker to be Useful<\/a> <\/strong>[<span style=\"color: #993300;\">towardsdatascience.com<\/span>]<\/h4>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A nice write-up comparing assertion libraries for Kotlin, and a first look at a couple of experimental debugging tools for Project Reactor.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-275\" title=\"Java Weekly, Issue 275\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/04\/02\/java-weekly-issue-275\/\">\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-vGm","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/121790"}],"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=121790"}],"version-history":[{"count":1,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/121790\/revisions"}],"predecessor-version":[{"id":121793,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/121790\/revisions\/121793"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=121790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=121790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=121790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}