Not dying at all. Other languages talk a good game about threads, Java has a good story about threads... and virtual threads. I'm writing large complex applications instead of fighting with the borrow checker to do what Software Tools did in the 1970s. When Valhalla drops, the performance gap will close a bit more.
Dying is maybe a strong word, but I think it's popularity is dropping. Couple of newer backend languages eating it's share of the pie, like Go or Typescript.
I believe this trend will as more and more colleges replace Java curriculum with Python I guess.
If a college replaces Java with Python, I wonder what their reasons are. Java's type system is ok (definitely not very good) but still much better than Python's which is almost empty (e.g. in Python we cannot declare an array of students, a dictionary of (ID, Student) pairs).
From my experience, in the early programming classes that have switched from Java to Python, one of the reasons is the verbosity of Java. When you're trying to teach the basics of programming -- variables, some simple text IO, loops, functions, the structure imposed by Java can be a little overwhelming. I recall a lot of other students struggling with getting past all the little things you had to do just to get a "Hello World" written. Python is simpler to gradually introduce those concepts with, especially with very those who are just starting out. And especially when you're dealing with a quarter system, which many schools use, as a teacher you had a very limited amount of time to get through that sort of material.
Python is a great language for the non-professional programmer who wants to put their other skills on wheels. Even if other languages have more pedagogical value, Python is easy to learn and not a waste of time of time for anybody. (At work I code Java/Javascript but wrote a “maintainance droid” in Python that merges changes from git, installs database migrations, runs tests and all that so I don’t have to.)
You are right IMHO. Java 24 introduces a much shorter "hello world" experience with:
- no class déclaration
- no void, static, public statements
- no System.out
IMO - verbosity, typing and compilation all get in the way of teaching a lot of the basics (logic, control flow, scope, functions, objects). With JS/Python, I think students can make small wins faster which helps them stay motivated. I say this as someone who watched 3 people decide CS wasn't for them after taking intro classes that focused on Java.
I don't think its first class support but its something. It might even be better for teaching since its not strictly enforced depending on your runtime.