Floer homology and its applications