erlang虚拟机启动的时候,会启动一个叫做application controller的进程,它有点像是所有application的supervisor。当启动一个application时,application controller会启动一个application master,它有点像是处于application的头supervisor与application controller的中间件
要启动一个application很简单,只需要提供两个回调接口:start/2,stop/1,Mod:start(Type, Args),Type始终是Normal,Args来自于app文件,这个函数需要返回最高层的supervisor。
有时候我们想把没有启动函数的模块集合成一个application,这个时候只需要去掉app文件下的{mod,{Module, Args}}这一项就可以了,我们把它称作为library application