When I went independent, I bought a developer-grade desktop box based around the AMD Athlon64 X2 4800+. (I built the computer myself from components purchased at MemoryExpress. Highly, highly recommended. These guys know their stuff when it comes to hardware.) The CPU is a fantastic dual-core 64-bit chip. With a 64-bit chip, I figured that I might as well run Windows XP Pro x64 Edition. Overall it’s a been a pleasant experience. Software and driver support has been excellent for 64-bit Windows. I was able to get 64-bit drivers for everything, including the sound card – a Creative Sound Blaster X-Fi Platinum. The one downside was no 64-bit driver for my Logitech QuickCam Orbit MP. The webcam works great on my Centrino-based laptop (32-bit Windows). I bought a Logitech webcam because Logitech is a well-known company and has 64-bit support for their mice, keyboards, and even joysticks. I figured that they would support 64-bit Windows for their webcams too. Anyway, I have given up waiting for Logitech to provide a 64-bit driver and bought a Microsoft LifeCam Vx-6000, which was just released and supports 64-bit Windows. Very nice, high-res webcam and very inexpensive.

Most 32-bit applications run unaltered on 64-bit Windows thanks to the WoW layer – Windows on Windows. WoW provides a 32-bit to 64-bit translation layer for system calls. Amusingly, the 64-bit Windows DLLs live in c:\Windows\System32. The 32-bit DLLs live in c:\Windows\SysWOW64. There are a few problem areas to watch out for. Although WoW allows 32-bit programs to run on 64-bit Windows, you cannot run 32-bit DLLs in a 64-bit process. For example, Explorer Shell Extensions (such as TortoiseSVN or HardLinkShellExt) must be compiled for 64-bit, otherwise they won’t work. (You can always run a 32-bit version of Explorer to get to your 32-bit extensions.) Same thing with Internet Explorer, which is available on Win64 as both 32-bit and 64-bit. WoW works by intercepting 32-bit system calls (like a Win32 CreateFile) and translating them into their 64-bit equivalent. Drivers however run in the kernel. There is no interception layer to translate between 32-bit and 64-bit system calls. This is why you need native 64-bit drivers.

Advantages

So what are the advantages of 64-bit Windows?

IIS6 – XP Pro x64 is actually derived from the Windows Server 2003 codebase with relevant portions of Win XP ported over. This is a big plus for ASP.NET and web services developers, who will be deploying to Windows Server 2003. Running IIS6 puts you much closer to your intended deployment environment, including having your applications run under the Network Service account rather than ASPNET.

Potentially Improved Performance – Applications that do a lot of 64-bit integer arithmetic run faster when compiled for 64-bit. (e.g. Half-Life 2) If the application is compiled for the .NET Framework 2.0 using “Any CPU” (the default), it will automatically run on the 64-bit Framework and gain the performance improvement without requiring a re-compilation. (e.g. Paint .NET) If an application does not use very much 64-bit math and is recompiled for 64-bit, it could actually run slower because your pointers are all 64-bit and thus take up more space in your CPU caches. This is generally not a problem and if it became a problem, you could always run the 32-bit compiled version on XP Pro x64 via WoW64.

Larger Memory Space – This is probably the biggest bonus for developers. Each process is no longer limited to 4 GB of virtual memory. If you want to haul 100 GB of data into memory (and you’ve got the physical memory to back it up), you can do it. Crazy stuff, but possible if you’re writing crazy apps. Another advantage is, once mainstream motherboards support greater than 4 GB of physical RAM, we will be able to run more and larger virtual machines.

Disadvantages

So what are the disadvantages of 64-bit Windows?

Drivers

Although driver support is very good for new hardware, older hardware is more of a challenge. Most notable in this area is printers. A lot of printers simply lack 64-bit drivers and the printer vendors seem uninterested in writing 64-bit drivers for discontinued products. Hopefully Microsoft will step in and plug this gap. Until then, you have to be careful about which printers you buy. Also note that even a network printer requires a locally installed printer driver. So you won’t be able to print to any printer that doesn’t have a 64-bit driver. This sucks big time.

Less Testing Done

XP Pro x64 is much less common than the ubiquitous XP Home/Pro. So software/hardware vendors are doing less (or no) testing on XP Pro x64. Although the WoW64 layer is excellent, it is by no means bulletproof. For example, Office 2007 RC1 had a problem where the old-style window border would bleed through. For whatever reason, Office 2007 RC1 wasn’t always properly refreshing the top invalidated window border on XP Pro x64. I never saw this problem on 32-bit XP Pro. Since the Technical Refresh (RC1TC), I haven’t seen this problem on XP Pro x64 either. Another example is Windows Live Messenger. On x64, there is a spurious line through the icons beside your photo. Minor visual glitch, but livable.

Unsupported Software

There are some applications that cannot run on XP Pro x64 because they integrate too tightly with the OS. Examples include:

Windows Live OneCare: Currently only supports 32-bit OSs. Hopefully Microsoft releases a 64-bit enabled version soon. Windows Desktop Search was in this category for awhile, but Microsoft released a 64-bit version not too long ago.

Virus scanners: Support for XP Pro x64 is a bit spotty with anti-virus vendors (including OneCare above). Anti-virus is available for XP Pro x64, but typically from the smaller (though reputable) players in the field, rather than from the large well-known names.

Virtualization: Microsoft Virtual PC 2004 does not run on XP Pro x64. Microsoft Virtual PC 2007, which is not yet available, will support XP Pro x64 as a host, though not as a guest. You can always run Virtual Server 2005 R2, which supports 64-bit hosts. Unfortunately the UI is web-based and not ideal for desktop use. (i.e. You can’t drag & drop and you can’t share your clipboard. Adding new devices or mounting ISOs is very cumbersome.) If you don’t mind paying for software, VMWare Workstation is the way to go. It supports 64-bit hosts and guests and has better virtual networking, USB, and snapshotting support.

Conclusion

Do I regret installing and running XP Pro x64? Absolutely not. It’s a great OS and it works well as my primary OS. On the other hand, I’m glad that I’ve still got 32-bit XP Pro running on my laptop as there have been times (mostly wanting to print) when XP Pro x64 just couldn’t do it. Running XP Pro x64 has also been a good experience for development as I’ve learned the intricacies of the 64-bit Windows OSs. Would I recommend XP Pro x64 (or Windows Vista x64 for that matter) to a friend? It all depends on what they’re planning to do. If they’re a developer and don’t mind the odd incompatibility, absolutely. I think it’s a great OS. For your average person, I don’t think that 64-bit OSs are quite ready for prime time. Although software and driver support is very good, it’s still not as good as 32-bit Windows.