DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
Securing Your Software Supply Chain with JFrog and Azure
Register Today

Trending

  • Opportunities for Growth: Continuous Delivery and Continuous Deployment for Testers
  • Understanding the Role of ERP Systems in Modern Software Development
  • Stack in Data Structures
  • DevOps vs. DevSecOps: The Debate

Trending

  • Opportunities for Growth: Continuous Delivery and Continuous Deployment for Testers
  • Understanding the Role of ERP Systems in Modern Software Development
  • Stack in Data Structures
  • DevOps vs. DevSecOps: The Debate
  1. DZone
  2. Coding
  3. Java
  4. Java Annotated Monthly: March 2017

Java Annotated Monthly: March 2017

What's been happening in the world of Java this past month? A lot, actually! Read on to find out what's been making waves including links to major stories and releases!

Trisha Gee user avatar by
Trisha Gee
·
Mar. 04, 17 · News
Like (2)
Save
Tweet
Share
9.94K Views

Join the DZone community and get the full member experience.

Join For Free

We’ve taken on board suggestions from last month’s experiment and this month we’re trying to please everyone – what could possibly go wrong? February is a short month so you might expect a shortage of news, but far from it!  It’s a big year for releases, with Java 9 and Java EE 8 on their way, and it’s never too early to get up to speed on what’s coming.

Java 9

For anyone who doubted whether we’d ever see Java 9, it’s finally entering the First Bug Fixing Round. That means it’s “complete” enough that we can more-or-less rely on which features will be in it, and start playing with them – IntelliJ IDEA 2017.1 supports Java 9.  Since Java 9 introduces the Reactive Streams API as part of the language, there is some overlap in conversations around Java 9 and Reactive Programming, a theme I will be presenting on next week at QCon London.

  • Early Access documentation for Oracle JDK 9 has been released
  • Programming with Modularity and Project Jigsaw. A Tutorial Using the Latest Early Access Build
  • Automating The Creation of JDK9 Reduced Runtime Images in NetBeans (or in other IDE of choice!)
  • The Non-Jigsaw Improvements of Java 9
  • Inside Java 9 – Performance, Compiler, and More
  • Date and Time Formatting in Java 9 Will Get Closer to Unicode Locale Standards
  • Java 9 Will Adjust Memory Limits if Running with Docker

The release is close enough that conversations around current Java include overlap between features from 8 and 9:

  • DZone’s Guide to Modern Java
  • Java 9 and Streams API

Of course, development on the language doesn’t stop at Java 9, we can get a heads-up on possible features for future releases too:

  • Java 10 Could Bring Upgraded Lambdas
  • The Last Frontier in Java Performance: Remove the Garbage Collector

Java in General

New and interesting is all very well, but it doesn’t help us in the day job.  It’s arguably more important to get better at what we do all the time.

  • Filter Incoming Serialization Data – JDK 9 goodness available now in 6, 7 and 8
  • Further Updates to ‘Moving to a Plugin-Free Web’ (Applets are basically not supported anywhere anymore)
  • Deterministic Execution on the JVM (in the context of blockchain)
  • Java Memory and CPU Monitoring Tools and Techniques
  • The Surprising Truth of Java Exceptions: What Is REALLY Going on Under the Hood?
  • JVM Options Cheat Sheet
  • The Top Differences Between Java, Scala, Groovy, Clojure, and Kotlin
  • From Microservices to Distributed Systems – Survival guide for Java Developers

As usual, we’re still finding out plenty about Java 8 features, including embracing a more functional approach to development:

  • Making Apps With JavaFX
  • Java 8 Streams and error handling?
  • How Lambdas And Anonymous Inner Classes Work
  • A Java 8 Streams Cookbook
  • Java 8 Lambdas limitations: closures
  • An Introduction to Functional Programming in Java 8: Part 1 – Functions as Objects
  • An Introduction to Functional Programming in Java 8: Part 2 – Optionals
  • Functional Programming in Java 8 (podcast, featuring me talking about how function Java is, or is not)

Reactive Programming styles really are here to stay with Java 9, so it’s worth getting up to speed now:

  • Understanding Reactive types
  • RXJava2 by Example
  • RxJava for easy concurrency and backpressure
  • Building Reactive Applications with Akka Actors and Java 8

Enterprise Java

2016 certainly was an… interesting… time for Java EE, leading to a lot of speculation about the Future of Java in the Enterprise. Microprofile certainly seems to be gaining momentum, but then Java EE 8 is also back on the move.  Exciting times…

Android

This month I’m blatantly showing my preference for a focus on automated testing, design principles and self-improvement rather than showcasing any specific frameworks or libraries. But I am throwing in RxJava, since this seems to be well-used in the Android space, and I included Reactive Streams in the vanilla Java section.

  • Want to move into Android? Here’s a set of self-guided resources
  • Write awesome unit tests
  • Your unit tests might not be as reliable as you thought
  • Stress-testing Android apps
  • Airplane Mode: Enabling Trello Mobile Offline
  • Android Things – Electricity Monitoring App
  • Towards Godless Android Development: How and Why I Kill God Objects
  • Composite Views in Android: Composition over Inheritance
  • Making RxJava code tidier with doOnSubscribe and doFinally
  • How to leak memory with Subscriptions in RxJava

Design and Architecture

Yes, we need to stay up to date on technologies and so forth, but understanding architectural patterns and design approaches will be valuable regardless of current trends. Probably. Except the Singleton pattern, you can just go ahead and ignore that.

  • GoF Design Patterns Using Java (Part 1)
  • GoF Design Patterns Using Java (Part 2)
  • Dead code must be removed (the code is dead, long live the code)
  • How to Avoid Messy Code
  • Functional Programming Is Not What You (Probably) Think (worth understanding probably before following the earlier functional programming links)
  • Layered Architecture Is Good
  • But Hexagonal Architecture is Powerful
  • Lesser known Git commands (OK fine, not design or architecture, but may be useful and doesn’t fit into any of the other categories either)

It feels like Microservices has crossed the chasm and we’re now talking about when and why to use it, not just what it is. There’s a trend of talking about Event Sourcing and Domain Driven Design in this context, familiarity with these topics is important:

  • Virtual Panel: Microservices in Practice
  • The Future of Microservices: Functional Service Design and Observability
  • Start with Events and DDD When Building Microservices
  • The Importance of Patterns in DDD

Events

JetBrains is going to be at several events this month. Firstly, QCon London next week: we’ll have a booth there (come and say “Hi”!), I’m running the Java track and speaking on it, and I’ve outlined an example conference schedule for Java developers. Secondly, we also have a booth at the very first DevoxxUS, and I’ll be presenting on Java 9 features and how they’re supported in IntelliJ IDEA.

And Finally

  • The 2017.1 Public Preview is available, and you can try out the aforementioned Java 9 support.
  • My Refactoring to Java 8 webinar recording is available.
  • Kotlin 1.1 was released this week, with JavaScript support, coroutines, and more.

Subscribe

Complete this form and get Java Annotated Monthly delivered fresh to your email.

Java (programming language) intellij Functional programming unit test microservice Design

Published at DZone with permission of Trisha Gee, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Trending

  • Opportunities for Growth: Continuous Delivery and Continuous Deployment for Testers
  • Understanding the Role of ERP Systems in Modern Software Development
  • Stack in Data Structures
  • DevOps vs. DevSecOps: The Debate

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com

Let's be friends: