"How is it possible?" Remember that nothing marks a method private other than a flag in the class file; it's not as though it's hidden or encrypted or the class will bite you with three inch fangs if you call a private method. The application launcher doesn't have to follow the normal Java access rules, as it's not a Java program itself.
Regarding why it works in 1.3 vs. 1.4: it's always been required that main() be public, but this requirement hasn't always been enforced. Now it is.
Hello, Well the question is about the consisteny of rules. wheather it is Normal application or JVM itself.I do agree with Ernest about enforcing the rule in JDK1.4. One intresting stuff is in jdk 1.4 it simply flashes a message i.e. Main is not public it do not display any Error message. wheather it uses Assertion ?