Reproducing Kernels and their Applications