Code Fusion Version 1.0
Manufacture: Cygnus Solutions
Price: $299 US
Reviewer: Daniel Lazenby
Code Fusion is Cygnus' next step in providing Linux developers with an integrated C, C++ and Java tool suite. The Code Fusion environment includes an ANSI/ISO C compiler, an ANSI Tracking C++ compiler and a Java compiler. A linker, build utility, debugger, source browser, an interface to version control systems, plus some other utilities are also included in this IDE (integrated development environment). Could this be an IDE for the masses?
Code Fusion is an integration of two other Cygnus products: Source Navigator and Cygnus Insight (also known as GNUPro Toolkit. Each of these products has been reviewed in Linux Journal.) The integration of these two products provides a very usable integrated development environment. A primary advantage of the Code Fusion IDE is its quick visual access to project files, commands and build configuration files. Another positive attribute of Code Fusion is the compiler. It has been optimized for the Intel Pentium processors. Some benchmarks indicate a significant improvement in compile speeds. Compiles of my sample C, C++ and Java code went very quickly. Unfortunately, my code was too short to get a good measure of the compiler's true speed improvement.
In addition to the C and C++ compilers, Code Fusion includes a GNU Compiler for Java (GCJ/gcj). GCJ is a front end for the gcc compiler. GCJ accepts .java, .class, .jar and .zip file types. Using the -C option, gcj makes .java files into .class files. GCJ is capable of natively compiling both Java source and bytecode. More information on the gcj compiler is available at http://sourceware.cygnus.com/java/.
Code Fusion version 1.0 GCJ is compatible with JDK 1.1 and includes some JDK 1.2 functionality. Several pages of the manual are devoted to listing the specific Java 1.1 and 1.2 classes/methods/fields that are/are not included in the distribution.
Opening a Java project with Code Fusion provides the same kinds of access to Java information available for C and C++ projects. For example, the Source Navigator's Symbol Browser provides a visual representation of a Java project's files, classes and methods. Selecting a file, class or method opens the Source Navigator's Editor Window. Within this window are four browsers, an editor and search tools. A GUI compiling function is included within the Source Navigator portion of Code Fusion. Insight, Cygnus' GNU debugger, may also be used to debug compiled Java programs. I found this tool very useful in understanding some Java code I had acquired.
Code Fusion's target audience seems to be the experienced individual developer. I feel the Code Fusion IDE code-building conventions may not make a lot of sense if you are not already familiar, or comfortable, with building applications from the command line. The example application-build tutorial provides adequate guidance on what IDE dialog boxes to use, how to access the IDE dialog boxes and what data are needed to build the example code. There is little guidance as to why you are using a dialog box or why you are entering the requested data. I feel this understanding can come only from having learned to do it the old-fashioned way.
As with Source Navigator, Code Fusion's Version Control is based on RCS, CVS, SCCS and the Clear Case product. There were some version control functionality bugs in my review copy of Code Fusion. I could only check project code in or out. I got error messages whenever I tried to use any of the other IDE version control functions, so I contacted Cygnus about the symptoms I was receiving. Cygnus promptly informed me they were aware of the symptoms and were in the process of testing a fix. This should be fixed by the time this review is published.
Code Fusion v1.0 supports Caldera 2.2, Red Hat 5.2/6.0 and SuSE 6.1 Linux distributions. This product requires a Pentium with memory—Cygnus recommends 64MB. This product also needs about 200MB of free disk space to install. My Caldera distribution mounts the Code Fusion CD-ROM as a non-executable device. A README file containing guidance on mounting an executable CD-ROM device is included.
Installation is divided into loading the application and configuring it. There is a CLI and a GUI install script; I chose to use the GUI script. Code Fusion came with a preprinted CD asset key. The asset key-based install means you need one licensed copy of the product per developer. Installation involves entering the asset key, typing in the installation directory and choosing the type of install.
After entering the asset key, you are presented with a graphic of the file systems and told to select your install directory. At the bottom of this graphic is a text field displaying the default path. The release I reviewed would not respond to a directory selection—I had to type over the contents shown in the directory text field. A custom install option provides the means of selecting which Code Fusion files or components to install. Two status bars are presented once the install begins. One bar indicates which of the seventeen files is being installed, the other indicates the file's install progress. The install is not complete until a couple of environment variables are configured.
I once saw the phrase “Here there be dragons” on a museum map. The “Here there be dragons” phrase truly applies to the environment-variable configuration step. These variables must be configured prior to running Code Fusion. In addition to adjusting the standard PATH variable, two other environment variables need to be established to ensure Code Fusion uses the proper libraries in the proper sequence: LD_PRELOAD and LD_LIBRARY_PATH.
The LD_PRELOAD variable points to a library that must be loaded before any other shared libraries are loaded. There are two ways of establishing the LD_PRELOAD path: one is to include the variable in one of the traditional environment setup files, the other is to use the /etc/ld.so.preload file. Here is where the dragon lived. A simple typographical error in this /etc/ld.so.preload file raised havoc with my system, the likes of which you don't want to experience. I tried both maintenance and shell boots; neither of them were of much use. I found it easier to restore my system from a backup I had made just prior to starting the install. The next time I got to this environment variable configuration step, I placed the LD_PRELOAD variable into a test user's .profile. This way, I could localize any problems to a single user ID. Needless to say, I was triple cautious when it came to setting up the LD_LIBRARY_PATH. The test user ID .profile was used for the first implementation of this variable as well. Once I had proven to myself it was safe, I moved the variables to an environment file, where they had a more global effect. I did not use the /etc/ld.so.preload file. Be sure you can recover your system before you start configuring these environment variables.
Special Reports: DevOps
Have projects in development that need help? Have a great development operation in place that can ALWAYS be better? Regardless of where you are in your DevOps process, Linux Journal can help!
With deep focus on Collaborative Development, Continuous Testing and Release & Deployment, we offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, advice & help from the experts, plus a host of other books, videos, podcasts and more. All free with a quick, one-time registration. Start browsing now...
- Hash Tables—Theory and Practice
- Making a PHP Site on Linux Work with a Microsoft SQL Server Database
- The Ubuntu Conspiracy
- A First Look at IBM's New Linux Servers
- Vigilante Malware
- Disney's Linux Light Bulbs (Not a "Luxo Jr." Reboot)
- Vagrant Simplified
- Dealing with Boundary Issues
- System Status as SMS Text Messages
- Bluetooth Hacks