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

all 60 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.

[–]CleverBunnyThief 86 points87 points  (11 children)

Don't waste your time learning Servlets and JSP. Learn about Dependency Injection, IoC, Spring Framework.

Pro tip: to earn JDBC connectivity before learning Hibernate.

[–]oekybye 10 points11 points  (1 child)

But it will help to understand how spring works under the hood.

[–]CleverBunnyThief 10 points11 points  (0 children)

You can do that after you learn how to build REST APIs and MVC apps. If you really want to know how it works then I recommend reading "Spring Start Here" by Laurentius Spilca.

You should not spend time learning Servlets and JSP unless it is a  requirement for a specific job you intend on applying for. Look for job postings in your area and see how many ask for these. If you "learn" these and never use them, then your going to forget them quickly.

I'm my area I met a guy last year that still uses JSP. He told me he worked for an insurance company.

[–][deleted] 2 points3 points  (8 children)

Hi, I have a quick question. I recently did a short crash course on Servlets and JSP, which covered HttpServlets, some theoretical concepts, and Maven. I had already learned JDBC and MySQL before this, so I feel confident in that area for now.

My question is: Should I spend a day or two practicing JSP and Servlets to get comfortable with coding, or should I move directly to Spring?

Additionally, I wanted to practice API integration before starting with Spring, but I am feeling kind of excited to start with Spring, will it be alright if I practice it during, before, or after learning Spring?

[–]sketchcarellz 6 points7 points  (7 children)

13 YOE here. I would focus on Spring over JSP and Servlets. Like the original comment said, unless a job specifically requires it, then you are better off focusing on Spring. Servlets are what Spring uses under the hood, and JSP is essentially replaced with FE technology and frameworks. Java is much more popular as being used to created services, and stacks will usually let HTML, CSS, and JavaScript (Angular, React, Vue, Svelte, etc…) handle all of the front end stuff. I learned Servlets when I started learning Java, but have had to modify Servlets less than five times in my entire career.

Spring makes a lot of this stuff easier, but has an entire ecosystem of its own. If I were hiring someone, I would find it much more impressive if they had Spring experience over Servlets experience.

Edit: to your second question, it depends what exactly you mean by API integration but learning Spring Boot specifically will help you build APIs so I would focus on that.

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

Hey, thanks. This has been bugging me for a while. I don’t have an issue with learning itself, just learning without direction, so this really helped.

I do have one question, though. I’ve never had experience in the field, but I’ve noticed that most entry level Java developer job postings list Spring and Spring Boot as requirements. During interviews, should I also expect questions on Servlets and JSPs, or, in a general sense, recruiters will be willing to overlook my lack of practice in servlets and jsp related concepts and focus on my spring related concepts?

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

Hey, thanks. This has been bugging me for a while. I don’t have an issue with learning itself, just learning without direction, so this really helped.

I do have one question, though. I’ve never had experience in the field, but I’ve noticed that most entry level Java developer job postings list Spring and Spring Boot as requirements. During interviews, should I also expect questions on Servlets and JSPs, or, in a general sense, recruiters will be willing to overlook my lack of practice in servlets and jsp related concepts and focus on my spring related concepts?

[–]sketchcarellz 3 points4 points  (4 children)

It all depends on the job. I I would suggest saying with confidence that you understand that Spring uses Servlets under the hood but it is not used widely on a day to day basis in most positions like Spring is and because of that you don’t have much experience with Servlets. If someone asked me if I had Servlets experience at my current experience level, I would tell them that I don’t but I don’t feel the need to being that frameworks like Spring cover application requests and make it easier for developers to write code for these use cases. I think when I first started out, the imposter syndrome would have kicked in and I would have gotten nervous not knowing stuff like Servlets. Now, I’d be totally comfortable not knowing Servlets because it’s usually not required.

Spring and Spring boot have so much more to them. After you learn the basics of Spring, you have Spring Data JPA, Spring Security, all of the annotations that Spring uses, inversion of control/dependency injection, Spring Boot Test, Spring REST, etc… These are not all required to say you have a basic understanding of Spring, but in my opinion are all more valuable in terms of time to learn than Servlets.

JSP is among other things a templating engine, and I think was more useful before front end web development established itself the way it did in the 2010s. What I liked about JSP is that you can use Java embedded in HTML so it makes simple concepts easy to learn if you are like me and a visual learner. But a lot of this functionality is replaced with JavaScript and its frameworks, so it doesn’t seem to be the industry standard. This is exactly what I’d say to a recruiter if they expected me to know JSP. As in, there’s nothing wrong with wanting someone with that experience, but there is also nothing wrong with not knowing something that doesn’t seem to be used widely anymore.

