{"id":182226,"date":"2019-12-06T12:27:41","date_gmt":"2019-12-06T04:27:41","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=65882"},"modified":"2019-12-06T12:27:41","modified_gmt":"2019-12-06T04:27:41","slug":"java-weekly-issue-310","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/06\/java-weekly-issue-310\/","title":{"rendered":"Java Weekly, Issue 310"},"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:\/\/thoughts-on-java.org\/dont-expose-entities-in-api\/\"><strong>&gt;&gt; Don\u2019t expose your JPA entities in your REST<\/strong> API<\/a> [<span style=\"color: #800000;\">thoughts-on-java.org<\/span>]<\/h4>\n<p>We can&#8217;t fully avoid coupling, but <strong>mixing web and persistence layers is almost always a bad choice.<\/strong><\/p>\n<h4><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/understanding-the-jdks-new-superfast-garbage-collectors\"><strong>&gt;&gt; Understanding the JDK\u2019s New Superfast Garbage Collectors<\/strong><\/a> [<span style=\"color: #800000;\">blogs.oracle.com<\/span>]<\/h4>\n<p>Java is undergoing a small GC revolution (ZGC, Shenandoah). This article is a great place to start.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/vladmihalcea.com\/2pl-two-phase-locking\/\"><strong>&gt;&gt; How does the 2PL (Two-Phase Locking) algorithm work<\/strong><\/a> [<span style=\"color: #800000;\">vladmihalcea.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/12\/02\/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-1-programming-model\"><strong>&gt;&gt; Stream Processing with Spring Cloud Stream and Apache Kafka Streams. Part 1 &#8211; Programming Model<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.frankel.ch\/write-extension-functions-own-classes-kotlin\/\"><strong>&gt;&gt; Write extension functions for your own <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\">class<\/a>es in Kotlin<\/strong><\/a> [<span style=\"color: #800000;\">blog.frankel.ch<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/dev.to\/frosnerd\/microbenchmarking-your-scala-code-4885\"><strong>&gt;&gt; Microbenchmarking your Scala code<\/strong><\/a> [<span style=\"color: #800000;\">dev.to<\/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\/11\/29\/a-bootiful-podcast-spring-tools-lead-martin-lippert\"><strong>&gt;&gt; A Bootiful Podcast: Spring Tools lead Martin Lippert<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/principles-successful-frameworks\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; Eighteen Years of 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\/authenticationmanagerresolver\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\">&gt;&gt; Multi-Tenancy OAuth with Spring Security 5.2<\/a><\/strong> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-rsocket\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; RSocket Messaging with Spring<\/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><a href=\"https:\/\/spring.io\/blog\/2019\/11\/28\/spring-cloud-hoxton-released\"><strong>&gt;&gt; Spring Cloud Hoxton Released<\/strong><\/a> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/spring-security-5-2\/?utm_campaign=infoq_content&#038;utm_source=infoq&#038;utm_medium=feed&#038;utm_term=Java\"><strong>&gt;&gt; Hello, Spring Security 5.2<\/strong><\/a> [<span style=\"color: #800000;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/11\/27\/spring-integration-aws-2-3-ga-and-spring-cloud-stream-kinesis-binder-2-0-ga-available\">&gt;&gt; Spring Integration AWS 2.3 GA and Spring Cloud Stream Kinesis Binder 2.0 GA Available<\/a><\/strong> [<span style=\"color: #800000;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/11\/26\/spring-cloud-open-service-broker-3-1-0-released\"><strong>&gt;&gt; Spring Cloud Open Service Broker 3.1.0 Released<\/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:\/\/advancedweb.hu\/2019\/11\/26\/cloudfront_cors\/\"><strong>&gt;&gt; How CloudFront solves CORS problems<\/strong><\/a> [<span style=\"color: #800000;\">advancedweb.hu<\/span>]<\/h4>\n<p>When working with modern architectures, <strong>dealing with CORS can be annoying at times<\/strong>. Luckily, CloudFront has a handy solution to the problem.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"http:\/\/www.paulgraham.com\/ycstart.html\"><strong>&gt;&gt; How Y Combinator Started<\/strong><\/a> [<span style=\"color: #800000;\">paulgraham.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.scottlogic.com\/2019\/11\/28\/email-digests-with-elasticsearch-via-a-serverless-architecture.html\"><strong>&gt;&gt; Email Digests with Elasticsearch via a Serverless Architecture<\/strong><\/a> [<span style=\"color: #800000;\">blog.scottlogic.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/11\/multple-stage-kubernetes-deployments-with-gitlab-and-kustomize\/\"><strong>&gt;&gt; Multiple-stage Kubernetes deployments with GitLab and Kustomize<\/strong><\/a> [<span style=\"color: #800000;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.scottlogic.com\/2019\/12\/02\/Search-Data-Visualisation.html\"><strong>&gt;&gt; Generating SVG and PDF reports from Elasticsearch<\/strong><\/a> [<span style=\"color: #800000;\">blog.scottlogic.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/11\/aws-cdk-part-6-lessons-learned\/\"><strong>&gt;&gt; AWS CDK Part 6: Lessons learned<\/strong><\/a> [<span style=\"color: #800000;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/techblog.bozho.net\/near-real-time-indexing-with-elasticsearch\/\">&gt;&gt; Near real-time indexing with Elasticsearch<\/a>\u00a0<\/strong> [<span style=\"color: #800000;\">techblog.bozho.net<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/waynebeaton.wordpress.com\/2019\/12\/02\/yearly-release-reviews-for-eclipse-projects\/\"><strong>&gt;&gt; Yearly Release Reviews for Eclipse Projects<\/strong><\/a> [<span style=\"color: #800000;\">waynebeaton.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2 data-id=\"musings\">3. Musings<\/h2>\n<div class=\"bd-anchor\" id=\"musings\"><\/div>\n<h4><a href=\"https:\/\/codewithoutrules.com\/2019\/11\/27\/job-negotiation-for-programmers\/\"><strong>&gt;&gt; Job negotiation for programmers: the basic principles<\/strong><\/a> [<span style=\"color: #800000;\">codewithoutrules.com<\/span>]<\/h4>\n<p>A huge <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 much-needed job negotiation tips &#8211; definitely worth your time!<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"http:\/\/www.paulgraham.com\/ycstart.html\"><strong>&gt;&gt; How Y Combinator Started<\/strong><\/a> [<span style=\"color: #800000;\">paulgraham.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.jbrains.ca\/permalink\/the-coming-battle-about-psychological-safety\"><strong>&gt;&gt; The Coming Battle About Psychological Safety<\/strong><\/a> [<span style=\"color: #800000;\">blog.jbrains.ca<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/waynebeaton.wordpress.com\/2019\/12\/02\/yearly-release-reviews-for-eclipse-projects\/\"><strong>&gt;&gt; Yearly Release Reviews for Eclipse Projects<\/strong><\/a> [<span style=\"color: #800000;\">waynebeaton.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-05\">&gt;&gt; Morning Meetings<\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-11-21\">&gt;&gt; Software Specs<\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-11-29\">&gt;&gt; Mindless Tasks<\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2 data-id=\"pick-of-the-week\"><strong>4. Pick of the Week<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"pick-of-the-week\"><\/div>\n<p>Last week I talked about the new security-focused course I&#8217;m releasing, exploring the new OAuth2 stack in Spring Security 5:<\/p>\n<p><strong><a href=\"https:\/\/www.baeldung.com\/learn-spring-security-oauth-course\">&gt;&gt; The new Learn <em>Spring Spring Security OAuth<\/em><\/a><\/strong><\/p>\n<p>If you&#8217;re doing OAuth2 work, definitely have a look at the lesson plan.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Keeping the data you expose separate from the data you store, new GCs in Java and my new OAuth2 course.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-310\" title=\"Java Weekly, Issue 310\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/12\/06\/java-weekly-issue-310\/\">\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-Lp8","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/182226"}],"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=182226"}],"version-history":[{"count":10,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/182226\/revisions"}],"predecessor-version":[{"id":215112,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/182226\/revisions\/215112"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=182226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=182226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=182226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}