************************************* * * * DB/C Newsletter * * May 1999 * * * ************************************* News and Comments The one event in the computer industry that caught my eye this month was the release of the Palm VII - the Internet-connected (via national radio network) Palm Pilot. This Palm model looks to be a really big success. Most importantly, it will spawn whole new categories of applications. I've had my Palm III for almost a year now and I love it. I was surprised by how easy it is to use. With a battery life measured in weeks instead of hours, it isn't a hassle at all. If you don't yet have a Palm Pilot, I suggest you look into getting one. This month we take a look at DB/C JX and Java performance. As you are probably aware, Subject, Wills & Company has made a major commitment to the Java programming language. DB/C JX is just one of several Java initiatives within SWC. Don't misunderstand us though - Subject, Wills & Company is absolutely committed to supporting and enhancing DB/C for many years to come. As I said a few months ago, software is forever. DB/C source programs don't wear out. As we move to a subscription system for support of DB/C products, there will be continuing income to SWC as long as DB/C remains in use. We foresee this lasting for many years. This month we've included one new question that will be added to the DB/C FAQ web page. This question is placed first in this month's newsletter because it is particularly noteworthy. don.wills@swc.com ***************************************************************************** DB/C Frequently Asked Questions Question: We set the clock on our IBM RS/6000 running AIX and DB/C 9.0 to February 29, 1999. Whenever a DISPLAY *W occurs, the program stops running. Is there a solution or workaround? Answer: There are a couple of problems associated with February 29, 1999 in all versions of DB/C 9.0 (UNIX and Windows) and in the early versions of DB/C 9.1 that were created before May 1998. The problem you are experiencing is one of those problems. The problem did not exist in DB/C 8.0. The solution is to upgrade to the any release of DB/C 9.1 created after May 1998. ***************************************************************************** Java Performance For the past 15 years, Subject, Wills & Company has made DB/C available on as many operating systems as was practical. Different versions of DB/C have run on dozens of operating systems, including many UNIXes, MS-DOS, Windows 3.1, Windows 95/98/NT, Macintosh, DEC VMS, OS/2, SuperDOS, DG/AOS, and even Datapoint RMS. With DB/C JX and DB/C DX, we are now taking a different approach. DB/C DX 10 will be available only for Windows 95/98/NT/2000 and for the popular UNIXes. DB/C DX will not be available for MS-DOS, OS/2 or other operating systems. We will focus our efforts with DB/C DX on making it as fast as possible for those operating systems on which it runs. DB/C JX is now the truly portable version of DB/C. DB/C JX compiles DB/C source programs into Java class files. Thus DB/C JX programs can run in any computer system that provides a Java Virtual Machine. This includes mainframes, OS/2-based workstations, Macintoshes, most UNIX systems, some WinCE based hand-held computers, network computers (NCs), and many others. To maximize the portability of DB/C JX development also, we decided to write the DB/C JX compiler itself in Java, using good object-oriented design techniques. Unfortunately, the result is a compiler that runs much slower than its DB/C DX (and 9.1) counterpart. The compiler in DB/C JX 2.0 runs anywhere from 5 to 15 times slower than the DB/C DX 10 compiler. There are a couple of reasons for the performance difference. The first is the design. In the case of the JX compiler, good object-oriented design is very detrimental to the performance. We won't get into the details, but suffice it so say that in the future we won't take performance for granted. We are investigating redesigning parts of the JX compiler to improve performance, even if it means using non-object-oriented techniques. However, much of the blame for the poor performance has nothing to do with the compiler's design. Instead, it is a direct result of general Java performance problems. In the past year, IBM, Microsoft and Sun have all made claims that their respective Java Virtual Machine was the fastest available. As we are keenly interested in this topic, we decided to investigate. We compiled a very large DB/C program on various Java Virtual Machines using the compiler included with DB/C JX 2.0. The results are summarized in the following table. Times are in seconds and all tests were done with the initial and maximum Java heap set to 32MB on a 64MB Compaq 233 Mhz Pentium II running NT 4.0. Time Java Virtual Machine ---- ------------------------------ 54 Sun 1.1.8 JIT disabled 37 Sun 1.1.8 JIT enabled 45 IBM 1.1.7 JIT disabled -- IBM 1.1.7 JIT enabled 24 Sun 1.2.1 Classic JIT disabled 22 Sun 1.2.1 Classic JIT enabled 36 Sun 1.2.1 HotSpot A 'JIT' is a Just In Time compiler option available on most JVMs. A bug in the IBM JIT caused it to fail in our tests. Unfortunately, we were unable to locate a Microsoft JVM other than the one included with Internet Explorer. For comparison, the program compiles in about 2 seconds using the DB/C 9.1 compiler in the same environment. The size of the resulting .dbc file is 253KB. The JX compiler creates 3 .class files whose sizes are 823KB, 34KB, and 31KB. Several observations can be made. First, Java performance is improving with each successive JVM release. Second, the HotSpot technology from Sun doesn't seem to be very good. Third, there's a long way to go. And finally, the performance issues primarily show up in the compiler. The runtime performance of most DB/C programs (both JX and DX) is limited by file I/O speed. Thus the runtime performance of DB/C JX compiled programs, while still slower than DB/C DX (and 9.1), is acceptable. Don't let this article dissuade you from making the move to DB/C JX. Java is a great programming language with a tremendous future. And DB/C JX is a great transition tool to move your code base from DB/C to Java. ***************************************************************************** DB/C Class Schedule Class: DB/C DX and JX Language Fundamentals Date: July 7-9, 1999 Location: Oak Brook, Illinois For information, contact Judi Tamkevic at: voice 630.572.0240 email dbc@swc.com ***************************************************************************** Subscribing to the DB/C Newsletter If you don't already have the DB/C Newsletter delivered to your email address and would like to have it emailed to you when it is produced, just send an email message to 'request@swc.com' and put the line 'subscribe dbcnews' in the body of the email message (omit the ' characters). The newsletter will be delivered to the email address from which the message was sent. To stop delivery, put the line 'unsubscribe dbcnews' in the body of the message.