Code for reproduce :
print("JS + JS")
print(("" + "").replace)
print(("" + "").replaceAll)
print("Java + JS")
print((new java.lang.String("")+ "").replace)
print((new java.lang.String("") + "").replaceAll)
print("Types are same")
print((new java.lang.String("")+ "").class)
print(("" + "").class)
Output :
JS + JS
function replace() { [native code] }
[jdk.internal.dynalink.beans.SimpleDynamicMethod String java.lang.String.replaceAll(String,String)]
Java + JS
function replace() { [native code] }
undefined
Types are same
class java.lang.String
class java.lang.String
reproducing in jdk 9b37/8u40b12 with/without OT