The Mac thing:
Macs will (and have for years, dating back to pre-OSX days) allow you to share the applications you have installed on your machine so that another Mac user can run your software from their machine simply by mounting your drive, with the app, on their Desktop, and double-clicking that app. Similarly, you usually don’t have to “install” (or “uninstall” for that matter) your apps; just drag them from any volume that has them on 'em to your own hard disk and you’re good to go. Makes upgrading to a new computer very easy, just copy all your old apps from your old computer’s HD. There are exceptions, I’ll address at the end.
It works because:
a) No registry, as mentioned before;
b) Mac apps hardly ever use full-blown file paths to denote where to find other components. None of this C:\Documents and Settings\Users\AHunter3\ApplicationX\library.dll stuff. The old-world style apps (which include all pre-OSX apps but still applies to some modern OS X apps) may need to reference files outside of the application file itself, but they either do so by conjuring it up by file type code and file creator code (in which case it doesn’t matter where it’s at as long as it’s somewhere on the computer) or by relative path (the startup disk’s System Folder’s Preferences folder, wherever that may happen to be; or the MyProgram Extensions folder which should be in the same folder as the application file itself, wherever it may be). The more modern OS X “.app” package, on the other hand, is a folder masquerading as a file; to the Finder (and the end user) the executable application and all of its support files appear as a unitary object; wherever it goes all its luggage goes with it.
c) As you can surmise from these descriptions, Mac applications have tended to not rely on batches of library files that other programs also share the use of. Tended, I say, rather than “do not” (see exceptions below). This means our apps may take up more room and routines may be installed in multiple places to accomodate multiple apps that use those routines).
d) Exceptions: The old OS 9 (8, 7,) world had folders of files that had “INIT” or other libary code in them, the Extensions folder and the Control Panels folder of the System Folder. These were closely comparable to Windows .dll files. A great manu such files were Apple-installed (many apps would share their use but the apps’ installers didn’t have to put them there, they’d already be there) But many programs would in fact install their own battery of such files and often the apps would not run without them. You’d need to copy these as well as the application file or folder. They usually had long, decently self-explanatory names (“Norton Shared Lib” rather than FNUNSHL.dll) and more often than not got dumped into a subfolder clearly named for the app that had dumped them there, but any way you cut it, you needed 'em. As for OS X, such things are less common, but some programs need to install low-level kernel extensions or other code that needs to run in admin space rather than user space. For those we do have installers, (admin password required to install), and such apps may not work if you simply copy the app itself to another computer. Finally, a few tightwad software companies with intrusive attitudes have deliberately done things over the years to make it less possible to simply copy an app to a different computer in order for it to function there; their motivation is strictly piracy-reduction, user convenience be damned. <cough>Quark<cough>.
In short, yeah, we’ve always had something pretty close to app virtualization.