2015 Java Highlights

A practical overview of the most interesting trends we had the chance to encounter over the last year

In this post, we’re looking back on 5 of the topics and new developments that shaped our conversations in 2015. Unlike many other end of year summaries that keep it on the high level, we’ll do a more practical down to earth walkthrough without resorting to buzzwords. Well, not *too many* buzzwords. As always, a super important takeaway for us are your comments – We’d love to hear your opinions and learn about your highlights.

1. Java Java Jing Jing Jing

This year has been all about 2 main themes in the Java space, Java 8 adoption and big strides in Java 9. On the Java 8 front, DZone’s developer survey that included over 600 participants reported on 58% adoption of Java 8 for new projects with 20% in existing applications. Other surveys and the general sentiment we’re picking up is positive – so positive that when we published a less than ideal use case for lambdas and streams it almost ended up with bomb threats.

The second area is Java 9. The JEPs targeting the next release have been pretty much finalized and there’s a good understanding of what’s in and what’s out. On JavaOne we’ve had a first taste of how project Jigsaw would look like in practice, including demos and sample code explaining the new additions to the module system. Personally, apart from Project Jigsaw, we were also happy to see a Java REPL in the works and released a short tutorial after playing around with an early access version of Java 9.

We expected to see Java 9 released in 2016, but as it turns out we’ll have to wait for 2017 because of delays in project Jigsaw. Hopefully the new target date stays final. Until then you’re welcome to join the Java 9 countdown.

** If you’re wondering what Java Java Jing Jing Jing means, you need to see this video 🙂

2. Microservices Microservices Microservices

We can’t help but wonder, isn’t microservices just a new word for “separation of concerns”? Oh well. While you can argue that all the attention certain trends get is exaggerated, and they existed long before it became a “buzzword”, it actually makes sense as a sign of reaching certain maturity.

On the Java front, in ascending order, we’re seeing a rise in the popularity of Java Micro Frameworks, like Jodd, Spark (not Apache Spark) or Ninja Framework. Even lighter than Dropwizard or Spring Boot which also had a great year. This doesn’t mean that you can’t build microservices on Play Framework or other full on frameworks, just that some applications can now be built on ridiculously small frameworks. Jodd weighs just under 1.5MB.

Find the Crap in Your Java App

Show me how >>


3. Docker Kubernetes Docker Docker Containers

What’s new with Docker? While not exclusive to 2015, it’s the year where it got most of the attention – And many misconceptions have come out of that recent rise in popularity. All in all, containers have been quite messy and Docker helps deliver a better developer experience tied with powerful features.

As to JVMs on Docker, it remained kind of a pain just up until recently. Docker is all about minimalism, but when you’re adding Java on top, it adds up to over 800MB for a single container. Enter Alpine Linux. A lightweight Linux distribution with a base image of only 5MB. The recent rise in Alpine’s popularity comes from the Docker use case, and especially from the Java side of things. When using Alpine, a Java 7 image is 123MB and a Java 8 image is 173MB – A huge x4.6-6.5 improvement.

4. Logs Logs Logs, Bills Bills Bills

More and more developer teams have started to feel the stress in managing never ending, ever growing log files that generate GBs of data every day. This year we’ve also seen the rise of hosted ElasticSearch services that take away the overhead of running your own ELK stack. The combination of ElasticSearch, Logstash and Kibana is becoming one of the popular solution for making sense out of your logs.

While logs provide a lot of plain text data, and most tools work on aggregating and visualizing the data, sometimes getting to the root cause can be pretty exhausting (if you do have the data). At Takipi, we’ve built a tool that lets you see the variable values and exact state of every exception or log event, overlayed on the actual code that caused it. One of the features that we’ve added are log links. Turning a log event from plain text:


Into this:

Takipi error analysis

5. This and That: Akka Streams, Apache Spark, Automation

A few more highlights that grabbed our attention in 2015 were in the Scala arena. We’ve covered new tools and looked behind the scenes of building Akka and and Akka Streams. It’s also becoming clear that Spark is the gradually replacing Hadoop for the use cases that require the fastest possible data crunching. We’ve examined how Taboola handles 10B requests a day, and what are the steps you need take when migrating a new Spark architecture.

Another area that grabbed our attention this year was all-things-automation with Chef, Puppet, Ansible and SaltStack. Deployment and configurations management tools let us use recipes, playbooks, templates, or whatever terminology to simplify automation with a standard, consistent deployment. Speaking of automation, we’ve also gone crazy for Slack this year, and it became an inseparable part of many of our workflows.

Final Thoughts

It seems Developer Experience is becoming a higher priority and we can see how this affects the tools, practices and languages that we use. The software development industry progresses in a fast pace based on lessons learned from years of experience and we can’t wait to see what 2016 will hold.

Even though Star Wars 8 and Java 9 will only go live in 2017.

Some kind of monster @ OverOps, GDG Haifa lead.
  • http://xenoterracide.com/ Caleb Cushing

    hmm… why doesn’t the official Java docker image use that strategy?

    • http://www.takipi.com/ Alex Zhitnitsky

      Hi Caleb, thanks for the comment! More info about the Alpine Linux Docker image is available right here: http://gliderlabs.viewdocs.io/docker-alpine/ The image from Glider Labs now serves as the official Alpine image in the Docker library. We’re actually planning to publish a separate blog post about it as well. There’s a tradeoff with Alpine since it doesn’t ship with the standard glibc and uses musl libc instead. Many applications depend on glibc but there’s also a workaround available to make the switch

      • http://xenoterracide.com/ Caleb Cushing

        “libc”? I’m not famillar with that (I know about uglibc and eclibc, but not an impl called “libc”), but also wasn’t aware that Java Applications required a certain version of C libraries… especially given glibc isn’t readily available on windows.