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!
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.
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.
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.
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 on mobile phones? I don’t believe it.
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
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.
Thanks for reading!