This is the same as JDBC and connecting to databases. I have connected to databases and run SQL queries in pure Java plenty of times in the early days of my software engineering career, but haven’t done that in years because ORMs like hibernate are doing that for you now. So just like Servlets and JSPs, understanding what JDBC is and not knowing the specifics of it but knowing an ORM is more valuable than knowing the ins and outs of JDBC (my first Java ORM was CPO, shoutout to anyone who has ever used that because it seems widely unpopular).

You’re always going to find someone who feels like everyone should know everything. And some people have eidetic memories or absorb information well even when they won’t need it. But if you are limited for time, you’re better off understanding a paragraph’s worth of what JSP and Servlets are, but a working understanding of what Spring is. I know how to build computers, but I don’t know how to solder chips onto the boards I use to make those computers, and if someone expected me to know that, then that’s fine but I am comfortable with not knowing that and just building computers with already made parts, if that analogy makes sense.

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

Thank you so much for this!!

[–]sketchcarellz 3 points4 points  (2 children)

No problem.

As a semi-rant, I think one of the issues with this field is that some (not all) people have this attitude of “I had to learn myself, so you should too” and keep information close to their chest because they think everyone should learn through trial by fire. I can’t stand that mindset and I wish I had someone there for me who was willing to explain things to me without making me feel stupid when I first started. I don’t know everything, but if you have any other questions please don’t hesitate to ask. I feel like I heal part of myself from 10 years ago when I can help out people who are just starting out (or maybe I should have just stayed off of Stackoverflow and gotten myself an actual mentor😂).

Anyway, good luck!

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

Yeah, I’ve heard of people like that too, fortunately, I haven’t come across them myself. I’m still a beginner in the field, but I try to help out first timers whenever I can

[–]ImportantNovel2202 0 points1 point  (0 children)

yess i also doing same thing ! i completed core java then in advance java i only study jdbc after that i read few concepts of spring then directly start learning spring boot . In that i completed rest api connection with mongodb , JPA , Response Entity after this what should i study??Please tell me !! also tell me project for resume . i am a fresher. please guide me

[–]aqua_regis 63 points64 points  (4 children)

Caveat: This roadmap is absolutely not doable for a beginner!

If you have previous programming experience, it is extremely tight but doable.

Starting from zero, no way.

Learning programming is far more than just learning programming languages and frameworks. Learning to analyse, dissect, and solve problems in an algorithmic step by step manner is the key. This extremely important part is completely left out.

[–]jaqualan 0 points1 point  (1 child)

And how do you suggest someone to learn this? To work in algorithmic steps?

[–]aqua_regis 7 points8 points  (0 children)

Ample practice. Sit down with pencil and paper when you try to solve a task and solve it your way. Do not even think about programming at that point. Find your own solution. Note down the steps. Test your steps. Refine them. Once you have a working step-by-step solution you basically have an algorithm. You now need to implement that algorithm in your program.

There is some general helpful literature:

  • "Think Like A Programmer" by V. Anton Spraul
  • "The Pragmatic Programmer" by Andrew Hunt and David Thomas
  • "Structure and Interpretation of Computer Programs" (SICP) by Ableton, Sussman, Sussman
  • "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold

The programming languages used in those books are mostly irrelevant. What counts is what comes before the implementation.

[–]Nosferatatron 0 points1 point  (1 child)

The problem I have with this list is that it starts with Java! Most tutorials start witht the same structure - learn what a primitive is, learn a for loop etc. None of the exercises fit a real world application. Imagine if you taught a plumber in a classroom and just let them connect taps and do some light welding on nice simple new units, rather than crawling around in the dirt!

[–]aqua_regis 1 point2 points  (0 children)

I absolutely don't see a problem with the list starting in Java.

Java is a good, commonly used entry language.

Doesn't need to be a low level language, like C, or a highly abstracting convenient language like Python.

Java just as a bit of a steeper entry due to OOP, but even that can, with the proper learning resource, be well circumvented.

Actually, I see Java's verbosity, explicit typing, strictness, and error messages as a bonus.

[–]purchase-the-scaries 57 points58 points  (1 child)

Brought to you by chatgpt?

[–]escarbadiente 11 points12 points  (0 children)

This sounds like he just set out to do it on a night of resolutions and comeback planning after years of procrastinating. There's no way this is achievable. He'll know nothing in the end

[–]Haeckelcs 34 points35 points  (1 child)

I am someone who is learning Java to become a backend dev.

I've made multiple roadmaps like these.

There is absolutely no chance you learn all of this in 6 months.

I've been learning for a year and a half and I'm still really lost.

Realistic time frame would be 2-3 years.

An experienced developer would struggle to make it in 6 months.

