How does software updates work in OS X? I just switched from Linux to OS X and I am still getting used to it.

I know I'll need to use Homebrew, as I rely on many CLI tools. Also, I just read about Cask, what make me wonder about one thing. How does software (not from the App Store) get updates? Windows-like, i.e. a message notifying about a new version so I can download it, or somehow integrated with the system, so that I don't need to download a new .dmg every time I want to update an app?

If it's "Windows-like", is it better to use Cask for things like Firefox, VirtualBox, VLC, LibreOffice...?
With cask, upgrading all of your installed applications (that installed with cask) is done with a single command:

brew cask update


This is an unofficial (community based) way to upgrade applications and only has free softwares on its repository (there is no way to purchase). Advantages of this mechanism are:


It's scriptable
It separates system applications from user applications (your installed applications are placed in ~/Applications/ instead of /Applications/) so it's per user.
Installation of packaged installers is in the background so it doesn't need user interactions.
Uninstallation of applications is programmed by its community so there is no worry about remaining files after uninstallation.
It's possible to have multiple versions of applications systematically because the mechanism uses symbolic links for the latest or selected version of applications.
The source of applications is kept in the cache so you can install and uninstall them without additional downloads.


Disadvantages of this mechanism are:


There is no differential upgrade. It downloads the whole application image (.dmg) or package (.pkg) and stores in the cache.
Installation of applications is relied on symbolic links that may be not ideal (There are two copies of an application and may be repeated in "Open with" list)

There is also official App Store mechanism (the default) for upgrading applications that are installed with itself and it supports differential upgrade and can upgrade all of it's installed application with a single click; but unlike Cask it's not scriptable to run upgrade, installation, etc and does not keep the sources.
Another mechanism is in-app upgrade check that occurs when application starts. It is different from App Store upgrade and also supports differential upgrade.


I think it's up to you to choose which mechanism to use for which kind of applications, this comparison may help you.

I use the Cask for applications that is not provided in the App Store (like VLC, OS X FUSE, OwnCloud, Weka, etc.) and App Store for non-free applications i purchased. In-app upgrades are not suitable for me because it does not keep the source of downloaded data.