Java Annotated Monthly – July: Java Tools and Technologies

Whether you like to branch out into other JVM languages, or prefer to get deep knowledge in “classic” Java, there’s always more to learn in our Java-flavoured world.  This issue aims to give you some summer holiday reading. But the most exciting news this month is a double-whammy: IntelliJ IDEA is the top IDE, according to the latest Developer Productivity Report, and we have a new version of IntelliJ IDEA!


Breaking News!

IntelliJ IDEA overtakes Eclipse for the first time, in ZeroTurnaround‘s annual Developer Productivity Report.

IntelliJ IDEA and Eclipse Usage

Developer IDE Usage

This news is so fresh, this blog post was very nearly published before the report was! But ZT’s report isn’t just interesting for tool vendors like us here at JetBrains, it’s well worth a look for developers looking to understand which skills to invest in – it shows trends in terms of languages, frameworks and tools.

Java Community

From exciting fresh news to ongoing drama: Oracle vs Google may be over, but the ramifications most certainly are not. This month’s news is that Google is thinking of going after Oracle’s lawyers for disclosing confidential financial information.  Stay tuned to find out what happens next month…

And the rumblings around Java EE continue, with an effort from yet another to modernise enterprise Java, sparking reaction from various interested parties, and Oracle claiming Java EE is business as normal, nothing to worry about, nothing to see here, move along please…

Java EE 8

Yes, apparently there is some movement on Java EE! The JSON Binding Library is ready for public review. One can argue that the pace of change in Java is slower than one might like, but there is a process for standards like this, and this process lets us try things out and provide feedback before it’s set in stone. If JSON is your thing, take a look, and give feedback if you can.

JVM Languages

Kotlin 1.0.3 is now out (Kotlin is, apparently, one of the tools that excite developers), and if you’re interested in the future of Kotlin you might like to understand the roadmap to Kotlin 1.1. For those who are more familiar with Lombok, Nicolas Fränkel recently wrote a useful comparison between Kotlin and Lombok.

Of course, Kotlin might be our baby, but it’s not the only language around. Apparently there’s always the Java vs Scala feud, although surely productivity and happiness both rely on using the right tool for the job.

While we’re on the subject of technology wars, let’s look at whether Java, .NET, Python, Ruby or Node.js is dominant in the job market.

Given the popularity of JavaScript these days, now would be a good time to get a better understanding of how (and why) JavaScript is supported on the JVM via Nashorn since Java 8.

Java 8

Speaking of Java 8 and of Scala, even we die-hard Java types can look at functional programming (with its Functors and Monads) without having to step outside of our language.

Now the majority of developers are now on Java 8, so now’s a good time to learn more about hashmaps, keys and the comparable interface in Java 8, and take a look at some of the things you can do with less code in the latest version of Java.

Java 9

Java 9 on mobile phones? I don’t believe it.

Understanding Fundamentals

It’s so easy to get caught up in what’s new and exciting, either in our own language or in others, that sometimes we neglect the basics, or forget to revisit them. There’s an excellent Core Java reference card available, good for beginners to learn and for long-term programmers to revise – you might find something there that surprises you. There are more ref cards available, including one for IntelliJ IDEA too. And you can test your knowledge with DZone’s Java Quiz. Before you do so, you might want to catch up on some of the more unexpected Java behaviour.


If this isn’t hardcore enough, you might want to learn more about Hardware Transactional Memory. Understanding a program’s relationship to the hardware it runs on is fundamental to obtaining great performance. Also understanding what the JIT is, specifically looking at HotSpot, can open up avenues to improve performance.

But you don’t have to be that hardcore to get better performance. An application’s relationship with the database is one area that’s ripe for performance improvements, so understanding in ORMs and JPA could be a key to performance.

Words like “performance” sometimes come hand-in-hand with words like “race-conditions” – understand how to detect them with tests.

And it’s not all about understanding things at the lines-of-code level – understanding (and revisiting) Design Patterns can save you a lot of time and heartache in the longer run. Strategy is one which may be easier (or at least different) to apply in the post-lambda Java 8 world.

Libraries and Frameworks

Get to understand the taxonomy of reactive programming, or how to use RXJava with Spring Boot.  While we’re on the topic of Spring, apparently it has a new competitor.

To add more buzzwords to your knowledge, check out Vert.x 3.3.0, which mentions building reactive, distributed, polyglot and microservices, so is fully buzz-word compliant.  Or, take a look at how to carve up your Java EE monolith into microservices. Find out how many people are really using microservices and how this impacts their architectures and tools.

And finally…

IntelliJ IDEA 2016.2 was released this week. Check out what’s new, and tune in to my webinar on 27th July.

Thanks for reading!

image description