D9M2W
Posts: 37
Joined: Tue Dec 30, 2014 5:34 pm
Location: West Midlands, UK

Java Resources for Absolute Beginners

Sun Mar 01, 2015 2:40 pm

Hello guys and gals,

How abouts did you all get into learning how to program and understand Java?

Personally I think the sheer amount of resources available can make it difficult to actually start learning. So because of that, lets try build a good list etc of documentation or tutorials, videos etc etc to help newbies learn.

:EDIT:

Here are some useful tutorials and resources for newbies like myself!

Official Oracle Resources
Java: http://docs.oracle.com/javase/tutorial/
JavaFX: http://docs.oracle.com/javase/8/javase- ... logies.htm
Java Overview/Documentation: http://docs.oracle.com/javase/7/docs/ap ... mmary.html
Data Types: http://docs.oracle.com/javase/tutorial/ ... types.html

Object Orientated Principles
Abstract Methods and Classes: http://docs.oracle.com/javase/tutorial/ ... tract.html
Interfaces: http://docs.oracle.com/javase/tutorial/ ... rface.html

Java For Game Development
http://www.cokeandcode.com/main/

Udemy
Java for Complete Beginners: https://www.udemy.com/java-tutorial/
Last edited by D9M2W on Sun Mar 08, 2015 10:30 am, edited 4 times in total.

Fidelius
Posts: 418
Joined: Wed Jan 01, 2014 8:40 pm

Re: Java Resources for Absolute Beginners

Mon Mar 02, 2015 7:04 am

For international readers I like SUN's and now Oracle's official The Java Tutorials a lot.
And its additional FX tutorial.

For German readers I like the OpenBooks Java ist auch eine Insel. (In English: Java is also an Island)
And its part II: Java 7 - Mehr als eine Insel. (In English: Java is more than an Island)


For people learning game programming with Java I recommend the smart British Kevin Glass' tutorials Coke and Code -- they're not for absolute Java beginners, but explain important game programming methods in a "keep it simple" way well suited also for beginners.
Using (small) games to learn Java is very attractive to younger people, too, since instead of "boring numbers" they see their newly programmed "boring numbers" flying around the screen. That's highly motivating for many. And with Java8's FX graphics API using OpenGL (-ES), also the Pi, and in particular the much fast Pi2, is very well suited for Java games.

metalj
Posts: 212
Joined: Sat Feb 07, 2015 11:56 pm

Re: Java Resources for Absolute Beginners

Mon Mar 02, 2015 8:09 am

There are books called Karol the robot I hear is good and kindle unlimited has a bunch of books on programming and the raspberry pi.
Backspace 28 times :)

ghans
Posts: 7825
Joined: Mon Dec 12, 2011 8:30 pm
Location: Germany

Re: Java Resources for Absolute Beginners

Mon Mar 02, 2015 10:24 am

I second getting a book made out of dead trees because internet resources "just don't feel right" (and are often outight false or poorly made) - searching at your library would be
a cheap and easy option to get hold of introductory material. Perhaps i'm just old-fashioned though :D

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org

precious_pony
Posts: 34
Joined: Tue May 22, 2012 11:09 pm

Re: Java Resources for Absolute Beginners

Wed Mar 04, 2015 2:58 am

I'm writing this from the perspective of an older (primarily Java) software developer with 17 years experience. I'm just writing this from the perspective of someone with a lot of experience assuming I'm speaking to someone with zero experience so my apologies if I explain the obvious too many times in this post.

There are three general-purpose resources I use when writing code:

1) The Oracle JRE JavaDoc + tutorials
2) Stack overflow ... this website is the best resource for solving language and framework related gotchas.
3) The open source source-code of the library/framework I am using.

How to learn:
  • Do use an IDE, such as Eclipse or Netbeans (both are free), Netbeans will probably run on Pi 2, Eclipse probably won't. BlueJ is apparently designed specifically to run on a raspberry Pi, but it seems to lack a lot of features. A lot of people will tell you just to write code with a text editor rather than an IDE, but unless you have an excellent memory, I strongly advise against this. I'm a ridiculously productive coder, and I utterly depend upon IDEs to make up for my lack of photographic memory of APIs. There are dozens of reasons to use a good IDE, and only perhaps faster keyboard shortcuts in the anti-IDE camp, so do yourself a favour - use an IDE.
  • Have a basic knowledge of data types.
  • Write a program, and forget object orientated programming initially. The program should be a single class program with entirely static methods.
  • Focus on top-down programming. Write pseudo-code as comments, then flesh out the code.
  • Do something REALLY simple, like reading in a string from the command line, and outputting an upper case version. Or entering a number between 1 and 12, then printing out multiplication tables for that number.

    Code: Select all

       // while (NOT quit) do
       //    Enter a text value from the command line
       //    Set quit flag if user entered quit
       //       ELSE
       //    If the value is a number, then print out times table for that number
       //       ELSE
       //    If the user did not enter "quit" or a number between 1 and 12, then print message to inform user that they must enter a valid value
       // Loop
    
  • Once you have the absolute basics going, then try to construct a basic window based UI, and do the same thing using a UI.
  • Threading is not so important for beginners so don't stress about it too much at the beginning.
  • Do NOT try web programming or dependency injection at all until you understand object orientated principles - specifically abstract classes, interfaces, implementations.
  • Do not think you have to remember every API method or class. You can't. It doesn't mean you are slow or stupid, it just means that the class library in Java is very large indeed, and if you include the larger library set, it is impossibly vast. Tooling is essential.
