Compiling is transforming source code of project from high level language to lower level language. For example code we write C++ is high level programming language that's why we need to have compiler to convert it language that machine understands.
Interpreting can be defined as sending chunks of code to machine each time (in some cases line by line). It's more interactive related to compiler which transforms whole code at once and saves as a file - which is later run by computer. JVM (java virtual machine) is a interpreter which reads bytecode and send to machine runtime. In the other hand javac is a compiler which compiles Java source code to Java bytcode (then to be interpreted by JVM).