Basically they do the same: converting from one level of language into another. A compiler converts high level language (programming language like Java) into machine-language. That is language a computer understands.
An interpreter converts high level language into an intermediate level. When a program is exectuted, that intermediate level is reconverted to machine language.