Date: Mon, 31 Aug 1998 22:41:35 +1200 (NZST) From: Michael Hamilton <michael@actrix.gen.nz> To: lwn@lwn.net Subject: Borland JBuilder Command Line Tools and Wine-980822 I've been doing some Java development with Xemacs, JDK-1.1.5 and swing-1.0.2 under Linux. The major problem with using Linux was the lack of a fast Java 1.1 compiler. Because Sun's JDK compiler is written in Java it is quite slow. Borland's Win9x/WinNT JBuilder 2 Professional Edition compiler is more than 10 times faster. Jbuilder2 was installed in my Win98 partition, but I much prefer working in Xemacs under Linux, so it was hardly ever used. Under Linux I just tried to avoid rebuilding the entire Java application unless I really needed to. But I've now found that with a small tweak to Wine-980822 I can use the JBuilder 2 Professional Edition compiler under Linux. Under linux the Borland compiler built 100,000 lines of Java in about 1 minute. Under Win98 Jbuilder built the same code in 40 seconds - but I suspect the difference may be due to the time taken starting up Wine. The last time I did a full -g build using the Sun's JDK compiler I think it took about 10 minutes. This is all on a PII 266 with 128MB of RAM (Linux 2.0.34, 2.1.119, libc 5.4.44). Here's how it was achieved: You can use both the Borland bcj.exe and bmj.exe command line tools using wine as follows: wine "/mnt/dos/c/jbuilder2/bin/bmj.exe \ -d G:\src \ -classpath G:\src;G:\src\swing.jar;G:\src\classes.zip \ Main.java" Note that the enclosing quotes are important. The -d makes sure bmj knows where to place its dependency files. To get the Jbuilder commands to work I had to patch wine as follows: ----- cut here ----- --- files/dos_fs.c~ Sun Aug 23 05:21:07 1998 +++ files/dos_fs.c Sun Aug 30 13:44:40 1998 @@ -802,7 +802,7 @@ /* If the drive is case-sensitive we want to create new */ /* files in lower-case otherwise we can't reopen them */ /* under the same short name. */ - if (flags & DRIVE_CASE_SENSITIVE) *p_l++ = tolower(*name); + if (0) /*flags & DRIVE_CASE_SENSITIVE)*/ *p_l++ = tolower(*name); else *p_l++ = *name; name++; } ----- cut here ----- The patch comments out the tolower() call on wine file name creation. The tolower() was causing .class files to be created with lowercase names which would cause the class names to fail to match when loading them at run time. Finally, here are the relevant lines from my /usr/local/etc/wine.conf [Drive C] Path=/mnt/dos/c Type=network Label=WIN95 Filesystem=win95 [Drive G] Path=/home/michael Type=hd Filesystem=unix Label=unix --- Michael Hamilton (http://www.actrix.gen.nz/users/michael)