The Java programming language is well into its third decade, and the language and its byte code have found a home in everything from embedded chips to massive server farms. Java's combination of a rock-solid virtual machine and a large collection of libraries make a fertile ecosystem for writing code that runs everywhere.
One area where Java has struggled, however, is the world of servers, which often must juggle connections from thousands or even millions of users. In the early years, Java tools were among the best for creating server-side applications that enforced business logic for all users. Java frameworks like J2EE, Hibernate, Spring, and the basic Java servlets model made it relatively easy to create strong web applications.
Read more here.