Java EE At UNIQA Insurance Group 📎
Herbert, please introduce yourself
Hello, my name is Herbert Dowalil, and I am working as a Solution Architect for the UNIQA Insurance Group. I have been starting to develop software with the Basic Programming Language when I was 8 years old on my BBC Acorn Electron. Since that I am a passionate programmer and I like to design and write software. In my private life I am happily married and proud father of my sweet little daughter Valentina. I like to go mountaineering and scuba diving. When time allows I also work on my multiplayer online Racing Team Manager game
What are you building with Java EE?
Fullstack custom Applications for our customer. Where we are currently rather pushing the UI into the browser and make it with Javascript, but we will continue doing the Backend and the Service Logic with pure Java EE. Actually the introduction of Java EE MVC (JSR 371) might bring the controller logic of our UI back to the server again, using some templating mechanism. I like the thought that everything a User could possibly want to do can be done by only having the knowledge how exactly to build the URL. And that Information is all you need to get him there! And if you start building modular UIs you can start integrating your Systems in the UI layer if that is sufficient, as all you need to do is create some links in the user interface and you have created your distributed system. And actually just linking UIs is the loosest coupling of systems I can imagine, and every Software Architect knows how important that is. In the microservices world this is quite a common approach, and in times of SOA it was called the Composite UI Pattern
Why have you chosen Java EE?
Mostly because it is an open standard, which safes the investments. No matter what happens to the vendor of your Java EE server or what kind of troubles you might have with it in the future, you can be sure to have plenty of opportunities to choose from to change the Java EE implementation. With Java EE it is easy to rely just on the API and you usually hardly ever need to do any specific things to get along
Which application servers, tools and IDEs are you using?
- Eclipse, NetBeans and IntelliJ are all used as IDEs. When using Maven it actually does not really matter what kind of IDE the developer chooses. IntelliJ is becoming more interesting as it has the best support for Javascript/Typescript development for the UI Layer
- SonarGraph by hello2morrow is a great tool to manage your inner Structure and dependencies. It has also plugins for Eclipse, IntelliJ and SonarQube. You can also measure how good people are in structuring their code, and my experience is that it is a good idea to recruit your Software Architects among the people who are doing a good job here. Software Architecture is nothing else than mostly managing structure and dependencies
- Jenkins as a CI Server is getting more and more important
- SonarQube is a great tool to manage your quality by simply making some metrics of all the artifacts you build visible
- SonarQube Portfolio Management (Views Plugin) is used to make one quality metric dashboard per team, as you can combine all the artifacts built by the same team in one SonarQube View here. We hope to create some competition among the development-teams by just making their quality visible to everyone and keep it so at a high standard
- JBoss EAP as the server implementation
How important is the Java EE standard to you? Is your code dependent on application server specific features?
Standards are very important for us, as we want to make an investment for our customer that is absolutely future proof. We hardly ever have to do anything vendor specific, and we try to avoid as much as possible. Using Java EE as a standard is actually the biggest difference to the Spring Framework. The Spring Framework might sometimes be a little faster when bringing out new features (like they have a Cache API now since quite a while where we are still waiting for it come along with Java EE 8) because it is simply easier if you do not have to go through a Java Specification Request. But on the other hand you lose the safety that you have when using the open standard. And actually I like the more convention-over-configuration style of Java EE more
Or let's compare Java EE with the Javascript world. No matter what API from the .js world you have been using a couple of years ago you can be pretty sure that it's outdated and no backwards compatible alternative is available anymore. AngularJS was pretty popular now over the last few years, and now as the new version is being released it means that everyone using it will have to rewrite. The only things that are pretty much stable are the basic ECMA standard of the language itself and maybe the core of jQuery. This is simply not so in the Java EE world, where you can be sure that your code that worked 5 years ago will most likely work in 10 years from now on as well.
Anyway, of course the Java EE standard is not always sufficient. You will never be able to write a decent web application when you just rely on the JSF standard, though I believe that a widget library is nothing that the Java EE standard should take care about. Or when you needed caching on the server a couple of years ago there was no standard available yet, but these are the points where Java EE keeps improving
Is Java EE productive? What is your opinion?
It is surprising how many people still believe the prejudice that Java EE is bloated and unproductive. Actually these people might have had a look at the platform once in the times of J2EE, EJB 2.x and the old Core J2EE Patterns. Here we see how important it is in our industry to keep learning throughout your entire life, as this is simply not true anymore. As good as all former J2EE Patterns are now outdated how most likely any follower of your blog will agree.
The other argument I keep hearing is that there is no decent Scaffolding tool for the Java EE platform which is also not true. I recommend having a look at JBoss Forge which is a great tool with lots of possibilities due to the many plugins available
Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?
The whole development of the JEE Platform is positive, let me just mention my favourites
- JSR 107 JCache as it will give us a common API for Caching which is simply important when building a scalable Architecture
- JSR 371 MVC as it will bring some Userinterface logic back into the world of open Standards, and will make our Applications more modular
- JSR 352 Batch Applications is something we are anticipating a lot
Any links you would like to share with us?
If you like you can have a look at my technology blog
Herbert, thank you for the interview!