Search code examples
javaenterpriseapplication-serverbanking

Why are Enterprise Applications Universally Implemented Using Java + Application Servers?


I've been studying at a lot of enterprise applications for insurance and banking recently and something struck me: Pretty much every application is written in Java and deployed using an Application Server such as JBoss.

  • Why are these pair of technologies the default choice in the enterprise application space?
  • Why don't folks use new frameworks/languages/servers such as Django?

I suspect the choice is made for some combination of security, performance and licensing reasons, however those exact reasons aren't clear to me.

Much thanks.


Solution

  • Although Java initially didn't target server side apps/enterprise stuff, once it attracted the attention of the "enterprise" crowd, it has constantly evolved catering to their needs. Here are a few Java advantages (compared to Pythong & Django, Ruby, PHP, etc.):

    • very clear syntax with strong rules and many safety mechanisms (no inferred/dynamic types which can lead to nasty bugs, few cryptic symbols, all kinds of compile-time checks, mandatory exception-handling in certain situations, etc. - many inexperienced people are annoyed by some of these things - but it's exactly these things that make programs less error-prone and the enterprise people love it)
    • very strong security (despite all kinds of media reports criticizing java for suspected vulnerabilities (usually related to browser applet)s, there has never been a single major security breach on the server side - which is why it is trusted by the banking industry
    • versatile and very fast VM (java applications can be almost as fast as native c/c++ for pure computations) that can run on many powerful servers, being able to harness their entire power (python, php and ruby can't even handle multithreading properly)
    • a very large number of frameworks that can do a lot of things (from technical frameworks like the search engine lucene to more enterpresey stuff like OfBiz, Alfresco etc.)
    • tight integration with other enterprise products (servers, databases, etc.)
    • it is supported by one of the largest software companies in existence (Oracle) and other powerful third party companies like IBM, RedHat and many others
    • lots of professional, high quality tools (Eclipse, Netbeans, IntelliJ IDEA, JDeveloper etc.)