Whereas UML is just a standard notation, Executable UML is a full fledged programming language. With Executable UML you can create detailed specifications of application requirements that can be executed on a virtual machine. You can set breakpoints for states, actions, test asynchronous interactions and so forth just as any real developer can. It is supported by a number of tools and you can use it to generate highly efficient code for a wide variety of embedded and real-time distributed platforms.
UML is a standard notation for illustrating software concepts. It is not a development language like C or Python or Java. You can use it for high level requirements descriptions, illustrating dynamic scenarios and showing how key components of your code are related with a diagram.
Executable UML is a software development language.