I was speaking with a fellow techie the other day beside the virtual water-cooler (amazing this cyberspace) – he was really excited about the latest virtualization technology, namely Application Virtualization. The conversation went something like this:
Virtual App Guy: The cool thing is the hardware is abstracted; the application is abstracted from the underlying hardware, so it will work on different machines seamlessly.
TG: Fantastic, just like Java.
Virtual App Guy: But the best part of this new hardware abstraction is that you don’t need to do regression testing any more
TG: Where did you hear that?
Virtual App Guy: It’s on the website.
TG: That’s really cool – I’ll let the java guys know about that – they always hated doing regression testing.
Virtual App Guy: Another really cool thing is that the application is protected from the underlying operating system – it’s like in a “virtual bubble” (he had to leave the phone down to do the air quotes with both hands)
TG: That’s cool – so it runs in its own “sandbox”
Virtual App Guy: Exactly – that’s a good name for it
TG: Wow – groundbreaking
Virtual App Guy: So it’s great – you can package everything you need into one file and send it down to the user over the network so they can run it.
TG: So it like putting everything into a big cup and sending it in one go
Virtual App Guy: More like a jar with a locking cap, because you can protect it with security so not everyone can open it.
TG: A jar really? – that’s a good name.
Virtual App Guy: Maybe I should copyright it.
TG: So it’s free then ?
Virtual App Guy: No, you have to pay to use it
TG: So you want me to pay for something that’s going to only work on a proprietary virtualization layer, you want me to pay for it and it does the same thing as Java ?
TG: Hello ?
I think perhaps I was a bit unfair to my buddy, but I can’t help myself. So where does Application Virtualization fit in ? Let’s examine some of the claims:
Nothing new here compared to Java, apparently this ends application conflicts and regression testing.
I can’t say I agree with this, in the case of ISV generated code you’re always going to want to regression test and with respect to application conflicts, most enterprise customers that I know have separate hardware for their enterprise applications, because they need maximum performance and physical isolation from other applications. The fact that you can have dependencies on other applications means that they can change as well – is this sounding familiar?
I would however agree that having a standard “bubble” to run your packaged applications in means that you have much less testing to do when deploying a new or updated version as DLL hell only needs to be defeated once.
User Mode execution.
Once again, nothing new here compared to Java, but for standard packaged applications it does allow you to isolate the underlying OS from badly written code. From an ISV perspective you’ve already got this technology in a number of forms.
As anyone who has ever used traditional “fat” Java clients over the WAN will tell you, they’re slow, while Java Consumer JRE addresses this issue fairly well, it doesn’t take from the fact that this is an excellent technology that allows the virtual application to start running as soon as it has the minimum amount of code in memory.
64-bit OS support
Execution on thin clients
Thin clients – like phones and stuff?
Define dependencies other applications.
Package it once, deliver to many.
What did my buddy call it again – a jar?
Decouples applications from the operating system
And couples them to proprietary virtualization software and advantage to be sure, but as an ISV would I expect my customers to pay for it?
At the moment with most of our customers needing browser based applications that can be accessed from anyplace: I don’t think this is a killer app for ISV’s. If a customer needs true platform independence – I’d still recommend Java.
However, if you’re a MS Windows house with hundreds of different flavours of machines, lots of versions of the same applications and don’t have the IT budget of a small country, then I think there is a lot of value in application virtualization: you’re probably not going to be running your core business systems on it anytime soon: but your day to day productivity applications that probably consume 50% of your ITS resources between deployment, support, management and maintenance – I think those will work quite nicely in this new virtual world.