A computer language is akin to a tool in the toolbox of any tradesman. Each tool is designed for a specific task, be it a hammer, a screwdriver, or wrench. Tools are an aid to productivity, but you only get the benefits of the tool by using it for the right task; hammers bang in nails and screwdrivers are for screws.
The same toolbox concept applies to software engineering. The choice of programming language for undertaking a specific task has a bearing on the developer's productivity.
Java is obviously the main language on any J2EE project. Nevertheless, introducing concepts and language constructs from other programming paradigms can help when tackling areas of functionality to which Java is not ideally suited.
Java is a strongly and statically typed programming language. By contrast, scripting languages tend to be weakly typed and highly dynamic.
Strong typing is important for production systems, as the compiler scrupulously checks for any unintended type conversions, raising them as an error before the system is even run.
Mission-critical systems, such as military software and air-traffic-control systems tend to use Ada, a language developed by the Department of Defense that is considerably more stringent on type safety than Java. For these systems, the presence of an undetected defect could have lethal consequences.
Type safety is therefore a mechanism for assisting in the development of reliable and robust software, and it is an important language feature for any software that requires high levels of reliability.
However, not all software developed on an enterprise project falls into this category, and there are many extraneous tasks surrounding the development of the main application for which less scrupulous languages are better suited. This is where scripting languages enter the picture.
Here are some examples of these additional project tasks that can benefit from the use of a scripting language:
The next section considers the features of a language that make it well suited for scripting purposes.