{"id":25536,"date":"2016-10-07T15:48:20","date_gmt":"2016-10-07T15:48:20","guid":{"rendered":"https:\/\/blog.jetbrains.com\/idea\/?p=14776"},"modified":"2016-10-11T09:12:44","modified_gmt":"2016-10-11T09:12:44","slug":"java-annotated-monthly-october-2016","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/ja\/idea\/2016\/10\/java-annotated-monthly-october-2016","title":{"rendered":"Java Annotated Monthly &#8211; October 2016"},"content":{"rendered":"<p>September is a busy conference month, in particular\u00a0a number of the Java-related JetBrains team\u00a0were at <a href=\"https:\/\/dzone.com\/articles\/javazone-2016\" target=\"_blank\" rel=\"noopener\">JavaZone<\/a> and <a href=\"https:\/\/www.infoq.com\/search.action?queryString=javaone+2016&amp;page=1&amp;searchOrder=&amp;sst=o5ivqXHJ2pIhQ3JB\" target=\"_blank\" rel=\"noopener\">JavaOne<\/a>. \u00a0To save you some time, cash, and pain, October&#8217;s annotated monthly\u00a0is going to be a little heavy on links to videos and slides &#8211; we go to conferences so that you don&#8217;t have to.<\/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 style=\"text-align: justify;\"><!--more--><\/p>\n<h2>Community<\/h2>\n<p>Before JavaOne, the community was a little concerned about Oracle&#8217;s dedication to Java.\u00a0However, the <a href=\"http:\/\/www.forbes.com\/sites\/oracle\/2016\/09\/19\/javaone-keynote-hints-at-ambitious-changes-in-next-version-of-java\/#2bb222537b33\" target=\"_blank\" rel=\"noopener\">JavaOne keynote<\/a> showcased Java past and future,\u00a0<a href=\"https:\/\/twitter.com\/netbeans\/status\/782180787982598144\" target=\"_blank\" rel=\"noopener\">NetBeans has been accepted into the Apache incubator<\/a>, and there were <a href=\"https:\/\/blogs.oracle.com\/java\/javaee8-javaone-2016\" target=\"_blank\" rel=\"noopener\">plenty of Java EE sessions<\/a>\u00a0at JavaOne,\u00a0including an <a href=\"https:\/\/youtu.be\/FiSwe2xKcLk\" target=\"_blank\" rel=\"noopener\">update from Oracle<\/a> stating that the future of Java EE is In The Cloud. This refocussing implies a change in deadlines, <a href=\"https:\/\/www.infoq.com\/news\/2016\/09\/java-ee-delayed-2017\" target=\"_blank\" rel=\"noopener\">Java EE 8 is targeted\u00a0for the end of 2017<\/a>, and\u00a0work on Java EE 9 will run in parallel and aim for an <a href=\"http:\/\/www.theregister.co.uk\/2016\/09\/20\/java_ee_8_delayed_new_projects_focus\/\" target=\"_blank\" rel=\"noopener\">aggressive deadline of 2018<\/a>.<\/p>\n<p>The other &#8220;news&#8221; item that seems to crop up regularly is Oracle vs Google, and this month is no different &#8211; <a href=\"http:\/\/www.theregister.co.uk\/2016\/09\/29\/oracle_loses_again\/\" target=\"_blank\" rel=\"noopener\">Oracle&#8217;s latest appeal has been denied<\/a>. \u00a0Game Over&#8230;? Watch this space. \u00a0Or don&#8217;t, because frankly I&#8217;m bored of this topic.<\/p>\n<p>In more interesting news, JavaOne was a a great opportunity to <a href=\"https:\/\/blogs.oracle.com\/java\/java-community-at-javaone\" target=\"_blank\" rel=\"noopener\">celebrate the Java Community<\/a>, for example through the <a href=\"https:\/\/blogs.oracle.com\/java\/2016-duke%E2%80%99s-choice-award-winners\" target=\"_blank\" rel=\"noopener\">Duke&#8217;s Choice Awards<\/a>, the <a href=\"https:\/\/www.youtube.com\/playlist?list=PLX8CzqL3ArzW7T-75n9-8g8dlPcTlMv__\" target=\"_blank\" rel=\"noopener\">various Nighthacking sessions<\/a>, and the <a href=\"https:\/\/youtu.be\/Hdn0lqJYFeQ\" target=\"_blank\" rel=\"noopener\">Community Keynote<\/a>.<\/p>\n<h2>Java 9<\/h2>\n<p><a href=\"https:\/\/blog.jetbrains.com\/idea\/2016\/09\/java-annotated-monthly-september-2016\/\">Last month<\/a>\u00a0I stated that Java 9 is months off, and\u00a0now\u00a0apparently it&#8217;s <a href=\"http:\/\/www.theregister.co.uk\/2016\/09\/14\/jdk_9_release_delay\/\" target=\"_blank\" rel=\"noopener\">going to be delayed\u00a0another 4 months<\/a>. \u00a0But the community has been supportive of the move\u00a0&#8211; after all, developers of all people know that <a href=\"https:\/\/8thlight.com\/blog\/uncle-bob\/2012\/04\/20\/Why-Is-Estimating-So-Hard.html\" target=\"_blank\" rel=\"noopener\">estimates are hard<\/a> and quality takes time. In the meantime, we can still get up to speed on what&#8217;s coming, (and the <a href=\"https:\/\/blog.jetbrains.com\/idea\/tag\/2016-3\/\">latest EAP of IntelliJ IDEA<\/a>\u00a0has <a href=\"http:\/\/trishagee.github.io\/presentation\/java_9_are_we_there_yet\/\" target=\"_blank\" rel=\"noopener\">basic support for modules<\/a>), so here&#8217;s a selection of Java 9 presentations from JavaOne and JavaZone:<\/p>\n<ul>\n<li><a href=\"https:\/\/youtu.be\/vKYzmIi_1LM?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">JDK 9 Language, Tooling, and Library Features<\/a>,<\/li>\n<li><a href=\"https:\/\/youtu.be\/Vxfd3ehdAZc?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">Project Jigsaw: Under The Hood<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/w4lLd-JOyRU?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">Project Jigsaw Hack Session<\/a><\/li>\n<li><a href=\"https:\/\/vimeo.com\/album\/4133413\/video\/181931324\" target=\"_blank\" rel=\"noopener\">Java 9 Modularity in Action<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/DHTVcq_fK2U?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">Interactive Development and Fast Feedback with Java 9 REPL<\/a><\/li>\n<li><a href=\"https:\/\/vimeo.com\/album\/4133413\/video\/181948157\" target=\"_blank\" rel=\"noopener\">Java 9: The (G1) GC Awakens!<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/T_O9merCgKw?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">Enhanced Deprecation in Java 9<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/LgR9ByD1dEw\" target=\"_blank\" rel=\"noopener\">Collections Refueled<\/a>\u00a0(includes Java 8 too)<\/li>\n<\/ul>\n<h2>Java 8 and more<\/h2>\n<p>Java 8 is very much the default these days, if you&#8217;re <a href=\"https:\/\/www.infoq.com\/presentations\/java8-lambda-streams\" target=\"_blank\" rel=\"noopener\">not yet using Java 8 idioms<\/a>\u00a0learn how to <a href=\"https:\/\/youtu.be\/wjF1WqGhoQI?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">refactor to a functional style<\/a>, and <a href=\"https:\/\/youtu.be\/GphO9fWhlAg\" target=\"_blank\" rel=\"noopener\">discover hidden treasures<\/a>. And as this newsletter\u00a0likes to throw in the odd link to current trendy technologies, if you&#8217;re using Docker,\u00a0or thinking about using containers, you might be interested in <a href=\"https:\/\/youtu.be\/ZNdc4-yFTeA?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">Docker for Java Developers<\/a> and seeing\u00a0the <a href=\"https:\/\/youtu.be\/oxlVasKGaYk?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">support in your favourite IDE<\/a>.<\/p>\n<h2>Groovy\/Grails<\/h2>\n<p>Groovy doesn&#8217;t get enough love in the Java Annotated Monthly, so I&#8217;ll rectify this by pointing you to the <a href=\"http:\/\/groovycalamari.com\/issues\/50?#start\" target=\"_blank\" rel=\"noopener\">Groovy Calamari GORM special<\/a>. \u00a0There were some particularly interesting <a href=\"http:\/\/glaforge.appspot.com\/article\/javaone-2016-sessions\" target=\"_blank\" rel=\"noopener\">talks at JavaOne on the topic of Groovy<\/a>, sadly the talks aren&#8217;t available (yet?) but there are some recordings from elsewhere, such as this version of\u00a0<a href=\"https:\/\/youtu.be\/4EPmtf1-2Ls?t=16m27s\" target=\"_blank\" rel=\"noopener\">Groovy and Java 8: Making Java Better<\/a>\u00a0(<a href=\"https:\/\/static.rainfocus.com\/oracle\/oow16\/sess\/14627348673630011ZZE\/ppt\/Groovy%20and%20Java%208.pdf\" target=\"_blank\" rel=\"noopener\">JavaOne slides<\/a>), which has a <a href=\"https:\/\/kousenit.org\/2016\/09\/06\/making-java-8-groovier-a-few-annotated-examples\/\" target=\"_blank\" rel=\"noopener\">supplemental blog post,<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.infoq.com\/presentations\/Spock\" target=\"_blank\" rel=\"noopener\">this earlier incarnation of Spock: Test Well and Prosper<\/a>\u00a0(<a href=\"https:\/\/static.rainfocus.com\/oracle\/oow16\/sess\/1462735451038001pvv9\/ppt\/Spock%20Friendly%20Testing%20(2).pdf\" target=\"_blank\" rel=\"noopener\">JavaOne slides<\/a>) &#8211; if you&#8217;re not sure about using Groovy in production, <a href=\"http:\/\/spockframework.org\/spock\/docs\/1.1-rc-2\/index.html\" target=\"_blank\" rel=\"noopener\">Spock<\/a> is still one of <a href=\"http:\/\/trishagee.github.io\/tags\/spock\/\" target=\"_blank\" rel=\"noopener\">my\u00a0favourite testing frameworks<\/a>, inspired by <a href=\"https:\/\/vimeo.com\/80222114\" target=\"_blank\" rel=\"noopener\">this presentation<\/a>.<\/p>\n<h2>Kotlin<\/h2>\n<p>I&#8217;ll be\u00a0told off if I include extensive resources for Groovy but neglect to balance this with <a href=\"https:\/\/kotlinlang.org\/\" target=\"_blank\" rel=\"noopener\">Kotlin<\/a> news. Firstly, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2016\/09\/kotlin-1-0-4-is-here\/\">Kotlin 1.0.4<\/a> came out this month. If you don&#8217;t already know\u00a0<a href=\"https:\/\/vimeo.com\/album\/4133413\/video\/181814363\" target=\"_blank\" rel=\"noopener\">what Kotlin gives you<\/a>\u00a0apparently it&#8217;s the <a href=\"https:\/\/jaxenter.com\/kotlin-next-big-thing-java-developers-129319.html\" target=\"_blank\" rel=\"noopener\">Next Big Thing for Java Developers<\/a>, although <a href=\"http:\/\/antonioleiva.com\/category\/blog\/kotlin\/\" target=\"_blank\" rel=\"noopener\">Android developers<\/a> have been <a href=\"https:\/\/www.infoq.com\/news\/2016\/02\/jetbrains-kotlin-1\" target=\"_blank\" rel=\"noopener\">keen on\u00a0it for a while<\/a>. It&#8217;s often <a href=\"http:\/\/appliedscala.com\/blog\/2016\/fp-in-java8-kotlin-scala\/\" target=\"_blank\" rel=\"noopener\">compared to both Java and Scala<\/a>, and it&#8217;s another <a href=\"http:\/\/hadihariri.com\/2016\/10\/04\/Mocking-Kotlin-With-Mockito\/\" target=\"_blank\" rel=\"noopener\">great choice for testing<\/a>. \u00a0It&#8217;s easy to start\u00a0<a href=\"http:\/\/www.techtraversal.com\/techt\/series\/learn-me-some-kotlin\/\" target=\"_blank\" rel=\"noopener\">learning Kotlin<\/a>, and there&#8217;s no need to worry about <a href=\"https:\/\/medium.com\/keepsafe-engineering\/kotlin-vs-java-compilation-speed-e6c174b39b5d#.w7eua5em2\" target=\"_blank\" rel=\"noopener\">compile time vs Java<\/a>.\u00a0If you&#8217;re already using it please <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2016\/09\/kotlin-census-call-to-action\/\">let us know<\/a>.<\/p>\n<p>If you&#8217;re in\u00a0the London area, be sure to check out <a href=\"https:\/\/info.jetbrains.com\/Kotlin-Night-London.html\" target=\"_blank\" rel=\"noopener\">Kotlin Night &#8211; Real World Kotlin<\/a>\u00a0(this page also contains a discount for GOTO London). You can\u00a0stay up to date on Kotlin news by following\u00a0<a href=\"https:\/\/twitter.com\/kotlinweekly\" target=\"_blank\" rel=\"noopener\">@KotlinWeekly<\/a> and the <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/\">Kotlin blog<\/a>.<\/p>\n<h2>Development in General<\/h2>\n<p>Learn more about <a href=\"https:\/\/vimeo.com\/181925281\" target=\"_blank\" rel=\"noopener\">fashions in\u00a0programming paradigms<\/a>,\u00a0<a href=\"https:\/\/vimeo.com\/182087729\" target=\"_blank\" rel=\"noopener\">what and how to feed back in a code review<\/a>, <a href=\"https:\/\/www.infoq.com\/articles\/effective-code-reviews\" target=\"_blank\" rel=\"noopener\">ways to make code reviews more effective<\/a>,\u00a0<a href=\"https:\/\/vimeo.com\/181805766\" target=\"_blank\" rel=\"noopener\">why generics are the way they are<\/a>, check out this <a href=\"https:\/\/youtu.be\/-XI9kJGCHtM?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">guide to performance tuning<\/a>, and then be demoralised by the fact that <a href=\"https:\/\/vimeo.com\/181766947\" target=\"_blank\" rel=\"noopener\">there is no silver bullet<\/a>.<\/p>\n<h2>Yet More Videos<\/h2>\n<p>You can see the <a href=\"https:\/\/www.youtube.com\/playlist?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA\" target=\"_blank\" rel=\"noopener\">full JavaOne 2016 playlist<\/a>,\u00a0but as usual this is a small number of the conference talks (here&#8217;s a\u00a0<a href=\"https:\/\/www.sitepoint.com\/javaone-2016-nucleus\/\" target=\"_blank\" rel=\"noopener\">summary of the ones to watch<\/a>). \u00a0You may be more interested in the full <a href=\"https:\/\/vimeo.com\/album\/4133413\" target=\"_blank\" rel=\"noopener\">JavaZone playlist<\/a>, which has all the talks from the conference. Also this month the Duke&#8217;s Choice Award Winning Virtual Java User Group ambitiously hosted a <a href=\"http:\/\/virtualjug.com\/vjug24\/\" target=\"_blank\" rel=\"noopener\">24 hour virtual conference,<\/a>\u00a0where you can\u00a0see\u00a0some of\u00a0those JavaOne\/JavaZone presenters giving talks from the comfort of their own homes.<\/p>\n<h2>And finally&#8230;<\/h2>\n<p>I&#8217;ve already mentioned the <a href=\"https:\/\/confluence.jetbrains.com\/display\/IDEADEV\/IDEA+2016.3+EAP\" target=\"_blank\" rel=\"noopener\">2016.3 EAP<\/a> is ready to be used. \u00a0My personal favourite new feature is <a href=\"https:\/\/blog.jetbrains.com\/idea\/2016\/09\/intellij-idea-2016-3-eap-faster-git-log-parameter-hints-and-more\/\">parameter names<\/a>, but I&#8217;m really looking forward to trying out the <a href=\"https:\/\/blog.jetbrains.com\/idea\/2016\/10\/intellij-idea-2016-3-eap-refactorings-to-java-8-vcs-integration-and-gradle\/\">extra<\/a> <a href=\"https:\/\/blog.jetbrains.com\/idea\/2016\/09\/intellij-idea-2016-3-eap-helps-migrate-to-java-8s-stream-apis\/\">support<\/a> for Java 8.<\/p>\n<h2>Subscribe<\/h2>\n<div style=\"background-color: #f1f6fe; margin-bottom: 40px; padding: 15px; margin-right: 0%; font-size: 18px; line-height: 20px; text-align: justify;\"><a title=\"Subscribe to Java Annotated\" href=\"http:\/\/info.jetbrains.com\/Java-Annotated-Subscription.html\" target=\"_blank\" rel=\"noopener\">Complete this form<\/a> and get Java Annotated Monthly delivered fresh to your email.<\/div>\n","protected":false},"author":360,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[277,2993,3140,3236,21],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/25536"}],"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=25536"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/25536\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=25536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=25536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=25536"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=25536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}