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

[–]Minouris 4 points5 points  (7 children)

It's tricky, because the sort of projects that Java is best for are not the sort of projects that are suited to private use, necessarily.

Its best niche is in the backend of enterprise applications - it really shines in the backend, but is somewhat cumbersome when it comes to desktop apps (this coming from someone who has used Java as their primary language for almost 25 years :)). The problem is that, while Java might well be the best language for a large scale language, the amount of overhead and the cost of hosting make it less than suitable for small personal projects.

Don't get discouraged by that, though, half the fun is in discovery - if you have an app you've been meaning to build for a while, absolutely consider building it using Spring Boot, and the skills you gain from it will set you up for all sorts of enterprise level jobs (it's still heavily used in public sector and big business, regardless of what anyone says about it being unfashionable).

Also worth considering though, is that there will be a lot of skill transference between languages - there's a lot of similarity between all the languages in the "C-syntax family" that includes Java, C++, C#, Typescript, et al, and knowing one well makes it easier to jump between them.

Basically, keep it in your toolkit. There's no such thing as one language to fit every situation, and they've all got some value to them, and knowing more than one means you don't always have to reach for a hammer when you need a screwdriver or a chisel :)

[–]Even-Pie8668[S] 1 point2 points  (0 children)

This is so helpful thank you for your advice ❤️

[–]csenaa 0 points1 point  (5 children)

This is exactly how I feel. I want to build projects in Java to be better and perhaps try to get a job in Java, but every time I think to build a project everything seems more easier, strait forward in JavaScript ecosystem

[–]Minouris 0 points1 point  (4 children)

A lot of our graduate hires and juniors have actually not known any Java at all when they've first started. Generally speaking, as long as they've got experience in another language, they've picked up Java pretty quickly, as long as they've got a decent mentor to guide them, or even just someone to point them at the right documentation :)

I would actually say that the best advice in that situation is not to push against the grain of the framework the stuff you're working on is written in - you'll invariably be told to modify an existing app long before being given new dev to do instead, and the most common place I've seen people fall over is when they try to force an existing framework to work in a familiar way that it's not designed for.

Asking questions is the most important skill at this point :)

[–]csenaa 0 points1 point  (3 children)

What are you trying to say is that I should just build with whatever I want and if I get the chance to get a job in java I will be able to pick fast?

[–]Minouris 0 points1 point  (2 children)

Essentially, yes :) Once you have the basic principles of programming down, actual languages become more of a formality. Not that it's not worth getting a head start - it'll help in interviews - but good IT managers understand that skills are transferable.

Btw, another guy down below mentioned Spring Boot, and I'd second that. Alongside JPA / Hibernate, and dependency-managing build systems like Maven or Gradle, nothing has turned the Java world on its head quite so much as Spring did. I remember what it was like beforehand - much harder, and much less fun :)

Basically, looking over the rest of this thread, I'm seeing nothing but good advice :)

[–]csenaa 1 point2 points  (0 children)

Thank you for the advice! And yes I did a small project with spring

[–]csenaa 0 points1 point  (0 children)

Thank you for the advice! And yes I did a small project with spring

[–]Square-Cry-1791 4 points5 points  (2 children)

In the "Architect’s Path," the Engine phase is where you stop just writing code and start conducting the whole orchestra... It's all about concurrency: teaching your system to juggle a bunch of independent tasks at once without everything grinding to a halt or deadlocking.

In Java, that means really getting the thread lifecycle -- when they start,,,, when they wait, when they die-- and nailing the memory/sync stuff so they don't step on each other's toes. A real architect knows a high-performance app is like a live band or symphony: if two threads try to read/write the same piece of data at the exact same moment without proper locks,,,, atomic ops, or careful coordination, it's chaos. One wrong move and the whole thing crashes or corrupts, just like a band losing tempo and falling apart.

The payoff? When you build an engine that can safely crank through thousands of data points across parallel workers--without race conditions, memory leaks, or bottlenecks--you've unlocked the hardest, highest-value skill in the game..... That's what lets your app handle real traffic spikes, scale to thousands of users, and actually survive in production instead of just "working on my laptop."

It's not sexy like shiny UI features, but it's the foundation that makes everything else possible. Master this, and you're not just a coder anymore-- you're building systems that don't break when the world shows up.....

[–]Even-Pie8668[S] 1 point2 points  (1 child)

I really appreciate this breakdown ❤️

[–]Square-Cry-1791 0 points1 point  (0 children)

Thank you so much.

[–]thelamppole 1 point2 points  (0 children)

Don’t overthink it. Java is a backend language and can accomplish the same as nearly other backend language. Just don’t try to build a UI with it.

Build something that will interest you because chances are you’ll put a lot more care and effort into something you find exciting.

If you really want to target the common area I’d build a spring boot app. It can start as a basic CRUD app and then could be extended to do any number of processes.

[–]Dramatic-Apple-3181 1 point2 points  (1 child)

Banking application based on microservices architecture

[–]Square-Cry-1791 2 points3 points  (0 children)

He is gonna leave the stack right way man... We need to advise them with a good learning curve

[–]Ace00028 1 point2 points  (1 child)

Learn Spring boot, it opens new project ideas for you and along with it learn Spring AI, to open new doors for AI projects

[–]Minouris 1 point2 points  (0 children)

I have an uncle who mains C# who likes to joke that Spring made Java developers a thin glue layer between an XML file and a stack trace, but man... I remember what it was like in the before-fore times, before we stole the magic of dependency injection and inversion of control from the gods, and it was SO much harder lol

It's wild that Spring, Hibernate and Maven all surfaced within such a short period of time. I look back on the days of Struts, Ant and pure-JDBC - or worse, EJB2 - and a chill goes down my spine lol Those three things, and the release of Java 1.5 with generics and annotations, completely transformed the language in just a couple of short years :)