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.
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- Designing Electronics with Linux
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Dynamic DNS—an Object Lesson in Problem Solving
- Using Salt Stack and Vagrant for Drupal Development
- New Products
- Build a Skype Server for Your Home Phone System
- Validate an E-Mail Address with PHP, the Right Way
- Why Python?
- A Topic for Discussion - Open Source Feature-Richness?
- Tech Tip: Really Simple HTTP Server with Python
3 hours 39 min ago
- Reply to comment | Linux Journal
3 hours 47 min ago
- Understanding the Linux Kernel
6 hours 2 min ago
8 hours 31 min ago
- Kernel Problem
18 hours 34 min ago
- BASH script to log IPs on public web server
23 hours 1 min ago
1 day 2 hours ago
- Reply to comment | Linux Journal
1 day 3 hours ago
- All the articles you talked
1 day 5 hours ago
- All the articles you talked
1 day 5 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?