The number one reason, that I have seen, where developers need an upgrade to JDK 1.4, is the usage of the NIO library. This is the library that allows the reading and writing to a large number of sockets/files/etc., asynchronously.
There are also other areas of the API that are different. Some of the siginificant differences that I have encountered include regular expressions and String.split(). I'm sure there are others as well. You should follow the link Ajith gave above for the exact details.
In fact, there's no reason to stick with 1.3 at all unless there's no 1.4 runtime for your deployment platform. Even worse for 1.3, there's now 1.5 (5.0?) and no reason to stick even to 1.4 unless there's no 1.5 runtime for your deployment platform.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com