Devoxx had a lot of interesting sessions this year. It is great to see what the movers and shakers of the IT industry are doing and where the innovation is going.
Stephan Jansen (one of the organizers) announced that www.parleys.com will, in addition to the usual recorded Devoxx session, also include complete courses that you can follow, prices are around 60 euros. He also launched a new website www.voxxed.com that will aggregate developer news of the Java community.
Cloud and containers
The interest in cloud computing is still going strong. At Devoxx there were a lot of interesting talks about Docker and microservices. Although opinions vary a bit about what exactly micoservices are, the concensus is that microservices are easy (and quick) to deploy and update. To make that possible, your service should be as small and simple as possible.
If your service is small and easy to deploy, you can then put it in a Docker container, which runs a lot more efficiently than virtual machines. The rule of thumb is to put one service in a Web Application Archive (WAR) and one WAR in one application server. Some propose to run your service or application without an application server, just as a plain Java program with a main method. Adam Bien prefers an application server because you a lot of functionality like transaction support, threadpooling, datasource pooling, while the overhead in modern application servers is pretty much negligable. The cost of RAM memory is much less than the hourly cost of your developers.
The difficult thing about cloud computing is its distributed nature – how do you discover available services and how do you load balance it all?
The Google Kubernetes project makes it easier to runs multiple docker containers as a cluster and starts up additional containers automatically. It provides an abstraction on top of containers, called pods. A pod contains one or more related containers (eg web app frontend with database) and you can specify how many running pod instances you need. Kubernetes automatically spins up pods as needed. It is in alpha, you can test drive it now.
Now that continuous deployment becomes possible with these efficient containers, you need a quick way to ensure the quality of your service/application. Manual testing takes too much time, so you need automated unit and integration testing. At ING they seem to do pretty exhausting testing, including user interface integration testing. They also developed their own web components – which are also tested on their own – and this makes testing of pages that use these components easier.
Martijn Verburg mentioned “the enemy of good is perfection” – rigidly demanding a 100% test coverage usually hurts your effiency, you should still do manual tests and create integration and system tests. With Selenium, Serenity, Protractor and others you can do automated UI testing and you should be careful that tests don’t become too brittle.
Java 8 is out for a while now, it is a major upgrade with a lot of new API’s that make of the new lambda support. Many classes like String, Collections, etc are updated that make compact code possible. This should end a lot of complains about the verboseness of Java.
After 2 and a half days of session, I leave with inspiration for many improvements in software development. Devoxx was worth the effort and time to go to Antwerp.