It's not too far into 2016 to revisit a predication for the year made late last year. Back in December, Steve Millidge from C2B2, made the prediction that 2016 would be the year of Java EE microservices. To a degree this was based on Steve's session at JavaOne, where he spoke about precisely that topic. Plus Steve is co-founder of Payara, which they're also aiming at Java EE developers interested in microservices. Steve is also of the view that there's very little difference between SOA and microservices, something we've heard and reported on before. As he mentions in the video:

"Microservices isn't different from SOA. It's still about SOA".

Now of course there's the argument that due to his background and current focus, Steve may find it hard to be objective. However, as far back as 2014 when microservices were still in their relative infancy, Adam Bien wrote about the perfect Java EE Microservice:

[...] a perfect JavaEE microservice is single [Entity Control Boundary] component within a WAR deployed on a single server/domain. In such a case you could release and redeploy individual components (aka microservices) independently. Direct method invocations between WARs are not possible, so the WARs are forced to use e.g. JAX-RS to communicate with each other.

We interviewed Markus Eisele late last year about Microservices, DevOps and Java EE, where he discussed how he believes Java EE has an important role to play in the evolving microservices landscape. And there are a number of other approaches to writing microservices with Java EE, including TomEE and WildFly-Swarm. One of the Duke's Choice Award winners at JavaOne 2015 was KumuluzEE, a framework for Java EE microservices as co-founder Matjaz Juric explained:

KumuluzEE is the first framework for micro services using standard Java APIs. A microservice architecture focuses on developing applications into services and deploying these independently; a true micro service architecture is not possible in Java EE without a framework that automates deployment and configuration.

It's interesting to examine a few other examples of where people are looking at microservices and Java EE because some are not staying strictly within the realms of traditional Java EE. For instance, back in 2014 Alex Soto discussed how Java EE and RxJava were a great approach. However, not everyone is convinced that using Java EE enables developers to embrace microservices. As Rick Hightower said:

If you are deploying a WAR file to a Java EE container then you are probably not doing microservice development. If you have more than one WAR file in the container or an EAR file, then you are definitely not doing microservice development. If you are deploying your service as an AMI or docker container and your microservice has a main method, then you might be writing a microservice.

And Rick also doesn't believe that microservices are the same as SOA:

In fact, it in many ways it is directly the opposite. For example SOA often embraces WSDL which is a very strongly typed and rigid way to define a service endpoint. WSDL and XML schema takes all of the X out of XML.

Of course we've discussed many times how SOA and Web Services are often unrelated. However, Rick and others do believe that Java EE is simply too bloated or otherwise unwieldy to be the right basis from which to build microservices. Jeppe Cramon believes there are further fundamental aspects of Java EE which make it a poor basis:

If we combine (synchronous) 2 way communication with small / micro-services, modelled according to e.g. the rule 1 class = 1 service, we are actually sent back to the 1990s with Corba and J2EE and distributed objects. Unfortunately, it seems that new generations of developers, who did not experience distributed objects and therefore not take part in the realization of how bad the idea was, is trying to repeat the history. This time only with new technologies, such as HTTP instead of RMI or IIOP.

Now if microservices and SOA are closely related perhaps there's also an argument that microservices can be approached from a technology agnostic manner as some did with SOA. What do you think? Could 2016 be the year of microservices and Java EE? What role, if any, does Java EE have to play in microservices?