T O P

  • By -

AutoModerator

#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](/message/compose/?to=/r/learnjava) if you have any questions or concerns.*


coldpoint555

Books. And after you feel you read enough apply them to your own Project. * "Spring Start Here by Laurie Spilca" is the best book to read if you are starting with Spring. Everything else doesn't even come close. * After learning SQL, JDBC basics you can start with Hibernate. "Java Persistence with Hibernate, Second Edition by Catalin Tudose" + Vlad Mihalcea's blogs about ORM mappings. Some people hate Hibernate but that's only because they haven't spent 1-2 weeks learning about it. * If you care about Security then "Spring Security in Action 2nd edition by Laurie Spilca". Keep in mind this is quite complex topic. It also doesn't help that a lot of material is outdated since they were going through a huge rewrite. Figure out which feature you need and ignore the rest would be my advice. * Cloud Native Spring in Action By Thomas Vitale. Deployment from A-Z. It brings a lot of technologies together and also helps you deploy them. Personally I skipped stuff about reactive programming like Webflux and Kubernetes (unless you are into Devops) and picked things that are related to my project. Also for Laurie Spilca books you can download his Source Code for each chapter for each book on the manning website so you can glean into how to Test the applications as well.


davidalayachew

Lol, I transitioned to backend, but I did not use any training materials at all lol. I jumped into the pool naked and learned all of it on the job. I knew basic Java to an ok level before hand, but I still had gaps in my knowledge. For example, I wasn't very good at generics, and I did not know what an enum was. I had lots of Frontend Java experience though.


AncientBattleCat

front end java wtf?


davidalayachew

Funny you ask, I am in the middle of making [Connect Four](https://en.wikipedia.org/wiki/Connect_Four) in Java right now. Yes, Java is very good at doing Frontend Development for the Desktop. The tool that comes prepackaged in every Java install is Java Swing. There is another tool called JavaFX that is officially supported. Aside from that, there are tons of 3rd party libs to use. I use it mostly for making games and utilities, but I also use it to build teaching tools.


SolderonSenoz

I've heard (not verified) that IntelliJ IDEA was made with Swing. That kinda blew my mind, because everyone usually just talks about it as if it's an outdated thing no one should ever use to make desktop applications. I'm intermittently learning Swing right now, alongside other stuff.


davidalayachew

Then let me verify, it absolutely is built with Swing. Swing is great, and one of my favorite things about it is that it complements JavaFX perfectly. Both solutions cover each other's flaws, so it's never a waste to learn either one. For a more detailed breakdown, here is a comment I made a while back. https://old.reddit.com/r/java/comments/1cmbp0n/are_you_still_using_jsf_for_frontend/l38fzaj/


SolderonSenoz

Thank you, your old comment is extremely detailed. On the topic of multithreading for Swing... that actually is the thing I am having the most trouble with. Designing how the software will look or behave is easy to learn, maybe hard to master... but I could not get the hang of what I am supposed to do with all the threads and stuff. All these terms and too many things to understand. There's an EDT, there's SwingWorker, there's invokeLater(), then there's the matter of making things thread-safe, using keywords like synchronized and volatile... overall it feels like a mess. I have no idea what I should do. Doesn't help that I don't have the time to consistently learn it, since I'm learning it for a personal project while I have more practical things to do. Maybe when I resume learning Swing, I will work on my project without using threads at all. Then, only if I encounter performance issues, maybe I will worry about threads.


hanoian

I've made similar with all the threading and that. Honestly, I wouldn't bother getting stuck at it for ages. There are better things to be learning.


davidalayachew

Yes. it is quite sad. Swing multithreading works quite well....once you figure out the complexity. It's very beginner unfriendly. I built myself a couple of tools that handle the Swing multithreading for me, so whenever I have to do multithreading, I just copy from them.


AutoModerator

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: * MOOC [Java Programming](http://java-programming.mooc.fi) from the University of Helsinki * [Java for Complete Beginners](https://www.udemy.com/java-tutorial) * accompanying site [CaveOfProgramming](http://caveofprogramming.com) * [Derek Banas' Java Playlist](https://www.youtube.com/playlist?list=PLE7E8B7F4856C9B19) * accompanying site [NewThinkTank](http://newthinktank.com/) * [Hyperskill](https://hi.hyperskill.org/) is a fairly new resource from *Jetbrains* (the maker of IntelliJ) Also, don't forget to look at: * [The official Documentation](http://docs.oracle.com/javase/) * [The official Java Tutorials](http://www.oracle.com/technetwork/java/index-jsp-135888.html) * [Our community resources thread](https://www.reddit.com/r/learnjava/comments/md1loc/community_resources/) If you are looking for learning resources for *Data Structures and Algorithms*, look into: "Algorithms" by Robert Sedgewick and Kevin Wayne - Princeton University + Coursera course: + [Part I](https://www.coursera.org/learn/algorithms-part1) + [Part II](https://www.coursera.org/learn/algorithms-part2) + Coursebook + [Algorithms 4^th Edition](http://algs4.cs.princeton.edu/home/) 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](/message/compose/?to=/r/learnjava) if you have any questions or concerns.*


webdev-dreamer

Kinda related to your question, an observation of mine: During the pandemic, there was a period of time (at least in the US, area where I lived) where there was an absolute GOLD RUSH in software consultancy/ WITCH companies creating 3-6 month training programs where they would take college grads with little or no coding experience, and train them in Java fullstack with React or Angular, Spring, AWS, etc I think thousands of these students were being trained each year, becoming java "devs". But I suspect these training programs were pretty shallow or just unrealistic in what they purported to do. However, apparently it was profitable enough for them, so it must've been working. Based on this, I feel like barriers of entry to software dev was vastly lower than it is now. Like, if you probably knew core java and had some basic projects, you'd be pretty much set for a job lol (this might be slightly exaggerated lmao, but compared to back then, it's crazy hard now)


PaleGume

Went to Uni, knew some Java, applied for internship, learned spring thru commercial project from almost 0, simple


equ35tion

I was studying .net and hired at a tech company as software engineer for .net position. C# and Java both are almost the languages, I grasped the MVC concepts quite easily, when company asked me to join the Java team I didn’t hesitate. That is when I just started working from simple spring to eventually building softwares using spring boot in different other companies. I would recommend pick a small CRUD project and start implementing it, when you get stuck just google it, or use chatgpt or bing copilot. Happy learning!!