I would venture to say probably not. Even though the API spec hasn't changed, perhaps some minor change in the way the two versions create the byte codes in the class file could cause it to not run correctly, if at all. However, if you use a 1.3.x compiler, it should run on both 1.3.x and 1.4.x JREs. Disclaimer: This is my (only slightly) educated guess. Hopefully someone else will chip in if I am too far off base.
You can use a 1.4 compiler to create .class files which execute on 1.3 with the -target option: javac -target1.3 MyClass.java If your code uses any features that are only available in 1.4, you'll get an appropriate error message when you compile.
What if you don't use the -target option. Any documentation on the difference in bytecode from one version to the other without reading the VM specs for each version and figureing it out? Did anyone just say "Here is the difference"?