5 ms·
I'm fairly impressed with how Java has maintained relevance and steadily improved over the years. Java 8 was huge in tackling the Functional programming front.
by Zaheer 10y ago
I'm fairly impressed with how Java has maintained relevance and steadily improved over the years. Java 8 was huge in tackling the Functional programming front. With REPL and more functional improvements in Java 9 its starting to feel fresh again. Go & Swift are great efforts and I hope they gain a larger community but JVM is here to stay and it's great that they're improving it while so many other languages have fizzled out over the years.
- vvanders 10y agoI wouldn't call the functional transition in Java "huge", more like "adequate". Every time I hit an IntStream/FloatStream it just feels like a jarring experience. We shouldn't need functions like mapToInt()/mapToLong()/etc.
- pjmlp 10y agoHopefully their need will go away in Java 10.
- pimlottc 10y agoDefinitely. While at times it feels like the Java Community Process moves at a snails pace, the maintainers of Java have done an incredibly good job modernizing Java and addressing its flaws over the years, while all the time maintaining backwards compatibility and, most importantly, keeping a single unified developer community. When you look at how dominant languages like Perl and even Python have stumbled between version changes, it underscores how much of an accomplishment this really is.
- saosebastiao 10y agoIt seems like the JVM is here to stay in the same way that COBOL is here to stay. It has become a server-specialized system with a level of overhead that kills it in resource constrained environments. There is room for improvement, no doubt, but it's pretty hard to beat the resource demands of AOT compiled code with a good optimizer and potential PGO. Go, Swift, Vala, Nim, and Rust are just the start of a trend...it seems most new languages are eschewing the VM model. And many existing VM/JIT languages are moving there: Dart, Julia, Scala, and even the .NET languages are all moving towards AOT capabilities.
- pjmlp 10y agoJava is also AOT compiled and is becoming the favourite language besides C on many embedded platforms. EDIT: To expand to that remark, although Sun was religiously against AOT, the majority of commercial JDK vendors have always supported AOT compilation to native code, specially the ones in the embedded space. Also, for how cool all those languages are, there are lots of domains and OSes where Java code lives (AOT or JIT compiled), that they have yet to create backends for. Examples, embedded controllers on factory plants, Cisco phones, Ricoh printers, Gemalto monitoring devices, Blu-Ray players, car infotainment systems, some GPS devices, military weapon control systems, shopping terminals, Android's fork,... https://en.wikipedia.org/wiki/List_of_Java_virtual_machines https://en.wikipedia.org/wiki/List_of_Java_virtual_machines It is going to take a while to erase Java from the industry.
- saosebastiao 10y agoI was more claiming that the JVM is going obsolete, not Java. The whole idea behind the JVM is platform abstraction...and it worked perfectly fine insofar as the platform being abstracted had a CPU, at least X memory, a disk drive, and at least a basic OS. Which was fine for a while, but now we're seeing an explosion of different platforms with wildly different capabilities, and the JVM is just not up to the task. That isn't to say that Java isn't, but it does mean that you need specialty compilers, libraries, tools, and infrastructure for specialty targets.
- pjmlp 10y agoWell, actually what we are seeing with the CLR, LLVM, ART is an increase of adapting the mainframe model of JIT/AOT compilation with some form of bytecode as distribution model. In that regard, what JVM is missing are new ways to adapt to said hardware. Interesting enough, Java is ahead of Go, Swift, Vala, Nim, and Rust in supporting GPUs, for example.
- gazarullz 10y agoCan anyone elaborate on how AOT is a beneficial feature?