adam bien's blog

Building Event Management Products With Java EE 7 📎

Alexander (@fischbauch), roamingthings.de please introduce yourself

I'm an enterprise software engineer developing mainly Java applications since I started studying in the early 1990s. I’ve been using Java SE, Swing, Java EE, Spring, Struts, JBoss Seam and many other frameworks. But most of my current work is done using Java EE 7. Together with client technologies like HTML, CSS and JavaScript I’m able to build robust end-to-end applications.

I’ve also done a lot of embedded computing using microcontrollers which today is called the "Internet of Things”.

When it comes to mobile applications I've been developing for iOS.

I’m also a co-founder of LambdaLogic that delivers an application and services for event management.

What are you building?

My company is building and distributing software and services for event management. Our core product is a client-server based application that we are offering to our customers since 1999.

You are building products with Java EE. Why with Java EE?

When we started developing our application we build the whole business logic into the client since application server back than where very complicated and expensive.
When the Orion application server was announced we became interested in going from a two-tier to a three-tier architecture and profit from the services this architecture is offering. Back then Java EE has been a new technology and became popular in the Java world. We started to adopt it and migrated our product. Since then the system has been constantly developed and migrated to newer version of the Java EE stack.

In addition to the core product we’re offering individual solutions which are completely using the current Java EE 7 stack.

You are using the Boundary Control Entity pattern to structure your applications. What were your experiences, challenges and findings so far?

When we started adopting the BCE pattern after I’ve learned about it some years ago it improved the quality, and build time of our projects noticeably. BCE helps to structure an application and allows every team member to get into a new or existing code base very quickly.
Still it is sometimes hard to decide where parts of an implementation belong to but again BCE provides a good guideline for these cases. Together with best practices as shown in your workshops it is possible to write lean and robust code in a short period of time.

Which application servers, tools and IDEs are you using?

The application server we're using for many years is JBoss and now WildFly.

As IDE we are using Eclipse and IntelliJ.

I personally switched from Eclipse to IntelliJ a few years ago. After going through three month of pain I'm now very glad to do the switch. I became much more productive since IntellIJ allows me not write code very quickly and I encourage every developer to take a closer look at this tool.

For building and dependency management we are using maven in most projects. We’ve shortly started to use Gradle in some bigger projects. Although the build times are sometimes a bit longer it offers a lot of power that is is worth the effort.

Jenkins serves as continuous integration server.

Version control relies on git.

Other tools we are using for communication are Slack, Jira and Confluence.

Which Java EE APIs are you using in your products?

We're using JPA, Servlets, JSF, CDI, JASPIC, JAX-RS, JAXB and some of the other APIs of JavaEE. For me it’s important to avoid dependencies outside the Java EE platform as much as possible. This allows for short deployment times and avoids locking to a particular version of a library.

Did you had the chance to chat with other attendees during the airhacks.com? If yes, what was the most interesting project / problem / situation in the workshops?

I had some general talks to other attendees mainly about Java in general and the upcoming “microservice” movement. I enjoyed the workshop very much and have been able to learn a lot.

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

JavaEE has become very important for me as an individual Java developer as well as for our company. As I said we started using Java EE in a very early stage and stuck to it since then. We went through all of the pain with deployment descriptors, entity beans, Pet Store etc.

There are a few parts of our application that are still rely on a particular application server. This mostly affects the deployment and is a legacy of earlier Java EE releases. Today it's much easier to write applications that are independent of a particular server. However looking into the latest development in Spring I think that there is still room for improvement in the Java EE world.

I like how Java EE evolved over time. Since it's invention it became a very mature, stable and easy to use platform. I also like the fact that the community did not adopt every "cool new feature" like other platforms and frameworks did.

Unfortunately Java EE still suffers from the reputation it earned in earlier versions to be complicated and heavyweight. Today you can build an new project very fast and easy especially when you utilize patterns like EBC.

I hope that JavaEE will continue to evolve. It’s an interesting time where it looks as if the community has to take over more responsibility for continuing the development of the platform. There are still some parts that need an overhaul like the security API. Here I'm looking forward to the work that is going into the Java Security API at the moment.

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

As I already said the Java Security API is one of the most important API improvements I'm looking forward to.

Although MVC would be a very welcome addition to the platform, it does not look as if it will make it in the final release. MVC offers a concept that is similar to building REST APIs, web clients or web socket protocols and can ease development in some application.

Any resources and links you can share with us?

I recently became interested in the Kotlin programming language as an addition for my future projects. Like Groovy it shows how versatile the Java platform and ecosystem is. I like the pragmatic approach that Jetbrains has taken when crafting this new language.