How to get overwhelmed:
  • DO NOT run before you can walk. There are a VAST range of frameworks and libraries available for Java based programs. Build tools, dependency injection tools, persistence libraries, web frameworks, mvc/mvp frameworks, embedded scripting languages, visualisation languages, game development frameworks, 3d frameworks, .... and I would highly advise to initially ignore all of them. It's all noise to the beginner.
  • Do not go crazy with object orientated code and design patterns. It is very easy to write bad object orientated code and to think you have to use software design patterns everywhere. My experience has been that it is easier to appreciate a design pattern after you have coded it the wrong way. So be free - write some bad code. BUT, always evaluate your code to test that you are not repeating yourself. If you are repeating yourself by writing similar code two or more times, then that is the sign that you need to improve your design and the time to start researching a different design approach. It is easier to understand what a pattern is fixing, after you already experience the problem yourself.
How to have a good attitude
  • Understand that Java has its flaws as well as its strengths (read up on the strengths and weaknesses of JIT/AOT compilation and especially the pros and cons of garbage collection).
  • Understand that C# is also an excellent language, and respect it, even if you have no immediate reason to learn it or use it.
  • Understand that C++ is best for low level coding.
  • Understand that there are many many other languages that can increase developer productivity, and that runtime performance is just one aspect of what makes a useful and productive programming language. Higher level domain-specific-language especially can reap huge productivity rewards.
  • Never insult a fellow programmer, even in response to an insult or perceived insult from them.
  • If you make a mistake, own it. There is no shame in getting something wrong. Especially if you are junior. Hiding your faults makes it more difficult for people to help you improve.
  • If writing code with others, and if someone writes some bad code, let them know, but try not to humiliate them in public if at all possible. Everyone fails.
  • Don't jump to conclusions. One time early on in my career, I blamed a colleague for a serious bug in the program, and all the evidence pointed to them. I pointed the finger at them before discussing with them to confirm it. It was actually my fault. I never ever made that mistake again.
  • Never go "fanboy"/ "fangirl" on any tech just by virtue that that is the tech that you are most experienced/passionate about. There are always alternatives, and most of the time, we don't have time to learn all the alternatives to dismissing them without immersing yourself with them comes off as arrogant or ignorant. The best people in any industry are always open to the idea that their language of choice might not be the best language in all contexts. I see a lot of this in various JavaScript frameworks and amongst a certain subset of Java programmers.
My background

I studied Java at university back in the late 90s. It was all about applets back then, with very little focus on frameworks. I didn't really learn Java that well at Uni.

In 2000, with very little Java coding experience, I talked my way into a job by parroting the high level benefits of Java using faux confidence. Such a technique probably wouldn't work today with the various testing methods around, but it worked for me at the time. It is easier to learn to code from an existing codebase than it is to learn to code from a blank page. Writing complex applications from scratch in a programming language that you are unfamiliar with is generally a bad idea. Learn the language, once concept at a time, or study working code, one class at a time, then move onto your creative greenfield project.

Since then, I've been developing in Java for 15 years now. I also write C# and C++ from time to time, but I find Java to be the most productive and portable technology stack, increasingly so with the introduction of recent cross compilers to Objective C/C# and JavaScript. Android using the Java language is the icing on the cake really. Java may be a slightly old language, but it still represents very good career opportunities.

I wish you the best of luck.

Fidelius
Posts: 418
Joined: Wed Jan 01, 2014 8:40 pm

Re: Java Resources for Absolute Beginners

Wed Mar 04, 2015 6:41 am

precious_pony wrote:INetbeans will probably run on Pi 2
Indeed the Java app Netbeans runs well on the Pi 2 (but too slow on the Pi1).

(Basically Netbeans, like any other well written Java app, runs on any platform having a JDK. We even use it on HP UX machines occasionally.)

Fidelius
Posts: 418
Joined: Wed Jan 01, 2014 8:40 pm

