For some time now I’m using a laptop running 64 bits Server 2008 for mobile software development. The main reason for picking that particular OS were the great virtualization possibilities. In a more detailed post I described setting up the machine and working with the diverse network configurations I met on the road. The machine still works great, the only disadvantage is the relatively long time it takes to boot or shutdown.
This time my desktop needed a repave. As everybody seems to be wild about Windows 7 I decided to give that a spin. I can be short on Windows 7 itself. It is really great ! The usual bundle, VS 2008 with MVC and SL, Resharper 4.5, Visual SVN, runs without a glitch. Very smooth, very fast. Just like my server 2008 experiences. Both OS’s share the same kernel and this shows.
Another great thing thing is the overall navigation in Windows 7. The way Windows dock is subtly different but does save a lot of mouse movements. Good in the battle against RSI. And the quality of zooming, most notably in IE8, is terrific. Very good against eye-strain. It will keep an older developer like me up and running. My favorite new feature is the “Close all but this” Aero Shake. Grab a window bar with the mouse and shake it. Hilarious ! Alas, VS doesn’t understand the gesture
As I work on a variety of projects I do need several virtual machines. At least one for every flavor of database server. This drove me to Server 2008 64 bits with Hyper V. Also in Windows 7 virtualization is important. It’s not as far as Server 2008 yet but on the longer run it is going to go much further. Virtual XP mode is a good demonstration of that. All is very very beta, not all online documentation is complete. An overview of my experiments:
- Install Virtual PC beta
- Install Virtual XP. This installs a complete configured virtual XP sp3
- Start Virtual XP, a complete XP desktop shows up. With shared USB drives and full network connectivity to the host, the LAN and the internet
- Install RAIL in virtual XP
- Reboot Virtual XP
The Virtual PC manager looks familiar
As an experiment I tried hosting an existing Hyper-V hosted virtual machine. The vhd is accepted the machine did boot but the screen and all connections remained blank. No wonder, Hyper-V is based on a hypervisor which lives between the hardware and the OS itself. The integration services of the virtual machine are based on this hypervisor. Windows 7 does not have a (compatible) hypervisor yet. But Virtual PC for W7 does require a processor with enabled hardware virtualization support. And the future will bring more with names like MED-V, read more here.
One of the things W7 already does bring in the beta are virtual applications. The application itself will actually run in a virtual environment but presents itself as an application on the host OS. W7 has virtual XP applications. With RAIL installed shortcuts in the all users folder of XP are published on the host OS. I tried this with the worst application I could find. It is my bookkeeping program, an old MS-DOS Clipper application. Clipper applications are horrible. They think they own the whole machine and they are throwing endless streams of BIOS based IO requests. As a result a lot of keystrokes are not recognized. As the application is polling just one executable can drive the CPU load of any processor to 100%. The only good about them is that they do are not multi threaded, you will lose only one core running them. These monsters do work under XP, they don’t under Vista.
I set up a shortcut to the XP command prompt and one to the Clipper app
Both appear on the W7 start menu
And now I do have an XP application which (visually) run as a W7 app.
<Small slightly off-topic rant>
The only thing I do not like in W7 (so far..) is the default desktop. As a biologist and aquarium keeper I recognize the fish as a male of Betta splendens, the Siamese fighting fish. They are very aggressive, males will fight each other until one of them dies. Even when the loser gets the opportunity to escape they usually will not survive. A common sight in aquarium shops are specimens who are pale, wrinkled and hardly moving. Not a very good metaphor for an OS.
Wikipedia has a nice quote why it could make sense: “The Siamese fighting fish has been used as the default background in the first official beta version of the Windows 7 operating system, in an apparent reference to the name “betta”. This could also be in reference to the fish’s ability to survive in smaller, less advanced aquariums, much like Windows 7 is supposedly designed to work better on lower end computers.”
Could be, but my favorite would be a kwikwi then. Which will survive anything, accepts everything as food, can walk over land in case the puddle falls dry, and is a very gentle and social creature. It is also considered a very tasty consumption fish in South America.
</Small slightly off-topic rant>
When starting the Clipper app it does work functionally, all keystrokes are recognized and the app does not crash. But it’s not usable, there are long lags between a key press and a program response. (It does work smooth inside virtual XP). But the technique itself seems stable.
The idea of virtual applications does work. Running normal XP apps, like IE 6 or MSWord 97 is smooth. But why is all of this important to us as software developers ?
- Get rid of legacy apps and legacy parts/ features of the OS. In case you need them, run it in Virtual XP. Give us a clean and rich environment.
- The end of the OS as we know it. A lot of old Windows apps talk to each other. Using OS based protocols like DDE and COM. Or one app which fires of another app. A virtual running app cannot rely on other apps or specific OS features being available. All communication has to be done using formalized channels like WCF or REST
Well, so far I have scratched the surface. I hope it is enough to get you interested in upcoming virtualization features.