blank
Reza Rahman - Professional Homepage
blank Home Home | Navigation Site Map blank Resume | Projects | Blog | Downloads | Links | Contact

My ramblings on Java EE, Java SE and the crazy World of technology in general.

Sunday, March 05, 2017

Java EE Adoption Story from Armen Arzumanyan

One of the most important things to do at this stage of the life-cycle of Java EE is highlight successful adoption stories at a regular cadence. The community has been doing just that for a long time including at JavaOne. A number of these stories are curated here. Armen Arzumanyan recently agreed to share his Java EE adoption story. He has developed a number of mission critical Java EE applications in his native Armenia and beyond. One of his applications - Taxpayer3 - was so impactful that it won an international award. Armen had a number of insightful things to say about Java EE worth paying attention to. I have highlighted specific passages that really stand out.

Can you kindly introduce yourself?
My name is Armen, I am a Java developer and architect. I have about ten years of experience in Java development. I was introduced to Java while working at Lycos Europe. At Lycos we used J2EE on JBoss to develop applications in the early days of Java.

Can you describe the applications that use Java EE?
The very first application I developed from scratch in Java EE was actually a social network! I was tasked with researching the technologies to implement the front-end as well as the back-end.

The requirements dictated that the front-end and back-end should run on different servers as well as provide a rich front-end.

I tried as much as possible to utilize Java web technologies.

Back in 2008, I was pleasantly surprised with JBoss 4.2.2 - it was possible to develop a @Stateless EJB 3 based back-end without any configuration! Meanwhile, for the front-end I chose JSF 1.2. JSF allowed directly connecting web form components from a web page to Java Beans. JSF is also based on component controls which saves development time. The important part of the page layout is covered well by Facelets.

Back then, EJB 3 POJO remote interfaces made me very happy. I was able to send/receive DTOs completely transparently (no JSON, no XML).

I prepared a short demonstration to my team with the front-end running on JSF/Tomcat and back-end running on EJB 3/JBoss 4.2.2. The demo was a success and was approved.

The second significant Java EE project I helped develop from scratch was Taxpayer3. Taxpayer3 was one of the biggest Java EE applications ever developed in the former USSR. In fact the project won a top international award due to it's innovation and impact. Java EE covered all of our architectural requirements well - stable, stateless, productive and easy to upgrade.

Last but certainly not least two interesting Java EE projects I develop and support are an e-procurement system and ID-card printing system. In addition I support a very popular PKI Certificate Authority software used in lots of countries. The software is available at https://www.ejbca.org.

Why did you choose Java EE?
As a Java developer my introduction to enterprise Java started with the official Java EE tutorial. I think all Java developers should learn Java EE. Java EE gives you the fundamental skills for developing business-oriented applications.

Using Java EE and using application servers allow you to grow from a developer to an architect.

When people ask me “How did you become a senior Java developer?”, my answer is very short:

"I know Java EE"

It puzzles me that in some companies Java developers don't know Java EE and create applications using just Tomcat that are very similar to what you can do easily with what Java EE already offers out of the box. People create a lot of service layers in their applications and every component can be injected into another, no matter where is it located. But with EJB 3 you get a lot of additional power because you can make fully interchangeable local and remote interfaces which speaks to the ability to really hide your implementation behind a façade.

For me Java EE applications have always been a success: you have real statelessness, you have components, you have REST, you have remote calls, you can easily upgrade from version to version, you never need much configuration, you are focused only on development and on business logic.

Another powerful capability is Message Driven Beans which allow you to easily enable asynchronous messaging.

One interesting fact I am finding out is that I have never really developed monolithic applications! In the least my back-end has always been isolated and interacts with the front-end via DTOs. With Java EE you are not limited to just REST and JSON, which some enterprises still don't accept as a format. For example you could easily use SOAP or EJB remoting instead!

Once in an interview I got asked “Which version of JBoss have you used?”. I answered “JBoss 4.2.2, 4.2.3, 5.1 and 7.1". The interviewer replied “You are hired".

Nowadays with the microservices trend, WildFly Swarm looks very interesting. The framework enables you to develop microservices with JSF/PrimeFaces/Java EE.

How do the applications use Java EE?
In production I use a JBoss/EJB 3/JMS + MySQL-PostgreSQL-Oracle DB combination. Pure front-end parts with JSF run under Tomcat or JBoss.

How was your general experience with Java EE? Would you use it again?
I am using different technologies in different projects. Java developers should always explore a wide variety of solutions. But not understanding Java EE is like losing half of Java for no good reason.

Trying to compare technologies with each other is unwise. Instead we should compare technologies with project requirements, but you won't find a future that doesn't include the Java EE technology stack.

How can people contact you if they have questions?
My email is armen dot arzumanyan at gmail dot com and you can follow me on GitHub at https://github.com/armdev.

2 Comments:

Blogger Sergey Yeranosyan said...

Great article!

7:51 AM  
Blogger Abhishek said...

Good to see yet another adoption story...! in addition to statelessness, there is great support for 'stateful' applications (going beyond the REST paradigm). Be it bi-directional WebSocket based applications, or handling in-memory state (with JCache which hopeful make its way into core Java EE) as well as CDI which helps you 'build your own' extensions even if its not currently in the platform

Cheers!

2:25 AM  

Post a Comment

<< Home

Home   |   Site Map   |   Resume   |   Projects   |   Blog   |   Downloads   |   Links   |   Contact