How much longer can Moore's Law continue to hold true?
Moore's Law is based on the observation made in 1965 by Gordon Moore, co-founder of Intel. Moore observed that the number of transistors per square inch on an integrated circuit had doubled every year since the integrated circuit was invented. He also predicted that this trend would continue for the foreseeable future. Today, nearly 35 years after Moore's initial observation, CPU density, along with CPU speed and processing power, continue to double every twelve to eighteen months. Most experts, including Moore himself, expect Moore's Law to hold for at least another two decades.
What is the best Interactive Development Environment (IDE) for developing software?
We don't really have a single favorite IDE it really depends on what sort of code you are trying to write and in what environment. For general purpose IDEs, two favorite tools are Sun's Java Workshop for developing in a Solaris environment and Symantic's Visual Cafe for Java for developing in a Windows environment. For C or C++ environments, both companies have sister tools with similar names . Imprise's JBuilder would be our pick for Windows development where the application had a large amount of database connectivity. Finally, if there was a large amount of legacy Unix/X-Windows code, we would choose UIM/X because of its excellent X-Windows to Java conversion utility. Additional information on these and other development tools is provided in Chapter 15.
How long does it take to learn Java?
Java was designed from the ground up with simplicity in mind. A week of training is typically sufficient for a C or C++ developer to get started with Java programming. Programmers whose experience is limited to less-similar languages such as COBOL or FORTRAN will usually take longer to learn Java and several weeks training will probably be required. In either case, learning Java syntax is much simpler than learning object-oriented design, the subject of the next question.
How long does it take to learn object-oriented design?
You will gain only a small fraction of the benefits of an object-oriented language such as Java if your software architects and designers do not understand object-oriented design principals. It takes between six and eighteen months for a good procedural developer to become a good object-oriented software architect, and time alone is no guarantee.
Shouldn't I wait for Java technology to mature before I start considering it for large software development projects?
As with any new technology, Java is climbing the maturity curve and may not be suited today for every large software project you will undertake. However, the explosion of the Internet has caused Java to mature much faster than it would have otherwise done so. If you are not at least considering Java today for your enterprise-wide applications, you are probably hopelessly behind your competitors who are already figuring out how best to use and benefit from Java technology.
How fast is a real-time operating system?
While there is no precise definition, a typical real-time operating system is able to respond to interrupt signals with a worst case latency of fifty microseconds or less. General purpose operating systems, such as Windows NT or Unix may have an interrupt latency up to five hundred microseconds or more. For a typical computer operation, it may not matter if the computer responds within fifty or five hundred microseconds. However, many classes of control systems, ranging from telephone switches to modern anti-lock brake systems, require interrupt signals to be processed within precise deterministic time periods or an essential process i.e., stopping a car will not function properly.
Can a RAID-5 disk configuration contain more than (fewer than) five disks?
Yes. Most RAID-5 systems support as few as three disks (two data plus one parity) in a stripe and as many as several dozen or more. A five disk stripe is one of the more common configurations as it minimizes the data overhead while retaining plenty of space for parity information while not overtaxing log disks.
Doesn't a RAID 0+1 (mirrored) system cost twice as much as a RAID-5 system?
No. Assuming a five way stripe, a RAID-5 system already uses 20% more disk than a system of stand-alone disks. The additional cost overhead to move to a RAID 0+1 system is thus only 1.2 / 2 = 60%. These figures are for disk costs only, and do not include any additional controller costs.
Which tools would you recommend for source/version control?
A source/version control tool is a basic requirement of successful software development projects. Nevertheless, we continue to see many software development projects well underway without any such tool in use. So for starters, the first recommended tool is any tool that you have. Most Unix operating systems come with a bundled version of either SCCS (source code control system) or RCS (revision control system). Either provide all the functionality necessary to implement a basic source/version control system. The second recommended source/version control tool is the one, if any, that comes with your Integrated Development Environment (IDE). Many IDEs come bundled with some sort of source/version control tool. The only warning here is that you get what you pay for. Bundled source/version control tools may be stripped down versions of other products or may be simple afterthoughts to meet a check box on a marketing brochure. For instance, some IDEs have source/version control tools that, while integrated into the IDEs graphical user interface, do not have command line equivalents. Anyone who has ever handled configuration management for a large project knows that this is almost impossible with command line interaction that can be called from automated build (and other types of) scripts. One of the most innovative source/version control tools, and our favorite, is JavaSafe, from Sun's Java Products Division.
Which tools would you recommend for software stress testing?
Stress testing is a critical component of the Web-Centric Production Acceptance (WCPA) process described in Chapter 13. One of my favorite quick and easy tricks for stress testing web servers is the Lynx text-only web browser. Lynx is commonly available at freeware sites over the Internet. One of the little known features of Lynx is that it has a command line interface. It is trivial to write a simple script to call Lynx in a loop. Once you download a copy of Lynx, just run "lynx -h" for help in determining the appropriate command line options. Be sure to set the lynx cache to 0 or you will be defeating the purpose of your web testing. If you want something a little fancier to stress test your web server, WebLoad, from Radview Corporation (http://www.radview.com) is my favorite commercial web server stress testing tool. It does cost more than Lynx, but it's worth the cost.
What is a JavaBean?
JavaBeans are reusable software components written in Java. A more complete description of JavaBeans can be found in Chapter 17. Using an Integrated Development Environment such as Symantec Cafe, Imprise JBuilder, or Sun's Workshop for Java (see Chapter 15), you can customize JavaBeans parameters and visually manipulate them to create Java applets or stand-alone Java applications.
What is the difference between a Java applet and a JavaBean?
JavaBeans are designed to be easily reused and visually manipulated by JavaBean aware development tools. The JavaBeans API endows a JavaBean with specific component functionality, including: