Lets first see what are the major changes from 1.3 to 1.8 in each version -
Java 8 (a.k.a 1.8)
Language changes:
lambda expressions (JSR 335, includes method handles)
continuation of Project Coin (small language improvements)
annotations on Java types
Library changes:
Improved Date and Time API
Java 7 (a.k.a 1.7)
Language changes:
Project Coin (small changes)
switch on Strings
try-with-resources
diamond operator
Library changes:
new abstracted file-system API (NIO.2) (with support for virtual filesystems)
improved concurrency libraries
elliptic curve encryption
more incremental upgrades
Platform changes:
support for dynamic languages
Java 6 (a.k.a 1.6)
Mostly incremental improvements to existing libraries, no new language features (except for the @Override snafu).
Java 5 (a.k.a 1.5)
Language Changes:
generics (that's the big one)
annotations
enum types
varargs, enhanced for loops (for-each)
Library changes:
concurrency utilities in java.util.concurrent
Java 1.4
Language changes:
the assert keyword
Library changes:
regular expressions support
NIO
integrated XML handling
Now coming to upgrade, Java is backward compatible so ideally you should not face any issue except the enum part which got changed from version 4 to 5 (rename any usages of the new enum keyword in the Java 4 code).