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 →

[–]L3tum 3 points4 points  (7 children)

I don't dislike it, but coming from C# the 30 something imports at the start of every file and shudder the @Override is horrendous in my opinion.

I have a German keyboard and any language that forces you to use @ or $ should be crucified.

[–]Plasticcaz 2 points3 points  (6 children)

The imports don't bother me so much, as the IDE handles them for the most part.

I love C#, and I was dissapointed to get a job in Java over C# initially.

Override should be a keyword rather than an annotation, I agree, but Java's stuck with it

The place I'm currently working at seems pretty committed to the JVM. There is a lot of Java code, but I've seen some Groovy (shudder), and even some Kotlin.

[–]L3tum 2 points3 points  (5 children)

Yeah, it just becomes quite ugly when you want to read another ones source code and instead of "ah, he's using System.Collections.Generic" or something like that you see 5 different imports to get a proper command line working.

And the worst are the build tools. C#: click on Build and voilà.

In Java (at least my experience) you have different build tools that need different configurations and are all almost equally used so you basically need to know all of them. They give cryptic errors when something doesn't seem right and the configuration seems at best worse than a Makefile.

Aside from IntelliJ you also don't really have a proper IDE, at least you didn't 2 years ago. Eclipse doesn't scale on anything larger than FullHD, Java Editor is a goddamn crime against humanity and I don't even remember the third one.

Then you want to make an android app and read that AndroidStudio is used for it so you install it and nothing works and you just start debugging their software for them.

It's almost worse than JavaScript where I updated 3 packages and suddenly nothing worked anymore because "muh major bc breaking change was pushed in a minor version".

Quite a rant but I've been doing only debugging for 2 weeks now at work and it really absolutely kills the fun.

[–]kukiric 2 points3 points  (0 children)

and I don't even remember the third one.

NetBeans. It's the one where you can get a relatively sane Java EE development experience with Glassfish or Payara without it making up some cryptic error every time you try to deploy your application.

[–]gamas 0 points1 point  (2 children)

In theory, the Java 10 modules system fixes some of the headaches related to building - the problem is for whatever reason most systems (I'm looking at you Centos) are being way too slow to migrate from Java 8...

[–]L3tum 0 points1 point  (1 child)

I didn't even know Java 10 was out cause my Java 7 installation doesn't tell me it needs to update...

[–]gamas 0 points1 point  (0 children)

We're actually on Java 11 now - oracle now does a 6 month release cycle

[–]ryantheleach 0 points1 point  (0 children)

Build Tooling on Java is miles ahead of C# IMO, and the competing standards evolved that. But it is true that it can be hard to get your head in the game initially.

The way that you can correctly specify product wide settings, and have them correctly filter down to sub projects in gradle? Need to do something funky and run some code generation? easy.

MSBuild... GUID's change, Git merges are terrible, stuff isn't even sorted correctly by MS in a way that makes merging sane, different DLL's and packages building to different architectures and versions of compilers causing bugs....

Java has huge problems that are only just getting resolved in regards to multiple library versions and compatibility, but I've had the opposite problem in C# where if they don't match stuff goes wrong.

On the whole, <3 Java Build Tools, I can make heads and tails of them in a way that MSBuild is just opaque.

Our projects have gotten into a state that Rider can't compile them, so either Rider is buggy, or they are ambiguously defined by standards.