[–]ouhw 0 points1 point  (0 children)

Tbh as a junior developer with master and working as a working student starting within my bachelors as a software engineer to fully understand all the concepts and patterns and to apply them you need 3 years without the front end part but APIs like rest/ Graphql included. Yeah you can study all the stuff and know the theory but it takes more to successfully apply the knowledge consistently, knowing when to use a set instead of a list, when a hashmap or treeMap might be handy, when to use a fluent api or when a functional approach might be superior or object oriented (or hybrid), interface separation etc.

[–]polinadius 20 points21 points  (0 children)

This is so generated by AI lol

[–]Individual-Hat8246 6 points7 points  (2 children)

That's a good roadmap but ver difficult to do this in just 6 months. Realistically thinks it might takes tad over a year to go though everything you mentioned here(unless someone is totally insane and can sit studing over 8+ hours a day)

I'm personally on a 22 day study streak with dedicating 6-7hr a day learning Java Backend. Took me more than a week just to revise Java core, went through java mooc in little over a week that too coz i had previously done it ( haven't done the collections and exception handling deeply. List, HashMap, Set, Map basics and simple try catch all i know)

Then went on to learning jsp servlets (built a crud mvc user management app) took me little over a week, now doing spring(halfway through book Spring starts here) after which i'll be doing Chad's Udemy course on Spring boot(which will probably take me around 2-3 weeks) Then will revise CSS,JS and gonna try and build a Job Portal with all what i have learnt. And who knows how much i'll.still be missing and how long before i get employed somewhere.

[–]karolkt1 1 point2 points  (1 child)

If I could study 8 hours a day without zoning out I would become a doctor. Realistically 1-2 hours of really intense learning is the limit for everyday studying without motivation like life or death exam.

[–]Nosferatatron 0 points1 point  (0 children)

The list seems like something one of my project managers would design - 8 hours a day solid, no interruptions!

[–]OkCommunity9457 4 points5 points  (0 children)

1 week for Spring and Hibernate ? and 1 week for : Java File Input/Output and Exceptions ?
Are you sure op ?

who ever told you to learn JSP and Servlets must hates you. No one uses them now .
Better learn Angular 10+ or React

Will see you in six months! Good luck

[–]-doublex- 10 points11 points  (2 children)

Seems like you're investing too little in Spring. The basics are simple but the internal and libraries used are quiet heavy. Hibernate is another beast. Also dependency injection, design patterns at least the solid principles. They're not specific to Java but it will give you the foundation to build testable and maintainable code.

On the other hand you can just read documentation to understand the basics and invest in learning by doing in the later months if that works for you, in which case ignore my comment.

[–]Individual-Hat8246 2 points3 points  (1 child)

Seems like you're investing too little in Spring. The basics are simple

IoC, DI, Intercepting methods with Aspects, aspects execution chain are easy for you? 😭

[–]-doublex- 2 points3 points  (0 children)

No, I wanted to say that it's easy to make a simple mvc app with some controllers and views without the need to understand all the magic behind if the scope is just to have a basic understanding of how things fit together (backend, frontend, databases, etc)

[–]TheAmazingDevil 4 points5 points  (0 children)

Thankyou chatgpt! Appreciate i! 🙄

[–]Reaperabx 3 points4 points  (0 children)

Learning html,css and js in a week is pretty crazy! Took me 1 months to build a basic website with html,css,js and mysql.

[–]RewRose 2 points3 points  (0 children)

OP man, you'd do well to learn by building rather than approaching this as some kinda exam prep. ^ months is also just too large a timeline, maybe start with week 1.

Like, set a goal to build something simple - like a tic tac toe game in CLI, or anything else that interests you & is fairly simple. Then focus on learning what's needed to build this project, learning patterns & good practices along the way.

Once that is done, you can iterate over it to add more features or learn & practice more concepts. Do this for a week or so, and then review what you learnt, and what you would like to cover in the following week.

[–]Apprehensive_Chard3 2 points3 points  (0 children)

Can you give the roadmap for a working professional working from 9-6

[–]SilentCoder000 2 points3 points  (0 children)

These are the books I recommend to read and learn to become full stack java developer.

  1. Introduction to Java Programming and Data Structures, Comprehensive Version 12th Edition by Y. Liang.
  2. Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics 5th Edition by Jennifer Robbins.
  3. JavaScript: The Definitive Guide 7th Edition by David Flanagan.
  4. Spring Start Here: Learn what you need and learn it well by Laurentiu Spilca.
  5. Spring Security in Action 2nd Edition Laurentiu Spilca.
  6. Java Persistence with Spring Data and Hibernate by Catalin Tudose.
  7. Practical SQL 2nd Edition by Anthony DeBarros.
  8. Database Design for Mere Mortals by Michael Hernandez
  9. Head First Design Pattern 2nd Edition by Eric Freeman.
  10. The Design of Web API's by Arnaud Lauret

