Java is just a statically typed scripting language, thats all it is. Java gets its speed by the simple fact that it uses primitive variable types. Static typing ruins its ability to be used on a REPL so it never gets used for scripting. Java is a good enterprise language because static typing does give it greater error checking ability and IDE name assistance. Another reason it is good in enterprise is the fact that it forces OO makes apps more scalable and interoperable. Java is also an excellent moblile language because it runs on a VM so it is easier to port to all the different hardware and API platforms. A VM language is also less likely to crash the mobile OS. So thats all Java is, an enterprise and mobile language.