How I do development...
My development environment is a multi-machine setup, running Windows
XP and Vista, and sometimes Mac OS X as my 'desktop' machines,
connecting to a Linux box as a server. I use SecureCRT (a really good
terminal program) to connect to the Linux box shell prompt. I use
Exceed as an X display server on my Windows boxes (or the X11.app on
Mac OS X) when I want to see what JBidwatcher looks like running on
Linux.
Actual development is done in JetBrains IntelliJ IDEA.
It sounds sappy, but it completely changed how I do Java development.
I don't know if I'd have stuck with Java without it. The easy
refactoring capabilities have made JBidwatcher 2.0 possible. I use it
on my Windows boxes, and my Mac OS X laptop, and keep everything in
synch using a subversion server. Fair disclosure, they granted me an
Open Source license for use in developing JBidwatcher. It will really
hurt, should I ever no longer qualify for it, though, because I'll
have to buy myself a copy. It's that kind of tool.
All builds are done from the Linux box, using Apache Ant and Launch4J.
The Mac OS X version is created with tar and gzip. The Windows version
is stitched together by Launch4J. The Linux version is the .jar file,
straight up. Recently, I've started building a Windows Installer, but
that requires downloading the Windows executable to a Windows-based box,
running an installer generator, and uploading it back up.
Many of my old boxes as described below have gone the way of all such
old hardware. Drives freeze, motherboards and CPUs die, and sometimes
they just get mothballed in the process of a move. I no longer have a
Solaris machine, and neither I nor anyone I know have tried it on FreeBSD
in a while. However, I regularly get emails from OS/2 (eComStation) users
who note that it still works there. I do have several Mac's, two Windows
boxes (XP and Vista), and two Linux boxes (both running Redhat/CentOS).
Old setup as of September 7, 2002... Very out of date in 2008.
My development environment is a dual-machine development
environment, running Windows 2000 as a 'desktop' machine (acting
mostly as a smart terminal), connecting to a Linux box as a server. I
use SecureCRT (a really good terminal program) to connect to the Linux
box shell prompt. I use Exceed as an X display server on my Windows
machine, and Samba on the Linux box to export my home directory as a
network drive. Then when I want to run and test on Linux, it shows up
as an X window. When I want to run on Windows, I use the network
mapped directory to run the exact same binary, so I don't introduce
any changes in making it build.
From the Linux box, I use a shell session to do the rebuilds ('make
clean; make jar'), and run the app under Linux. I use XEmacs
remote-displaying to the Windows machine to do my actual coding. The
compiles are done using 'jikes', a REALLY great Java compiler that is
super-fast, and open source from IBM. I have a copy of the IBM JDK
for Linux and the Sun JDK for Linux and I use both to make sure it
runs cleanly. Under Windows, I use the normal Sun JDK, although I've
got 1.3.1 and 1.4 installed, so that when people report bugs I can
test it. I really should have the 1.2.2 JRE still, but I didn't
reinstall it the last time I upgraded.
I've been developing like this for many years, and so it was a
pleasant surprise when I found out that this is nearly identical to
the development environment of most of the engineers at my new
job.
I also have a Solaris box, and a MacOSX box on my home network that I
can copy the .jar file to and test on, before doing anything like
making a release. (The MacOSX box is new, I sniped it off eBay using
JBidwatcher about a month ago, unfortunately AFTER my 0.8 release.
0.8 isn't very kind to OSX users, and I need to clean that up for my
next release. (Ed.Note: I've cleaned it up some, it's still not
perfect)) A friend of mine does FreeBSD testing on an occasional
basis, but I'm not claiming it'll regularly work on that until I get a
box in my place set up running it.
All that is only because I'm doing the releases, for just doing
development you don't need all that, but if you really want to make
write-once, run- anywhere code, you need to be confident that it's
going to live up to that claim. That's why I have all those
'puters.
by: Morgan Schweers