There's really no difference, although the second one will give you a compile warning.
They compile to the same bytecode, because the compiler throws away the information about what type parameters you've used.
The problem is that the ArrayList class was invented before generics were, so we used to always have to create it as new ArrayList(), without specifying the type parameter. Now with generics, we can specify what type of objects will be stored in an ArrayList and have the compiler check that we use it correctly. The notation for doing that is what you've used in the first example.
But any checking that the compiler does subsequently is based on the type of the variable, not the class of what you've created, so the difference will have no effect at all, past the initial compiler warning.
From Java 7 onwards, the preferred way of writing this is List<String> stringList = new ArrayList<>(); but this notation is unavailable in earlier versions of Java.