In this post, I describe my first steps in learning Java. Not that I am a newbie to programming. I have been doing it for years, but mostly in C++, or various mainframe languages and editors. But I recently made the decisio to change to Java.
Learning Java
I thought it was about time to start learning Java. At the moment, I am based in Malaysia so I cannot simply reach to my bookshelves (in my office in Nottingham) and get one of the many Java books I have accumulated over the years. Of course, I could go to the University library (and may well do so) but at the moment, all I have is Google (other search engines are available!).
There are obviously lots of internet forums around, but these can be quite difficult to follow, can digress quite a lot and are often in the form of Q&As which might not be the best way to learn.
Youtube for Java
I often overlook Youtube, but as I found out in my previous post, there are some fantastic resources out there.
I was fortunate enough to come across a series of videos that introduce various topics. I was drawn to it as the first episode was called “Episode 1: Hello Java! Getting Started with Eclipse.”
I found this quite informative. I think you have to have some programming experience to keep up with it, and there is quite a lot of digressing – but I still found it a good watch.
In fact, I have watched the first 15 videos. Some are very useful, some not so. Tutorial 8 was not easy to follow (it’s about Networking). In my mind this was advanced stuff, but the presenter, I think, has a networking background so, I suspect, to him, it was pretty basic.
But overall, this series was worth watching, and I will watch some of the later episodes in the future.
Others are available
I was attracted to the videos above as it used Eclipse. But looking around Youtube, there are many (many, many) alternatives. Some are more advanced, some confusing, some too simple, some incorrect (or not well explained) – and that is from my limited knowledge.
Understandable?
I’m pleased to report that I understood most things. Of course, knowing C++ helps a lot, as the syntax is pretty similar. It’s also good that I don’t have to worry about whether I am using MFC (Microsoft Foundation Classes), whether, once I have console application, I could ever convert it to a Windows application, what to do when I get binding errors etc. As far as I can see, once you have your imports (for packages and calsses) sorted, then everything should be okay.
There also seem to be some nice features, such as ArrayLists, the Scanner class and the Collections object (which has sorting apparently – saves me having write a qsort and sort out friend functions etc.).
So ….
As far as learning Java, I think that I have found some excellent resources on Youtube and I would urge anybody learning Java to tap into this resource. Indeed, for many techical problems, Youtube seems a great resource.
Questions
Of course, I have questions. What is a call to super? What does implement do? How should I structure packages? How should I structure my classes and the GUI (it seems to me that it would be easy to write a console application and then plug on a GUI? – not something I’d want to try with Visual Studio).
But all these questions seem pretty easy to answer, with access to the right resource, but only time will tell.
The football prediction project
You can read more about this project by looking at the posts for this football prediction project.
In case those questions were not rhetorical:
* super() calls the constructor of the parent class of your current class. It is only used in a class constructor AFAIK, and if used must be the first statement in the child class constructor. You can skip it if the parent constructor takes no arguments; you need it if the child constructor takes arguments, some of which must be passed to the parent.
* “implements” (in a class declaration) is similar to “extends”, the difference being that you extend a class (inheriting any fields that class has) but implement an interface (essentially guaranteeing that your class will provide methods with signatures as specified in the interface).
Paul, certainly not rhetorical – and very useful answers. Thanks for taking the time.
Graham