My previous post might be helpful:
Also, creating your own programs will gain you a lot of experience.
You can't expect an employer to send you to classes or train you on the job.
Also, any assignment you get from an employer often is for enhancements
to an existing project. Creating them from scratch (on your own) is better.
Knowing the details of the file structure in Java folder would be great, The Bin folder in Java directory consists of many commands, knowing those would also help and can also turn out to be the next level
Also Java Programming depends a lot over using Java documentation of the APIs since it contains number of already created methods, try using the API documentation for Servlets and JSPs. If you have already used Servlets and JSPs then you can go for JSF and JSTL too
Hope this helps
About 10-15 years of working experience will do it.
I hope you want to become a good software engineer by the way, getting really good at Java doesn't help you much specifically, its just a means to an end. What do you think is more important?
a) writing epic code
b) building something that works, is clean and user friendly, well documented, easy to maintain and does exactly what the users of the software need it to do
I hope you pick b), and I hope you see that becoming a "best java programmer" does not help you to do all that. You need to be much, much more than that.