As @Nathan recommends, your QA and production environments really must use the same JDK version, and in general be as identical as possible. It's best to have an identical configuration in your development environments too.
For example, say your production environment is at JDK.1.4.2_9, but your development and QA are using the newer JDK.1.4.2_13. Let's also say your new release depends on a bugfix first made in JDK.1.4.2_13. In this scenario, QA will pass, but production will fail, potentially catastrophically.
But your QA is also at JDK.1.4.2_9. Assuming your QA process is good and thorough, it will catch the dependency of your new release on the new JDK.1.4.2_13 and you can fix it.
What if your QA was flawed? In this case the problem would first manifest itself in production. For this reason, its best to keep your development environments on JDK.1.4.2_9 as well, to make it less likely that the error will make it into production.
You can still upgrade to JDK.1.4.2_13 everywhere, just not during a code release. Do this independently, first by upgrading and testing on your development environment, then on the QA environment, and then by deploying the changes to production.