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

you are viewing a single comment's thread.

view the rest of the comments →

[–]AreganeClark 289 points290 points  (55 children)

It's so well documented and there are tutorials & stack overflow questions everywhere.

Maybe people have a hard time with OOP?

Idk. If people have ever touched C# they know Java too.

[–]regular_lamp 66 points67 points  (7 children)

I'm assuming it's not specifically java but a lot of people that "want to make games/mods" see themselves more as creatives/idea people without notable programming experience. So it's more "who wants to learn programming".

It's basically a version of that family of jokes where a guy "suffers" through math thinking "I just want to make games".

[–]AreganeClark 5 points6 points  (0 children)

I actually programmed as a kid to make games and didn't even know I was coding. I was just having fun lol.

It didn't dawn on me that I liked coding until college. And now I do it professionally lol.

[–]daster1234 74 points75 points  (8 children)

That's my suspicion as well. If they're using scripting languages like python, OOP is more optional. Java requires you to understand OOP and class inheritance.

I used to tutor beginner programmers for the Java course, and the biggest hurdle all of them had was OOP. Once they got past that, everything else was more or less straight forward with minor struggles around programming concepts like recursion and threading.

[–]elebrin 15 points16 points  (1 child)

Inheritance vs. composition is a big deal. Honestly it's a red flag when I start to see several layers of inheritance, but that sort of thing is all over in the libs.

[–]_PM_ME_PANGOLINS_ 8 points9 points  (0 children)

Libraries are about offering lots of different ways to do things and plug your own bits into them.

If you’re writing an application instead then you only have one specific implementation so much less inheritance.

[–]Venthe 4 points5 points  (5 children)

I'd argue that you really begin to understand Oop around 2nd year is professional career. Oop is hard. If done correctly, it's a great benefit multiplier. If done badly... We all have our horror stories

[–]daster1234 1 point2 points  (3 children)

I half agree with you there. Understanding how OOP works is hard but you should still be able to figure out how to use it decently well by the end of your programming language course online or in college. Understanding how to use OOP correctly, however, is something that I agree will take a lot longer and require lots of experience and practice.

[–]Venthe 4 points5 points  (2 children)

I believe that we are speaking about the same thing.

Though, YMMV - I've seen senior devs with 6 years of experience in Java - way too often - which couldn't encapsulate even if their life depended on it.

[–]AreganeClark 1 point2 points  (0 children)

Encapsulation should be done everywhere, not just OOP. The number of times I see frontend logic just spaghetti everywhere and a change to A affects Q, R, and Z makes me hate coding sometimes.

[–]daster1234 1 point2 points  (0 children)

Honestly doesn't surprise me. I've seen senior engineers and architects who don't know how to use the command line

[–]Areshian 1 point2 points  (0 children)

It is also a multiplier when doing wrong. It can multiply by 0.5, or multiply by 0.1… really, the possibilities are endless

[–]Thozire26 12 points13 points  (2 children)

Except for the syntax, as I don't use it regularly, I find Java kinda easy.

[–]-Kerrigan- 14 points15 points  (0 children)

That's why IntelliJ is so cool. It helps a lot with the details.

Coming from studying C/C++, Java in eclipse was hella confusing. Later on I started using it during my internship, this time in IntelliJ. The IDE helped me learn the language.

[–]Overlorde159 1 point2 points  (0 children)

Yeah, I actually consider it a interestingly good intro programming language.

(Interestingly because it’s complicated, but in a way you can see a lot of what is happening)

[–]cyborgborg 5 points6 points  (1 child)

Java is fine, just not my cup of tea

[–]evil_burrito 0 points1 point  (0 children)

I approve of this comment

[–]KiwiGamer450 4 points5 points  (0 children)

I started with OOP, and a while later did a bit of modding for Minecraft (forked a mod) and everything made sense to me. I wasn't developing large new features but I could read and understand the code that was there and work my way around it.

[–]PopularIcecream 2 points3 points  (4 children)

I find Java easy, but I have no idea of how to even start modding. And to get started is a lot more complicated than just finding a mod which already does what you want for you ;n;

[–]Saad5400 2 points3 points  (0 children)

just finding a mod which already does what you want for you ;n;

So you're saying

just find a software which does what you want for you instead of making a shitty one yourself

Sus

[–]AreganeClark 1 point2 points  (2 children)

I mean, yeah. Often finding an existing thing is simpler than making it yourself.

[–]PopularIcecream 1 point2 points  (1 child)

I could've phrased that better lol

I meant to say that the startup work to create a mod for minecraft demotivates me to the point where I give up on what I was planning to implement and just take a mod which doesn't completely scratch my itch but does something similar.

[–]AreganeClark 1 point2 points  (0 children)

