Kill actually means send a signal. there are multiple signals you can send. kill -9 is a special signal.
When sending a signal the application deals with it. if not the kernel deals with it. so you can trap a signal in your application.
But I said kill -9 was special. It is special in that the application doesn't get it. it goes straight to the kernel which then truly kills the application at the first possible opportunity. in other words kills it dead
kill -15 sends the signal SIGHUPSIGTERM which stands for SIGNAL HANGUPTERMINATE in other words tells the application to quit. thisThis is the friendly way to tell an application it is time to shutdown. but if the application is not responding kill -9 will kill it.
if kill -9 doesntdoesn't work it probably means your kernel is out of whack. a reboot is in order. I can't recall that ever happening.