I get this question less often recently than I used to but it still shows up.

  • Can Application Streaming be ported to Apple Mac or Linux?

The question is usually based on the idea of wanting to run XenApp published streamed applications in an isolation system on the foreign operating system.  That is, to bring streamed Windows applications to the other system.

You can insert your favorite operating system on the above list, but the answer remains the same, no.

APPLICATION ISOLATION is about changing things and lying to applications so that they think they are doing one thing when they are really doing another.  Fundamentally though, the executed application is still a “native” application for the operating system.  The executed Windows based application is still a Windows based application and it will not run unless something exists below to satisfy the Windows APIs.  The application won’t even load unless the Windows loader brings it into memory.

Can you use App Streaming on Mac?  SURE!

Insert your favorite MACHINE virtualization system such as Parallels, install Windows into the virtual machine, install the streaming client (aka: offline plug-in) and then run all the applications streamed that you want.  This works fine!

Is it “streaming” to the Mac?  No!

I see people around Citrix doing this all the time.  They run streamed MS Outlook 2007 and happily check their email and do many things of their job, all day long with lots of apps.  Many of them spend most of their day inside the Windows environment of the Mac machine.

In this usage, I call the MAC the …

  • THE WORLD’S LARGEST WINDOWS LOADER!

For the non programmers in the room, the “loader” is the component of the operating system that is responsible for bringing the operating system to life.  The quick version goes something like this:

The machine powers up and and a whole bunch of things happen, but eventually the hardware kicks off the machine loader from ROM in “real mode” at address CS:IP FFFF:0000, this kicks starts the BIOS.  The BIOS h has the job of finding a 512 byte sector of disk, loading it into memory and “jumping” to it.  From the BIOS perspective, at this point the machine is “booted”.  The 512 byte initial loader, brings in a bigger loader, which brings in a bit more, which brings in a primitive part of the operating system, which brings in some “boot” device drivers such as “disk” boot load device drivers, which brings in more of the operating system, which loads more device drivers, like NTFS, enables paging and does a bunch more stuff until you eventually get a machine, running and ready to do useful work.  You can make a career out of any of these activities.

In my mac example without machine isolation, the Mac must boot first and once it’s done, it loads the virtual machine thingie which “powers on” the x86 box, which does a bunch of things, which then runs from “ROM”, which is really “RAM” and jumpts to a “real mode” address FFFF:0000 and then boots the Windows machine.

This continues on until the Windows box is ready to do work => ergo, the Mac is the worlds largest Windows loader.  While boot sequences are fun, I am way off topic.

Can you run App Streaming based apps on a non-Windows platform?

Answer the question with a question:

  • Can you run WINDOWS based applications on a non-Windows platform?  Answer no.

Sometimes this answer receives a follow up: Have you considered adding this capability?

Now, a white-board is needed.  We use a white-board because nobody has chalk-boards anymore.  Frankly, I prefer the old style because they could be readily and reliably erased, but I’m digressing away from the topic.

How much slower does a streamed app run compared to a locally installed app?

Answer: They are the same!  CPU wise, it’s the same.  A process is a process is a process and program code is program code.  The isolated app runs NATIVE on the machine.  It is loaded by Windows and the app uses Windows to do things that apps do with Windows.

Eventually, the program may call a Windows API, such as RegOpenKeyEx or CreateFile. When this happens, the program execution takes a brief side journey through the isolation system where the parameters to the API are “adjusted” to make the application run inside of an “isolated environment”.  This is how the layers of glass are implemented.

The application is still an application and it is still dependent on the Windows machine for running the application.  Things do get a bit more complicated because even DOS apps running on the Windows machine can be isolated (link), but fundamentally, Application Isolation “adjusts” the execution of applications that are running native on the Windows machine.

Finally, the question can be answered: You can’t run “isolated” Windows apps on a non-Windows machine, so there is no point is worrying about running App Streaming under MAC or Linux or others.

What about App Streaming to Windows XP Embedded?

Sure, that will work and this has been done.

What about App Streaming to Linux under Wine?

Sounds like an interesting activity.  I’m quite sure it won’t work, but there could be other neat things.

Enjoy!

Joe Nord

Citrix Product Architect – Application Streaming and User Profile Manager