Clojure - substring? function
As you wrote in your comments, (.contains "str" "sub") is perfectly fine. it is indeed java interop - it runs the method contains on String object "str".

two more comments, first, passing str as a var name isnt so good, since str is a function, so you should consider giving it a different name. Second, in your implementation, its quite redundant to write

(defn substring? [sub st]
  (if (not= (.indexOf st sub) -1) 
   true 
   false))


You could simply write 

(defn substring? [sub st]
 (not= (.indexOf st sub) -1))