Earlier quoted context omitted.
It’s not hard to find people who want to write Java. I do it all the time. We have been hiring and writing Java code for fifteen years and have not seen a decline in the interest.
It’s hard to find quality people who want to write Java.
Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
181–190 of 555 posts
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#182Earlier quoted context omitted.
Irrational Fear of Java is one of the most confusing things among startup stage companies.
Can you compile so that JRE is bundled with the program? I'm a C# developer and I also have a kind of resistance of java - having to install JRE and now the minefield Oracle made with the JRE, I'm hoping not only that I don't have to code in it, but that I don't have to use ANY Java program just to avoid the runtime or have to choose between different versions of it. And then the .jar files and how you execute them i…
https://www.graalvm.org/latest/reference-manual/native-image...
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#183Earlier quoted context omitted.
Irrational Fear of Java is one of the most confusing things among startup stage companies.
Java has the lingering shadow of Oracle hanging over it. That legalistic hydra is enough to make you second guess using it.
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#184So with this, the last thing Go had going for it over Java is gone, right? Java has an obviously better type system, while Java originated the billion dollar mistake, Java also at this point has much better practices around handling nulls than Go, Java's jars are more portable than go's binaries, Java's GC performs better, Java has a more mature ecosystem and more libraries... Java has better IDE support and comparab…
`com.lol.myapp.factory.UserFactoryImpl.java` would like to have a word about its clear superiority
regarding the "com.lol.myapp", i actually think this is a good think for package management, it avoids naming issues with packages for different vendors and forks. On the code itself you should only see these on the import lines on top of the file, which isn't really a big deal.
I think most people issues with java come from old legacy codebases that had over the top patterns like that due to limitations in the language and culture. Nowadays, with a proper conventions guide, java can be quite clean. Sure it won't ever be as clean as something new as Kotlin, as it tries hard to maintain backwards compatibility, so old ugly stuff will remain in the language (even if you don't use it, you might see old code that does), and new stuff designs are restricted by what already exists, but it still has its advantages over new shiny things like kotlin for example: new pattern matching, compile time and compatibility (kotlin "100% compatibility" doesn't actually cover everything, and compatibility is important for Big Co with loads of teams and loads of internal and external dependencies and tools)
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#185Are these like javascript promises or goroutines?
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#186Earlier quoted context omitted.
You implement both, duh. Single method interfaces are what lambdas are for.
Its not an interface though: public abstract class Reader Did Java add multiple inheritance or am I missing something?
However, there's lots of code which just takes a Reader/Writer and then you're SOL.
(In general, the I/O interface/class hierarchy in Java is a bit of a mess because a lot of it was retrofitted to maintain binary compatibility. The equivalent stuff in Guava seems a bit saner, but of course not directly usable with all the 3rd party libraries you might want -- it has shims for the most part, though.)
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#187So with this, the last thing Go had going for it over Java is gone, right? Java has an obviously better type system, while Java originated the billion dollar mistake, Java also at this point has much better practices around handling nulls than Go, Java's jars are more portable than go's binaries, Java's GC performs better, Java has a more mature ecosystem and more libraries... Java has better IDE support and comparab…
As a language java's not that bad at this point. But it still has cultural issues. Every java project I encounter tends to be overengineered, has tons of useless boilerplate code and ends up throwing mile-long stack traces as a result. Also, somehow maven manages to be even more unreliable than npm as a package manager. I still frequently encounter situations which seem to only get resolved by throwing away my .m2 fo…
I stopped working with Java not because the language or the ecosystem. I stopped working with Java because Java developers and their culture of over-engineering everything defending it as "clean code" and "good practice".
But this seems a taboo topic in a culture infested with "good practice gurus".
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#188Earlier quoted context omitted.
C# doesn’t really have an equivalent for Go’s channels syntax though. Also, Go doesn’t have inheritance, but does have interface forwarding and structural (as opposed to nominative) type-system - those both very significant factors that influence final program design.
Being not super familiar with Go, I think C#'s async/await is similar, isn't it? If you want more complex operations, you might want to look into System.IO.Pipelines.
As an aside pipelines are terriblely unergonomic. The public APIs are not fully developed and something simple, like IDK creating an actual processing pipeline, is funky as all hell. Creating a pipe wrapper feels dirty.
The buffer management is cool though and sequence seems like it should have just been made a first class slice type..
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#189Next stop, tail calls plz.
Re: Virtual Threads Arrive in JDK 21, Ushering a New Era of Concurrency
#190Earlier quoted context omitted.
Haskell’s type system does type erasure, is it “worse” for that?
No. Both type erasure and monomorphization have always been legitimate ways to compile generic code. IIRC, the issue with Java is that type erasure is sometimes a leaky abstraction.
My main issue with non-erased generics is that they actually break reasoning wrt. parametric polymorphism as soon as you allow for pattern matching or even just .isInstanceOf on type parameters. Suddenly a function which takes a List can do entirely different things depending on what A is... and that takes away a powerful reasoning tool.