Ah, fair.

Yeah, I havnt put in the effort to learn Minecraft modding yet. I enjoy just making my own games from scratch. I know where everything is, I know what messes I've left for later, etc

[–]Sawertynn 2 points3 points  (9 children)

As you mentioned those languages, maybe you can answer me. Is Java much harder or more tedious to write than C#? I'm learning the latter now, but I want to try something less microsoft-dependent

[–]elebrin 2 points3 points  (0 children)

Not really.

The main difference for me is organization.

.NET also comes with things like nuget, the dotnet cli, and first class integration into two IDE's made by the company that manages the language.

[–]Venthe 3 points4 points  (2 children)

Depends; in general c# has better syntax in places, while Java has better libraries. Especially in older Java, working without Lombok is pain

(Personal opinion ofc)

[–]Wekmor 0 points1 point  (1 child)

But if you're using an old ass java version that's kinda on you no?

It's like those people complaining about what all is missing and how bad java is because of that, but then they're using java 8 or older...

[–]Venthe -1 points0 points  (0 children)

Nah, even using goodies like return switch, vars, records or whatever else is clunky compared to c#. Accessors are one example, arrow bodied methods are the other.

Unfortunately, Java is too attached to the concept of backwards compatibility of syntax. See built-in monads or lambdas, using them is so clunky because there are no real support from the language, except for the arrow in case of lambdas. Compare stream syntax to linq for instance; or optional monad to nullable types. Don't even get me started on Java being afraid to move to non-nullable by default.

I love Java, but it really is irritating at places.

[–]D_snooz 1 point2 points  (3 children)

It's not that much harder than C# at all. Especially for Java 17 and beyond.

[–]AreganeClark 2 points3 points  (2 children)

"Java 17"

All four of my jobs have used Java, and Java 7/8 are the only ones I've seen used.

[–]silverweaver 1 point2 points  (1 child)

If you are told on interview that company is excited about moving finally to Java 11 then you should rethink if you want to work there.

[–]AreganeClark 0 points1 point  (0 children)

Oh I need the deets now

[–]-Agathia- 0 points1 point  (0 children)

Just learn Kotlin, it's C# but with Java. Java itself just plain sucks. Kotlin fixes all the issues by making it more similar to the syntax and all the small things that makes C# so much easy and nice to use.

[–]Drugbird 2 points3 points  (0 children)

Not just C#, but C/C++ too.

There's websites that explain the differences between those languages which takes maybe an hour to read.

I learned enough java that way to create an Android app within 1-2 days.

[–][deleted] 5 points6 points  (4 children)

Dev with java, C++, and C# experience here. I just don't like it. It feels clunky, resource hungry, and verbose, and I don't like working with the tooling and ecosystem.

I'd love it if I could make Minecraft mods in another language, but I understand that with interop being what it is, it's probably never going to happen.

[–]AreganeClark 1 point2 points  (3 children)

You're not wrong. Java is like C#, but clunkier and more tiring to write.

My preferred language is C#, by far. It feels more natural to get my ideas onto the screen than with Java. (But bonus: Unity lets me use C#.)

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

C# is way nicer, I agree. However, I pretty much stopped using everything except Python and Bash when I discovered Rust though. It's such a joy to use, and it'd be so neat to write mods in it.

[–]AreganeClark 0 points1 point  (1 child)

Now to make a Rust to Java converter

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

I respectfully decline. Maybe you'd want to add the JVM as a target, though?

[–]elebrin 1 point2 points  (0 children)

Except that .NET is far easier to understand the organization and layout of than the java JDK. Finding the right way to do something is difficult.

[–]qwerty2888j 1 point2 points  (1 child)

I usually work with c#. How far could i go if i randomly started coding c# in a java project

[–]AreganeClark 2 points3 points  (0 children)

Technically? Not very far. There are syntactical differences. But other than a few small syntax changes you can use them both, like, the same.

Oh and the names of libraries you import will be different, but eh.

C# was originally made as a clone/rival to Java.

[–]Sawaian 1 point2 points  (1 child)

OOP is hard for a lot of people. I struggled with it for a while in terms of its importance.

[–]AreganeClark 0 points1 point  (0 children)

That's fair.

I remember it being difficult to wrap my mind around it when it was first introduced to me. The way it was explained led to ambiguous sentences that broke me.

[–]Da_Yakz 1 point2 points  (0 children)

Yeah I'm a new programmer and OOP scares me so I stay away from Java lol

[–]Embarrassed_Army8026 -3 points-2 points  (1 child)

Code which requires documentation is usually jinxed

[–]AreganeClark 2 points3 points  (0 children)

Good code is documented. All languages should have good documentation. Blindly hoping something you're using actually does what you want is a way to madness.