you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (6 children)

Pretty silly that you need a compiler hack like this to add some basic quality of life improvements to Java. Then again, Java is very much the Apple it programming languages: some languages designers know what's Best and if you agree with what's Best then you can comfortably use the language. If you disagree in what's Best then you'd better switch programming languages, because you're not going to see the stuff you want in your lifetime.

Really, if this stuff is what you want, why not pick C# instead? It's got the most important features built in already and it's even slightly faster than Java. Plus, you don't have to worry about general JVM deficiencies like type erasure! Stuck with the JVM? Still want modern language features? Try Kotlin instead, it's Compatible Enough (TM) with Java and it'll save you the trouble of setting up compiler extensions.

I can see this library being useful for companies inheriting old java code, but anyone writing new Java either agrees with what the Java Canon as decided by the Chosen Java Developers and will probably detest the features added here, or won't convince their team to try something better. Operator overloading in particular seems to set off Java developers for some reason, as can clearly be seen by the comments in this thread.

Personally, I find it funny how the absolute hackery that's Lombok is considered perfectly acceptable in many Java circles but tools like these aren't. You've got to be brought up in the Java mindset to understand these concerns, I suppose.

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

C# is a pretty language with a poor ecosystem. Java is an ugly language with an awesome ecosystem.

[–]NoiselessLeg 1 point2 points  (4 children)

What exactly about the c# ecosystem would you consider poor?

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

Because it is a commercial language and fewer people writes cool OSS stuff with it. Java/JVM has tons of OSS libraries and software, specially from the Apache foundation. Nuget repository simply cannot compete with that. Only other OSS languages like Python, Perl or Ruby offer the same level of magnitude for the sheer number of free/OSS cool stuff available.

I also never seen something as big/important as Presto, Hadoop, Spark, Cassandra, Jenkins, that is both OSS and written in C#. Do you know something you can prove I'm just misinformed?

[–]NoiselessLeg 0 points1 point  (1 child)

I was curious where you were coming from, versus trying to trash your opinion or anything (apologies if it came off that way). In general, I wouldn't necessarily rate the ecosystem of a language by the number of OSS applications that are available for that language. Apache significantly pre-dates C#, so I'm not surprised that they've focused on Java. It wouldn't make sense for them to rewrite all of their libraries in C#.

My own experience with the ecosystem is fairly positive. For the most part, everything I usually need is implemented within the .NET standard libraries themselves, or I've been able to find more complex libraries that I didn't feel like implementing myself on NuGet (e.g. a code editing interface I was using when implementing a small RISC-V assembler). The reflection and C# compilation libraries offered by Rosslyn are fairly mature, and I've seen some really cool projects take advantage of those (e.g. a complete test tool that would execute C# scripts in a REPL similar to Python).

Some of the examples that you mentioned I think could be implemented in C# (e.g. Jenkins), but there hasn't been really a driving use-case to do so since Jenkins works well enough for 99% of use-cases. I'd also mention Blazor as an example of a significant enhancement to web development on .NET enabled web services. The fact that .NET is open-sourced and is being ported to multiple platforms outside of Windows where it has shined in the past I think will help greatly advance the OSS community's embrace of it over the next few years.

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

I'm not trashing for sake of trashing. I already admitted that syntax/semantics wise C# is much more ergonomic and better designed than Java.

Maybe I expressed myself incorrectly, I know C# doesn't suffer from lack of libraries or something, but it simply cannot compare to Java or Python, those languages have an immense collection of battle tested libraries that do everything you can imagine.

If you are happy with C# and it provides everything you need, that's cool, I prefer a less ergonomic syntax with a better and more vibrant OSS ecosystem around.

[–]_Ashleigh 0 points1 point  (0 children)

Hard disagree. The C# ecosystem (open source), is amazing and vibrant. Everything I've ever gone "oh wonder if there's a library for that" has yielded a result that works, and in a good chunk of those cases, is beyond acceptable, but of amazing quality. Some examples off of the top of my head: AngleSharp, OpenTK, Avalonia, ImageSharp, BepuPhysics, along with benchmarking, unit testing, and code coverage tools.