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.
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). With OverOps, you can 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:
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.
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.