Re: Java Resources for Absolute Beginners

Thu Mar 05, 2015 1:36 pm

ghans wrote:I second getting a book made out of dead trees because internet resources "just don't feel right" (and are often outight false or poorly made) - searching at your library would be
a cheap and easy option to get hold of introductory material. Perhaps i'm just old-fashioned though :D
Indeed we humans are able to memorise things better when we read a real paper in contrast to artificial (virtual) displays like screens, etc. There's scientific studies underlining this, for example by Prof. Manfred Spitzer.

However, when you're looking for up-to-date information or books from other countries (like Java books from the USA, send to Europe), the electronic resources are an important and often easy to find "add-on", too. :-) Of course you could always use these to print a hard-copy...

D9M2W
Posts: 37
Joined: Tue Dec 30, 2014 5:34 pm
Location: West Midlands, UK

Re: Java Resources for Absolute Beginners

Thu Mar 05, 2015 3:47 pm

Wow! These posts are really really helpful guys, it is much appreciated - Hopefully if we can build up a good list etc we can get the mods to sticky the thread at the top of the Java forum as a way for newbies to get help.

My problem is the sheer amount of resources out there etc makes it so hard to learn, or get started should I say - I just get swamped under. But these links have been great - Ill get looking into them and place them up in my original so people can easily get some help.

D9M2W
Posts: 37
Joined: Tue Dec 30, 2014 5:34 pm
Location: West Midlands, UK

Re: Java Resources for Absolute Beginners

Thu Mar 05, 2015 4:15 pm

precious_pony wrote: I wish you the best of luck.
I don't think i can thank you enough for this post! It was wonderful to read through and have your idea/perspective of learning to programme and as someone who has been doing it for a while its great to get someone with clearly a lot of knowledge to give their input - I'll certainly add parts to my own resources and also back at the top in my first post.

It's a good job your post is on the first page! Any newbie would be good to stop at it and read through it. Thanks very much for taking the time out to write it out for us all :)

vijaydeveloper
Posts: 1
Joined: Tue Nov 20, 2018 9:20 am
Location: India
Contact: Website

Re: Java Resources for Absolute Beginners

Tue Nov 20, 2018 9:48 am

Hi,
I recommend Udemy Java Tutorials is the best resource. As per my opinion and every student have their own perception their own skills, so we cannot say that this one is the best. Might be student cannot feel better with this or can feel much better with the coursera course. So if you are beginner then you can start through udemy course.

siya50019
Posts: 1
Joined: Thu Jan 03, 2019 5:24 am

Re: Java Resources for Absolute Beginners

Thu Jan 03, 2019 5:30 am

Here are explained best 5 resources for absolute beginners :


1. Coursera

Coursera is presumably a standout amongst the most notable spots to search for online courses, and Java writing computer programs isn't an exemption. Recordings are accessible in English, Spanish, Russian, Chinese and French dialects; to make it less demanding, you can likewise utilize captions. Discover Java basics, Java for Android, and Java for cutting edge levels there!

2. Codecademy

Codecademy offers a free java programming course for novices where they can ace the essentials of this dialect, and work on seven distinct tasks, including making their very own number cruncher. Conditionals and control stream, object-arranged programming, and information structures are in the prospectus.

3. Learn Java

This free online Java course gives you access to Java world without introducing any stuff, simply try it out specifically from your program. Utilize short and successful activities to take in Java without any preparation with this intuitive instructional exercise. One more favorable position of the course – it likewise contains points for cutting edge students.

4. Udemy

Udemy is one of the greatest stages for online courses. There are 58 free Java programming courses; and in the event that you consent to pay up to $11, the quantity of classes increments definitely – 736. The easy to use interface of the site permits arranging courses by level, dialects (English, German, Spanish, Turkish, and so forth.) and accessibility of tests to check your insight.

5. edX

Learn Java for nothing with edX, where the courses are introduced by such well known foundations as MIT, Hong Kong University of Science and Technology, and UC3M. The lion's share of courses are self-managed so you don't have to hold on to select. Likewise, you can get a testament at last, anyway this choice is paid.

6. Prophet Java Tutorials

Prophet, a worldwide programming improvement goliath, has built up its own free online Java course for learners. Being consistently refreshed, this guide demonstrates to make applications in simple and straightforward way. Other than the nuts and bolts, you'll additionally make sense of what is GUI and how to make it, take in more about custom systems administration and JavaBeans.

7. Sololearn

Sololearn made a free course to learn Java on the web. Their program comprises of 6 modules with 65 exercises altogether. You will cover such subjects as circles and conditionals, exhibits, classes and articles, special cases, records, strings and documents.

To know more : https://crbtech.in/online-java-training-course

Return to “Java”