Complexity of (enterprise) applications and software is increasing daily. Applications are required to be scalable, to operate simultaneously on different platforms (web, mobile …), to connect and integrate with external services, process large amounts of data in short time, to work in the cloud … Despite new challenges, the development of this kind of applications is still being resolved in a monolithic manner, which is becoming less and less suitable for modern, quickly growing (cloud) environment. Microservices try to address this challenges, but while providing certain solutions they also present new problems. In this thesis both styles are compared and it is shown when one is more appropriate for use than the other one. More specifically, focus is given on development of microservices and concepts and tools of trade, that can help along the way. Different ways of introducing microservices in Java applications are presented, according to application requirements, and one of them is used to transform existing Java monolithic application to microservices.