{"id":26971,"date":"2018-10-09T14:20:43","date_gmt":"2018-10-09T14:20:43","guid":{"rendered":"https:\/\/blog.jetbrains.com\/idea\/?p=18519"},"modified":"2018-10-24T15:15:43","modified_gmt":"2018-10-24T15:15:43","slug":"java-annotated-monthly-october-2018","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/idea\/2018\/10\/java-annotated-monthly-october-2018\/","title":{"rendered":"Java Annotated Monthly &#8211; October 2018"},"content":{"rendered":"<p style=\"text-align: left;\">The main news so far has been the release of Java 11. It&#8217;s not a large release in terms of new developer functionality since Java 10, but it is the first Long Term Support Release since Java 8, so if you&#8217;ve been hanging around on Java 8, now&#8217;s the time to look at all new things that made it into Java 9, 10, and 11. Java 11 also <em>removes<\/em> things. This, like, never happens in Java. Also noteworthy, Oracle changed its licensing and support model since Java 8. Read this month&#8217;s Annotated Monthly to find out more.<\/p>\n<p><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\" data-temp-aztec-id=\"0ba83f2c-0128-4297-8f06-502344cefd1f\" \/><\/p>\n<p><!--more--><\/p>\n<h2>Java license \/ support changes<\/h2>\n<p>I covered this topic in the last <a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/09\/java-annotated-monthly-september-2018\/\">Annotated Monthly<\/a>, since it was an area of some concern in the community. Since then, the Java Champions (an independent group of experts) have released a <a href=\"https:\/\/docs.google.com\/document\/d\/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo\/edit\" target=\"_blank\" rel=\"noopener\">comprehensive document covering the situation<\/a>. I also wrote <a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/09\/using-java-11-in-production-important-things-to-know\/\">a summary<\/a> of what I hope are the most relevant points for developers. Here are other relevant links, if you&#8217;re interested.<\/p>\n<ul>\n<li><a href=\"https:\/\/blogs.oracle.com\/java-platform-group\/oracle-jdk-releases-for-java-11-and-later\" target=\"_blank\" rel=\"noopener\">Oracle JDK Releases for Java 11 and Later<\/a><\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2018\/09\/java-support-options-sept18\" target=\"_blank\" rel=\"noopener\">Java Community Leaders Clarify Platform Support Options<\/a><\/li>\n<li><a href=\"https:\/\/jaxenter.com\/java-champions-untangle-java-releases-support-149650.html\" target=\"_blank\" rel=\"noopener\">Java Champions untangle the Java releases and support confusion<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@javachampions\/java-is-still-free-c02aef8c9e04\" target=\"_blank\" rel=\"noopener\">Java Is Still Free<\/a> (full document, Medium)<\/li>\n<li><a href=\"https:\/\/blog.joda.org\/2018\/09\/time-to-look-beyond-oracles-jdk.html\" target=\"_blank\" rel=\"noopener\">Time to look beyond Oracle&#8217;s JDK<\/a><\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/a-tale-of-two-oracle-jdks\" target=\"_blank\" rel=\"noopener\">A Tale of Two Oracle JDKs<\/a><\/li>\n<li><a href=\"https:\/\/developers.redhat.com\/blog\/2018\/09\/24\/the-future-of-java-and-openjdk-updates-without-oracle-support\/\" target=\"_blank\" rel=\"noopener\">The future of Java and OpenJDK updates without Oracle support<\/a> (Red Hat)<\/li>\n<li><a href=\"https:\/\/blogs.oracle.com\/java-platform-group\/end-of-public-updates-is-a-process%2c-not-an-event\" target=\"_blank\" rel=\"noopener\">End of Public Updates is a Process, not an Event<\/a> (Oracle)<\/li>\n<\/ul>\n<h2>Java 11<\/h2>\n<p>Having a release every 6 months means that future editions of Java Annotated Monthly will probably not make a big deal out of every release. However, Java 11 is significant in that it&#8217;s the first Long Term Support release (in <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/eol-135779.html\" target=\"_blank\" rel=\"noopener\">Oracle terms<\/a>) since Java 8. Therefore, if you haven&#8217;t tried Java 9 or 10 yet, chances are good that your company will jump directly to 11. This month&#8217;s links cover a range of things relevant to the new release \u2013 Java 11 doesn&#8217;t have a lot of new features for developers but it still has some interesting stuff.<\/p>\n<ul>\n<li><a href=\"https:\/\/blogs.oracle.com\/java-platform-group\/introducing-java-se-11\" target=\"_blank\" rel=\"noopener\">Introducing Java SE 11<\/a> \u2013 the official Oracle announcement.<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2018\/09\/java11-released\" target=\"_blank\" rel=\"noopener\">Java 11 Released<\/a> \u2013 quick summary of the significant features.<\/li>\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3265447\/java\/java-jdk-11-all-the-new-features-now-available.html\" target=\"_blank\" rel=\"noopener\">Java JDK 11: All the new features now available<\/a>.<\/li>\n<li><a href=\"https:\/\/jaxenter.com\/java-11-is-generally-available-149954.html\" target=\"_blank\" rel=\"noopener\">Java 11 is here!<\/a> \u2013 another look at the features and other changes from Java 11.<\/li>\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3305073\/java\/removed-from-jdk-11-javafx-11-arrives-as-a-standalone-module.html\" target=\"_blank\" rel=\"noopener\">Removed from JDK 11, JavaFX 11 arrives as a standalone module<\/a> \u2013 <a href=\"https:\/\/openjfx.io\/\" target=\"_blank\" rel=\"noopener\">JavaFX<\/a> is now a standalone library supported by the community.<\/li>\n<li><a href=\"https:\/\/jaxenter.com\/java-ritter-lawrey-interview-148725.html\" target=\"_blank\" rel=\"noopener\">\u201cDevelopers will see Java 11 as a better, cleaner implementation of the features they use in Java 8\u201d<\/a> \u2013 interview with Peter Lawrey and Simon Ritter.<\/li>\n<li><a href=\"https:\/\/kousenit.org\/2018\/09\/22\/java-11-httpclient-gson-gradle-and-modularization\/\" target=\"_blank\" rel=\"noopener\">Java 11 HttpClient, Gson, Gradle, and Modularization<\/a> \u2013 Ken Kousen&#8217;s tutorial on how to use the new <a href=\"http:\/\/openjdk.java.net\/jeps\/321\" target=\"_blank\" rel=\"noopener\">HttpClient<\/a> from Java 11.<\/li>\n<li><a href=\"https:\/\/mjg123.github.io\/2018\/09\/25\/Java-11-Http-Client.html\" target=\"_blank\" rel=\"noopener\">The new Java HTTP client and the CompletionStage API<\/a> \u2013 more HttpClient demos and a look at methods for working asynchronously.<\/li>\n<li><a href=\"https:\/\/blog.codefx.org\/java\/java-11-migration-guide\/\" target=\"_blank\" rel=\"noopener\">All You Need To Know For Migrating To Java 11<\/a> \u2013 a practical look at how to migrate from Java 8.<\/li>\n<li>Mini-series of interviews with community experts and their impressions of Java 11:\n<ul>\n<li><a href=\"https:\/\/jaxenter.com\/manual-java-11-tips-hacks-part-1-150023.html\" target=\"_blank\" rel=\"noopener\">Java experts share their best &amp; worst experiences with Java 11<\/a><\/li>\n<li><a href=\"https:\/\/jaxenter.com\/manual-java-11-first-impression-part-2-150153.html\" target=\"_blank\" rel=\"noopener\">Does Java 11 tick all the right boxes?<\/a><\/li>\n<li><a href=\"https:\/\/jaxenter.com\/manual-java-11-series-part-3-150308.html\" target=\"_blank\" rel=\"noopener\">Cleverest hacks to simplify your Java 11 navigation<\/a><\/li>\n<li>&#8230;more to come.<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/news.kynosarges.org\/2018\/09\/26\/java-se-11-the-great-removal\/\" target=\"_blank\" rel=\"noopener\">Java SE 11: The Great Removal<\/a> \u2013 what&#8217;s most likely to take developers by surprise is not the new stuff, but the stuff that was removed.<\/li>\n<li><a href=\"https:\/\/www.azul.com\/90-new-features-and-apis-in-jdk-11\/\" target=\"_blank\" rel=\"noopener\">90 New Features (and APIs) in JDK 11<\/a> \u2013 &#8230;although there actually are quite a lot of new things, like some new API methods which will make life easier.<\/li>\n<\/ul>\n<h2>Java Future<\/h2>\n<p>I could put a lot more stuff in here, but let&#8217;s mostly concentrate on Java 11, shall we?<\/p>\n<ul>\n<li><a href=\"http:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2018-September\/001923.html\" target=\"_blank\" rel=\"noopener\">Proposed schedule for JDK 12<\/a> \u2013 currently expected on March 19, 2019.<\/li>\n<li><a href=\"http:\/\/openjdk.java.net\/jeps\/8209434\" target=\"_blank\" rel=\"noopener\">JEP draft: Concise Method Bodies<\/a> \u2013 interesting idea to extend what we do with lambda expressions to apply to methods.<\/li>\n<\/ul>\n<h2 style=\"text-align: left;\">Tutorials<\/h2>\n<p>In this section we look at hands-on examples of code and architecture.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.marcobehler.com\/guides\/a-guide-to-accessing-databases-in-java\" target=\"_blank\" rel=\"noopener\">A guide to accessing databases in Java<\/a> (video)<\/li>\n<li><a href=\"https:\/\/www.marcobehler.com\/episodes\/47-working-with-git-feature-branches\" target=\"_blank\" rel=\"noopener\">Working with Git feature branches<\/a> (video)<\/li>\n<\/ul>\n<h2>Languages, Frameworks and Libraries<\/h2>\n<p>This month we mostly have Spring and Kotlin news.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2018\/10\/rsocket-facebook\" target=\"_blank\" rel=\"noopener\">RSocket, a New Application Network Protocol for Reactive Applications, Announced at SpringOne<\/a> \u2013 I&#8217;m really interested in RSocket because I&#8217;ve been looking for a reactive protocol for applications I&#8217;ve been working on. I haven&#8217;t looked at this in depth but I&#8217;m definitely going to do my homework on this.<\/li>\n<li><a href=\"https:\/\/spring.io\/blog\/2018\/09\/27\/the-reactive-revolution-at-springone-platform-2018-part-1-n\" target=\"_blank\" rel=\"noopener\">The Reactive Revolution at SpringOne Platform 2018 (part 1\/N)<\/a> \u2013 as well as talking about R2DBC, Josh Long demos some RSocket code.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/09\/spring-config-and-missing-kotlin-members\/\">Spring Config and missing Kotlin members<\/a> (IntelliJ IDEA Blog).<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/10\/spring-and-kotlin-final-classes\/\">Spring and Kotlin final classes<\/a> (IntelliJ IDEA Blog).<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/10\/spring-kotlin-references-in-value-annotation\/\">Spring Kotlin References in @Value-annotation<\/a> (IntelliJ IDEA Blog).<\/li>\n<li><a href=\"https:\/\/youtu.be\/PsaFVLr8t4E\" target=\"_blank\" rel=\"noopener\">Kotlin Conf Keynote (video)<\/a> \u2013 the conference went really well and here&#8217;s a <a href=\"https:\/\/www.youtube.com\/playlist?list=PLQ176FUIyIUbVvFMqDc2jhxS-t562uytr\" target=\"_blank\" rel=\"noopener\">playlist of the currently-available videos<\/a>.<\/li>\n<\/ul>\n<h2>Culture &amp; Community<\/h2>\n<p>Another mixed bag of &#8220;stuff that I found interesting&#8221; and &#8220;stuff I had to research for upcoming talks.&#8221; Last week I gave a couple of talks about <a href=\"https:\/\/trishagee.github.io\/presentation\/code_review_best_practice\/\" target=\"_blank\" rel=\"noopener\">Code Reviews<\/a>, so that was my main reading material last month. If this topic interests you, sign up for my <a href=\"https:\/\/blog.jetbrains.com\/upsource\/2018\/09\/20\/live-webinar-code-review-best-practices\/\">live webinar tomorrow<\/a>.<\/p>\n<ul>\n<li><a href=\"https:\/\/medium.com\/@copyconstruct\/top-5-lessons-learned-working-at-startups-828ba1d13aa4\" target=\"_blank\" rel=\"noopener\">Top 5 lessons learned working at startups<\/a> \u2013 not just applicable to startups.<\/li>\n<li><a href=\"http:\/\/tonsky.me\/blog\/disenchantment\/\" target=\"_blank\" rel=\"noopener\">Software disenchantment<\/a> \u2013 a good read that should make you think hard about what we do, but a bit depressing.<\/li>\n<li><a href=\"http:\/\/alphr.com\/go\/1009921\" target=\"_blank\" rel=\"noopener\">A lack of diversity in tech is damaging AI<\/a> \u2013 apparently diversity is a Good Thing, who knew?<\/li>\n<li><a href=\"https:\/\/medium.com\/taking-note\/3-surprising-secrets-to-maintaining-your-focus-49046af171ac\" target=\"_blank\" rel=\"noopener\">3 Surprising Secrets to Maintaining Your Focus<\/a> \u2013 I could really use some of that right now.<\/li>\n<li><a href=\"https:\/\/hackernoon.com\/there-are-3-main-types-of-technical-debt-heres-how-to-manage-them-4a3328a4c50c\" target=\"_blank\" rel=\"noopener\">There are 3 main types of technical debt. Here\u2019s how to manage them<\/a> \u2013 I like the idea of classifying tech debt to understand that it&#8217;s not all equal and there may be different approaches to paying that debt.<\/li>\n<li><a href=\"https:\/\/medium.com\/@girldevelopit\/secrets-of-success-for-working-remotely-20be7c8707ea\" target=\"_blank\" rel=\"noopener\">Secrets of Success for Working Remotely<\/a> \u2013 This is the third and final part of a series from <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.girldevelopit.com\/\" target=\"_blank\" rel=\"nofollow noopener\" data-href=\"https:\/\/www.girldevelopit.com\/\" data->Girl Develop It<\/a> (GDI).<\/li>\n<li><a href=\"https:\/\/trunkbaseddevelopment.com\/\" target=\"_blank\" rel=\"noopener\">Trunk Based Development<\/a> \u2013 because &#8220;Friends don\u2019t let friends use feature branches or GitFlow. Friends keep all their code on master and use feature toggles.&#8221; (<a href=\"https:\/\/twitter.com\/tastapod\/status\/1042036175228358657\" target=\"_blank\" rel=\"noopener\">Dan North<\/a>)<\/li>\n<li><a href=\"https:\/\/skillsmatter.com\/skillscasts\/10908-looking-forward-to-trisha-gee-s-keynote-for-prognet-2018\" target=\"_blank\" rel=\"noopener\">Career Advice for Programmers (video)<\/a> \u2013 in last month&#8217;s Annotated Monthly, I mentioned I was working on a new talk about careers. Well, here it is.<\/li>\n<\/ul>\n<h2>Events<\/h2>\n<p>Looking at all the events for October, and noteworthy ones for the next three months.<\/p>\n<ul style=\"text-align: left;\">\n<li>19-20 Oct: <a href=\"https:\/\/jokerconf.com\/\" target=\"_blank\" rel=\"noopener\">Joker<\/a>, St Petersburg.<\/li>\n<li>22<span class=\"st\">\u2013<\/span>25 Oct: <a href=\"https:\/\/www.oracle.com\/code-one\/index.html\" target=\"_blank\" rel=\"noopener\">Oracle Code One<\/a>, San Francisco (formally JavaOne) <span class=\"st\">\u2013<\/span> we have a booth, and <a href=\"https:\/\/twitter.com\/jonnyzzz\" target=\"_blank\" rel=\"noopener\">Eugene Petrenko<\/a>, <a href=\"https:\/\/twitter.com\/relizarov\" target=\"_blank\" rel=\"noopener\">Roman Elizarov<\/a>, and Trisha will be presenting a number of talks and BoFs (related: <a href=\"https:\/\/blogs.oracle.com\/developers\/which-way-to-go%3a-code-one-presenters-help-you-select-which-sessions-to-attend\" target=\"_blank\" rel=\"noopener\">Code One Presenters Help You Select Which Sessions to Attend<\/a>).<\/li>\n<li>29 Oct<span class=\"st\">\u2013<\/span>1 Nov: <a href=\"https:\/\/conferences.oreilly.com\/softwarearchitecture\/sa-eu\" target=\"_blank\" rel=\"noopener\">O&#8217;Reilly Software Architecture Conference<\/a>, London <span class=\"st\">\u2013<\/span> Trisha is presenting <a href=\"https:\/\/conferences.oreilly.com\/software-architecture\/sa-eu\/public\/schedule\/detail\/71724\" target=\"_blank\" rel=\"noopener\">Keynote: Career Advice for Architects<\/a>.<\/li>\n<li>12<span class=\"st\">\u2013<\/span>16 Nov: <a href=\"https:\/\/devoxx.be\/\" target=\"_blank\" rel=\"noopener\">Devoxx Belgium<\/a>, Antwerp \u2013 <a href=\"https:\/\/dvbe18.confinabox.com\/talk\/IIE-9549\/Developing_Native_Project_Vision_in_Teams_and_Individuals\" target=\"_blank\" rel=\"noopener\">Valerie Andrianova<\/a>, <a href=\"https:\/\/dvbe18.confinabox.com\/talk\/OAT-4417\/Is_boilerplate_code_really_so_bad%3F\" target=\"_blank\" rel=\"noopener\">Trisha Gee<\/a>, and <a href=\"https:\/\/dvbe18.confinabox.com\/talk\/QCM-9359\/Coroutines_for_Microservices_using_Kotlin\" target=\"_blank\" rel=\"noopener\">Eugene Petrenko<\/a> are all presenting, and JetBrains has a booth.<\/li>\n<\/ul>\n<h2 style=\"text-align: left;\">And Finally<\/h2>\n<p>Here&#8217;s a chance to catch up on the IntelliJ IDEA and other JetBrains news that you might have missed:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/09\/java-11-and-intellij-idea\/\">Java 11 and IntelliJ IDEA<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2018\/09\/using-java-11-in-production-important-things-to-know\/\">Using Java 11 In Production: Important Things To Know<\/a><\/li>\n<li><a href=\"https:\/\/jaxenter.com\/modern-development-jetbrains-ides-149580.html\" target=\"_blank\" rel=\"noopener\">Modern development with JetBrains IDEs<\/a> \u2013 covering IntelliJ IDEA and GoLand<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/upsource\/2018\/09\/20\/live-webinar-code-review-best-practices\/\">Live webinar: Code Review Best Practices<\/a> \u2013 tomorrow, Wednesday, October 10<\/li>\n<\/ul>\n<p>If you have any interesting or useful Java \/ JVM news to share via Java Annotated Monthly, drop me a <a href=\"https:\/\/twitter.com\/trisha_gee\" target=\"_blank\" rel=\"noopener\">message via Twitter<\/a>.<\/p>\n<p style=\"text-align: left;\" 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\">Subscribe to Java Annotated<\/a><\/p>\n","protected":false},"author":360,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[3311,3236],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/26971"}],"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=26971"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/idea\/26971\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=26971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=26971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=26971"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=26971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}