{"id":139261,"date":"2019-05-31T10:37:20","date_gmt":"2019-05-31T02:37:20","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=54405"},"modified":"2019-05-31T10:37:20","modified_gmt":"2019-05-31T02:37:20","slug":"java-weekly-issue-283","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/05\/31\/java-weekly-issue-283\/","title":{"rendered":"Java Weekly, Issue 283"},"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.codecentric.de\/en\/2019\/05\/feature-toggles-in-a-microservice-environment-part-2-implementation\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Feature toggles in a microservice environment \u2013 Part 2: Implementation<\/strong><\/a> [<span style=\"color: #993300;\">blog.codecentric.de<\/span>]<\/h4>\n<p>A quick look at Unleash, a Node.js service for managing feature toggles across a <a href=\"http:\/\/itteacheritfreelance.hk\/index.php\" title=\"\u672c\u7db1\u9801\u63d0\u4f9b\u4e00\u500b\u65b9\u4fbf\u7684\u5e73\u53f0, \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b , PHP\u88dc\u7fd2, HTML\u88dc\u7fd2, CSS\u88dc\u7fd2, JavaScript\u88dc\u7fd2, XML, Java\u88dc\u7fd2,Server\u88dc\u7fd2, MySQL\u88dc\u7fd2, \u4e2d\u5b78\u96fb\u8166\u79d1\u79c1\u4eba\u88dc\u7fd2, \u5728\u8077\u4eba\u58eb\u96fb\u8166\u63d0\u5347\u88dc\u7fd2,\u5c08\u696d\u8003\u8a66\u96fb\u8166 \u88dc\u7fd2,\u96fb\u8166\u5716\u50cf\u8a2d\u8a08\u96fb\u8166\u88dc\u7fd2, gra\">collection<\/a> of microservices, with a simple Java-based configuration example.<\/p>\n<h4><a href=\"https:\/\/www.tomitribe.com\/blog\/mbd-to-mdb-messaging-harness-the-power-of-the-river-delta\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; MBD-to-MDB Messaging: Harness the Power of the River Delta<\/strong><\/a> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/h4>\n<p>A good write-up showing how <strong>messaging between Message-Driven Beans can lead to powerful, asynchronous architectures<\/strong>.<\/p>\n<h4><a href=\"https:\/\/gluonhq.com\/a-boost-for-java-on-the-client\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; A boost for Java on the Client<\/strong><\/a> [<span style=\"color: #993300;\">gluonhq.com<\/span>]<\/h4>\n<p>And Gluon announces their client plugin for Maven and Gradle, which will <strong>compile a Java app and its dependencies to native code<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.tomitribe.com\/blog\/5-minutes-or-less-message-driven-beans-with-activemq-and-tomee\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; 5 Minutes or Less: Message-Driven Beans with ActiveMQ and TomEE<\/strong><\/a> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/05\/web-app-java-jvm-alternatives\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Writing Web Applications in Java &#8211; a Study of Alternatives<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.jworks.io\/phone-number-validation-using-custom-hibernate-validators\/\"><strong>&gt;&gt; Phone Number Validation using custom Hibernate Validators<\/strong><\/a> [<span style=\"color: #993300;\">jworks.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/rieckpil.de\/howto-consumer-driven-contracts-with-spring-cloud-contract\/\"><strong>&gt;&gt; Consumer-Driven Contracts with Spring Cloud Contract<\/strong><\/a><strong>\u00a0<\/strong>[<span style=\"color: #993300;\">rieckpil.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/paluch.biz\/blog\/179-reactive-relational-database-transactions.html\"><strong>&gt;&gt; Reactive Relational Database Transactions<\/strong><\/a> [<span style=\"color: #993300;\">paluch.biz<\/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\/05\/24\/a-bootiful-podcast-twitter-s-chris-thalinger-on-java-graal-jvms-jits-and-more\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; A Bootiful Podcast: Twitter&#8217;s Chris Thalinger on Java, Graal, JVMs, JITs, 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\/05\/29\/spring-tips-debugging-reactor-applications\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Tips: Debugging Reactor Applications<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.sebastian-daschner.com\/entries\/effective-keyboard-usage-video-course\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Video course \u2014 Effective keyboard usage for developers<\/strong><\/a> [<span style=\"color: #993300;\">blog.sebastian-daschner.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/graph-query-distributed-execution?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Life of a Distributed Graph Database Query<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/presentations\/scale-anomaly-detection-framework?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Massive Scale Anomaly Detection Framework<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/testing-devops-manual-testing?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Quality Engineering in DevOps<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/future-transportation?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; The Future of Transportation<\/strong><\/a> [<span style=\"color: #993300;\">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\/05\/24\/spring-tools-4-2-2-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Tools 4.2.2 released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/05\/30\/cve-2019-11269-spring-security-oauth-2-3-6-2-2-5-2-1-5-2-0-18-released\"><strong>&gt;&gt; CVE-2019-11269: Spring Security OAuth 2.3.6, 2.2.5, 2.1.5, 2.0.18 Released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/05\/28\/spring-cloud-open-service-broker-3-0-1-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Cloud Open Service Broker 3.0.1 Released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/05\/29\/spring-cloud-edgware-sr6-released\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Cloud Edgware.SR6 Released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"http:\/\/in.relation.to\/2019\/05\/27\/hibernate-search-6-0-0-Alpha6\/\"  rel=\"noopener noreferrer\">&gt;&gt; Hibernate Search 6.0.0.Alpha6 released!<\/a> <\/strong>[<span style=\"color: #993300;\">in.relation.to<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>2. Technical and Musings<\/strong><\/h2>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/analytics-zoo-qa-module\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Using Intel Analytics Zoo to Inject AI into Customer Service Platform (Part II)<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<p>An exercise in <strong>developing a Question Answering (QA) solution<\/strong> using Analytics Zoo on Azure&#8217;s Big Data platform.<\/p>\n<h4><a href=\"https:\/\/advancedweb.hu\/2019\/05\/28\/aws_config_credentials\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Why AWS access and secret keys should not be in the codebase<\/strong><\/a> [<span style=\"color: #993300;\">advancedweb.hu<\/span>]<\/h4>\n<p>And a few good reasons why <strong>secret keys should come from environment variables<\/strong> and should never be hard-coded.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/05\/azure-ai-ml-new-updates\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Microsoft Launches Several New Machine Learning Services and Extends Its Cognitive Services<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.frankel.ch\/exercises-programming-style\/3\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Exercises in Programming Style, Kwisatz Haderach-style<\/strong><\/a> [<span style=\"color: #993300;\">blog.frankel.ch<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/ethical-software-engineer\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Being an Ethical Software Engineer<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"\">&gt;&gt; Checking your clean architecture<\/a> <\/strong>[<span style=\"color: #993300;\">sourced-bvba.be<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>3. Comics<\/strong><\/h2>\n<p>And my favorite Dilberts of the week:<\/p>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-05-30\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; If You Can Dream<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-05-28\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Wally and His Priorities<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-05-24\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Counting Morons<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2><strong>4. Pick of the Week<\/strong><\/h2>\n<p>Last week, I wrote <a href=\"https:\/\/wwww.baeldung.com\/codota-article\">about Codota<\/a> &#8211; a really interesting coding assistant I found and have been using.<\/p>\n<p>The response <strong>to <a href=\"https:\/\/youtu.be\/T_wTs95wsl4\">the video<\/a><\/strong> was overwhelmingly positive, which is always super cool to see.<\/p>\n<p>Here&#8217;s Codota directly, in case you missed it. My suggestion is to simply install it and have it running in the background, as you&#8217;re coding normally:<\/p>\n<h4><strong><a href=\"https:\/\/wwww.baeldung.com\/codota-article\">&gt;&gt; Codota \u2013 an AI Assistant that Actually Works<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">codota.com<\/span>]<\/h4>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A good primer on implementing feature toggles and managing them in a microservices architecture, and a review of messaging between Message-Driven Beans.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-283\" title=\"Java Weekly, Issue 283\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/05\/31\/java-weekly-issue-283\/\">\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":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2,315,3665,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-Ae9","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/139261"}],"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=139261"}],"version-history":[{"count":2,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/139261\/revisions"}],"predecessor-version":[{"id":150530,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/139261\/revisions\/150530"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=139261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=139261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=139261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}