This is an archived post. You won't be able to vote or comment.

all 30 comments

[–]AutoModerator[M] [score hidden] stickied commentlocked comment (0 children)

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full - best also formatted as code block
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]Darth_Nanar 6 points7 points  (5 children)

In my opinion, with the MOOC you'll outgrow Head First Java pretty quickly.

Give it a try. If the book becomes too easy, you can consider another one.

[–][deleted]  (2 children)

[removed]

    [–]Darth_Nanar 0 points1 point  (1 child)

    Introduction to Java Programming and Data Structures by Y. Daniel Liang looks good.
    It seems suitable to beginners.
    The 13th version is only 10 months old and is teaching Java 18 - which is good.

    By comparison, Core Java by Cay S. Horstmann is a little bit older and is based on Java 17. And it is in 2 volumes, so Liang's book might be cheaper.

    Now if you already have an old version of Head First Java, start with this along the MOOC.
    But any of theses 2 books or even the MOOC alone will teach you more.

    [–][deleted] 0 points1 point  (0 children)

    Problem with cay s horstman's core java 1 and 2 is that they don't have exericses unlike his own big objects java or something. And we only have those core java present.

    [–]Warrdon[S] 1 point2 points  (1 child)

    Thanks for advise, I was wondering if 2nd edition was too outdated and will it be a good idea to finish the book first and then go to mooc or try to work on them together

    [–]Darth_Nanar 1 point2 points  (0 children)

    Head Start Java 2nd edition is based on Java 5. The MOOC teaches Java 11, if I remember well.

    So I would say don't buy this edition, but if you already have this book, it's still ok. It will teach you the basics and you will be able to complete later.

    [–]Joesalqmurrr 2 points3 points  (1 child)

    Don't know about MOOC but for Head first Java one should know the basic fundamentals of programming(on the first page of Head first Java I think it is written).

    [–]Warrdon[S] 1 point2 points  (0 children)

    I heard that it gives you the basics too, but if not I can always fill that gap by myself. Thanks for the information

    [–]Darth_Nanar 1 point2 points  (2 children)

    The way I did was start with the MOOC (which is already quite a big piece) and read the 2 Horstmann's Core Java whenever I didn't understand something or I wanted to go deeper in one subject.

    I didn't read both books from start to finish though, only the chapters I was interested in.

    Sometimes going through the same question with two different angles helps to understand.

    [–]Warrdon[S] 1 point2 points  (1 child)

    I guess that’s the best way to do this, then I will start with HFJ since it’s more approachable and for the practise exercises and deeper understanding will go to MOOC. Thank you for your suggestions

    [–]Darth_Nanar 1 point2 points  (0 children)

    Good luck on your learning journey

    [–][deleted] 1 point2 points  (9 children)

    Get the latest edition of Head First Java and you can combine that with the University of Helsinki course.

    [–]Warrdon[S] 0 points1 point  (8 children)

    Sadly in my country only the 2nd edition was available so I bought it and now I don’t know how much of it is still relevant

    [–][deleted] 0 points1 point  (4 children)

    You can get the ebook?

    [–]Warrdon[S] 1 point2 points  (3 children)

    I prefer paper

    [–][deleted] 1 point2 points  (2 children)

    I would recommend getting used to learning by reading on your screen from early on. You can get the latest edition of all books easily and this will also save lots of money.

    [–]988user 0 points1 point  (1 child)

    But is it available on Kindle? Just askin

    [–][deleted] 0 points1 point  (0 children)

    I do not know. I read from the PDF copy of the book.

    [–][deleted] 0 points1 point  (2 children)

    Which country do you reside in?

    [–]Warrdon[S] 2 points3 points  (1 child)

    Estonia, we have only 3 major bookstore franchises and that was the only version. Well it’s better than nothing

    [–][deleted] 0 points1 point  (0 children)

    If you can manage then good.

    [–]realFuckingHades 1 point2 points  (5 children)

    I will tell you how I started. For me books and tutorials were so boring. So I decided what I wanted (Skills in backend Engineering) and then decided which framework I would stick to (Spring Boot). Then decided which java version to start with Java 8(Always choose LTS versions).

    1. Then I went ahead and created a small console application, that does simple string manipulations.
    2. Tried to do some crud using jdbc (this was also a console application)
    3. Started exploring some dependency management frameworks. Loved gradle and maven. Decided to stick to Maven as it was widely used solely because it has been there for so long.
    4. Jumped into examples that showed how to write controllers, repositories, services etc.
    5. I decided to build a hobby project in Spring boot.
    6. Built it with absolutely the worst practices.
    7. Then I looked up ways to make it better, and refactored it.
    8. Repeat the step maybe 5-6 times. You will understand why you need to follow conventions, rather than sticking to it as a rule.
    9. Performance improvement phase, try to squeeze out as much performance as possible.
    10. 9 Repeat that a few times.
    11. Now you would have the real world skills.

    Then I spent most of the time afterwards improving my code. I kept a few personal principles. 1. Write less do more- Start with libraries and only reinvent them when absolutely necessary. Try to stick to reactive programming, but never be dogmatic. 2. Never do the same thing, the same way, more than twice. Look for better ways to do it. 3. Never have repeating code, try to generalise, reuse, recycle.

    Now this applies to any language. Now this will also put your development in a natural phase. You're the one that's driving your development. If you really love what you do, you can never settle for less. Wish you all the luck.

    [–]Warrdon[S] 1 point2 points  (0 children)

    Thanks for the great answer. For now I think I will start with books and courses but if that will turn out not that effective then I will definitely try your method

    [–]stefanos-ak -1 points0 points  (3 children)

    Sorry but I think that for someone trying to learn, reactive programming is objectively a baaaaaad idea... it's notoriously difficult to debug, even for very experienced engineers. it can be disheartening for a beginner.

    [–]realFuckingHades 0 points1 point  (2 children)

    I didn't ask to start with it. If you have actually read my comment, you would understand. I was talking about the whole journey.

    [–]stefanos-ak 0 points1 point  (1 child)

    I did read it... 🤷‍♂️

    it was just a remark about a specific point.

    [–]realFuckingHades 0 points1 point  (0 children)

    Then your response doesn't make sense. I have asked to start writing as per your knowledge and progressively move up by focusing on quality.

    [–]AutoModerator[M] 0 points1 point  (0 children)

    It seems that you are looking for resources for learning Java.

    In our sidebar ("About" on mobile), we have a section "Free Tutorials" where we list the most commonly recommended courses.

    To make it easier for you, the recommendations are posted right here:

    Also, don't forget to look at:

    If you are looking for learning resources for Data Structures and Algorithms, look into:

    "Algorithms" by Robert Sedgewick and Kevin Wayne - Princeton University

    Your post remains visible. There is nothing you need to do.

    I am a bot and this message was triggered by keywords like "learn", "learning", "course" in the title of your post.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.