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.
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.)