Microsoft should name their store the Exe(cutioner) Store, Apple uses the .app format MS uses .exe
People, stop saying that. First it's not true. .EXEs and .APPs are not the same thing at all for one thing, and this is in relation to the iOS platform which doesn't even use the .APP extension, it uses .IPA.
Now, as for ".app", you people have to realise that there is a difference between an "App" bundle (Application) and an Executable file. Open your Terminal (yes, don't be scared) and go to your /Applications folder on your Mac. Do an ls. You see a bunch of filenames with the .app extension right ? Well, wrong.
Those aren't files in a branch vs leaf kind of way. Those are directories. That's right, add the -ald parameters to ls now. Let's see what we get :
Code:
$ ls -ald Chess.app
drwxr-xr-x 3 root wheel 102 26 Jan 2010 Chess.app
Time for some Unix lessons for some posters here. Let's take the first entry in that listing, drwxr-xr-x. What does this mean ? I'm not going to explain it all, just the first letter, the "d". The first character in that string represents the type of filesystem entry for the listed resource. In this case, "d" refers to a directory (it could be "c" for a character device, "b" for a block device or just "-" for a plain leaf file). The .app is not an executable file, it's a directory. You can even cd into it to see what it contains or run the "file" command to confirm what I just told you :
Code:
$ file Chess.app
Chess.app: directory
$ cd Chess.app/
$ ls
Contents
Basically, ".app" bundles are that, bundles. The "Executable" is found much deeper in that directory hierarchy and has no extension at all (extensions are very DOS based ways of managing file types after all) :
Code:
$ cd Chess.app/Contents/MacOS/
$ ls
Chess
$ file Chess
Chess: Mach-O fat file with 2 architectures
The Mach-O fat file is an executable and this is what is akin to Microsoft's .EXE files.
And this is where in computer science we differentiate a little between Applications and executables. Applications are basically a whole, executables are a part. Applications are a set of executable code, data, interfaces, models. Executables or programs are just a bunch of instructions that are executed to manipulate this data. An Application might contain a bunch of executables run in a certain pattern to manipulate and present data to the user, it might just be a lonely executable that takes input and presents output.
These terms have been in use for the longest term in the industry. Some of you posters that came into "Computers" recently and with Macs being your only known platform (at least, from the way some of you post, it seems that way) should really refrain from trying to make comments on these things before you get a deeper understanding of what is going on here.
EDIT : Let's keep going a bit here to show you how all the ".app" is just Finder based magic, let's "create" an Application using no code and no compiler and just Unix filesystem manipulation commands :
Code:
$ cd /Applications/
$ mkdir My.app
$ ls -ald My.app
drwxr-xr-x 2 redk admin 68 2 Mar 09:56 My.app
$ cd My.app/
$ mkdir Contents
$ cd Contents/
$ mkdir MacOS
$ cd MacOS/
$ touch My
$ chmod 755 My
What did we do here ? We basically created the skeleton for an App bundle and made the last file executable by setting its permission (though it's an empty file). Now, did we fool Finder into thinking this bunch of directory and lone empty file is an App bundle ? Well, see the 2nd attachment. Yes, we did. Check out the dialog that pops up if we double click on it, in the 1st attachment.
We did create an "App". A .app that is. .app is not an executable file format, it's just a bunch of directories that make up an application, which might contain 1 or many executables, data, interfaces, models, etc.. Point made, anyone saying Apple has .app whereas Microsoft has .exe is frankly clueless on the inner workings of OS X and of Computer Science in general.