How will these languages ever catch up with innovations like JavaBeans, Java Server Pages, and Java Server Faces?
How will these languages ever catch up with innovations like JavaBeans, Java Server Pages, and Java Server Faces?
1994? We still depend on tons of features, infrastructure, and techniques developed in the 60s and 70s.
Heck, most of what the JS world considers "state of the art" was already available in 70s languages.
As for the snark, first, the innovations the parents refers to is not "JavaBeans, Java Server Pages, and Java Server Faces", but stuff like rock-solid GCs, tooling, and so on.
And even techniques on the level of "JavaBeans, Java Server Pages, and Java Server Faces" are only going to be resold to several other languages. The JS worlds keeps on piling Java (or older) techniques and syntax.
Heck, they just re-invented the "private instance variables" (with an ugly hash syntax) on their latest efforts...
In fact, Java is so far behind C# with true Generics, LINQ - not the syntax the entire linq expressions -> expression trees -> runtime providers that can parse the trees and translate it to a destination syntax, etc. it’s laughable. Can anyone say honestly that Oracle has been a good steward over Java or that it has improved as fast as any modern popular language?
And the “tooling” around Java is the main reason that when I had a choice between C# and Java in the mid 2000s, I chose C#. Heck, the Visual Studio 97 was better than most Java tooling is today.
Yeah I played around with the early VB like Java IDEs like JBuildsr. Java’s IDE’s have never been strong points. Neither have the XML is king mindset.
All in all, The JVM is leading not only CLR on all fronts, but pretty much any other runtime. C# compilers and GCs are at least a decade behind Java's. You may argue on how important those things are compared to other tradeoffs, but those are the areas where Java was designed to compete at, and those are the areas where it is leading by a wide margin.
Edit: when Java was first introduced, its original designers stated their intention to construct a conservative, low-innovation frontend language, and a high-innovation runtime. In many respects, .NET has the opposite design. You may prefer one or the other and that's OK, but it makes comparing the two on any single aspect very problematic. Of course Java won't keep up on language innovation compared to .NET, and of course .NET won't keep up with Java on runtime innovation -- they each choose to get their competitive advantage in different aspects.
There are other languages that support CLR besides C# and they manage to “work around” generics.
All in all, The JVM is leading not only CLR on all fronts, but pretty much any other runtime. C# compilers and GCs are at least a decade behind Java's. You may argue on how important those things are compared to other tradeoffs, but those are the areas where Java was designed to compete at, and those are the areas where it is leading by a wide margin.
By what measurement? Have any specifics?
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
https://www.degruyter.com/downloadpdf/j/acss.2018.23.issue-1...
And Java still doesn’t have anything equivalent to LINQ.
Regarding measurements: https://www.techempower.com/benchmarks/
Also, I am very interested to see new benchmark results once AOT SubstrateVM will be more widely adopted in JVM community. Demo: https://youtu.be/MN6jNIwl2FQ?t=1136
RedHat already working on a framework which takes full benefit of that: https://quarkus.io/
All in all, with upcoming value types, SubstrateVM adoption, fibers and nice languages improvements like records, future is brighter than ever for Java.
Edit. Regarding JVM vs CLR https://news.ycombinator.com/item?id=15955685
What exactly in BoyRobot777's comment (which I said I agree to) calls for benchmarks to be proved?
Nowhere are benchmark results taken for granted as faster or anything. Grandparent says: "Also, I am very interested to see new benchmark results once AOT SubstrateVM will be more widely adopted in JVM community."
I simply agree with the statement made: "All in all, with upcoming value types, SubstrateVM adoption, fibers and nice languages improvements like records, future is brighter than ever for Java." -- so, I responded to your comment which seemed to be skeptic of that (and accusing the parent of working for Oracle).
If you were referring to someone else and some other comment, why post your comment as a response directly under BoyRobot777?
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
In some cases, the faster program with OpenJDK does not seem to be the faster program with Substrate VM.
In other cases, the faster program with OpenJDK seems to fail with Substrate VM - maybe it needs something different on the command line?
Otherwise, the same program is shown for both.
VS97 better than Eclipse, without additional plugins?
Alternative universe.
And before you say there are non Linux mainframes. Yeah I know - another dead end technology along with .Net framework and C++/CLI.
And that not forgetting that VSCode doesn't do even 10% of what Eclipse or VS do.
Actually Eclipse used a native GUI toolkit (Standard Widget Toolkit), backed by native widgets plus a few custom draw ones (like 100% native apps also resort to for custom stuff).
So, if it smelled "non Native", it wasn't because of Java.
What indeed was, were some penalties of the GC kicking in (unrelated to UI widgets). Still nothing a .NET app wouldn't have (and I've used SharpDevelop as well back in the day).
You should learn the history of tools that you so agressively argue for.
It's not "true Generics" it's a different generics tradeoff (tradeoff not just for backwards compatibility sake).
And LINQ is not that important in the grand scheme of things. Are Haskell, CL, or Smalltak also "far behind" C# for not having LINQ? It's just another feature. You can most of the same things with a fluent interface, streams, and functional composition, and without straying off the regular syntax of the language into a LINQ DSL.
Besides, last time I've checked, Java still has the performance edge over C#.
A simple LINQ expression can be passed around an translated on the fly by various providers. The same expressions can be translated to Sql, Mongo, regular IL, etc.
And no LINQ isn’t just syntax.
Last time I checked neither SmallTalk or Haskell are taking the world by storm...
Haven’t Java proponents been claiming Java was going to be fast for over two decades?
The same can happen with a simple abstract expression in native syntax (in fact tons of tools in all languages that do that). LINQ just gives you a standardized built-in DSL for that -- but nothing you can't build yourself with the language's main syntax. Heck, LISPs have been able to do the same shit for half a century.
>Last time I checked neither SmallTalk or Haskell are taking the world by storm...
Yes, they only made a dent with the smarter developers.
Still, C# isn't taking the Linux world by storm either, and it's nearly irrelevant on mobile too, so there's that.
>Haven’t Java proponents been claiming Java was going to be fast for over two decades?
Java has been fast for over 15 years now, so not sure what you're getting at here. Faster than C# as well, so there's that too.
Okay so where is it? What language besides some .Net based languages allows me to take the same query expression and have it interpreted differently based on the provider and allows me to switch out an RDMS or Mongo for example without changing the calling code?half a century ago I wasn’t even born (about 5 years later). Saying Lisp did it 50 years ago is about like Mac users bragging in 2019 that they had a GUI before PCs.
As far as LISP, what are the job opportunities like in 2019?
Yes, they only made a dent with the smarter developers.
Can I make money with those languages?
Java has been fast for over 15 years now, so not sure what you're getting at here. Faster than C# as well, so there's that too.
Benchmarks?
But seeing that I like the optionality of working for any of the dozens of companies that have job openings continuously for JavaScript, C#, C, C++, and even Python, I think I’ll stick with those....
https://benchmarksgame-team.pages.debian.net/benchmarksgame/... https://www.techempower.com/benchmarks/#section=data-r17&hw=...
Disclaimers:
Microsoft employee
Nazgûl
as far as ides go, i vastly prefer intellij to visual studio.
https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...
Types. Clumsy stand-ins for synchronous behavior like async/await. Transaction managers. Threads. I'd add immutability and functional programming but really that's rediscovering technology from the midcentury.
We really are doomed to repeat history.
Not to mention the fact that WP failed on the market, while Android strives.
Even Google has only made less than $30 billion in profit on Android....(https://www.theverge.com/2016/1/21/10810834/android-generate...)
But yes there are cross platform GUIs for .Net.
https://www.hanselman.com/blog/CrossplatformGUIsWithOpenSour...
https://github.com/AvaloniaUI/Avalonia/blob/master/readme.md
Yeah they probably suck and don’t look are behave like native apps - but no cross platform framework does.
Running Electron apps anywhere is like running iTunes on Windows.
Again, I am not saying that other platforms may not have advantages elsewhere (e.g. lower memory footprint, no warmup), but when it comes to compilation, GC and observability, Java is about a whole technological generation ahead.