List<String> stringList = new ArrayList();
Above statement is valid because java has to support the non generic code.It is same as passing non-generic collection to a method which takes type safe collection as an argument.
Is there any other difference??
no difference is there except in first statement you are mixing generics and non-generics code and in second it is purely generics code.