--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAO8YPTTAhq%2BiSgLy0BtV3bNATtGu2064fcCsddVAofgfycw-rA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CALeTM-neJ5vo%2BhYUmz_w4YiTOONbpzwo73ySkD9iU2ta-M%2B7QA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAKW6fidQq3CpQpHi83n%2BczUt_ePrX5uOVEyeCLumMk2zbfAZjQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CANYWk7Nkg6Fsd4kYRPJO45OO6w9U7QQVr%2BG19dSeb7xU_Q5HpQ%40mail.gmail.com.
And to just chime in with my angle on this:
Loom looks very interesting; but it is not available anytime soon
and even when it arrives some reactive/async code would probably still pop up.
Thus at the moment I see it as when it arrives we would have for a while at least
three approaches traditional imperative, imperative+loom and reactive.
If you want to hold back and stay on traditional imperative then that
is a perfectly valid choice. It works fine for many usecases and done so for years in the past
and will do so for years in the future. It will just not give you the same concurrency
as what is possible with the reactive approach in Quarkus.
For some usecases either is perfectly fine and its one of things I underline
when talking about Quarkus - you can choose the programming model that fits your
team AND your usecase.
/max
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAO8YPTTAhq%2BiSgLy0BtV3bNATtGu2064fcCsddVAofgfycw-rA%40mail.gmail.com.
/max
https://xam.dk/about
Related but curious what you think about kotlin coroutines? Same almost imperative code as Loom and fairly battle tested at this point... But not Java 🙂
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CANhb1xbnme1%2BHzirsDKP6gsw4Rn%3DNNtcH1wysgB-v9roc3RvPQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAKW6fieoSV8PonqZ%2B1GdOnNXZfLv3NCOyj6H_%3Dzcbeg4h1V%2BHQ%40mail.gmail.com.
I like kotlin co-routines, I just don't like it is in a language supported by one company and one tool vendor.
Still, I'm happy to see Quarkus support in/around Kotlin is growing.
/max
/max
https://xam.dk/about
I like kotlin co-routines, I just don't like it is in a language supported by one company and one tool vendor.
Still, I'm happy to see Quarkus support in/around Kotlin is growing.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/E7862CAE-1762-4B4F-847E-007EB3106FEF%40redhat.com.
And to just chime in with my angle on this:
Loom looks very interesting; but it is not available anytime soon
and even when it arrives some reactive/async code would probably still pop up.
Thus at the moment I see it as when it arrives we would have for a while at least
three approaches traditional imperative, imperative+loom and reactive.If you want to hold back and stay on traditional imperative then that
is a perfectly valid choice. It works fine for many usecases and done so for years in the past
and will do so for years in the future. It will just not give you the same concurrency
as what is possible with the reactive approach in Quarkus.
That blog has been debunked by Ron Pressler on Reddit and in the JDK mailing lists. Effectively the post just proves pretty much all the claims about Loom, other than finding a couple of defects that are being addressed.Ron Pressler reply: https://www.reddit.com/r/java/comments/kmn6m3/do_looms_claims_stack_up_part_1_millions_of/ghfyhq8/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3OpenJDK discussion: https://mail.openjdk.java.net/pipermail/loom-dev/2021-January/thread.htmlGuys you're spending the bucks fighting the wrong war. You're 10 years late to the "reactive party" which has been shown to be an anti-pattern for 99% of the use cases.
Project Loom is the future of the JVM, Oracle stopped producing the "Reactive JDBC" because understood this well. Go and Erlang are the right inspiration to follow.Even C# "async/await" (which is 10 times cleaner than a reactive framework) still feels wrong.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/3a24cb76-37db-4205-8246-4ed2c3878588n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CALeTM-miyC-TwzB9%3DDKs40Dwvs%3DKmHVdKBrE_iGnONiG5Vxjpw%40mail.gmail.com.
On Jan 20, 2021, at 3:14 PM, Alboz <albi...@gmail.com> wrote:
Guys you're spending the bucks fighting the wrong war. You're 10 years late to the "reactive party" which has been shown to be an anti-pattern for 99% of the use cases.
On Wed, Jan 20, 2021 at 11:14 PM Alboz <albi...@gmail.com> wrote:That blog has been debunked by Ron Pressler on Reddit and in the JDK mailing lists. Effectively the post just proves pretty much all the claims about Loom, other than finding a couple of defects that are being addressed.Ron Pressler reply: https://www.reddit.com/r/java/comments/kmn6m3/do_looms_claims_stack_up_part_1_millions_of/ghfyhq8/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3OpenJDK discussion: https://mail.openjdk.java.net/pipermail/loom-dev/2021-January/thread.htmlGuys you're spending the bucks fighting the wrong war. You're 10 years late to the "reactive party" which has been shown to be an anti-pattern for 99% of the use cases.10 years late to what party?
Also, where is the data claiming that reactive is an anti-pattern in 99% of the use cases?Project Loom is the future of the JVM, Oracle stopped producing the "Reactive JDBC" because understood this well. Go and Erlang are the right inspiration to follow.Even C# "async/await" (which is 10 times cleaner than a reactive framework) still feels wrong.
Even if one were to have absolute faith that Loom will miraculously cure all the scaling and programming model problems (and I have yet to meet any such people), you are saying that folks should not do anything to improve the current state of the art today?What are people that actually do need to get the best throughput possible supposed to do until Loom lands?And when it does, who says people are going to start using it immediately? If current data is anything to go by, widespread adoption of any new JDK will take a long time...
We had a long discussion in the chat, and we agreed to disagree :). Just here for the record and readers:On Wednesday, January 20, 2021 at 9:27:08 PM UTC gand...@redhat.com wrote:On Wed, Jan 20, 2021 at 11:14 PM Alboz <albi...@gmail.com> wrote:That blog has been debunked by Ron Pressler on Reddit and in the JDK mailing lists. Effectively the post just proves pretty much all the claims about Loom, other than finding a couple of defects that are being addressed.Ron Pressler reply: https://www.reddit.com/r/java/comments/kmn6m3/do_looms_claims_stack_up_part_1_millions_of/ghfyhq8/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3OpenJDK discussion: https://mail.openjdk.java.net/pipermail/loom-dev/2021-January/thread.htmlGuys you're spending the bucks fighting the wrong war. You're 10 years late to the "reactive party" which has been shown to be an anti-pattern for 99% of the use cases.10 years late to what party?To the party of building "Reactive" Libraries and "Reactive" Frameworks. It's been done, we all know the benefits and pains :). Why spend more effort on it instead of focusing on the future which for the JVM is Loom?
Also, where is the data claiming that reactive is an anti-pattern in 99% of the use cases?Project Loom is the future of the JVM, Oracle stopped producing the "Reactive JDBC" because understood this well. Go and Erlang are the right inspiration to follow.Even C# "async/await" (which is 10 times cleaner than a reactive framework) still feels wrong.Nurkiewicz: https://www.youtube.com/watch?v=g_JyHJ20IogAuthor of RxJava together with "Erik Meijer" and "Ben Christiansen": https://www.amazon.co.uk/Reactive-Programming-RxJava-Tomasz-Nurkiewicz/dp/1491931655Sure, 99% was just to emphasize the idea that after Loom, building Java Web applications that might really need reactive frameworks is going to be a niche area.Even if one were to have absolute faith that Loom will miraculously cure all the scaling and programming model problems (and I have yet to meet any such people), you are saying that folks should not do anything to improve the current state of the art today?What are people that actually do need to get the best throughput possible supposed to do until Loom lands?And when it does, who says people are going to start using it immediately? If current data is anything to go by, widespread adoption of any new JDK will take a long time...My point is: "Today" there are already solutions in place, no need for Quarkus to spend effort on it. Quarkus is built on VertX, we have the reactive-routes (same as Helidon or Micronaut).Isn't that enough effort spent on Reactive?The time spent on "Mutiny" and "Reactive RestEasy" could be spent in optimizing(or making more robust) the current frameworks (RestEasy) and other extensions. Preparing to Project Loom, making sure that QUarkus users would get the maximum benefit from it (Helidon has started the journey).Who uses "Microprofile" does so because of the beauty of the API, the simplicity of reading and debugging simple blocking code.The speed of adoption of new JDKs depends on how "appealable" it is to consumers/end users. A JDK with Loom would be even more than JDK8 (my opinion).
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/48c6e6d1-28a0-4110-83a3-89bc06854d93n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAD%2BL2cz2Wk5H2S4XD98TX4hw7tsRCWzoOPFujoUv63st8%2BWM%3DQ%40mail.gmail.com.
On Thu, 21 Jan 2021 at 11:22, Alboz <albi...@gmail.com> wrote:We had a long discussion in the chat, and we agreed to disagree :). Just here for the record and readers:On Wednesday, January 20, 2021 at 9:27:08 PM UTC gand...@redhat.com wrote:On Wed, Jan 20, 2021 at 11:14 PM Alboz <albi...@gmail.com> wrote:That blog has been debunked by Ron Pressler on Reddit and in the JDK mailing lists. Effectively the post just proves pretty much all the claims about Loom, other than finding a couple of defects that are being addressed.Ron Pressler reply: https://www.reddit.com/r/java/comments/kmn6m3/do_looms_claims_stack_up_part_1_millions_of/ghfyhq8/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3OpenJDK discussion: https://mail.openjdk.java.net/pipermail/loom-dev/2021-January/thread.htmlGuys you're spending the bucks fighting the wrong war. You're 10 years late to the "reactive party" which has been shown to be an anti-pattern for 99% of the use cases.10 years late to what party?To the party of building "Reactive" Libraries and "Reactive" Frameworks. It's been done, we all know the benefits and pains :). Why spend more effort on it instead of focusing on the future which for the JVM is Loom?RESTEasy Reactive is designed to work in a blocking manner as well, and was designed with loom in mind. It's handler loop based architecture means that you have very short stack traces, so suspend and resume of virtual threads should be much cheaper than with more traditional designs.
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAL%3DE%3DjQQkdJNgmyvDFZfNjiMAVXfqi--TMzrM8ZK1wN4F7CQhQ%40mail.gmail.com.
I'm very skeptical that there are many users out there that need this ultimate scalability (for react or loom), especially in the world of cheap virtual cloud computing. The biggest challenge that Java has is not concurrency or io, its memory. Unless Loom is going to be available via a native compiler like Graal, Java will continue to be squeezed by less performant languages/VMs that run in a much smaller footprint. We're having a massive explosion of deployments with functions/lambdas. We need massive work in the JVM to reduce memory usage, metaspace, etc. That should be the real focus and challenge. I mean, I hope Loom kills reactive Java, but I still think it was the wrong focus.
"biggest challenge that Java has is not concurrency or io, its memory"+1 this and compile time.I recently wrote some simpler APIs in Golang for the first time ever and the compile/iteration times were ridiculously fast even if it's a much cruder language: I'd say that is the #2. The runtime optimization snapshots should help the runtime speeds of graalvm/aot which is #3.
RESTEasy Reactive is designed to work in a blocking manner as well, and was designed with loom in mind. It's handler loop based architecture means that you have very short stack traces, so suspend and resume of virtual threads should be much cheaper than with more traditional designs.
To give you an idea the stack in RR invoking a blocking method is 4 lines deep (excluding the executor, which would not be present under loom):at org.acme.GreetingResource.hello(GreetingResource.java:30)
at org.acme.GreetingResource$quarkusrestinvoker$hello_e747664148511e1e5212d3e0f4b40d45c56ab8a1.invoke(GreetingResource$quarkusrestinvoker$hello_e747664148511e1e5212d3e0f4b40d45c56ab8a1.zig:33)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:7)
at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:108)This will work really well with loom, as there is no real stack state to save/restore each time.
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/80d2efcc-f677-4e16-8cca-64241a63b339n%40googlegroups.com.
On Thursday, January 21, 2021 at 12:40:26 AM UTC sdou...@redhat.com wrote:RESTEasy Reactive is designed to work in a blocking manner as well, and was designed with loom in mind. It's handler loop based architecture means that you have very short stack traces, so suspend and resume of virtual threads should be much cheaper than with more traditional designs.To give you an idea the stack in RR invoking a blocking method is 4 lines deep (excluding the executor, which would not be present under loom):at org.acme.GreetingResource.hello(GreetingResource.java:30)
at org.acme.GreetingResource$quarkusrestinvoker$hello_e747664148511e1e5212d3e0f4b40d45c56ab8a1.invoke(GreetingResource$quarkusrestinvoker$hello_e747664148511e1e5212d3e0f4b40d45c56ab8a1.zig:33)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:7)
at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:108)This will work really well with loom, as there is no real stack state to save/restore each time.Stuart that is good to hear (Georgios also said the same thing). "Assuming" that your measurements for @Blocking ReastEasy reactive are correct:Why would that be more performant than classical RestEasy? I can see two reasons:
- RestEasy Reactive is a better implementation with better optimizations
- RestEasy Reactive has a restricted set of features compared to classic RestEasy and it's not really RestEasy or a JAX-RS implementation.
If 1 is true, then shouldn't you merge this code and this becomes the "new RestEasy classic" so that every project running on JBoss/Wildfly takes advantage of that too?If 2 is true then the comparison might not be fair :)
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/63554b17-bb47-44ae-b2ce-0eb281196b29n%40googlegroups.com.
Again, I hope Loom kills reactive. The whole functional programming + fluent apis + reactive coding has made Java development ridiculously hard to maintain and debug. And if Loom can remove one of those beasts, we'll all be much happier as our code and our bodies get older and we become the Cobol developers of the 21st century.
Haven't been following Loom closely but I'm glad to see that I'm not the only one who feels this way :)
-Jaikiran
--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/cfbe0f80-d05b-5b0a-6ab8-1b990e3479b7%40gmail.com.