there is no difference - they both mean the same thing. an array of Strings named 'args'.
when you type "java MyClass", java knows to look for the MyClass object, and to run the static method name 'main' that takes a String array as it's only argument.
You certainly can write other methods names 'main' that take different (or no) parameters, but java will ALWAYS look for and run the one with the String array. You would have to call any others explicitly within your code, just like any other method.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
The only difference is programmer preference. I, and many with me, prefer "String args" over "String args" because it makes it much clearer that the variable type is "array of string". With the second form, the array part is much further away from the String part.