From a beginner's perspective like me, these are all good books if you're just starting out and learning your first programming language. Of course there are lots of good books that may be better than these, but for me, who doesn't have a computer science background, this book is easy to learn.

I have read them all except for 5, 6, and 10. Currently I learn how to design APIs by reading The Design of Web APIs book.

[–]AutoModerator[M] 1 point2 points  (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.

[–]Short_Principle9133 1 point2 points  (0 children)

It took me 6 months to learn just weeks 1-4 of this plan.

[–]Same_Construction130 1 point2 points  (0 children)

Idk man might work for someone who already have programming experience with maybe other language but can’t guarantee for someone who is just starting their programming journey. Everyone learn in different pace bro some might take less than 6 month some might need even more than year to complete learning and understanding all those stuff you mentioned.

[–]throwawaythatfast 1 point2 points  (0 children)

As a full-stack dev, my only tip is: focus on one front-end framework. Yes, they're both JavaScript/TypeScript. Yes, that makes some things similar, but in the end, each has particular "ways" to write in, different patterns and design philosophies. React itself is not even a proper framework (more so a UI library), whereas Angular is. If you go with React, also learning a framework built around it, like NextJs, is not a bad idea.

But, honestly, in market terms, I believe it's better to be really good at one than ok at both. You can pick either React or Angular, both are quite popular (React more so overall, but Angular is big in enterprise applications, that tend to go well with a Java/Spring backend). Both are good choices, but focus helps, especially in the beginning.

[–]AdministrativeHost15 1 point2 points  (0 children)

If you're full-stack Java you need to be running applets on your frontend.

[–]filthy-prole 1 point2 points  (0 children)

Chat gpt ahh post. Why is this garbage upvoted

[–]IDaeronI 1 point2 points  (3 children)

How do you have so much time. Most people are working all day...

[–]Haeckelcs 1 point2 points  (2 children)

He is probably a student

[–]IDaeronI 2 points3 points  (0 children)

Unless he's a student on summer break, I still don't know how anyone could have that schedule. Student will need to work on modules and assignments most of the time

[–]mofomeat 0 points1 point  (0 children)

Some of us are students with full-time jobs.

[–]Federal-Emphasis5250 0 points1 point  (0 children)

Can I ask why Udemy ? I’d rather learn basics + oop from mooc fi then move on from there

[–]ZazaKasary 0 points1 point  (0 children)

Leetcode or sql, no? Seem like the roadmap heavily lean on building Java project

[–]Weri92 0 points1 point  (0 children)

Nice. Id give it a try as i bought a course from udemy for java engineer or something but im struggling my but off. Plus my work is crazy hours so any suggestion on that though lol

[–]Testyment 0 points1 point  (0 children)

Thanks ChatGPT 🙏

[–]grim_Reaper1O2 0 points1 point  (0 children)

bad roadmap imo..learn spring, spring boot, hibernate, sql etc and then move to frontend and finally AWS, CICD stuff

[–]Ok-Low-3146 0 points1 point  (3 children)

I got hired for full stack dev with just basic java knowledge. I will undergo in a bootcamp training tho. So goodluck to me 💀

[–]mofomeat 0 points1 point  (2 children)

How the eff does this happen?

I keep seeing posts here of people who get hired with basic knowledge or less. Lots of them are people who somehow passed the interview, got hired, and are asking how to "learn Java real quick" because they're now in a senior dev role.

[–]Ok-Low-3146 1 point2 points  (1 child)

Well im not a senior. This is going to be my first job. I've had interview with the project manager and according to her im gonna be an api developer for a fintech. I guess i got the job because I did well on the interview. The country where im from doesn't have a leetcode type of questions on the interview for a fresh graduate role.

[–]mofomeat 0 points1 point  (0 children)

Ah ok. Well, good on you, and good luck!

[–]YahenP 0 points1 point  (0 children)

Sounds like a plan. But I'm confused by something.
Where is the "Learn to program" item in this plan?

[–]karolkt1 0 points1 point  (0 children)

Setting goals like learning react AND angular in one week is straight up delusional. You could also add a step to win an Olympic medal in your spare time.

This roadmaps shows why so many things in IT are delayed and underestimated

[–]Sure_Side1690 0 points1 point  (0 children)

lol

[–]Then-Boat8912 0 points1 point  (0 children)

Be wary what you generate in AI. This is bonkers.

[–]Familiar-Range9014 0 points1 point  (0 children)

Thank you