ByteCode.News
Submit RSS Atom Podcast Sign in

Back to the channels

#java

  1. deebo is there some magic constant of a RuntimeException instance somewhere in the jdk? need something to refer to for CompletableFuture.failedFuture()
  2. deebo can of course instantiate one, but there has to be something existing :)
  3. jreicher Do you mean this? https://github.com/openjdk/jdk/blob/fb268a6f43fb7e7a0b962d10504a686acfd883ff/src/java.base/share/classes/java/lang/RuntimeException.java#L45
  4. javabot jreicher's title: "jdk/src/java.base/share/classes/java/lang/RuntimeException.java at fb268a6f43fb7e7a0b962d10504a686acfd883ff · openjdk/jdk · GitHub"
  5. jreicher Argh, sorry. Should have used a branch.
  6. deebo is that a link to the serilizationid? i mean more like public static RuntimeException INSTANCE = new RuntimeException();, i can of course do that myself, but i'd assume there's a publicly available one somewhere in the jdk
  7. deebo or i could just subclass it and use the parent ctor to not create stack traces etc
  8. odinsbane Claude says it doesn't exist.
  9. odinsbane It's really strange when it tries to shoehorn the question in to the project I'm working on.
  10. odinsbane It says there are some private instances for OutOfMemory etc, because you might not be able to build a stack trace.
  11. odinsbane ... you could override fillInStackTrace
  12. odinsbane https://stackoverflow.com/a/9866038/2067492
  13. deebo use /btw :)
  14. NeXeN i like /stfu too
  15. deebo but guess i'll create a local one myself, weirdly graphql-java uses failed completedfutures for flow control kindof, but they require a throwable
  16. NeXeN deebo: no doesn't look like it, i searched the source
  17. NeXeN you could create your own subclass and override fillInStackTrace() to make it light so you don't have lots of stacktrace
  18. rosetta hi
  19. NeXeN make it stateless, pass it to .. hrmm CompleteableFutre.failedFuture(YourExtendedClassRuntimeException.YOUR_PUBLIC_STATIC_FINAL_CONSTANT and make it like a singleton
  20. * NeXeN shrugs
  21. NeXeN your fillInStacTrace() make it return this on your extended class
  22. NeXeN err sorry hard to explain what i mean. so you have a singleton. it's public static final. i would call it INSTANCE, ...like public static final YourExtendedClass INSTANCE = new YourExendedClass(); in the constructor Private YourExtendedClass() { super (null, null, false, false); (so you can suppress stack trace make it light) then @override like maybe public Throwable fillInStackTrace() { return this; ); so now pass the constant into
  23. NeXeN CompleteableFuture.failedFuture() when you need it for flow control
  24. NeXeN and when i meant you could, i mean yes i agree that'll work
  25. NeXeN i just tried it and yeah it's pretty light
  26. NeXeN but i was reading the docs, can't you use DataFetcherResult from graphql?
  27. NeXeN https://www.apollographql.com/tutorials/intro-dgs/11-resolver-chains
  28. nevet Resolver chains
  29. NeXeN https://docs.spring.io/spring-graphql/reference/controllers.html#controllers.schema-mapping.return.values
  30. nevet Annotated Controllers :: Spring GraphQL
  31. javabot NeXeN's title: "Annotated Controllers :: Spring GraphQL"
  32. deebo NeXeN: this is about org.dataloader dataloaders and their caching behaviour specifically
  33. deebo the docs say the ValueCache#get() needs to return a failed CompletableFuture if the cache doesn't contain the value
  34. deebo i just created a CheapoException that calls the super ctor that allows disabling stack traces
  35. dreamreal is filling out the stack trace expensive for you? Are you getting them a LOT?
  36. dreamreal No doubt that they're "expensive" but spending 3000ns every 7s is... measurable but irrelevant
  37. dreamreal (and yes, that 3000ns is pulled out of thin air: a deeper exception trace is going to cost more.)
  38. NeXeN it could also have other issues
  39. NeXeN so yeah, same thing i think you were trying before
  40. NeXeN so you can return CompleteableFuture(YourExtendedClassException.INSTANCE) seems maybe name it CacheMissException to make it sensible
  41. NeXeN i also think you could look at it differently. maybe use a container type like Optional to separate the missing state from failures. you can return a CompleteableFuture<Optional<V>> ...it wil distinguish between "we looked and wasn't there" and "something actually broke" (a true exception)
  42. NeXeN i wouldn't do the static base exception class unless the interface you're dealing wit enforceses throwable
  43. NeXeN you could also handle it at the cache map level i think......getIfPresent/GetIfCompleted or a map lookup pattern type thing ...but do it before invoking operations that require a completable future by passing the miss handling path for standard checks
  44. NeXeN i just don't like futures being used for routine cache misses. instead of treating it as exceptional which forces you into the failedFuture() and trying to optimize stack trace with this kludge, you could focus on clean state checking and validation. you could use like java-dataloader to provide inspection like methods for GIP/GIC (get if present, complete, respectively) and instead of blindly calling the lookup that forces error handling branch on a
  45. NeXeN miss, the code just checks if the value is already present/complete in the local cache map layer first
  46. NeXeN using like redis or memcached or something?
  47. dmlloyd I just heard a colleague utter the phase "JDK 33"
  48. cheeser Clair Obscur: Expedition 33 was incredible. you should go play it.
  49. dmlloyd do I have to do the other 32 expeditions first?
  50. cheeser you don't.
  51. odinsbane dreamreal you shouldn't "Fixed by using a for each ..."  because you're relying on side effects. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/DoubleStream.html#summaryStatistics() use the terminal operation that does what you want.
  52. nevet DoubleStream (Java SE 11 & JDK 11 )
  53. dreamreal ... what
  54. odinsbane Ha, I wrote that.
  55. odinsbane what?
  56. odinsbane This is a crazy coincidence, I remember writing that a long time ago. Then today I want to javachannel.org and it was on the top of the blog.
  57. odinsbane I didn't realize it was mine, anyway. This whole chunk: double[] extrema = new double[]{-Double.MAX_VALUE, Double.MAX_VALUE};
  58. odinsbane         rectangles.stream().forEach((rect)->{
  59. odinsbane             double w = rect.getWidth();
  60. odinsbane             extrema[0] = w>extrema[0]?w:extrema[0];
  61. odinsbane             extrema[1] = w<extrema[1]?w:extrema[1];
  62. odinsbane         });
  63. * cheeser eyes odinsbane
  64. dreamreal but... why are you telling ME this
  65. odinsbane That should be replaced with rectangles.stream().mapToDouble().summaryStatistics()
  66. dreamreal right, so replace it?
  67. odinsbane Like I said it is a crazy coincidence. I thought you wrote the blog post and didn't realize it was what I had sent you ... years ago?
  68. dreamreal It's dated 2026/09/26, I do not run javachannel.org and have not for years
  69. cheeser fun fact: it's fully self-aware now and taking note of its haters.
  70. dreamreal oof, the rendering on the site is... not great
  71. dreamreal I dunno what we did to lose yawkat but...
  72. cheeser he's off at oracle doing the dark lord's work.
  73. dreamreal oh, good for him!
  74. odinsbane Are the logs not working?
  75. dreamreal what logs
  76. dreamreal dang it,I am missing all the context for this discussion
  77. odinsbane Anyways, I just assumed you had written it because you had written the next four or five posts.
  78. odinsbane - logs == channel logs
  79. dreamreal odinsbane: fair, I guess. bytecode.news has channel logs for #java, through nevet; dunno about javabot.
  80. dreamreal cheeser: I assume that's still okay, I can turn that off if you want
  81. cheeser i don't mind.
  82. cheeser the bot is still logging. i'm mostly done with a migration off dropwizard. i just have to test that the web view still works and then i'll merge and deploy it.
  83. dreamreal odinsbane: nevet's logs do not go back as far as javabot's, of course
  84. odinsbane Oh, I was going to check the conversation from today.
  85. odinsbane It's not important.
  86. dreamreal https://pudl.bytecode.news/logs?open=logs-a3f224937f-20260930&top=logs-a3f224937f-20260930&p.logs-a3f224937f-20260930=maximized:0.06,0.05,0.55,0.75
  87. javabot dreamreal's title: "Logs | ByteCode.News"
  88. jbosmans what's the added value of publicly sharing all logs?
  89. dreamreal context, etc
  90. jbosmans like for AI ?
  91. dreamreal Like, we have a lot of accumulated wisdom and the logs have a lot of it, if you know how to look
  92. dreamreal no
  93. cheeser fun fact: the early javabot had a primitive form of ... i guess it would be closer to ML than anything else. HAL it was called, iirc.
  94. cheeser but it tried to serialize a map of 65+M worth of data on every channel event. performance was not great.
  95. dreamreal prevayler FTW!
  96. jbosmans i understand the value of data, but the 100% "public" of it somehow doesn't sit 100% well with me, although it's been in the topic forever so sure no complaints :)
  97. cheeser it's probably been the policy longer than you've used irc :)
  98. dreamreal Well, for IRC the recommendation is this: if you don't want it known that you said it, don't say it
  99. odinsbane jbosmans when you have a crappy web interface and you want to check if a topic was somehow resolved or not.
  100. jbosmans interesting, how long has it been the policy? :)
  101. cheeser well over 2 decades now
  102. dreamreal jbosmans: stretches back through efnet and freenode #java for literal decades
  103. dreamreal efnet #java had the same policy, freenode #java as well although the two channels aren't related
  104. jbosmans :) in that case (alas) not longer
  105. odinsbane We thought it would die with the y2k bug.
  106. jbosmans answers all make sense, just a difference of opinion, and also for me: times changed since then i think
  107. jbosmans same way eg http mostly went out of fashion vs https
  108. dreamreal I don't think an AI scraper would have a great time pulling out coherent content from IRC logs like these
  109. jbosmans nicks who post more than ChanServ here https://pastebin.com/PPc5sHWn
  110. jbosmans so not sure if that's true, but having said that all good, was just curious
  111. dreamreal the hell I need to learn to shut up some :D
  112. jbosmans :-P
  113. odinsbane By post or text volume?
  114. jbosmans it's got some processing before counting so ymmv
  115. dreamreal Given the way I write probably about the same :D
  116. odinsbane If it is text volume, either Surial has changed his nick or this covers the last 24 hours.
  117. dreamreal It depends on teh scope of the search. surial's not on that list, though.
  118. dreamreal But Maldivia hasn't posted here for quite a while either.
  119. jbosmans it's based on logs since i joined here
  120. jbosmans attempt at "top 10 meaningful words" https://pastebin.com/UZfa8tgj
  121. jbosmans (those posts expire in a day)
  122. dreamreal remove stop words
  123. jbosmans yeah i tried :)
  124. jbosmans apparently 49. dreamreal : 715 :)
  125. jbosmans i tried to remove stopwords as in "i pulled in some list of stop words once and excluded them"
  126. odinsbane One way an array is not as good as a List is the double/Double issue. Does that problem still hold for a value class?
  127. cheeser no. that's the point.
  128. cheeser iirc, Double, et al, will be retrofitted as value classes.
  129. jbosmans i'm not sure if : double a = 1L; Double b = 1L; => a == b
  130. jbosmans better: i'm not sure if assertTrue(a == b) would pass
  131. cheeser today, no. with value classes, yes.
  132. hotcoffee jbosmans: did you mean double a = 1l; Long b = 1l; a == b?
  133. jbosmans performance-wise yes but also identity-wise?
  134. jbosmans well, i guess i just answered it myself :)
  135. jbosmans given value classes will have no identity
  136. cheeser yup :)
  137. jbosmans hotcoffee, no i think, but i was wrong
  138. jbosmans well, i hope ! i'll test it in march 2027 or so i guess
  139. ernimril if you compare a double to a Double you will call .doubleValue and compare double, so 1 should be equal to 1
  140. ernimril you can check the bytecode if you want
  141. jbosmans :o today? didn't know
  142. jbosmans i knew of auto-(un)boxing etc, but not that it also did that
  143. hotcoffee jbosmans: yep. It works and gives you true to a == b. Test it in jshell, if you can.
  144. odinsbane Would Double a = 1; Double b = new Double(1); Then a==b should be false? What happens if they're retrofitted?
  145. ernimril well, check it out: https://javap.yawk.at/#lfAUd0
  146. nevet javap pastebin
  147. jbosmans damn, i feel stupid, just wrote a unit test :)
  148. ernimril line 77 is the doubleValue and then you have a dcmpl
  149. jbosmans thanks ernimril && hotcoffee ^
  150. jbosmans i should've read the JLS and/or paid more attention when upgrading to java 5
  151. jbosmans those days were still about swing for me
  152. ernimril you can join me in writing a compiler, then you will have the need to know how the bytecode actually works...
  153. jbosmans I'm not cut out for that I fear, although it was a lot of fun (co)implementing and then maintaining some ERP formula language in java
  154. jbosmans ernimril, which language version are you targeting?
  155. ernimril 8 to 25 for now, but I will probably go up to 27 in a while
  156. jbosmans wow, as a personal project or ? sorry, i'm assuming everyone knows but me
  157. ernimril yes, a multi year pet project, but compiling itself and some smaller projects correctly now :-)
  158. ernimril web site needs an update though, I have not really updated it in quite a while
  159. jbosmans lots of kudos
  160. ernimril if you want to check it out then clone the git repo you find on: https://www.khelekore.org/parjac2/
  161. nevet Parjac2
  162. jbosmans aka you're a bytecode expert as you've shown just before :)
  163. ernimril eh, bytecode is easy to read, I am not writing it myself though
  164. ernimril (using the classfile api)
  165. odinsbane This probably ~would be~ is a pretty good source for ai scraping. There's been a lot of trash talking, but a lot of questions have been answered to.
  166. ernimril odinsbane, ?
  167. odinsbane s/to\./too\./
  168. dreamreal ernimril: he's talking about logs, I think.
  169. odinsbane dreamreal said "I don't think an AI scraper would have a great time pulling out coherent content from IRC logs like these"
  170. jbosmans ah classfile api, that's brian goetz' latest hands on code iirc
  171. ernimril the classfile api has been around for quite a few years now
  172. jbosmans sounds great ^
  173. dreamreal odinsbane: Well, I still disagree: the channel is borderline incoherent when it's busy, and most of the knowledge shared is shared more coherently elsewhere. After all, that's part of the reason javachannel.org existed in the first place: to take the incoherent stuff from the channel conversation and boil it into coherence.
  174. jbosmans hmm i may be confusing it with something else :s i'm definitely a user of java rather than expert
  175. jbosmans (classfile api was removed from preview with JDK 24 it seems so i'm not full out of date)
  176. ernimril yes, but it was in preview for several releases
  177. ernimril and dmlloyd backported it to earlier versions
  178. jbosmans right, i knew that
  179. jbosmans i'm very much a user of java, maintaining things etc, so never preview features (for one)
  180. jreicher javabot logs are still missing from the website. Just sayin'.
  181. javabot jreicher, what does that even *mean*?
  182. jreicher Oh I'm so sorry. That got mentioned just four hours ago. (Still catching up on scrollback)
  183. jreicher dreamreal: I didn't realise you had the logs on bytecode. Ta.
  184. jreicher Also, where do you think Java knowledge is shared more coherently than here? (Other than "properly authored" articles/blogposts, etc.)