Why should the first letter of a Java class be upper-cased? Is it not possible to run a program containing lower-cased class names? If it is possible, what's the difference?
It's a coding convention, adopted by most Java programs. It makes reading code easier as you become use to a given standard.
No, you don't have to follow it, but you won't make any friends by not doing so ;)