{"id":26129,"date":"2017-10-03T11:31:16","date_gmt":"2017-10-03T11:31:16","guid":{"rendered":"https:\/\/blog.jetbrains.com\/idea\/?p=16171"},"modified":"2017-10-03T11:31:16","modified_gmt":"2017-10-03T11:31:16","slug":"java-annotated-monthly-october-2017","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/ja\/idea\/2017\/10\/java-annotated-monthly-october-2017","title":{"rendered":"Java Annotated Monthly \u2013 October 2017"},"content":{"rendered":"<p style=\"text-align: justify;\">Java 9 is here! At long last.\u00a0This month we have lots of Java 9 content, of course, but\u00a0that&#8217;s\u00a0actually not the only Big News: not only is Java EE 8 also now available, but we can look forward to a new release of Java every six months. So we&#8217;re celebrating Java 9, but we&#8217;re already anticipating Java 10. It might\u00a0not even be called Java 10&#8230;<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-14180\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2016\/04\/idea-JavaAnnotatedMonthly@2x.png\" alt=\"JavaAnnotatedMonthly@2x\" width=\"800\" height=\"415\" \/><\/p>\n<p><!--more--><\/p>\n<h2>Java 9<\/h2>\n<p><a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/index.html\" target=\"_blank\" rel=\"noopener\">Java 9<\/a> is <a href=\"https:\/\/blogs.oracle.com\/java\/java-9-release-now-available\" target=\"_blank\" rel=\"noopener\">out at last<\/a>! In this section we have links to articles about the release,\u00a0tutorials and reference documentation for some of the main features, and some commentary on the release and its features.<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/java-9-and-intellij-idea\/\">Java 9 and IntelliJ IDEA<\/a>, I (Trisha) wrote this just for you, our wonderful IntelliJ IDEA users.<\/li>\n<li><a href=\"https:\/\/www.oracle.com\/java\/java9-screencasts.html\" target=\"_blank\" rel=\"noopener\">Java 9 Expert Insights<\/a>, short videos from the people who\u00a0were involved in actually implementing the new features.<\/li>\n<li><a href=\"https:\/\/mreinhold.org\/blog\/jigsaw-complete\" target=\"_blank\" rel=\"noopener\">Project Jigsaw: Complete!<\/a> Mark Reinhold has been waiting a long time to say those words, you can hear the relief from here.<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/migrating-your-project-to-jigsaw-step-by-step\" target=\"_blank\" rel=\"noopener\">Migrating Your Project to Jigsaw Step by Step<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javase\/9\/tools\/jlink.htm#JSWOR-GUID-CECAC52B-CFEE-46CB-8166-F17A8E9280E9\" target=\"_blank\" rel=\"noopener\">Reference Documentation: jlink<\/a>, to package your\u00a0deployable application into something much smaller.<\/li>\n<li><a href=\"http:\/\/bartslota.blogspot.com.es\/2017\/09\/java9-convenience-factory-methods.html?m=1\" target=\"_blank\" rel=\"noopener\">Convenience Factory Methods for Collections<\/a>, my favourite new feature in Java 9.<\/li>\n<li><a href=\"https:\/\/stackify.com\/java-9-jshell\/\" target=\"_blank\" rel=\"noopener\">Finally, An Official Shell in Java 9 \u2013 Introducing JShell<\/a>, also check out the excellent <a href=\"https:\/\/docs.oracle.com\/javase\/9\/jshell\/introduction-jshell.htm#JSHEL-GUID-630F27C8-1195-4989-9F6B-2C51D46F52C8\" target=\"_blank\" rel=\"noopener\">Oracle Tutorial on JShell<\/a>. The REPL is\u00a0a very interesting new feature in Java 9 and has the potential to change the way we work.<\/li>\n<li><a href=\"https:\/\/alidg.me\/blog\/2017\/9\/8\/stack-walking-api-java9\" target=\"_blank\" rel=\"noopener\">The Stack Walking API in Java 9,<\/a>\u00a0some examples of how to use the new <a href=\"http:\/\/openjdk.java.net\/jeps\/259\" target=\"_blank\" rel=\"noopener\">Stack Walking API<\/a>.\u00a0 See also this older, but much more detailed post, <a href=\"https:\/\/www.sitepoint.com\/deep-dive-into-java-9s-stack-walking-api\/\" target=\"_blank\" rel=\"noopener\">Deep Dive into Java 9\u2019s Stack-Walking API<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/CMMzG8I23lY\" target=\"_blank\" rel=\"noopener\">55 New Features in JDK 9,<\/a>\u00a0not new, but now is the time to\u00a0remind yourself of the features (video). Also check out <a href=\"https:\/\/www.azul.com\/author\/simon_ritter\/\" target=\"_blank\" rel=\"noopener\">Simon<\/a>&#8216;s <a href=\"https:\/\/www.azul.com\/category\/java-9\/\" target=\"_blank\" rel=\"noopener\">blog posts on Java 9<\/a>.<\/li>\n<li><a href=\"https:\/\/blogs.oracle.com\/java\/java-magazine-more-java-9\" target=\"_blank\" rel=\"noopener\">New Java Magazine Issue: More Java 9<\/a><\/li>\n<li><a href=\"https:\/\/trishagee.github.io\/presentation\/real_world_java_9\/\" target=\"_blank\" rel=\"noopener\">Real World Java 9,<\/a>\u00a0updated video &amp; slides of my talk on the features we&#8217;ll actually use, plus\u00a0loads of links to useful Java 9 resources.\u00a0 You can catch this talk <a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/live-webinar-real-world-java-9\/\">live this afternoon<\/a> in our webinar, or watch the video later.<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/java-9-its-heeeere\" target=\"_blank\" rel=\"noopener\">Java 9: It&#8217;s Heeeere<\/a>, with links to further info.<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/Java-9-release-sept-21\" target=\"_blank\" rel=\"noopener\">Long Awaited Java 9.0 Releasing This Week<\/a>, some comments on the key changes in Java 9 and what impact they may have<\/li>\n<li><a href=\"https:\/\/youtu.be\/sjIdWNHrMs4\" target=\"_blank\" rel=\"noopener\">Welcome Java 9!<\/a>\u00a0Members of the community talk about their favourite features and how Java 9 will impact developers.<\/li>\n<\/ul>\n<h2>Beyond Java 9<\/h2>\n<p>Yes, already&#8230; and the future is much closer than you thought!<\/p>\n<ul>\n<li><a href=\"https:\/\/mreinhold.org\/blog\/forward-faster\" target=\"_blank\" rel=\"noopener\">Moving Java Forward Faster<\/a>.\u00a0 Yes, you read that right.\u00a0 <a href=\"http:\/\/openjdk.java.net\/projects\/jdk10\/\" target=\"_blank\" rel=\"noopener\">JDK 10<\/a>\u00a0is\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/Java6Month\" target=\"_blank\" rel=\"noopener\">coming out in March<\/a> 2018.\u00a0 That&#8217;s this March!\u00a0 Except that it will probably be called Java 18.3.\u00a0\u00a0It&#8217;s even <a href=\"https:\/\/jcp.org\/en\/jsr\/detail?id=383\" target=\"_blank\" rel=\"noopener\">already going through the JCP process<\/a>.<\/li>\n<li><a href=\"https:\/\/www.oracle.com\/java\/java9-screencasts.html?bcid=5582439790001\" target=\"_blank\" rel=\"noopener\">Changes to the JDK release model<\/a>, more details on the new release schedule (video)<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/JCPReacts6Month\" target=\"_blank\" rel=\"noopener\">Java Community Process Reacts to Release Cycle Announcement<\/a><\/li>\n<li><a href=\"https:\/\/mmilinkov.wordpress.com\/2017\/09\/07\/java-free-at-last\" target=\"_blank\" rel=\"noopener\">Java: Free At Last<\/a>,\u00a0specifically looking at the changes to licensing for Java.<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/openjdk-10-consolidated-repo\" target=\"_blank\" rel=\"noopener\">Oracle Consolidates the OpenJDK 10 Repository Forest<\/a>,<\/li>\n<li><a href=\"http:\/\/mail.openjdk.java.net\/pipermail\/jdk10-dev\/2017-September\/000494.html\" target=\"_blank\" rel=\"noopener\">Local-Variable Type Inference proposed to target JDK 10<\/a>,\u00a0another great feature to reduce boilerplate and one I can&#8217;t wait to use.<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/pattern-matching-for-java\" target=\"_blank\" rel=\"noopener\">Brian Goetz Speaks to InfoQ on Pattern Matching for Java<\/a>, for more details about the suggested feature see <a href=\"http:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\" target=\"_blank\" rel=\"noopener\">the document on java.net<\/a>.<\/li>\n<\/ul>\n<h2>Java<\/h2>\n<p>Despite all the Java 9 noise, there were a number of excellent non-Java-9 articles and tutorials this month, although even these\u00a0have occasional nods to new functionality in Java 9.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.oreilly.com\/ideas\/handling-checked-exceptions-in-java-streams\" target=\"_blank\" rel=\"noopener\">Handling checked exceptions in Java streams<\/a>, and it&#8217;s worth checking out Ken&#8217;s new book <a href=\"http:\/\/shop.oreilly.com\/product\/0636920056669.do\" target=\"_blank\" rel=\"noopener\">Modern Java Recipes<\/a>\u00a0which will help you use some of the new features in Java 8 and 9 (full disclosure, I wrote the Foreword for the book).<\/li>\n<li><a href=\"https:\/\/www.oreilly.com\/ideas\/ken-kousen-on-java-spring-and-groovy\" target=\"_blank\" rel=\"noopener\">Ken Kousen on Java, Spring, and Groovy<\/a>, the author of the above talking about a whole bunch of things that&#8217;s relevant to the modern developer (podcast).<\/li>\n<li><a href=\"https:\/\/stackify.com\/java-thread-pools\/?\" target=\"_blank\" rel=\"noopener\">Finally Getting the Most out of the Java Thread Pool<\/a><\/li>\n<li><a href=\"http:\/\/blog.javafortesters.com\/2017\/08\/faq-null-pointer-exception.html\" target=\"_blank\" rel=\"noopener\">Why does my code throw a null pointer exception?<\/a>\u00a0in the context of writing tests.<\/li>\n<li><a href=\"http:\/\/bartslota.blogspot.com.es\/2017\/09\/following-oop-principles-hermetization.html\" target=\"_blank\" rel=\"noopener\">Following OOP principles &#8211; hermetization<\/a>, a look at pre-Java-9 data hiding. <a href=\"http:\/\/blog.joda.org\/2017\/04\/java-9-modules-jpms-basics.html\" target=\"_blank\" rel=\"noopener\">Modules<\/a>, of course, provide an additional mechanism for hiding classes and packages.<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/weak-soft-and-phantom-references-in-java-and-why-they-matter\" target=\"_blank\" rel=\"noopener\">Weak, Soft, and Phantom References in Java (and Why They Matter)<\/a>, we should understand the Garbage Collector if we want to know what impact\u00a0it might have if your application is now <a href=\"http:\/\/openjdk.java.net\/jeps\/248\" target=\"_blank\" rel=\"noopener\">using G1 by default<\/a>. For more details see Oracle&#8217;s\u00a0<a href=\"http:\/\/www.oracle.com\/technetwork\/tutorials\/tutorials-1876574.html\" target=\"_blank\" rel=\"noopener\">Getting Started with the G1 Garbage Collector<\/a>.<\/li>\n<li><a href=\"https:\/\/readlearncode.com\/java-6\/how-to-format-a-string-clarified\/\" target=\"_blank\" rel=\"noopener\">How to Format a String, Clarified!<\/a> A nice back-to-basics summary of String formatting.<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/understanding-classes-in-java-part-1\" target=\"_blank\" rel=\"noopener\">Understanding Classes in Java (Part 1)<\/a> Another good back-to-basics article. You probably know all of this but it&#8217;s always worth\u00a0revising topics like this.\u00a0\u00a0<a href=\"https:\/\/dzone.com\/articles\/understanding-classes-in-java-part-2\" target=\"_blank\" rel=\"noopener\">Understanding Classes in Java (Part 2)<\/a>\u00a0goes deeper, including the representation of Objects in memory.<\/li>\n<\/ul>\n<h2>Android<\/h2>\n<p>I get a lot of my Android news from the excellent <a href=\"http:\/\/androidweekly.net\/\" target=\"_blank\" rel=\"noopener\">Android Weekly newsletter<\/a>, where they link to\u00a0a much wider range of Android articles than I do,\u00a0so it&#8217;s well worth subscribing if Android is your thing.<\/p>\n<ul>\n<li><a href=\"https:\/\/engineering.instagram.com\/beautiful-performant-android-ui-62ce61ca748c\" target=\"_blank\" rel=\"noopener\">Beautiful, Performant Android UI<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/exploring-android\/android-architecture-components-testing-your-viewmodel-livedata-70177af89c6e\" target=\"_blank\" rel=\"noopener\">Android Architecture Components: Testing your ViewModel LiveData<\/a><\/li>\n<li><a href=\"https:\/\/android.jlelse.eu\/is-your-android-library-lifecycle-aware-127629d32dcc\" target=\"_blank\" rel=\"noopener\">Is your Android Library, Lifecycle-Aware?<\/a><\/li>\n<li><a href=\"https:\/\/riggaroo.co.za\/constraintlayout-guidelines-barriers-chains-groups\/\" target=\"_blank\" rel=\"noopener\">ConstraintLayout\u00a0\u2013 Guidelines, Barriers, Chains\u00a0and Groups<\/a><\/li>\n<li><a href=\"https:\/\/proandroiddev.com\/making-the-most-out-of-the-android-studio-debugger-61713131d065\" target=\"_blank\" rel=\"noopener\">Making the most out of Android Studio Debugger<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/exploring-android\/exploring-background-execution-limits-on-android-oreo-ab384762a66c\" target=\"_blank\" rel=\"noopener\">Exploring Background Execution Limits on Android Oreo<\/a><\/li>\n<li><a href=\"https:\/\/blog.stylingandroid.com\/time-for-non-time-lords-part-5\/\" target=\"_blank\" rel=\"noopener\">Time for non-Time Lords \u2013 Part 5<\/a>, continuing the series on time, looking at\u00a0timezones, something that bites us all at some point in our professional lives.<\/li>\n<li><a href=\"https:\/\/android-developers.googleblog.com\/2017\/09\/optimize-your-android-apps-for.html\" target=\"_blank\" rel=\"noopener\">Optimize your Android apps for Chromebooks<\/a><\/li>\n<li><a href=\"https:\/\/android.jlelse.eu\/the-dark-side-of-fragments-ca0f871b1199\" target=\"_blank\" rel=\"noopener\">The Dark side of Fragments<\/a><\/li>\n<li><a href=\"https:\/\/proandroiddev.com\/hide-your-crashes-gracefully-and-still-report-them-9b1c85b25875\" target=\"_blank\" rel=\"noopener\">Hide your crashes gracefully (and still report them)<\/a><\/li>\n<\/ul>\n<h2>Languages, Frameworks and Libraries<\/h2>\n<p>The other big news was the release of <a href=\"https:\/\/www.oracle.com\/corporate\/pressrelease\/java-se-9-and-ee-8-092117.html\" target=\"_blank\" rel=\"noopener\">Java EE 8<\/a> at last\u00a0too, as well as more news on its move to Open Source.\u00a0 RebelLabs also released their annual productivity report, which\u00a0shouldn&#8217;t be ignored even despite all the other Java noise, particularly since it contains good news for JetBrains and our users.<\/p>\n<ul>\n<li><a href=\"https:\/\/blogs.oracle.com\/theaquarium\/java-ee-8-is-final-and-glassfish-50-is-released\" target=\"_blank\" rel=\"noopener\">Java EE 8 and GlassFish 5.0 Released<\/a>! Check out the\u00a0<a href=\"https:\/\/javaee.github.io\/firstcup\/\" target=\"_blank\" rel=\"noopener\">First Cup of Java EE Tutorial Project<\/a>.<\/li>\n<li><a href=\"https:\/\/blogs.oracle.com\/java\/jax-rs-json-javaee\" target=\"_blank\" rel=\"noopener\">About Java EE 8, JAX-RS, JSON API, and Mobile Apps<\/a> (videos).<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2017\/09\/JavaEEtoEclipse\" target=\"_blank\" rel=\"noopener\">Oracle Chooses Eclipse Foundation as New Home for Java EE<\/a><\/li>\n<li><a href=\"https:\/\/zeroturnaround.com\/rebellabs\/developer-productivity-report-2017-why-do-you-use-java-tools-you-use\/\" target=\"_blank\" rel=\"noopener\">RebelLabs Developer Productivity Report 2017: Why do you use the Java tools you use?<\/a>\u00a0The highlight for us is that IntelliJ IDEA usage is up again, and Kotlin made it into the top 6 languages (and has the highest satisfaction rating).<\/li>\n<li><a href=\"https:\/\/zeroturnaround.com\/rebellabs\/using-buildsrc-for-custom-logic-in-gradle-builds\/?utm_source=Android+Weekly&amp;utm_campaign=ac13339765-android-weekly-277&amp;utm_medium=email&amp;utm_term=0_4eb677ad19-ac13339765-338072889\" target=\"_blank\" rel=\"noopener\">Using buildSrc for custom logic in Gradle builds<\/a><\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/creating-a-rest-api-with-java-and-spring\" target=\"_blank\" rel=\"noopener\">Creating a REST Web Service With Java and Spring (Part 1)<\/a><\/li>\n<li><a href=\"https:\/\/springframework.guru\/spring-framework-annotations\/\" target=\"_blank\" rel=\"noopener\">A Guide to\u00a0Spring Framework Annotations<\/a>\u00a0and\u00a0<a href=\"https:\/\/springframework.guru\/spring-requestmapping-annotation\/\" target=\"_blank\" rel=\"noopener\">Using the Spring\u00a0@RequestMapping\u00a0Annotation<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/twitter.com\/search?q=%23WorksFineOnJDK9&amp;src=tyah\" target=\"_blank\" rel=\"noopener\">#WorksFineOnJDK9<\/a>:<\/p>\n<ul>\n<li><a href=\"http:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#release-notes-5.0.0\" target=\"_blank\" rel=\"noopener\">JUnit 5.0 released<\/a>! If you haven&#8217;t tried it yet, do give it a\u00a0go it addresses a lot of the weaknesses of JUnit 4.\u00a0 I&#8217;m personally using it on Java 9 and it&#8217;s\u00a0perfect.<\/li>\n<li><a href=\"https:\/\/docs.gradle.org\/current\/release-notes.html\" target=\"_blank\" rel=\"noopener\">Gradle 4.2<\/a> is out.\u00a0 <a href=\"https:\/\/github.com\/gradle\/gradle\/releases\/tag\/v4.1.0\" target=\"_blank\" rel=\"noopener\">Gradle 4.1<\/a> had support for Java 9, but you&#8217;ll probably want to use the latest Gradle release if you want the best support. Also check out the\u00a0<a href=\"https:\/\/guides.gradle.org\/building-java-9-modules\/\" target=\"_blank\" rel=\"noopener\">Building Java 9 Modules<\/a> tutorial.<\/li>\n<li><a href=\"https:\/\/spring.io\/blog\/2017\/09\/28\/spring-framework-5-0-goes-ga\" target=\"_blank\" rel=\"noopener\">Spring Framework 5.0 goes GA<\/a>, with support for Java 9 and\u00a0Java EE 8 API level. You may also want to check out\u00a0<a href=\"https:\/\/spring.io\/blog\/2017\/09\/26\/this-week-in-spring-september-26th-2017-java-9-edition\" target=\"_blank\" rel=\"noopener\">This Week in Spring, Java 9 Edition<\/a>.<\/li>\n<li><a href=\"https:\/\/akka.io\/blog\/news\/2017\/09\/28\/akka-2.5.6-released\" target=\"_blank\" rel=\"noopener\">Akka 2.5.6 Released\u00a0&#8211; with JDK9 and j.u.c.Flow support<\/a>. It&#8217;s exciting to see a Reactive Library with support for the new <a href=\"https:\/\/community.oracle.com\/docs\/DOC-1006738\" target=\"_blank\" rel=\"noopener\">Java 9 Reactive API<\/a> already.<\/li>\n<li><a href=\"http:\/\/in.relation.to\/2017\/09\/13\/hibernate-orm-5211-final-release\/\" target=\"_blank\" rel=\"noopener\">Hibernate ORM 5.2.11.Final released<\/a>, and is <a href=\"https:\/\/twitter.com\/SanneGrinovero\/status\/910914942408232967\" target=\"_blank\" rel=\"noopener\">Java 9 ready<\/a>.<\/li>\n<\/ul>\n<h2><\/h2>\n<h2>Events<\/h2>\n<p>Come and say hello at the booth, see our presentations and ask us any questions!<\/p>\n<ul>\n<li>1-5 Oct:\u00a0<a href=\"https:\/\/www.oracle.com\/javaone\/index.html\" target=\"_blank\" rel=\"noopener\">JavaOne, San Francisco<\/a><\/li>\n<li>1-4 Oct:\u00a0<a href=\"https:\/\/conferences.oreilly.com\/velocity\/vl-ny\" target=\"_blank\" rel=\"noopener\">Velocity, New York<\/a><\/li>\n<li>5-6 Oct:\u00a0<a href=\"http:\/\/sc-london.com\" target=\"_blank\" rel=\"noopener\">Software Craftsmanship Conference, London<\/a> (<a href=\"http:\/\/sc-london.com\/#day2_hadi-hariri\" target=\"_blank\" rel=\"noopener\">Hadi Hariri<\/a> is speaking)<\/li>\n<li>7-8 Oct:\u00a0<a href=\"https:\/\/www.siliconvalley-codecamp.com\/\" target=\"_blank\" rel=\"noopener\">Silicon Valley Code Camp<\/a>\u00a0(our Technical Advocate <a href=\"https:\/\/www.siliconvalley-codecamp.com\/session\/2017\/presenter\/chris-woodruff-45778\" target=\"_blank\" rel=\"noopener\">Chris Woodruff<\/a> will also be presenting).<\/li>\n<\/ul>\n<h2>And Finally<\/h2>\n<p>News and topics from the IntelliJ IDEA blog that you may have missed:<\/p>\n<ul>\n<li>The\u00a0<a href=\"https:\/\/www.jetbrains.com\/idea\/nextversion\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA 2017.3<\/a>\u00a0EAP is running, take a look at <a href=\"https:\/\/blog.jetbrains.com\/idea\/tag\/2017-3\/\">what&#8217;s new<\/a>.<\/li>\n<li>We have several webinars coming up, including:\n<ul>\n<li>Oct 3:\u00a0<a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/live-webinar-real-world-java-9\/\">Live Webinar: Real World Java 9<\/a> with me, Trisha Gee<\/li>\n<li>Oct 5:\u00a0<a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/live-webinar-reactive-spring\/\">Live Webinar: Reactive Spring<\/a>\u00a0with\u00a0Josh Long<\/li>\n<\/ul>\n<\/li>\n<li>Code Smells Series:\u00a0<a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/code-smells-multi-responsibility-methods\/\">Multi-Responsibility Methods<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/code-smells-if-statements\/\">If Statements<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/idea\/2017\/09\/code-smells-too-many-problems\/\">Too Many Problems<\/a>.<\/li>\n<\/ul>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Complete this form and get Java Annotated Monthly delivered fresh to your email\" href=\"http:\/\/info.jetbrains.com\/Java-Annotated-Subscription.html\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Subscribe to Java Annotated<\/a><\/p>\n","protected":false},"author":360,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[3140,3236],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/26129"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/users\/360"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/comments?post=26129"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/26129\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=26129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=26129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=26129"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=26129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}