Next steps for Java development
So you wanted to learn Java. Naturally, you did the hello world thing, then you learned about flow control. You became accustomed to the type system, declarations, initialization, and you learned about scoping issues. Then you learned about polymorphism, inheritance, and you’ve learned how to write object oriented Java code. You’re familiar with the collections API, and you are accustomed to using generics for type safety.
Of course, you want to get paid for programming in Java eventually, and the little console apps you have been building don’t exactly look production quality. Moreover, when you look at the job postings, you see a hodgepodge of terms that don’t mean anything to you, such as Struts, Spring, Hibernate, J2EE, Tomcat, WebSphere, Ant, Maven, etc. What to do?
Focus on broadly used technologies.
I’m sure that there are many developers still writing Java desktop apps using Swing, but I haven’t met them. And despite all of the excitement about mobile apps, the vast majority of Java developers are doing web development. So one of your primary goals should be to learn how to build a database driven web application in Java, and deploy it to a servlet container, such as Tomcat.
Focus on technologies that you can learn effectively.
Many of the technologies listed in the job postings exist to solve the problems that come from large projects and large teams. If you start to read the maven documentation before you have worked on a project with significant external dependencies, it won’t make much sense to you. Similarly, Spring and Hibernate solve problems that you don’t yet have.
So keep it simple, build a website with sevlets and JSP, and use straight JDBC to connect to the database. Use a popular, well-documented, free database like MySQL or Postgres.
Focus on getting something done.
Nothing will increase your ability to solve problems more than trying to solve a real problem. Once you have an example Java web application working, start work on a Java web app that is useful to you or others that you know. Deploy it in a Virtual Private Server. Encounter various Java EE / JDBC pain points, and see how others have solved those problems. If you find that Spring, Hibernate, Maven or something else seems to solve one of your problems, then use it.
If you pay too much attention to the quality of your application, you will be disappointed with the results, and progress will be slow. After all, your application will have all of the finish and professionalism of a tree-house. But if you can fix your mind the real problem that you are trying to solve, then you might eventually build something useful, and you will learn a ton in the process.