Enterprise Java microservices

Application development no longer consists of using a single high-level programming language that runs on your favorite operating system. Nowadays, there are a myriad of languages, specifications, frameworks, proprietary and open source software and tools, underlying deployment infrastructures, and development methodologies that programmers need to learn to develop modern applications. Development at IT organizations has become polyglot, that is, multiple programming languages are used depending on the needs of specific projects. In this age of the cloud, containers, microservices, reactive programming, 12-factor applications, serverless, MINI services, polyglot environments, and so on, developers now have the option to choose the right tool for their task, making them more effective and productive.

With the recent move of Java EE to the Eclipse Foundation under the new name of Jakarta EE, MicroProfile will play a very important role in the future of Enterprise Java because of its synergy with Jakarta EE and the potential ways it can influence it.

The advent of the cloud and mobile, along with the acceleration of open and the Internet of Things (IoT) have brought about the digital economy. While this has opened up new markets, it has also imposed new demands on businesses and their IT organizations, which are now required to not only support and maintain traditional workloads but also deliver new applications at a faster pace.

Many technologies, languages, architectures, and frameworks have become popular within organizations in an attempt to tackle these new demands. One of these is microservices, specifically, Enterprise Java microservices, since Java is still one of the most popular languages in IT companies. But what is an Enterprise Java microservice?

An Enterprise Java microservice has the following features:

  • It is written using the Java language.
  • It can use any Java framework.
  • It can use any Java API.
  • It must be enterprise-grade; that is, reliable, available, scalable, secure, robust, and performant.
  • It must fulfill the characteristics of microservice architectures as listed at https://martinfowler.com/microservices/, which are as follows:
    • Componentization via services
    • Organized around business capabilities
    • Products not projects
    • Smart endpoints and dumb pipes
    • Decentralized governance
    • Decentralized data management
    • Infrastructure automation
    • Design for failure
    • Evolutionary design