Dynamic Languages and Java/Preface
From JVMLanguages
The software development world finally seems to be converging towards a consensus -- no single programming language is perfect. Each language has strengths and weaknesses and every development team has their own expertise and biases. The rise of Web Services has brought renewed interest to an old topic: language-neutrality. Similarly, Microsoft's .NET Common Language Runtime has promised to do the same thing for cross-language development that Java's Virtual Machine did for cross-platform development.
However, Web Services only address the problem of inter-process communication, and .NET gives up much of the platform-neutrality that Java has achieved. But there is another alternative, which up until this point has not been seen as a coherent initiative with a singular goal. Dozens of open-source projects have sprung up to deal with the problem of integrating Java with other programming languages. There are many ways to effect this integration, but the two most common are to write an interpreter for a language in Java, or to write a compiler for that language which produces Java bytecode. These two techniques have the power to make Java the lingua franca of the open-source programming world.
This book is designed to be a world-wind tour through many of the key projects that deal with Java integration. It will highlight the important features of each project and demonstrate how they can be used to simplify some problems for which Java has no built-in language support. It will attempt to unify these projects, at least conceptually, and fit them into a larger framework so that they can be used transparently, with little or no "glue" code. Finally, it will test the degree to which each target language can be seamlessly integrated with existing Java code, and will evaluate the performance impact of this integration.
This book is designed for Java developers who either need to integrate their projects with components written in another language, or who wish to leverage the strengths of another programming language to simplify their own work. It will also be beneficial for Java developers who wish to branch out and learn new programming languages. Lastly, I think this book will do a good of convincing developers who have resisted compiled languages like Java and C++ that the scripting languages that they prefer can be more powerful when integrated into a more structured language like Java.
Continue on to Chapter 1: Dynamic Languages Grow Up.

