adam bien's blog

Building Hospital Information Systems -- Migrating to Java EE At Agfa Healthcare 📎

Siegfried please introduce yourself. What is your Java (EE) background?

My name is Siegfried Fode and I am so called Global Solution Architect at Agfa Healthcare. Actually in this role I'm kind of a managing developer or developing manager - however you want to see it. I have been developing Java based products since 1999. At that time I already started to look at the very first Java EE specifications. Back at that time the standard was very young and application servers were not very mature. Even worse, developing EJB seemed to be a job for people who love to spend their life time in writing deployment descriptions instead of writing code. So we decided not to jump on Java EE and we created our own framework using Java SE. Most of the applications that I developed between 2000 and 2008 were based on Java SE - e.g. an EAI Engine for hospitals, called JAIF. Even though I was mainly working in Java SE, I always followed the evolution of Java EE and we started to build some web applications with Java EE around 2004. We still kept EJBs out of the scope, since it was still quite some overhead. This has completely changed with the introduction of EJB 3. At that point of time I was really excited about the simplifications in the standard and we started to build more and more Java Enterprise Applications. Today I'm working with Java EE 7 and Wildfly/JBoss as application server. My team and I really enjoy building complex applications with the powerful toolbox of Java EE 7.

What are you building?

One of the major products in my responsibility is our Hospital Information System (HIS) / Clinical Information System (CIS) with the name ORBIS. ORBIS is Agfa HealthCares enterprise-wide IT solution designed to enhance the quality of patient care and provides fast and complete availability of patients' histories, including all images and clinical and administrative data.

You migrated the application to the new Java EE world. How much code and dependencies were you able to delete?

Actually we are still in the progress of migrating our products to Java EE. Since our current product has its roots in the 90s, we have a rather heterogeneous technology stack that evolved of the last 20 years. Moving to Java EE is a great opportunity to homogenize and renew the technology and architecture. While doing this, we discover opportunities for simplification on a daily base. Our target is clearly, to do this in a evolutionary way and without big migration scenarios for our customers. With Java and Java EE, we have found the right toolset to do this and I'm convinced that we will be able to delete millions of lines of legacy code without loss of features at the end. Even better, we will be able to offer more functionality, better scalability and deployability on mobile devices to our customers!

What comprises your new architecture?

A major principle for our next generation product developement is simplicity. We bet on standards wherever possible. For the frontend of our application, we decided to go with HTML5, Javascript/Typescript and Angular JS. As design principle for the UI, we are following the "Mobile First" strategy. The backend of our application is deployed on a Wildfly 8 application server and consists of a set of individual WAR files that exposes REST endpoints following the HATEOAS idea (as much as possible). The WARs are designed to be selfcontaining without binary dependencies to other deployables. I strongly believe that building the UI on top of REST services is a key element in the architecture. This allows us to benefit from all the existing features for scalability that are well known from the internet. Furthermore it significantly improves the ability for headless testing and facilitates a clear separation of UI and business logic.

Which IDEs, Application servers and build tools are you using?

Talking with developers about their favourite IDE is often a very religious discussion. Actually I don't really care which IDE my developers are using - as long as the code complies to our rules and the developer feels comfortable to work as efficient as possible. Our developers mainly use Eclipse, NetBeans and IntelliJ. Our build process is based on maven, while for the UI we also use Grunt and Bower. Our applications are deployed on Wildfly (at the moment version 8)

How important is the Java EE standard for you? Is your code dependent on proprietary application server features?

We try to keep the application code as much as possible compliant to the standard. However, when it comes to deployment, monitoring, performance tuning, high availability etc. etc., you need to go into more details of the server configuration. Here we decided to only support one application server. In our case this is Wildfly.

Is Java EE productive? What is your opinion?

Looking back before Java EE 5, it was a big monster. It became much more efficient with Java EE 5 and the introduction of EJB 3. With Java EE 6 and 7 (CDI, JAX-RS, web sockets etc.) it is now one of the most efficient environment that I could imagine to work with. It is impressive to see, how fast developers become efficient when you stick to the standard.

Would you choose Java EE again?

Yes, no doubt about that!

Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?

We only use a subset of the standards in Java EE 7 full profile. For us it is mainly: EJB, JPA, CDI, Jax-RS, Servlets, JMS. Looking at Java EE 8, I'm really interested in JCache and JSON-B. Beside this I'm keen to benefit from the new features in the standards that we already use. Esp. alignment with Java SE 8 (Repeating annotations, lambda expressions, Date/Time API, Type annotations, Completable features) will help us, since we are already on Java 8 SE.

Is you company hiring Java EE developers?

Indeed, we are currently looking for some enthusiastic colleagues to help us in building our future applications - of course with Java EE.

Any resources and links you can share with us?

If you want to know more about our products and what we are doing, just have a look at our web page at www.agfahealthcare.com

Siegfried, thank you for the interview!