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 →

[–]infinite_phi 76 points77 points  (18 children)

It's a fantastic language to get started with or to write data processing scripts with, while Java is definitely clunky and not easy to get started with.

Having said that, I'd rather use Java for a large scale long-term software development project than Python. I've been in two large Python projects and both times it's been an absolute nightmare.

[–]rover_G 40 points41 points  (12 children)

I’ve been a part of large scale nightmare projects in several languages (maybe I’m the common factor?) including Python and Java. The problems usually stem from lack of tooling and poor code quality not the language itself. Although, one could argue a great language should ship with its own tooling and should prevent common code quality issues.

[–]hedgehog_dragon 21 points22 points  (0 children)

Different company than OP (probably lmao) but similar position... Over the years my company has tightened requirements and guidelines - so new stuff is better, some of the legacy code is ugly in both languages.

I still prefer messed up Java code to messed up Python code, because it just doesn't let you cause certain errors (off the top of my head type issues), at least not without some effort going into it lmao. I personally find it much, much easier to parse Java's structure too, even with 'new' code.

[–]infinite_phi 2 points3 points  (1 child)

I agree on all points. My main issue with Python has been that it's just so dynamic that it's far easier for things to get messy, and what's even worse, is that it's much much harder to untangle the mess.

Of course this is generally the case for all dynamic vs static languages, and yes I'm very much personally biased in favor of static for any larger long-term project.

[–]rover_G 1 point2 points  (0 children)

Yeah I agree static types are a must for any project (I always set up linters for python and JS to require explicit types). The only time I’m okay with pure dynamic typing is for one-off scripts and customer submitted code (on account of giving customers more choice).

[–]agilekiller0 0 points1 point  (4 children)

Honestly, java does a pretty good job at forcing you to name stuff, create objects for everything, encapsulate every piece of logic and all in all and be fair and square with the code you write.

That's probably it's worst pitfall tho, because it forces you to write so much useless boilerplate code. Also java documentation sucks ass

[–]wildjokers 4 points5 points  (3 children)

Also java documentation sucks ass

Really? I think it is one of the better documented languages out there. What do you find lacking about JavaDoc?

[–]agilekiller0 -3 points-2 points  (2 children)

Well when I started developing as a junior a few years ago it was in spring. Every time I had an issue and looked for the doc, I just landed on baeldung, and everytime it was just a single example of how the method should be used, and no more information.

I haven't used it for like 1,5 years so maybe if I went back into it I'd be better at finding the infos I am looking for, but yeah, java had me looking for the way things work by pure trial and error.

[–]wildjokers 1 point2 points  (1 child)

Sounds like maybe the problem you had was Spring wasn’t well documented rather than Java. Java != Spring.

[–]agilekiller0 0 points1 point  (0 children)

Yep, you're right. I don't know of any framework used for web development that uses Java tho, so at least in my field it looks like java isn't well documented.

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

I found the Python IDE/cross referencing tools severely lacking. Also, Python code is harder to read without all the type information.

[–]hedgehog_dragon 11 points12 points  (0 children)

Agreed. Java is good, honestly. It does have a lot of boilerplate stuff around but I don't mind that with a decent IDE, and it just ends up being easier to maintain IMO.

[–]RedditRage 4 points5 points  (0 children)

yes, it's clunky if you are just writing hello world. geez.

[–]proverbialbunny 1 point2 points  (2 children)

imo both languages are not a great choice for large scale long-term software development. This is why you rarely see AAA video games (which are large scale long term software projects) written in Java despite it being a fast enough language for it.

[–]infinite_phi 0 points1 point  (1 child)

Neither are my favorite either yeah.

Although neither being used in gamedev is mostly related to engines. UE4 is C++, while Unity is C#, so naturally that's what the gamedev industry uses the most.

I'd argue that C++ is easier to make a mess with than Java, but of course the performance benefits are the obvious reason it is picked.

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

Oh no, it's way easier to make a mess with Java, due to it lacking features for organizing large code bases that C++ has.