Originally posted by cynical
View Post
Oracle Releases GraalVM 20.1 Virtual Machine With Some Big Improvements
Collapse
X
-
-
-
Originally posted by bug77Second, this article is about GraalVM (and native tool), so I was specifically asking whether the native tool itself was improved in any way wrt to reflection handling (admittedly, a tough nut to crack).
Leave a comment:
-
-
Originally posted by bug77Too many libraries and frameworks use and abuse reflection (I'm looking at you, Spring), for it to be anything but a toy.
Leave a comment:
-
-
Originally posted by quintesse View Post
Yes, it will compile and work. See the Jackson support here: https://quarkus.io/extensions/#serialization
And it's not wrappers. It's adding build-time support for things that are normally done on-the-fly at runtime.
And as for suitability in microservice environments, there are examples where native Graal + Quarkus is beating Go in terms of code size and memory usage, which is pretty awesome.
You really should read up on it before dissing it further.
Second, this article is about GraalVM (and native tool), so I was specifically asking whether the native tool itself was improved in any way wrt to reflection handling (admittedly, a tough nut to crack). Kudos to Quarkus for coming up with a solution, but I was hoping for a common solution in GraalVM rather than a framework specific one.
Third, beating Go is nothing to brag about, Go was only meant to yield Java performance at Python development speed
Leave a comment:
-
-
Originally posted by bug77 View Post
I think there's a misunderstanding here: when my code depends on Jackson and Jackson is reflection-heavy, it will not compile into native code, no matter what I wrap it into.
Throwing yet another wrapper on top is a lame solution anyway, further highlighting how unsuitable Java (or any JVM based language) really is for a microservices world. Luckily, it's not all microservices. At least not yet.
And it's not wrappers. It's adding build-time support for things that are normally done on-the-fly at runtime.
And as for suitability in microservice environments, there are examples where native Graal + Quarkus is beating Go in terms of code size and memory usage, which is pretty awesome.
You really should read up on it before dissing it further.
Leave a comment:
-
-
Originally posted by quintesse View Post
Well, first of all, no we won't have to rewrite almost any library and framework because there are ways to adapt existing code to work within the limitations set by the native image tool. In Quarkus for example it's being done by their extension system (https://www.baeldung.com/quarkus-extension-java , https://quarkus.io/guides/writing-extensions), And there are already lots of extensions for many of the popular libraries and frameworks, but if the one you need isn't there you can create one yourself.
Now the system of course isn't perfect and there will be cases where upstream changes need to be made to make things work. But the Quarkus team has been doing a lot of that. So the future isn't as dark as you suppose.
Also because improving the native tool to support all (dynamic) things that are possible in Java might likely never happen. At least not without removing all the advantages compiling to native code give you in the first place. Which means developers have a good reason to want to make sure their code can run on Graal.
Throwing yet another wrapper on top is a lame solution anyway, further highlighting how unsuitable Java (or any JVM based language) really is for a microservices world. Luckily, it's not all microservices. At least not yet.Last edited by bug77; 20 May 2020, 11:53 AM.
Leave a comment:
-
-
Originally posted by bug77 View Post
And therein lies the problem: you fixed it in Quarkus. And one I pull in a dependency that makes use of reflection, the native tool will still fail to compile my project into native code.
The solution needs to come from the native tool itself, otherwise we'll be forced to rewrite almost any library and framework under the sun.
Now the system of course isn't perfect and there will be cases where upstream changes need to be made to make things work. But the Quarkus team has been doing a lot of that. So the future isn't as dark as you suppose.
Also because improving the native tool to support all (dynamic) things that are possible in Java might likely never happen. At least not without removing all the advantages compiling to native code give you in the first place. Which means developers have a good reason to want to make sure their code can run on Graal.
Leave a comment:
-
-
Some benchmarks against OpenJ9 and other Java VMs would be nice to see.
Leave a comment:
-
-
Originally posted by sanne View Post
We solved the "Reflection problem" - and many others - systematically in Quarkus; that's actually why the new platform was designed like it is: embrace such limitations and actually take advantage of them: it's a feature as it comes with amazing optimisation potential. Maybe you should have another look at it.
We're all very happy with how this is designed and I don't expect that to change, it's certainly not a reason to disregard it or consider it experimental or a toy.
The solution needs to come from the native tool itself, otherwise we'll be forced to rewrite almost any library and framework under the sun.
Leave a comment:
-
-
Originally posted by bug77 View Post
Good to know it works with ARM, but until it figures out what to do about reflection, it will stay experimental. Too many libraries and frameworks use and abuse reflection (I'm looking at you, Spring), for it to be anything but a toy.
We're all very happy with how this is designed and I don't expect that to change, it's certainly not a reason to disregard it or consider it experimental or a toy.
Leave a comment:
-
Leave a comment: