A big thank you to those who shared their tips and tricks on how to learn Java. Your stories were delightful to read and are appreciated. This post summarizes your stories. The common trend is that learning Java is a process. Some struggled with Java in the beginning. For others, it was a long process before they fully understood the soul of Java. A lot of coffee was required as users got up time and again to overcome the next Java challenge.
Help others, get help in return
Teaching others is always good, but it also helps you learn. Kaspar Scherrer suggests combining relevant forums, like Vaadin Forum and Stack Overflow, to see what issues other developers have. This has helped him to learn Java and Vaadin very quickly.
He says: “by learning, not only from my own questions, but also from every other question that is brought up, I have gained insight in many different aspects of the language/framework. Answering questions of other users doesn't only feel good because you help those in need, but it also helps to further understand the whole topic myself.”
Alvaro Sejas shares a similar learning method: “Join a Java User Group in order to learn from others and share with others.“
Learning Java through hands-on coding
Brian Sanders takes learning to the next level. He learnt to program by coding a simple game: “When I was learning to program in general, I would figure out how to make my own version of simple games, such as minesweeper, or asteroids. I coded a version of asteroids in Java using AWT. The math involved was pretty fun. Simple trig to simulate inertia/thrust. Direction/speed represented as a vector. Random pixels (i.e. stars) plotted on a "canvas" the size of the viewport and "stitched" together to illustrate the direction and speed as the ship was stationed in the center of the screen. The asteroids were just 5 or 6 points plotted a random distance from a center, floated in a random direction at a random speed, while slowly spinning. Java has functionality to determine if polygons have collided. So, this was useful for the ship/bullets. When you shot an asteroid, it would split in 2 and each piece would then start floating in a perpendicular direction from the original.“
He wasn’t the only one giving the thumbs up for coding exercises. “Small test projects are a must,” says Alvaro Sejas “it helps very much to try, you learn by implementing simple examples, so let’s start to code!.”
Search engine results contain so much knowledge
The web offers a huge variety of learning materials, from videos to tutorials. Steven Bell absorbs web-based articles and books, and then exchanges tips with other developers.
And he is not the only one: Alvaro Sejas likes to read books, watch video courses and attend live online training. He suggests other ways to learn, such as Katacoda and similar interactive learning techniques. “I found a very good resource at the O’Reilly learning platform (I have an account as part of my ACM annual membership), so I recommend this as a good option to start learning Java,” he says.
Combine Java with other programming languages
Another reasonable option is not to start with Java, but with other programming languages. “Knowing other programming languages might be useful because starting with Java as the first programming language can be challenging,” says Steven Bell. “Obviously, I went to Amazon and ordered several books on Apache Tomcat and JSP/Servlets. I threw myself into these books with vigor. And the strange thing was, they made sense. After years of studying Python and learning about classes, objects and all the rest, the Java language clicked.”
Steven Bell continues: “I quickly converted my projects from VB.NET to C#.NET because it was structurally similar to Java. Additionally, I acquired several spare machines and converted them into Linux boxes running Apache Tomcat and built a trouble-ticket system for the IT NOC group. I started using libraries and frameworks to accomplish more, flexing my abilities and merging them with the modular nature of Java. I became interested in Ajax, Web 2.0 and Struts.“
Happy coding, keep polishing your skills!
Learning Java can be challenging. The main thing is not to give up—keep on learning. Sometimes learning takes time and patience, but a good teacher can make all the difference.
Samuel Koivisto writes about his experience: “I realized that I had completely overestimated how difficult it was to learn Java. It was very easy instead. I just needed someone to explain it in such a way that I could understand. My tips for the people who are thinking that Java (or any other programming language) is hard to understand is—don’t give up if you don’t understand everything. Keep learning. You can even skip the hard parts at the start and come back to them later. And seek advice from others. The Internet is full of questions and answers about learning programming. And it's much more fun to learn together with others!”
Maurice Betze, Alvaro Sejas, and Steven Bell shared their favorite books and training materials:
- Effective Java: Best Practices für die Java-Platform by Joshua Bloch.
- The Book of Vaadin.
- The Definitive Guide to Modern Java Clients with JavaFX: Cross-Platform Mobile and Cloud Development by Johan Vos, Stephen Chin, James Weaver.
- Java Threads and the Concurrency Utilities by Jeff Friesen.
- Java Full Throttle with Paul Deitel: A One-Day, Code-Intensive Java Standard Edition Presentation.
- OCA Java SE 8 Programmer I (1Z0-808) by Simon Roberts.
You can also start with Building Modern Web Apps with Spring Boot and Vaadin tutorial series.