Earlier quoted context omitted.
Kotlin could he better, but doesn't go all the way. Without HKTs and implicit injection, Java is going to eat its lunch. Java already has records, type inference, parametric null safety with Optional, Loom provides coroutines, vavr and streaming apis have given us theabilitytodo FP... what's left as a unique feature? Kotlin will survive because it was picked for Android to avoid copyright issues. But the difference b…
When Java gets the Kotlin's brilliant "last argument of lambda type can be a block", let me know. It allows to massively extend the perceived syntax of the language where needed, and create nice, typechecked DSLs. A number of small ergonomic improvements is also impossible to port to Java. And I'm definitely happy that Java does not feature implicit injection, which looks so cool but is so painful to work with in Sca…
Java Is Underhyped
671–680 of 808 posts
Re: Java Is Underhyped
#672Earlier quoted context omitted.
It's Google. They'll probably come up with a completely new programming language which they'll force on the community in some ham fisted way, then suddenly drop it in a few years when they can't figure out a way to massively monetize it.
I thought that was Dart. Which is honestly a shame because it’s a genuinely great language. But it does very much fit the bill otherwise
Re: Java Is Underhyped
#673Earlier quoted context omitted.
Java development scales, it has pretty good performance, and great tooling. I agree that it's underhyped. You can pick a lot of other languages, but no other language is as broad as Java. Python reads like a dream but has useless perf and threading. Javascript (Node et al) has the I/O concurrency but no clear solution to threading, and is bad at number crunching. C++ has good perf but is overly complicated, compiles…
> great tooling Something I underappreciated until I delved deeper into other languages is how much observability the JVM gives you into how an application is running. Something like VisualVM makes it incredibly easy to see what threads are running, in what state, etc. There's a class of things where the overhead of a VM (like the JVM, not VMWare) doesn't make sense (kernels, drivers), and startup time can be an issu…
Re: Java Is Underhyped
#674Earlier quoted context omitted.
Java development scales, it has pretty good performance, and great tooling. I agree that it's underhyped. You can pick a lot of other languages, but no other language is as broad as Java. Python reads like a dream but has useless perf and threading. Javascript (Node et al) has the I/O concurrency but no clear solution to threading, and is bad at number crunching. C++ has good perf but is overly complicated, compiles…
> Java development scales, it has pretty good performance, and great tooling. I agree with this, but I think these qualities are shared by a lot of languages that run on the JVM, and Java the language is no longer a worthy flagship language for the JVM. > With lambdas and streams, even FP is succinct in it. I have the opposite reaction to lambdas and streams. I think Oracle could have gone two ways with the evolution…
Re: Java Is Underhyped
#675Earlier quoted context omitted.
Yes, the C++ dependencies are unlikely to be available. Specifically dependencies on OS libraries that are just not available on current common systems. So you need to get them but they are not available anymore and may depend on code that doesn't compile anymore. Due to e.g. 32bit assumptions, changes in what a 'long long' means and small hiccups like that. Or the fact that C++ code was "almost" C++ code and not act…
> Specifically dependencies on OS libraries that are just not available on current common systems. But again, that's a problem with the OS, not a problem with C++. POSIX compliant code still compiles just fine on POSIX-compliant platforms and 32-bit code compiles just fine with 32-bit compilers as well - nothing changed in that regard. It's a similar story with other APIs such as Win32. > Due to e.g. 32bit assumption…
I would definitely not say that java is perfect, but the java ecosystem does have some very practical advantages that more than compensate for some of its very real disadvantages.
Re: Java Is Underhyped
#676The amount of vitriol Java receives in the game development space is rather strong. However, whenever people dismiss Java as being a bad language, I can't help but think of Minecraft. Yes, it's one of the few mainstream titles where Java has been successfully applied, but I believe Minecraft's success was specifically because it was written in Java. With no JVM, there would have been no Minecraft mods at the level of…
> For the people who say that Minecraft should have been written in C++ […] there's Bedrock Edition. Nobody I know cares about it enough to play it. Been playing for just under ten years, everyone I know plays Bedrock these days. I built and manage a very popular tool / Minecraft community and while I don’t have actual numbers, my general sense is the majority of players run either console or mobile Minecraft - all o…
I'd bet this has more to do with the fact that the Java version started out as a one-man project (that wasn't even expected to take off), whereas Bedrock started as a multimillion-dollar project by Microsoft who a) knew the project scope ahead of time, and b) could hire a (presumably) world-class team to design and implement it
Personally I've never had real performance issues with either
Re: Java Is Underhyped
#677For my use cases, Java has all the wrong compromises: - not high level enough to compete with Python/Ruby/JS/PHP, etc - not low level enough to compete with Rust/D/Nim/Zig - not specialized enough to compete with Erlang/R/Go/Julia - not opinionated enough to compete with Lisp/Haskell So why use Java ? It's good, it's fast, it's productive, it's well supported, battle tested and documented for decades with a huge pool…
Python projects that start to grow has a tendency to become hard to manage in a way that I have not seen in Java at all. Java is like you say not the greatest at anything but it is also not the worst at anything. Its great for projects where the you don't know what you should optimize for or don't care. If java is to boring maybe kotlin is the way to go. I really like kotlin and in my personal experience the only dow…
Re: Java Is Underhyped
#678Earlier quoted context omitted.
Google is hugely invested into Python, especially the data engineering branch. TensorFlow, Jax, etc. Though they will probably get replaced by Dex lang, they even dropped Swift 4 Tensorflow to focus on Dex [1]. The language looks very Pythonic compared to Julia which is a 180-degree turn in terms of language design. [1] https://github.com/google-research/dex-lang
All of the Tensorflow underlying libraries are implemented in C++ and nowadays usable from almost any language with native interop. As for Dex, > Research language for array processing in the Haskell/ML family > This is an early-stage research project, not an official Google product. Where is Python?
Re: Java Is Underhyped
#679Earlier quoted context omitted.
Well Java is arguably one of the most IDE-reliant mainstream languages. It's completely unusable and unergonomic without the myriad of constant code generation and fixing as you write. Treating the IDE like a separate problem is not realistic with java. With e.g. Rust, I can use vim, vscode, whatever floats your boat. > no idea why you'd have to configure "getting the actual logs"? Some genius java logging library, I…
100% lombok can only be developed on eclipse. They have an open issue to make it compile on intellij...
Re: Java Is Underhyped
#680Earlier quoted context omitted.
Nobody has started a project with Ant in the last decade. Of all the Java projects on Github Ant is probably not even 1%. > Oh and now I have to make it work in the IDE too, click through a billion menus and dialogs, You click "Project from existing sources" in IntellIJ and it will recognize both Maven and Gradle projects and just work? Sync the dependencies? configure runtimes and classpaths? What? With Maven and Gr…
I'm talking about a maven project I have to use sometimes at work. Let me walk you through all the shit I had to do: - Install and set the right java version system-wide - Copy some config files for the project system-wide (granted, this is not java specific, but still) - Click in some IDE menu to enable some build settings - Click in some IDE menu to install some "Lombok" plugin - Click in some IDE menu to select th…