This month, we are looking at the open-source options available for software development in the enterprise. There are, of course, plenty of closed-source development systems, Microsoft’s .NET being the most obvious example, but what is out there for developers who want or need to use free (or Free) tools? We are not talking about just producing open-source software, for which any development environment will do, but creating enterprise-level applications without paying for the tools. The subject falls naturally into two distinct areas: programming languages and their associated interpreters/compilers, and utilities to aid programming.
It is only a slight exaggeration to say there are almost as many programming languages as there are programmers, with more variants being developed daily, but the enterprise software marketplace tends to stick with just a few for most of its needs. Remember that while Visual Basic, .NET and the rest are employed by many companies, in this column we are only interested in tools available at no cost.
Probably the most popular free development tool available currently is Java, which is not open source. Sun controls its source code – though there are rumours that the company is considering making it open source in the near future – but it is completely free to use and deploy.
Java is a totally object-oriented language, capable of building enterprise-level solutions. One of Java’s strongest selling points has been its cross-platform execution capability, dubbed ‘write once, run anywhere’, and that’s still a great attraction for many people. However, let’s face it, most enterprise environments are relatively homogeneous in terms of the platforms on which a particular piece of software will be required to run, so the fact that code could run on other hardware is not so important.
What enterprises care much more about is that Java is by now a stable, well-known language with plenty of developers available. Gone, sadly, are the days when anyone who would learned basic Java syntax could command a massive salary. Java has largely taken over from C++ as the object-oriented language in which many large systems are being written, except where absolute speed is an overriding requirement (we will talk about C and C++ a little later.) This speed issue arises because Java is an interpreted, rather than fully compiled, language, though its adoption of just-in-time compilers and other optimisation tools have made those of us who remember the language’s woeful slowness in the early days rethink our prejudices.
Java is supplied with a set of class libraries that can provide a full graphical user interface, which makes it suitable for developing user-friendly full-screen programs, as well as those that run from the command line. The Java interpreter is completely free and can be downloaded from Sun’s website, although nowadays most operating systems come with a Java interpreter already bundled. If you are looking for a powerful, object-oriented development language, Java is well worth considering.
C is the language in which much of the original Unix operating system was written, and in which most Unix utilities are still coded. C begat C++, an object-oriented version of the language that’s still used by many commercial application developers. Objective C is another variant, historically connected to NextStep so that these days it is mainly used to develop applications for Mac OS X. All three languages are fully compiled, and the compiler favoured by most people is GCC, the GNU Compiler Collection, from the good people at the Free Software Foundation (GNU). GCC is actually, as its name suggests, a collection of different compilers – including ones for C, C++, Objective C, Fortran, Ada, and even Java – which means that you can compile your Java code into machine code for a specific machine, resulting in a speed increase at the expense of cross-platform compatibility.