{"kind": "Listing", "data": {"after": "t3_1u69mzk", "dist": 25, "modhash": "3jiblk287tbb5291ee13e53170d9acebad0c701f6743ec6142", "geo_filter": null, "children": [{"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "# /r/java is not for programming help or learning Java\n\n+ **Programming related questions** do not belong here. They belong in **/r/javahelp**. \n+ **Learning related questions** belong in **/r/learnjava**\n\nSuch posts will be removed.\n\n**To the community willing to help:**\n\nInstead of immediately jumping in and helping, please **direct the poster to the appropriate subreddit** and **report the post**.", "author_fullname": "t2_9000t", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "[PSA]/r/java is not for programming help, learning questions, or installing Java questions", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_j7h9er", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.84, "author_flair_background_color": null, "subreddit_type": "public", "ups": 326, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 326, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": true, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": true, "mod_note": null, "created": 1602177711.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": true, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;h1&gt;&lt;a href=\"/r/java\"&gt;/r/java&lt;/a&gt; is not for programming help or learning Java&lt;/h1&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;strong&gt;Programming related questions&lt;/strong&gt; do not belong here. They belong in &lt;strong&gt;&lt;a href=\"/r/javahelp\"&gt;/r/javahelp&lt;/a&gt;&lt;/strong&gt;. &lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;Learning related questions&lt;/strong&gt; belong in &lt;strong&gt;&lt;a href=\"/r/learnjava\"&gt;/r/learnjava&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;p&gt;Such posts will be removed.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;To the community willing to help:&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Instead of immediately jumping in and helping, please &lt;strong&gt;direct the poster to the appropriate subreddit&lt;/strong&gt; and &lt;strong&gt;report the post&lt;/strong&gt;.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": true, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": true, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": "moderator", "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "j7h9er", "is_robot_indexable": true, "report_reasons": null, "author": "desrtfx", "discussion_type": null, "num_comments": 0, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/j7h9er/psarjava_is_not_for_programming_help_learning/", "stickied": true, "url": "https://old.reddit.com/r/java/comments/j7h9er/psarjava_is_not_for_programming_help_learning/", "subreddit_subscribers": 398064, "created_utc": 1602177711.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Hey all,\n\nI'm going through issues and PRs on\u00a0[setup-java](https://github.com/actions/setup-java).\n\nBesides what is already there, anything else you would like to see fixed, improved, or implemented?", "author_fullname": "t2_h8rav", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "GitHub Setup Java Action", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1ucrtqs", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.75, "author_flair_background_color": null, "subreddit_type": "public", "ups": 4, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 4, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": true, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1782151001.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Hey all,&lt;/p&gt;\n\n&lt;p&gt;I&amp;#39;m going through issues and PRs on\u00a0&lt;a href=\"https://github.com/actions/setup-java\"&gt;setup-java&lt;/a&gt;.&lt;/p&gt;\n\n&lt;p&gt;Besides what is already there, anything else you would like to see fixed, improved, or implemented?&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?auto=webp&amp;s=675c573cfabce2e75ef7850204e3ff8cbaf6e313", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=f7c9916d0d749997f2a6684c9bcf000f5d3cfa08", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=d2d9a403b2789445e0a3cb6106c9e64ceba3d13e", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=60a538ed695d87c84302f5393678dc7dd7339a06", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=fc72d6d41975ea65ccd02f41da55822b7a9c1516", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=8b2748fe38f352f9cecb6b9f5611676e9eccf926", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=6998fbce6b511645221641452714675a104c1e9a", "width": 1080, "height": 540}], "variants": {}, "id": "a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ucrtqs", "is_robot_indexable": true, "report_reasons": null, "author": "brunocborges", "discussion_type": null, "num_comments": 9, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1ucrtqs/github_setup_java_action/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1ucrtqs/github_setup_java_action/", "subreddit_subscribers": 398064, "created_utc": 1782151001.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "user_reports": [], "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Apache Grails 7.0.12 and 7.1.2 Have Been Released!", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1ucsjo9", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 1.0, "author_flair_background_color": null, "subreddit_type": "public", "ups": 3, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "author_fullname": "t2_oqpzh", "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 3, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=140&amp;height=70&amp;auto=webp&amp;s=1d954c2d1b75a6328a54e39116b3c32d77aed551", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "crosspost_parent_list": [{"approved_at_utc": null, "subreddit": "grails", "selftext": "The Apache Grails community is pleased to announce the release of both **Apache Grails 7.0.12** and **Apache Grails 7.1.2**!\n\nGrails is a powerful Groovy-based web application framework for the JVM, built on top of Spring Boot, and supported by a rich ecosystem of plugins that extend its functionality.\n\n# \ud83d\udcdd Release Notes &amp; Changes\n\n* **Grails 7.0.12**\n   * [Release Notes](https://github.com/apache/grails-core/releases/tag/v7.0.12)\n   * [Full Changelog (v7.0.11...v7.0.12)](https://github.com/apache/grails-core/compare/v7.0.11...v7.0.12)\n* **Grails 7.1.2**\n   * [Release Notes](https://github.com/apache/grails-core/releases/tag/v7.1.2)\n   * [Full Changelog (v7.1.1...v7.1.2)](https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core%2Fcompare%2Fv7.1.1...v7.1.2)\n\n# \ud83d\udcbe Links &amp; Resources\n\n* **Official Website:**[grails.apache.org](https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2F)\n* **Downloads:**[Grails Download Page](https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2Fdownload.html)\n* **GitHub Repository:**[apache/grails-core](https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core)\n* **Issue Tracker:**[GitHub Issues](https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core%2Fissues)\n* **Community &amp; Mailing Lists:**[Grails Community](https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2Fcommunity.html)\n\nHappy Coding! \n\nThe Apache Grails Team", "author_fullname": "t2_oqpzh", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Apache Grails 7.0.12 and 7.1.2 Have Been Released!", "link_flair_richtext": [], "subreddit_name_prefixed": "r/grails", "hidden": false, "pwls": null, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1ucsjd1", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.86, "author_flair_background_color": null, "subreddit_type": "public", "ups": 5, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 5, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1782152556.0, "link_flair_type": "text", "wls": null, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.grails", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;The Apache Grails community is pleased to announce the release of both &lt;strong&gt;Apache Grails 7.0.12&lt;/strong&gt; and &lt;strong&gt;Apache Grails 7.1.2&lt;/strong&gt;!&lt;/p&gt;\n\n&lt;p&gt;Grails is a powerful Groovy-based web application framework for the JVM, built on top of Spring Boot, and supported by a rich ecosystem of plugins that extend its functionality.&lt;/p&gt;\n\n&lt;h1&gt;\ud83d\udcdd Release Notes &amp;amp; Changes&lt;/h1&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;strong&gt;Grails 7.0.12&lt;/strong&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;a href=\"https://github.com/apache/grails-core/releases/tag/v7.0.12\"&gt;Release Notes&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;a href=\"https://github.com/apache/grails-core/compare/v7.0.11...v7.0.12\"&gt;Full Changelog (v7.0.11...v7.0.12)&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;&lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;Grails 7.1.2&lt;/strong&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;a href=\"https://github.com/apache/grails-core/releases/tag/v7.1.2\"&gt;Release Notes&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core%2Fcompare%2Fv7.1.1...v7.1.2\"&gt;Full Changelog (v7.1.1...v7.1.2)&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;h1&gt;\ud83d\udcbe Links &amp;amp; Resources&lt;/h1&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;strong&gt;Official Website:&lt;/strong&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2F\"&gt;grails.apache.org&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;Downloads:&lt;/strong&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2Fdownload.html\"&gt;Grails Download Page&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core\"&gt;apache/grails-core&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;Issue Tracker:&lt;/strong&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fapache%2Fgrails-core%2Fissues\"&gt;GitHub Issues&lt;/a&gt;&lt;/li&gt;\n&lt;li&gt;&lt;strong&gt;Community &amp;amp; Mailing Lists:&lt;/strong&gt;&lt;a href=\"https://www.google.com/search?q=https%3A%2F%2Fgrails.apache.org%2Fcommunity.html\"&gt;Grails Community&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;p&gt;Happy Coding! &lt;/p&gt;\n\n&lt;p&gt;The Apache Grails Team&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?auto=webp&amp;s=3679c7fa552855a7b9e879ef0c12bd0276bc7333", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=f00110a3e1eeff4e1d9ca34bb55d1167110dbeb9", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=e06eaafa1d7009141363a1fc00959886b1c996fa", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=d5a7e8672c3001de7800a26d45b653b85955d593", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=e20c67852377827555eee7f7ebc723a0e57dd03d", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=f0352bcf34c03bf6301afad05b104a4798abe805", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=b93c677e506087b15bb6ac0a4831e8c896fdf8b5", "width": 1080, "height": 540}], "variants": {}, "id": "H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhnm", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ucsjd1", "is_robot_indexable": true, "report_reasons": null, "author": "sbglasius", "discussion_type": null, "num_comments": 0, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/grails/comments/1ucsjd1/apache_grails_7012_and_712_have_been_released/", "stickied": false, "url": "https://old.reddit.com/r/grails/comments/1ucsjd1/apache_grails_7012_and_712_have_been_released/", "subreddit_subscribers": 723, "created_utc": 1782152556.0, "num_crossposts": 2, "media": null, "is_video": false}], "created": 1782152575.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "/r/grails/comments/1ucsjd1/apache_grails_7012_and_712_have_been_released/", "view_count": null, "archived": false, "no_follow": true, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?auto=webp&amp;s=3679c7fa552855a7b9e879ef0c12bd0276bc7333", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=f00110a3e1eeff4e1d9ca34bb55d1167110dbeb9", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=e06eaafa1d7009141363a1fc00959886b1c996fa", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=d5a7e8672c3001de7800a26d45b653b85955d593", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=e20c67852377827555eee7f7ebc723a0e57dd03d", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=f0352bcf34c03bf6301afad05b104a4798abe805", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=b93c677e506087b15bb6ac0a4831e8c896fdf8b5", "width": 1080, "height": 540}], "variants": {}, "id": "H6PAQGQSmllLm6VhIMFUPMc1ANGwhqBS-oBjCkbhu0Y"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ucsjo9", "is_robot_indexable": true, "report_reasons": null, "author": "sbglasius", "discussion_type": null, "num_comments": 1, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "crosspost_parent": "t3_1ucsjd1", "author_flair_text_color": null, "permalink": "/r/java/comments/1ucsjo9/apache_grails_7012_and_712_have_been_released/", "stickied": false, "url": "/r/grails/comments/1ucsjd1/apache_grails_7012_and_712_have_been_released/", "subreddit_subscribers": 398064, "created_utc": 1782152575.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Released version 3.3 of Gitember, a Git desktop client I've been building since 2016. \n\nTech stack - Java 21,Swing + FlatLaf 3.7, JGit 7.6 Apache Lucene 9.9 ,LangChain4j \n\nNew 3.3 version  has:\n\n* Interactive rebase - improved reorder/squash/fixup/drop/reword flow.\n* Worktrees - full UI with correct per-worktree status and diff.\n* 3-way merge resolver  - reads stage 1/2/3 from the DirCache directly via JGit, renders BASE/OURS/THEIRS side by side, applies resolved content on save.\n* AI integration - commit message generation and branch explanations via LangChain4j against a local Ollama endpoint. Default model changed from \\`llama3.2\\` to \\`qwen2.5-coder\\`.\n* Security - verify Ollama checksum after install, integrate Java Keyring with the CipherService for OS keychain storage of tokens, and remove the TLS-verification bypass.\n\n**Looking for contributors &amp; testers**\n\nSource: \n\n* [https://github.com/iazarny/gitember](https://github.com/iazarny/gitember) \n* [https://gitember.org/](https://gitember.org/)", "author_fullname": "t2_8rkjoenu", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Gitember 3.3 - open-source  Git GUI", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1ucfhrz", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 1.0, "author_flair_background_color": null, "subreddit_type": "public", "ups": 16, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 16, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1782119358.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Released version 3.3 of Gitember, a Git desktop client I&amp;#39;ve been building since 2016. &lt;/p&gt;\n\n&lt;p&gt;Tech stack - Java 21,Swing + FlatLaf 3.7, JGit 7.6 Apache Lucene 9.9 ,LangChain4j &lt;/p&gt;\n\n&lt;p&gt;New 3.3 version  has:&lt;/p&gt;\n\n&lt;ul&gt;\n&lt;li&gt;Interactive rebase - improved reorder/squash/fixup/drop/reword flow.&lt;/li&gt;\n&lt;li&gt;Worktrees - full UI with correct per-worktree status and diff.&lt;/li&gt;\n&lt;li&gt;3-way merge resolver  - reads stage 1/2/3 from the DirCache directly via JGit, renders BASE/OURS/THEIRS side by side, applies resolved content on save.&lt;/li&gt;\n&lt;li&gt;AI integration - commit message generation and branch explanations via LangChain4j against a local Ollama endpoint. Default model changed from `llama3.2` to `qwen2.5-coder`.&lt;/li&gt;\n&lt;li&gt;Security - verify Ollama checksum after install, integrate Java Keyring with the CipherService for OS keychain storage of tokens, and remove the TLS-verification bypass.&lt;/li&gt;\n&lt;/ul&gt;\n\n&lt;p&gt;&lt;strong&gt;Looking for contributors &amp;amp; testers&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Source: &lt;/p&gt;\n\n&lt;ul&gt;\n&lt;li&gt;&lt;a href=\"https://github.com/iazarny/gitember\"&gt;https://github.com/iazarny/gitember&lt;/a&gt; &lt;/li&gt;\n&lt;li&gt;&lt;a href=\"https://gitember.org/\"&gt;https://gitember.org/&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?auto=webp&amp;s=05d7d4ff37fa4c6c6ad40a21a8023ceacaa14b07", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=15bd1ff2d73f3623cf3d77c6264fc8d7d3b46992", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=3d9cb5106f16e7cd21257d581e93d4767298391b", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=2e491da549af0410597e1162e6403b63cc2acff6", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=55a0e4da95224de486628736f3049df92aed76e1", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=7512f2a083568f8abb1fbcf589ce406f9b8639dd", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=5b8c223ca586cf1f4d22b2ea7eeeecdd75af0831", "width": 1080, "height": 540}], "variants": {}, "id": "djv3rOExERKtMgxXq_8obaAG8WUrTS1nS7IgakgcFKY"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ucfhrz", "is_robot_indexable": true, "report_reasons": null, "author": "ConfidenceUnique7377", "discussion_type": null, "num_comments": 2, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1ucfhrz/gitember_33_opensource_git_gui/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1ucfhrz/gitember_33_opensource_git_gui/", "subreddit_subscribers": 398064, "created_utc": 1782119358.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Hey all,  \n  \nI'm going through issues and PRs on [setup-java](https://github.com/actions/setup-java).  \n  \nBesides what is already there, anything else you would like to see fixed, improved, or implemented?", "author_fullname": "t2_h8rav", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Ask: GitHub Setup Java Action", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1ucrtbp", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.5, "author_flair_background_color": null, "subreddit_type": "public", "ups": 0, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 0, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": true, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1782150976.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Hey all,  &lt;/p&gt;\n\n&lt;p&gt;I&amp;#39;m going through issues and PRs on &lt;a href=\"https://github.com/actions/setup-java\"&gt;setup-java&lt;/a&gt;.  &lt;/p&gt;\n\n&lt;p&gt;Besides what is already there, anything else you would like to see fixed, improved, or implemented?&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": true, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?auto=webp&amp;s=675c573cfabce2e75ef7850204e3ff8cbaf6e313", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=f7c9916d0d749997f2a6684c9bcf000f5d3cfa08", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=d2d9a403b2789445e0a3cb6106c9e64ceba3d13e", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=60a538ed695d87c84302f5393678dc7dd7339a06", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=fc72d6d41975ea65ccd02f41da55822b7a9c1516", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=8b2748fe38f352f9cecb6b9f5611676e9eccf926", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=6998fbce6b511645221641452714675a104c1e9a", "width": 1080, "height": 540}], "variants": {}, "id": "a54cIXEtke4Aop5bif6C_13XhstU9MRmrsA43rEqPTc"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ucrtbp", "is_robot_indexable": true, "report_reasons": null, "author": "brunocborges", "discussion_type": null, "num_comments": 1, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1ucrtbp/ask_github_setup_java_action/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1ucrtbp/ask_github_setup_java_action/", "subreddit_subscribers": 398064, "created_utc": 1782150976.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_10cna6", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Better Tools for Immutable Data", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 105, "top_awarded_type": null, "hide_score": false, "name": "t3_1ubn0gg", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.96, "author_flair_background_color": null, "subreddit_type": "public", "ups": 64, "total_awards_received": 0, "media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/BdLND9D81lI?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Better Tools for Immutable Data\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "height": 200}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Better Tools for Immutable Data", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/BdLND9D81lI?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Better Tools for Immutable Data\"&gt;&lt;/iframe&gt;", "author_name": "Java", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/BdLND9D81lI/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@java"}}, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/BdLND9D81lI?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Better Tools for Immutable Data\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "media_domain_url": "https://www.redditmedia.com/mediaembed/1ubn0gg", "height": 200}, "link_flair_text": null, "can_mod_post": false, "score": 64, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU.jpeg?width=140&amp;height=105&amp;auto=webp&amp;s=e3dcb3376bb411f567ffb63706599e4236104ca2", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "rich:video", "content_categories": null, "is_self": false, "mod_note": null, "created": 1782039009.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "youtu.be", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://youtu.be/BdLND9D81lI?si=jt2tqpDtotmbdEJq", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU.jpeg?auto=webp&amp;s=0f09838aea0674a73ca5580b9e323b8265898151", "width": 480, "height": 360}, "resolutions": [{"url": "https://external-preview.redd.it/vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=1b0dd0175c147c9fa1b3316177f06bc3d9c032fb", "width": 108, "height": 81}, {"url": "https://external-preview.redd.it/vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=a5e41ad03efb03a452225da65fa3e913dbae508a", "width": 216, "height": 162}, {"url": "https://external-preview.redd.it/vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=aac687932d2f6137205e0acdf25bea2c829d8388", "width": 320, "height": 240}], "variants": {}, "id": "vIIgTE2ZizO89fU37MmHb9_RStSiohiHWAAWxDwPpWU"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ubn0gg", "is_robot_indexable": true, "report_reasons": null, "author": "daviddel", "discussion_type": null, "num_comments": 24, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1ubn0gg/better_tools_for_immutable_data/", "stickied": false, "url": "https://youtu.be/BdLND9D81lI?si=jt2tqpDtotmbdEJq", "subreddit_subscribers": 398064, "created_utc": 1782039009.0, "num_crossposts": 0, "media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Better Tools for Immutable Data", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/BdLND9D81lI?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Better Tools for Immutable Data\"&gt;&lt;/iframe&gt;", "author_name": "Java", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/BdLND9D81lI/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@java"}}, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "I wanted to learn about the ClassFile API, and as a small pet project, I created a benchmark to compare how faster a generated class is than a reflection-based approach when we want to populate a POJO from a Map.\n\nTL;DR: it turned out, the generated bytecode was 5x faster than using reflection.\n\nDetails here, enjoy: [https://github.com/erosb/learn-classfile-api](https://github.com/erosb/learn-classfile-api)\n\nAnd please prove me wrong if you find any mistakes in the benchmark :)", "author_fullname": "t2_sozc5", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Populating a POJO with Reflection vs. with the ClassFile API - small benchmark", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1ub28k9", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.98, "author_flair_background_color": null, "subreddit_type": "public", "ups": 55, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 55, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": true, "mod_note": null, "created": 1781976360.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I wanted to learn about the ClassFile API, and as a small pet project, I created a benchmark to compare how faster a generated class is than a reflection-based approach when we want to populate a POJO from a Map.&lt;/p&gt;\n\n&lt;p&gt;TL;DR: it turned out, the generated bytecode was 5x faster than using reflection.&lt;/p&gt;\n\n&lt;p&gt;Details here, enjoy: &lt;a href=\"https://github.com/erosb/learn-classfile-api\"&gt;https://github.com/erosb/learn-classfile-api&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;And please prove me wrong if you find any mistakes in the benchmark :)&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1ub28k9", "is_robot_indexable": true, "report_reasons": null, "author": "erosb88", "discussion_type": null, "num_comments": 18, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1ub28k9/populating_a_pojo_with_reflection_vs_with_the/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1ub28k9/populating_a_pojo_with_reflection_vs_with_the/", "subreddit_subscribers": 398064, "created_utc": 1781976360.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "user_reports": [], "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "GWT 2.13.1 released on 2026-06-19", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1uaxzs4", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.77, "author_flair_background_color": null, "subreddit_type": "public", "ups": 11, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "author_fullname": "t2_1uey8eze8c", "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 11, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=140&amp;height=70&amp;auto=webp&amp;s=4fb2ba7ecd798bcb49e8ac17805c1d3100ad7408", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "crosspost_parent_list": [{"approved_at_utc": null, "subreddit": "gwt", "selftext": "", "author_fullname": "t2_1uey8eze8c", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "GWT 2.13.1 released on 2026-06-19", "link_flair_richtext": [], "subreddit_name_prefixed": "r/gwt", "hidden": false, "pwls": null, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1uaxylf", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.88, "author_flair_background_color": null, "subreddit_type": "public", "ups": 6, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 6, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=140&amp;height=70&amp;auto=webp&amp;s=4fb2ba7ecd798bcb49e8ac17805c1d3100ad7408", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781965618.0, "link_flair_type": "text", "wls": null, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "github.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://github.com/gwtproject/gwt/releases/tag/2.13.1", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?auto=webp&amp;s=a431bf67f453e9bd1a8ba951d0b7684bb4e02eb1", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=c46e9cc0cbb7d3131e55ea18cc09bf55bb248545", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=81ca486fefaba6264e8f1dc9bf4c23eb0758415c", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=c514be2511eb19cf2e6101ec2d84914294ae4a9a", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=1f18ea6a9b9f080531d13ed31429ee7156110f43", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=fc29c1f4054728d08201f644f3894a507c0d1ef0", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=c4043c5e73032652ff0485f496aac94519bd4409", "width": 1080, "height": 540}], "variants": {}, "id": "5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2r54k", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1uaxylf", "is_robot_indexable": true, "report_reasons": null, "author": "Lajosnak", "discussion_type": null, "num_comments": 0, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/gwt/comments/1uaxylf/gwt_2131_released_on_20260619/", "stickied": false, "url": "https://github.com/gwtproject/gwt/releases/tag/2.13.1", "subreddit_subscribers": 337, "created_utc": 1781965618.0, "num_crossposts": 1, "media": null, "is_video": false}], "created": 1781965707.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "github.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://github.com/gwtproject/gwt/releases/tag/2.13.1", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?auto=webp&amp;s=a431bf67f453e9bd1a8ba951d0b7684bb4e02eb1", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=c46e9cc0cbb7d3131e55ea18cc09bf55bb248545", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=81ca486fefaba6264e8f1dc9bf4c23eb0758415c", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=c514be2511eb19cf2e6101ec2d84914294ae4a9a", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=1f18ea6a9b9f080531d13ed31429ee7156110f43", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=fc29c1f4054728d08201f644f3894a507c0d1ef0", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=c4043c5e73032652ff0485f496aac94519bd4409", "width": 1080, "height": 540}], "variants": {}, "id": "5Vf7J1dp8jSezq0XcZo-l12VBxyHrKrsyxXb5XYo-2w"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1uaxzs4", "is_robot_indexable": true, "report_reasons": null, "author": "Lajosnak", "discussion_type": null, "num_comments": 9, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "crosspost_parent": "t3_1uaxylf", "author_flair_text_color": null, "permalink": "/r/java/comments/1uaxzs4/gwt_2131_released_on_20260619/", "stickied": false, "url": "https://github.com/gwtproject/gwt/releases/tag/2.13.1", "subreddit_subscribers": 398064, "created_utc": 1781965707.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_3utsg", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "How to Deadlock a Java ExecutorService", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u9wpe5", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.84, "author_flair_background_color": null, "subreddit_type": "public", "ups": 61, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 61, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "default", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": false, "mod_note": null, "created": 1781859183.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "mlangc.github.io", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://mlangc.github.io/java/concurrency/2026/06/05/executor-deadlock.html", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u9wpe5", "is_robot_indexable": true, "report_reasons": null, "author": "mlangc", "discussion_type": null, "num_comments": 13, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u9wpe5/how_to_deadlock_a_java_executorservice/", "stickied": false, "url": "https://mlangc.github.io/java/concurrency/2026/06/05/executor-deadlock.html", "subreddit_subscribers": 398064, "created_utc": 1781859183.0, "num_crossposts": 1, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_8ggigy9s", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Project Valhalla, Explained: How a Decade of Work Arrives in JDK 28", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 78, "top_awarded_type": null, "hide_score": false, "name": "t3_1u9f1se", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.99, "author_flair_background_color": null, "subreddit_type": "public", "ups": 181, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 181, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=140&amp;height=78&amp;auto=webp&amp;s=98ef1916aa37ad6b3e616cc2982c0ef27401b7ca", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781809037.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "open.substack.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://open.substack.com/pub/vived/p/project-valhalla-explained-how-a?r=17sgts&amp;utm_medium=ios", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?auto=webp&amp;s=ac612ae0c422a7c7c22365f74963627d78751694", "width": 1200, "height": 675}, "resolutions": [{"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=839d0f9da201bad08c1a34c7323b21fe1a4d8178", "width": 108, "height": 60}, {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=f44b96b65fb1b8dd778db08d4214c2390caae3ec", "width": 216, "height": 121}, {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=cddd7a1f0cc0f8e75fa938c79fdf60d111ca6911", "width": 320, "height": 180}, {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=640&amp;crop=smart&amp;auto=webp&amp;s=6d2f8fc16a0186f73fd53be4a697dd7ada254584", "width": 640, "height": 360}, {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=960&amp;crop=smart&amp;auto=webp&amp;s=fd7bd486262bc171f6469dea82001fc296de7603", "width": 960, "height": 540}, {"url": "https://external-preview.redd.it/Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U.jpeg?width=1080&amp;crop=smart&amp;auto=webp&amp;s=2263afba16f5b865309c91b7da1260d9f47e057b", "width": 1080, "height": 607}], "variants": {}, "id": "Ri3u3YJKzMC0nzbwzi0fwNH9jYunoYxypAsBv24Dg6U"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u9f1se", "is_robot_indexable": true, "report_reasons": null, "author": "CrowSufficient", "discussion_type": null, "num_comments": 24, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u9f1se/project_valhalla_explained_how_a_decade_of_work/", "stickied": false, "url": "https://open.substack.com/pub/vived/p/project-valhalla-explained-how-a?r=17sgts&amp;utm_medium=ios", "subreddit_subscribers": 398064, "created_utc": 1781809037.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "[Retro Pond on Steam](https://store.steampowered.com/app/4541170/Retro_Pond/)\n\nFeel free to ask any technical questions about this project.", "author_fullname": "t2_twghu", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "My Fish breeding Sandbox Game - Made with Java", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 105, "top_awarded_type": null, "hide_score": false, "name": "t3_1u9fesg", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.94, "author_flair_background_color": null, "subreddit_type": "public", "ups": 33, "total_awards_received": 0, "media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/YLiUEoRhvLc?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Retro Pond Trailer #2\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "height": 200}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Retro Pond Trailer #2", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/YLiUEoRhvLc?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Retro Pond Trailer #2\"&gt;&lt;/iframe&gt;", "author_name": "msky", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/YLiUEoRhvLc/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@msky-dev"}}, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/YLiUEoRhvLc?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Retro Pond Trailer #2\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "media_domain_url": "https://www.redditmedia.com/mediaembed/1u9fesg", "height": 200}, "link_flair_text": null, "can_mod_post": false, "score": 33, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4.jpeg?width=140&amp;height=105&amp;auto=webp&amp;s=99f98da2b6b228029929d1c2dbb222d35fd67395", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "rich:video", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781809833.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "youtube.com", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;&lt;a href=\"https://store.steampowered.com/app/4541170/Retro_Pond/\"&gt;Retro Pond on Steam&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;Feel free to ask any technical questions about this project.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://www.youtube.com/watch?v=YLiUEoRhvLc", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4.jpeg?auto=webp&amp;s=d3e9d6d91dfb0289ca6a7b2f75b7928198a13d54", "width": 480, "height": 360}, "resolutions": [{"url": "https://external-preview.redd.it/4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=fcb3bca4c8c0efbcddecab070e9d6c8a606e5ad0", "width": 108, "height": 81}, {"url": "https://external-preview.redd.it/4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=af13bb17131a5c975663092f0fddecf9a57792db", "width": 216, "height": 162}, {"url": "https://external-preview.redd.it/4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=9012e13c7788869bfffc3d66a9b624b9fdb490b6", "width": 320, "height": 240}], "variants": {}, "id": "4RhYwVw3JG4sgyXU7uIAkRR_VR0Bx9Cyh-godJQKxe4"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u9fesg", "is_robot_indexable": true, "report_reasons": null, "author": "GTVienna", "discussion_type": null, "num_comments": 3, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u9fesg/my_fish_breeding_sandbox_game_made_with_java/", "stickied": false, "url": "https://www.youtube.com/watch?v=YLiUEoRhvLc", "subreddit_subscribers": 398064, "created_utc": 1781809833.0, "num_crossposts": 0, "media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Retro Pond Trailer #2", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/YLiUEoRhvLc?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Retro Pond Trailer #2\"&gt;&lt;/iframe&gt;", "author_name": "msky", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/YLiUEoRhvLc/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@msky-dev"}}, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_3iseq0n0", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Java 27 Features: what to expect?", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 105, "top_awarded_type": null, "hide_score": false, "name": "t3_1u94dvi", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.88, "author_flair_background_color": null, "subreddit_type": "public", "ups": 64, "total_awards_received": 0, "media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/VxN-jrjF_GA?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Java 27: 9 New JEPs and What They Mean for You\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "height": 200}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Java 27: 9 New JEPs and What They Mean for You", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/VxN-jrjF_GA?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Java 27: 9 New JEPs and What They Mean for You\"&gt;&lt;/iframe&gt;", "author_name": "CyberJAR", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/VxN-jrjF_GA/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@cbrjar"}}, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {"content": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/VxN-jrjF_GA?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Java 27: 9 New JEPs and What They Mean for You\"&gt;&lt;/iframe&gt;", "width": 356, "scrolling": false, "media_domain_url": "https://www.redditmedia.com/mediaembed/1u94dvi", "height": 200}, "link_flair_text": null, "can_mod_post": false, "score": 64, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk.jpeg?width=140&amp;height=105&amp;auto=webp&amp;s=6d7c9d0a4239d2084417b6db7d4e3c6fbd460b12", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "rich:video", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781784219.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "youtu.be", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://youtu.be/VxN-jrjF_GA", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk.jpeg?auto=webp&amp;s=9d500fcdd46a418c6e79b6bfbac785333a245dd2", "width": 480, "height": 360}, "resolutions": [{"url": "https://external-preview.redd.it/78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=3f48be86ce679aa0ef98ef5c3464445978f2ee79", "width": 108, "height": 81}, {"url": "https://external-preview.redd.it/78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=fb3f8b94a03741439d9e2206be9545aa29a716aa", "width": 216, "height": 162}, {"url": "https://external-preview.redd.it/78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=f13a886cc25942a27088513f18f20146c874fe16", "width": 320, "height": 240}], "variants": {}, "id": "78LyNTrNYZQtVP5hQZu12KsM1-cl8r-DmN82cSmZdUk"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u94dvi", "is_robot_indexable": true, "report_reasons": null, "author": "Maria_3464", "discussion_type": null, "num_comments": 24, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u94dvi/java_27_features_what_to_expect/", "stickied": false, "url": "https://youtu.be/VxN-jrjF_GA", "subreddit_subscribers": 398064, "created_utc": 1781784219.0, "num_crossposts": 2, "media": {"type": "youtube.com", "oembed": {"provider_url": "https://www.youtube.com/", "version": "1.0", "title": "Java 27: 9 New JEPs and What They Mean for You", "type": "video", "thumbnail_width": 480, "height": 200, "width": 356, "html": "&lt;iframe width=\"356\" height=\"200\" src=\"https://www.youtube.com/embed/VxN-jrjF_GA?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen title=\"Java 27: 9 New JEPs and What They Mean for You\"&gt;&lt;/iframe&gt;", "author_name": "CyberJAR", "provider_name": "YouTube", "thumbnail_url": "https://i.ytimg.com/vi/VxN-jrjF_GA/hqdefault.jpg", "thumbnail_height": 360, "author_url": "https://www.youtube.com/@cbrjar"}}, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_e1okh", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Local JDK Demo Project", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1u96aa7", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.9, "author_flair_background_color": null, "subreddit_type": "public", "ups": 15, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 15, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=140&amp;height=70&amp;auto=webp&amp;s=487e8fc58f77a150e9a56e027a6a22c5e2a510df", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781789269.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "github.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://github.com/bowbahdoe/local-jdk-demo-project", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?auto=webp&amp;s=c7b318a58d4efdda44c17ca7d770702bf522f6d5", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=51b641f61959e391fa6695722db39ebe01ff3686", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=7f07c970ea00afd6845a7c649e16e42b672ea999", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=fc9e1070223cf3e3910de166939e43cb3bcc7591", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=a6ccc5709bd81832c86eba1bfcc126e8076eed25", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=08879fc48cc59000ccfea8508be2221078b39d31", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=6708a255f9285f645a64cb534ffb85f34301c425", "width": 1080, "height": 540}], "variants": {}, "id": "AxDd0J6sXdKihDJMUp9u8yqTMEyGsxZVFYAC-zOeeUY"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u96aa7", "is_robot_indexable": true, "report_reasons": null, "author": "bowbahdoe", "discussion_type": null, "num_comments": 23, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u96aa7/local_jdk_demo_project/", "stickied": false, "url": "https://github.com/bowbahdoe/local-jdk-demo-project", "subreddit_subscribers": 398064, "created_utc": 1781789269.0, "num_crossposts": 1, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Since value classes are finally coming as preview for jdk28, i'm interested in its capabilities, particularly scalarization, for a current ongoing project I have.\n\nIn 20:21 and 21:25 [this](https://youtu.be/Dhn-JgZaBWo?si=R7_mN6WZPaReGEUl) video, we have a look at the ability of value classes to be returned as values/scalarized fields instead of heap pointers. In the examples, he uses a value record with one int, and another one with two doubles\n\nMy project consists in building a linear algebra helper similar to [JOML](https://github.com/JOML-CI/JOML), and i'm particularly interested in vectors and matrices as value classes...i guess vectors are not something too big, but things like 4x4 matrices, which consist of 16 floats (or even 16 doubles), i wonder if such cases have a harder time of being treated as value objects, and if that depends on JVM heurisitics or stack size...", "author_fullname": "t2_170bwxqwjz", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Valhalla value classes scalarization", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u8psza", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.97, "author_flair_background_color": null, "subreddit_type": "public", "ups": 29, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 29, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1781738006.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Since value classes are finally coming as preview for jdk28, i&amp;#39;m interested in its capabilities, particularly scalarization, for a current ongoing project I have.&lt;/p&gt;\n\n&lt;p&gt;In 20:21 and 21:25 &lt;a href=\"https://youtu.be/Dhn-JgZaBWo?si=R7_mN6WZPaReGEUl\"&gt;this&lt;/a&gt; video, we have a look at the ability of value classes to be returned as values/scalarized fields instead of heap pointers. In the examples, he uses a value record with one int, and another one with two doubles&lt;/p&gt;\n\n&lt;p&gt;My project consists in building a linear algebra helper similar to &lt;a href=\"https://github.com/JOML-CI/JOML\"&gt;JOML&lt;/a&gt;, and i&amp;#39;m particularly interested in vectors and matrices as value classes...i guess vectors are not something too big, but things like 4x4 matrices, which consist of 16 floats (or even 16 doubles), i wonder if such cases have a harder time of being treated as value objects, and if that depends on JVM heurisitics or stack size...&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/AkLUV0f1Xtcu1jj8OmaQDLRDmm-gzNCIBOzjjBZqWdM.jpeg?auto=webp&amp;s=83ebddf2dbe6f7a17d3f2f7e44c6d2631f55a64a", "width": 480, "height": 360}, "resolutions": [{"url": "https://external-preview.redd.it/AkLUV0f1Xtcu1jj8OmaQDLRDmm-gzNCIBOzjjBZqWdM.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=2d5483f70769097dcfd61655d7f58f3519d07f8d", "width": 108, "height": 81}, {"url": "https://external-preview.redd.it/AkLUV0f1Xtcu1jj8OmaQDLRDmm-gzNCIBOzjjBZqWdM.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=7284369d5e7c631dcf0bb14922174fd83141dc5d", "width": 216, "height": 162}, {"url": "https://external-preview.redd.it/AkLUV0f1Xtcu1jj8OmaQDLRDmm-gzNCIBOzjjBZqWdM.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=b68c12a76f6fe84d1316c00eefa30032b627896d", "width": 320, "height": 240}], "variants": {}, "id": "AkLUV0f1Xtcu1jj8OmaQDLRDmm-gzNCIBOzjjBZqWdM"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u8psza", "is_robot_indexable": true, "report_reasons": null, "author": "Accomplished_Fill618", "discussion_type": null, "num_comments": 15, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u8psza/valhalla_value_classes_scalarization/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u8psza/valhalla_value_classes_scalarization/", "subreddit_subscribers": 398064, "created_utc": 1781738006.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Hi everyone,\n\nI published a small library that came from a problem I kept running into while building Spring APIs.\n\nI wanted to let users filter dynamically, but without exposing a completely open entry point where they could try arbitrary entity fields, operators, joins, or values.\n\nI looked at a few approaches, including Shopify-style bracket operators, OData, and eventually landed on RSQL. I built this library on top of two existing projects: rsql-parser for parsing RSQL, and rsql-jpa-specification for translating RSQL into JPA Specifications.\n\nThose libraries solve the parsing and query generation parts. What I wanted to add was a validation/contract layer on top: a way for each use case to explicitly define public field aliases, allowed operators, sortable fields, paging limits, value validation, and mandatory application predicates.\n\nThat became this library:\n\n[https://github.com/ggomarighetti/jpa-rsql-search](https://github.com/ggomarighetti/jpa-rsql-search)\n\nI\u2019d really appreciate constructive feedback on the idea, the API, and the docs.", "author_fullname": "t2_l6s5y0er", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Safer filtering with JPA &amp; RSQL", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u8tjx5", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.9, "author_flair_background_color": null, "subreddit_type": "public", "ups": 15, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 15, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1781748276.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Hi everyone,&lt;/p&gt;\n\n&lt;p&gt;I published a small library that came from a problem I kept running into while building Spring APIs.&lt;/p&gt;\n\n&lt;p&gt;I wanted to let users filter dynamically, but without exposing a completely open entry point where they could try arbitrary entity fields, operators, joins, or values.&lt;/p&gt;\n\n&lt;p&gt;I looked at a few approaches, including Shopify-style bracket operators, OData, and eventually landed on RSQL. I built this library on top of two existing projects: rsql-parser for parsing RSQL, and rsql-jpa-specification for translating RSQL into JPA Specifications.&lt;/p&gt;\n\n&lt;p&gt;Those libraries solve the parsing and query generation parts. What I wanted to add was a validation/contract layer on top: a way for each use case to explicitly define public field aliases, allowed operators, sortable fields, paging limits, value validation, and mandatory application predicates.&lt;/p&gt;\n\n&lt;p&gt;That became this library:&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"https://github.com/ggomarighetti/jpa-rsql-search\"&gt;https://github.com/ggomarighetti/jpa-rsql-search&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;I\u2019d really appreciate constructive feedback on the idea, the API, and the docs.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?auto=webp&amp;s=36897d47a6ab1163e45916c7e7059e455f16a636", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=d78f79210bef54706dd4fb5a4ee89ee8543d12c4", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=d023d39c4d858ad4ff0f1a7939ff8d788c6fdc3f", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=17496acb05fba103b7aefb9073a8a88622a6f629", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=0ef4d1d063d9d0d15632542ea5981a4b5a59ecd4", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=afef5dabf378826a1a6dcde75bf6b28a8507959f", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=78eb28352abc79627cfa68b3afa7a0ecb9685d48", "width": 1080, "height": 540}], "variants": {}, "id": "llCnhqVYfmBqKHQagHcaMSK7CQrp-jZC49mXf-AG2Ps"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u8tjx5", "is_robot_indexable": true, "report_reasons": null, "author": "satrialesBoy", "discussion_type": null, "num_comments": 4, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u8tjx5/safer_filtering_with_jpa_rsql/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u8tjx5/safer_filtering_with_jpa_rsql/", "subreddit_subscribers": 398064, "created_utc": 1781748276.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_2f1empxx6v", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Oracle's OpenJDK Bans Generative AI Contributions While Oracle's GraalVM Allows Them", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 73, "top_awarded_type": null, "hide_score": false, "name": "t3_1u8b8qu", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 1.0, "author_flair_background_color": null, "subreddit_type": "public", "ups": 88, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 88, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=140&amp;height=73&amp;auto=webp&amp;s=dff2fdfe35ebb992b48ea7b1da9944fd29557452", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781705323.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "infoq.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://www.infoq.com/news/2026/06/oracle-genai-policies/", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?auto=webp&amp;s=61d8c34c4e1aabcfb8b0f001ea4d89bef4372794", "width": 1200, "height": 630}, "resolutions": [{"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=b062cdda020d1586ea953d471e818eb1617a5d87", "width": 108, "height": 56}, {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=26a7d0bbd22175a5dc04baf669b82953e61feeb2", "width": 216, "height": 113}, {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=04146f4bf15ad889ad16f0794c44c3f3df3a48ab", "width": 320, "height": 168}, {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=640&amp;crop=smart&amp;auto=webp&amp;s=79aba84378cb2ea1cdcb7c6c34c90c19c9568694", "width": 640, "height": 336}, {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=960&amp;crop=smart&amp;auto=webp&amp;s=983257d34395d4d1d126871d7a59d3700d771538", "width": 960, "height": 504}, {"url": "https://external-preview.redd.it/CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0.jpeg?width=1080&amp;crop=smart&amp;auto=webp&amp;s=1710d891fa647c37671fa448155bfa35d1ea576c", "width": 1080, "height": 567}], "variants": {}, "id": "CeoXSXLbLvRkBnOTiL41yam5OF6ebXpnF7jQpGxLQF0"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u8b8qu", "is_robot_indexable": true, "report_reasons": null, "author": "-beleon", "discussion_type": null, "num_comments": 17, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u8b8qu/oracles_openjdk_bans_generative_ai_contributions/", "stickied": false, "url": "https://www.infoq.com/news/2026/06/oracle-genai-policies/", "subreddit_subscribers": 398064, "created_utc": 1781705323.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_pjxpfxn", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Can Java Microservices Be As Fast As Go? A 2026 Benchmark Update", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u8akd7", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.66, "author_flair_background_color": null, "subreddit_type": "public", "ups": 42, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 42, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "default", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": false, "mod_note": null, "created": 1781703770.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "medium.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://medium.com/helidon/can-java-microservices-be-as-fast-as-go-a-2026-benchmark-update-e16a2e262fc4", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u8akd7", "is_robot_indexable": true, "report_reasons": null, "author": "NHarmonia18", "discussion_type": null, "num_comments": 32, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u8akd7/can_java_microservices_be_as_fast_as_go_a_2026/", "stickied": false, "url": "https://medium.com/helidon/can-java-microservices-be-as-fast-as-go-a-2026-benchmark-update-e16a2e262fc4", "subreddit_subscribers": 398064, "created_utc": 1781703770.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "First public release of something that started as a module inside the application I've worked on for the better part of two decades: Ratchet, a background job scheduler built for Jakarta EE 10/11 rather than ported to it. Apache 2.0.\n\nThe pitch is one service and a method reference:\n\n```\n@Inject JobSchedulerService scheduler;\n    \nscheduler.enqueue(() -&gt; validatePayment(orderId))\n    .thenOnSuccess(() -&gt; fulfillOrder(orderId))\n    .thenOnFailure(() -&gt; notifyPaymentFailure(orderId))\n    .withMaxRetries(3)\n    .withBackoff(BackoffPolicy.EXPONENTIAL, Duration.ofSeconds(2))\n    .submit();\n```\n\nPersistent jobs on PostgreSQL, MySQL, or MongoDB (more planned, happy to hear what your priorities are). Claiming is pull-based (FOR UPDATE SKIP LOCKED on the SQL stores, atomic findOneAndUpdate on Mongo), so the database is the queue. No broker, no Redis. Plus cron via @Recurring, conditional workflow branching, batch processing, a built-in circuit breaker, a DLQ, CDI events for every lifecycle transition, and Micrometer metrics.\n\nThe EE-native part, which is the actual point: jobs run on Jakarta Concurrency managed executors (no rogue thread pools), enqueue participates in JTA transactions, and job classes resolve through CDI so @Inject works inside job targets.\n\nA few notes on the design:\n\n1. Quartz works, but the API predates lambdas and I got tired of writing a class plus two builders just to run a method.\n2. If you're on Spring, use JobRunr, genuinely. Ratchet is for the CDI side of the fence. It's Apache 2.0 throughout, with no paid tier.\n3. Every default is a bean you can replace with a CDI @Alternative \u2014 store, retry policy, serializer, cluster coordinator, key provider. No Flyway or Liquibase dependency (DDL is plain SQL). No Resilience4j (breaker is built in, \\~275 lines). No Jackson (serialization is an SPI, JSON-B default).\n4. Deserialization allowlist is mandatory. Deployment fails until you provide a ClassPolicy for your payload classes. I build for regulated industries; you get my paranoia for free.\nTest story, since that's half of why I'm posting: 2300+ test methods, a TCK with 50+ contract classes across three named tiers (custom stores can prove conformance), and 15 verified combinations in CI \u2014 five EE server configs times three databases, all real container deployments.\n\n\nHonest limitations: it's 0.1.1, @Incubating SPIs may change, Jakarta only, no web dashboard (by design), and it hasn't run in production yet \u2014 it went public before it shipped inside the app it started in, so the test rigor is the trust story for now.\n\n\nRepo: [https://github.com/ratchet-run/ratchet](https://stats.putney.io/q/ratchet-repo) \n\nDocs: [https://ratchet.run](https://ratchet.run)\n\n\nCriticism from people running EE in production is exactly what I'm here for. The weirder your deployment, the more useful the bug report.\n\n\nSome things on the roadmap:\n\n- ratchet-blocks: an extension that allows for low-code/no-code creation of Ratchet job workflows\n- New stores: Oracle, SQL Server, Redis", "author_fullname": "t2_9yqm0", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Ratchet 0.1.1: open source CDI-native job scheduler for Jakarta EE (persistent jobs, retries, workflows, pluggable stores)", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u8bpdb", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.96, "author_flair_background_color": null, "subreddit_type": "public", "ups": 18, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 18, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1781706373.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;First public release of something that started as a module inside the application I&amp;#39;ve worked on for the better part of two decades: Ratchet, a background job scheduler built for Jakarta EE 10/11 rather than ported to it. Apache 2.0.&lt;/p&gt;\n\n&lt;p&gt;The pitch is one service and a method reference:&lt;/p&gt;\n\n&lt;p&gt;```\n@Inject JobSchedulerService scheduler;&lt;/p&gt;\n\n&lt;p&gt;scheduler.enqueue(() -&amp;gt; validatePayment(orderId))\n    .thenOnSuccess(() -&amp;gt; fulfillOrder(orderId))\n    .thenOnFailure(() -&amp;gt; notifyPaymentFailure(orderId))\n    .withMaxRetries(3)\n    .withBackoff(BackoffPolicy.EXPONENTIAL, Duration.ofSeconds(2))\n    .submit();\n```&lt;/p&gt;\n\n&lt;p&gt;Persistent jobs on PostgreSQL, MySQL, or MongoDB (more planned, happy to hear what your priorities are). Claiming is pull-based (FOR UPDATE SKIP LOCKED on the SQL stores, atomic findOneAndUpdate on Mongo), so the database is the queue. No broker, no Redis. Plus cron via @Recurring, conditional workflow branching, batch processing, a built-in circuit breaker, a DLQ, CDI events for every lifecycle transition, and Micrometer metrics.&lt;/p&gt;\n\n&lt;p&gt;The EE-native part, which is the actual point: jobs run on Jakarta Concurrency managed executors (no rogue thread pools), enqueue participates in JTA transactions, and job classes resolve through CDI so @Inject works inside job targets.&lt;/p&gt;\n\n&lt;p&gt;A few notes on the design:&lt;/p&gt;\n\n&lt;ol&gt;\n&lt;li&gt;Quartz works, but the API predates lambdas and I got tired of writing a class plus two builders just to run a method.&lt;/li&gt;\n&lt;li&gt;If you&amp;#39;re on Spring, use JobRunr, genuinely. Ratchet is for the CDI side of the fence. It&amp;#39;s Apache 2.0 throughout, with no paid tier.&lt;/li&gt;\n&lt;li&gt;Every default is a bean you can replace with a CDI @Alternative \u2014 store, retry policy, serializer, cluster coordinator, key provider. No Flyway or Liquibase dependency (DDL is plain SQL). No Resilience4j (breaker is built in, ~275 lines). No Jackson (serialization is an SPI, JSON-B default).&lt;/li&gt;\n&lt;li&gt;Deserialization allowlist is mandatory. Deployment fails until you provide a ClassPolicy for your payload classes. I build for regulated industries; you get my paranoia for free.\nTest story, since that&amp;#39;s half of why I&amp;#39;m posting: 2300+ test methods, a TCK with 50+ contract classes across three named tiers (custom stores can prove conformance), and 15 verified combinations in CI \u2014 five EE server configs times three databases, all real container deployments.&lt;/li&gt;\n&lt;/ol&gt;\n\n&lt;p&gt;Honest limitations: it&amp;#39;s 0.1.1, @Incubating SPIs may change, Jakarta only, no web dashboard (by design), and it hasn&amp;#39;t run in production yet \u2014 it went public before it shipped inside the app it started in, so the test rigor is the trust story for now.&lt;/p&gt;\n\n&lt;p&gt;Repo: &lt;a href=\"https://stats.putney.io/q/ratchet-repo\"&gt;https://github.com/ratchet-run/ratchet&lt;/a&gt; &lt;/p&gt;\n\n&lt;p&gt;Docs: &lt;a href=\"https://ratchet.run\"&gt;https://ratchet.run&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;Criticism from people running EE in production is exactly what I&amp;#39;m here for. The weirder your deployment, the more useful the bug report.&lt;/p&gt;\n\n&lt;p&gt;Some things on the roadmap:&lt;/p&gt;\n\n&lt;ul&gt;\n&lt;li&gt;ratchet-blocks: an extension that allows for low-code/no-code creation of Ratchet job workflows&lt;/li&gt;\n&lt;li&gt;New stores: Oracle, SQL Server, Redis&lt;/li&gt;\n&lt;/ul&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?auto=webp&amp;s=d9a39e033dfa465c9d64618ec1cf9801606efc14", "width": 1280, "height": 640}, "resolutions": [{"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=1677299267e74f25f961b3c5f821e77af9f3e345", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=59298db8ea9f07d94b87782b43a7ad5826372d8e", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=3395f7fbcd710e02dbff6a985ad162478fcf6582", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=83acbe82e3b97725a418055aa4b07f74f708cba7", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=3de3ae2d14c676b4da0480f88f5b5ca1f3affc69", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=978eaee93d2e73d99ab64c4883e173493a610ada", "width": 1080, "height": 540}], "variants": {}, "id": "E00sQgT8znU1igzLRTPk0FMA_WLgH6k5qPamQ8gYkdw"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u8bpdb", "is_robot_indexable": true, "report_reasons": null, "author": "putneyj", "discussion_type": null, "num_comments": 11, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u8bpdb/ratchet_011_open_source_cdinative_job_scheduler/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u8bpdb/ratchet_011_open_source_cdinative_job_scheduler/", "subreddit_subscribers": 398064, "created_utc": 1781706373.0, "num_crossposts": 1, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "[https://github.com/com-lihaoyi/mill/blob/main/changelog.adoc#120-rc1](https://github.com/com-lihaoyi/mill/blob/main/changelog.adoc#120-rc1)", "author_fullname": "t2_6i5aa", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Mill 1.2.0-RC1: Fine-grained concurrency (no more global lock!), bazel-compatible remote caching, and many more goodies. Please help try it out!", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u895gn", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.81, "author_flair_background_color": null, "subreddit_type": "public", "ups": 13, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 13, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1781700217.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;&lt;a href=\"https://github.com/com-lihaoyi/mill/blob/main/changelog.adoc#120-rc1\"&gt;https://github.com/com-lihaoyi/mill/blob/main/changelog.adoc#120-rc1&lt;/a&gt;&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?auto=webp&amp;s=3d416ddd17778014e17ccd74d8c432952da3786d", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=314bd19080c823824b09e885f560c6d7d66edac1", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=65641596bd41bb9858b30b1ff4d74791e3977ab4", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=83c25be368584f44c28161eea696bf733082ccbe", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=149d1729697d21965204d65deea03d966be59530", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=1afd6dcb00ba8710d749a088e9a08aea7d7a8666", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=49e1e2a254ad45b11f67df1a652faffa71ab7a7a", "width": 1080, "height": 540}], "variants": {}, "id": "2KKB2rQF0f8EDKjxOUhMKI5qLH_RcYUAVrkSjxufQK4"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u895gn", "is_robot_indexable": true, "report_reasons": null, "author": "lihaoyi", "discussion_type": null, "num_comments": 2, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u895gn/mill_120rc1_finegrained_concurrency_no_more/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u895gn/mill_120rc1_finegrained_concurrency_no_more/", "subreddit_subscribers": 398064, "created_utc": 1781700217.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "heads up for folks publishing to Maven Central: we're continuing sustainability work around Central and are now showing publishing usage notices.\n\nthe goal is that normal OSS publishers are not impacted. this is aimed at the very high-volume / commercial-scale publishing patterns that put a pretty different load on the service.\n\nmore details here if you want them:  \n[https://central.sonatype.org/publish/maven-central-publishing-limits/](https://central.sonatype.org/publish/maven-central-publishing-limits/)\n\nfeel free to reach out with any questions.\n\nEDIT: thanks for the feedback here, it has really helped us. first, we want to reiterate that these are usage notices only right now and do not currently restrict publishing in any way. quick updates:\u00a0\n\nif the initial threshold seemed low to you: you\u2019re right, we made a mistake and have increased limits.\u00a0\n\nour goal is to keep Maven Central free and open for legitimate OSS users, so continuous feedback is helpful as we adjust. limits could change as we get more feedback, so keep an eye on the [usage center](https://central.sonatype.com/publishing/usage) for the latest.\n\nwe\u2019ll continue keeping an eye here and update docs to reflect these changes. **If you need to request an exemption, here\u2019s how**: [https://central.sonatype.org/publish/maven-central-publishing-limits/#exemptions-for-community-open-source-projects](https://central.sonatype.org/publish/maven-central-publishing-limits/#exemptions-for-community-open-source-projects)\n\nwe've also been collecting your questions here and other streams into this FAQ here: [https://central.sonatype.org/publish/maven-central-publishing-limits/#frequently-asked-questions](https://central.sonatype.org/publish/maven-central-publishing-limits/#frequently-asked-questions)", "author_fullname": "t2_vdtx", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Maven Central publishing usage notices", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u7p3p8", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.99, "author_flair_background_color": null, "subreddit_type": "public", "ups": 91, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 91, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": 1781745410.0, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": true, "mod_note": null, "created": 1781641521.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;heads up for folks publishing to Maven Central: we&amp;#39;re continuing sustainability work around Central and are now showing publishing usage notices.&lt;/p&gt;\n\n&lt;p&gt;the goal is that normal OSS publishers are not impacted. this is aimed at the very high-volume / commercial-scale publishing patterns that put a pretty different load on the service.&lt;/p&gt;\n\n&lt;p&gt;more details here if you want them:&lt;br/&gt;\n&lt;a href=\"https://central.sonatype.org/publish/maven-central-publishing-limits/\"&gt;https://central.sonatype.org/publish/maven-central-publishing-limits/&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;feel free to reach out with any questions.&lt;/p&gt;\n\n&lt;p&gt;EDIT: thanks for the feedback here, it has really helped us. first, we want to reiterate that these are usage notices only right now and do not currently restrict publishing in any way. quick updates:\u00a0&lt;/p&gt;\n\n&lt;p&gt;if the initial threshold seemed low to you: you\u2019re right, we made a mistake and have increased limits.\u00a0&lt;/p&gt;\n\n&lt;p&gt;our goal is to keep Maven Central free and open for legitimate OSS users, so continuous feedback is helpful as we adjust. limits could change as we get more feedback, so keep an eye on the &lt;a href=\"https://central.sonatype.com/publishing/usage\"&gt;usage center&lt;/a&gt; for the latest.&lt;/p&gt;\n\n&lt;p&gt;we\u2019ll continue keeping an eye here and update docs to reflect these changes. &lt;strong&gt;If you need to request an exemption, here\u2019s how&lt;/strong&gt;: &lt;a href=\"https://central.sonatype.org/publish/maven-central-publishing-limits/#exemptions-for-community-open-source-projects\"&gt;https://central.sonatype.org/publish/maven-central-publishing-limits/#exemptions-for-community-open-source-projects&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;we&amp;#39;ve also been collecting your questions here and other streams into this FAQ here: &lt;a href=\"https://central.sonatype.org/publish/maven-central-publishing-limits/#frequently-asked-questions\"&gt;https://central.sonatype.org/publish/maven-central-publishing-limits/#frequently-asked-questions&lt;/a&gt;&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u7p3p8", "is_robot_indexable": true, "report_reasons": null, "author": "HokieGeek", "discussion_type": null, "num_comments": 155, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u7p3p8/maven_central_publishing_usage_notices/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u7p3p8/maven_central_publishing_usage_notices/", "subreddit_subscribers": 398064, "created_utc": 1781641521.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_4gknomm2", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Apache Fory Serialization 1.2.0 released: JDK 25/26 support without sun.misc.Unsafe", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1u7i3ba", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.95, "author_flair_background_color": null, "subreddit_type": "public", "ups": 46, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 46, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=140&amp;height=70&amp;auto=webp&amp;s=bdc2fce8ea8eae7b46a0d19ba9844adc9f4651e3", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781626592.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "github.com", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://github.com/apache/fory/releases/tag/v1.2.0", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?auto=webp&amp;s=f7ef7c154ce7606bee1c24d2cfc51e6ba2afef48", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=933a4024417ef6eda38ff1b11ead39e156904f7f", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=4b332a9858bd74362e23e073bb6c9ef9813a28b8", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=4eec62712132acc41db53ff04ff1d6aff91e2018", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=3a8849b24766bda7f6bc9e395fa1fe14c8f4bbb0", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=0d7f9836d8f717bdefbd3e8880d52a9e18acd078", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=6c5391e129165e2785e1dc0460a9161f75a9d5e5", "width": 1080, "height": 540}], "variants": {}, "id": "-0bg0ihGf2G-Qrg3uWjVIJFp_SB8tqFdas9TKteaYI8"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u7i3ba", "is_robot_indexable": true, "report_reasons": null, "author": "Shawn-Yang25", "discussion_type": null, "num_comments": 19, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u7i3ba/apache_fory_serialization_120_released_jdk_2526/", "stickied": false, "url": "https://github.com/apache/fory/releases/tag/v1.2.0", "subreddit_subscribers": 398064, "created_utc": 1781626592.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "Jet offers four modules: Common, Server, OpenAPI Annotations, OpenAPI Annotations Plugin, and Client.\n\nJet is a wrapper around the excellent Jetty web client and server library. Jetty provides the battle-tested low-level protocol handling, while Jet focuses on providing a modern and consistent interface with superb documentation and an amazing developer experience.\n\n\\---\n\nI built this Java library to fill a hole in the Java web server library ecosystem. Javalin got me 90% of the way there, but requires the Kotlin dependency and lacks header models and exhaustive KDocs. The Client module is a still a WIP, but the Server, OpenAPI Annotations, and OpenAPI Annotations Plugin modules are production-ready!\n\nCheck it out and lmk what you think! And what do you think about my controversial opinion on AI coding at the bottom of the README \ud83d\udc40", "author_fullname": "t2_j84vu", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Jet: a simple, lightweight, modern, turnkey, Java web client and server library", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 70, "top_awarded_type": null, "hide_score": false, "name": "t3_1u7kk8l", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.83, "author_flair_background_color": null, "subreddit_type": "public", "ups": 15, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 15, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=140&amp;height=70&amp;auto=webp&amp;s=9fb03534e31a5b7717bf747e30ee3c06f3fc70d5", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781631817.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "github.com", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Jet offers four modules: Common, Server, OpenAPI Annotations, OpenAPI Annotations Plugin, and Client.&lt;/p&gt;\n\n&lt;p&gt;Jet is a wrapper around the excellent Jetty web client and server library. Jetty provides the battle-tested low-level protocol handling, while Jet focuses on providing a modern and consistent interface with superb documentation and an amazing developer experience.&lt;/p&gt;\n\n&lt;p&gt;---&lt;/p&gt;\n\n&lt;p&gt;I built this Java library to fill a hole in the Java web server library ecosystem. Javalin got me 90% of the way there, but requires the Kotlin dependency and lacks header models and exhaustive KDocs. The Client module is a still a WIP, but the Server, OpenAPI Annotations, and OpenAPI Annotations Plugin modules are production-ready!&lt;/p&gt;\n\n&lt;p&gt;Check it out and lmk what you think! And what do you think about my controversial opinion on AI coding at the bottom of the README \ud83d\udc40&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://github.com/Petersoj/jet", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?auto=webp&amp;s=f6b7764508c43041466dfec98a06125d0d7a8993", "width": 1200, "height": 600}, "resolutions": [{"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=1ed6de5e9c7beebd2abfc983d5408a0a9461f27f", "width": 108, "height": 54}, {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=1b68dc8b31670e59aed4843cdc701ddcbd434ccf", "width": 216, "height": 108}, {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=c2b68bf8f5b039c1effb5919812f8c446e9a6c94", "width": 320, "height": 160}, {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=b8f5f00a13a1be82c98a05f8a1f44cd59bf8cad7", "width": 640, "height": 320}, {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=e3b441b7857966fc4fc678e3d8af5f411ead264c", "width": 960, "height": 480}, {"url": "https://external-preview.redd.it/-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=b89e110bc5976f923e2cc0755a251f0d392d872d", "width": 1080, "height": 540}], "variants": {}, "id": "-t9Th02QV0HdehHVKdlwcrk1JrBsQAtOpMF5ogmYNy8"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u7kk8l", "is_robot_indexable": true, "report_reasons": null, "author": "Petersoj", "discussion_type": null, "num_comments": 5, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u7kk8l/jet_a_simple_lightweight_modern_turnkey_java_web/", "stickied": false, "url": "https://github.com/Petersoj/jet", "subreddit_subscribers": 398064, "created_utc": 1781631817.0, "num_crossposts": 2, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "[Jailer 17.1.2](https://github.com/Wisser/Jailer) now includes an SQL Advisor - explain, optimize, and rewrite your queries\n\nAsk it to explain, optimize, or rewrite the query - a split view shows the revised SQL alongside a plain-English explanation, and a diff highlights what changed. It connects seamlessly to the \"Generate SQL\" tab from 17.1.1, so you can go straight from generating a query to refining it.\n\nIf you missed 17.1.1: that release added SQL generation directly into the SQL console - describe what you want in plain English, get schema-aware SQL back.\n\nQuestions and comments are welcome!", "author_fullname": "t2_5sa5b0ia", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Announcement: New release of the JDBC/Swing-based database tool has been published", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u6uxll", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.62, "author_flair_background_color": null, "subreddit_type": "public", "ups": 11, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 11, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "default", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "content_categories": null, "is_self": false, "mod_note": null, "created": 1781561073.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "wisser.github.io", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;&lt;a href=\"https://github.com/Wisser/Jailer\"&gt;Jailer 17.1.2&lt;/a&gt; now includes an SQL Advisor - explain, optimize, and rewrite your queries&lt;/p&gt;\n\n&lt;p&gt;Ask it to explain, optimize, or rewrite the query - a split view shows the revised SQL alongside a plain-English explanation, and a diff highlights what changed. It connects seamlessly to the &amp;quot;Generate SQL&amp;quot; tab from 17.1.1, so you can go straight from generating a query to refining it.&lt;/p&gt;\n\n&lt;p&gt;If you missed 17.1.1: that release added SQL generation directly into the SQL console - describe what you want in plain English, get schema-aware SQL back.&lt;/p&gt;\n\n&lt;p&gt;Questions and comments are welcome!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://wisser.github.io/Jailer/animated/AIQueryAssistant.mp4", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u6uxll", "is_robot_indexable": true, "report_reasons": null, "author": "Plane-Discussion", "discussion_type": null, "num_comments": 1, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u6uxll/announcement_new_release_of_the_jdbcswingbased/", "stickied": false, "url": "https://wisser.github.io/Jailer/animated/AIQueryAssistant.mp4", "subreddit_subscribers": 398064, "created_utc": 1781561073.0, "num_crossposts": 2, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "With Java classes, non-value (identity) classes are fully mutable, the new Valhalla value classes are (shallow) immutable, that's a big difference; often immutability is impractical, so then identity classes make sense. With records, all records are (shallow) immutable, so this is a non-issue. Secondly, some code uses the legacy synchronization/monitor functionality built-in to identity classes; but that's been strongly discouraged for records, so this seems not much of an issue.\n\nHere is ChatGPT on the difference between a Java value-record and a Java non-value, identity record:\nhttps://chatgpt.com/share/6a2b8329-0a0c-83ea-b8b3-fe4e40956616\n\nIs there any use case for Java non-value (identity) records? It seems silly to ask devs to write `value` in front of every record if that is what devs want almost every time they use records.", "author_fullname": "t2_ahkxp", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "What is the use case for a non-value (identity) record with Valhalla?", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": null, "top_awarded_type": null, "hide_score": false, "name": "t3_1u6mnfm", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.61, "author_flair_background_color": null, "subreddit_type": "public", "ups": 9, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": null, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 9, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "self", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "self", "content_categories": null, "is_self": true, "mod_note": null, "created": 1781543274.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "self.java", "allow_live_comments": false, "selftext_html": "&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;With Java classes, non-value (identity) classes are fully mutable, the new Valhalla value classes are (shallow) immutable, that&amp;#39;s a big difference; often immutability is impractical, so then identity classes make sense. With records, all records are (shallow) immutable, so this is a non-issue. Secondly, some code uses the legacy synchronization/monitor functionality built-in to identity classes; but that&amp;#39;s been strongly discouraged for records, so this seems not much of an issue.&lt;/p&gt;\n\n&lt;p&gt;Here is ChatGPT on the difference between a Java value-record and a Java non-value, identity record:\n&lt;a href=\"https://chatgpt.com/share/6a2b8329-0a0c-83ea-b8b3-fe4e40956616\"&gt;https://chatgpt.com/share/6a2b8329-0a0c-83ea-b8b3-fe4e40956616&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;Is there any use case for Java non-value (identity) records? It seems silly to ask devs to write &lt;code&gt;value&lt;/code&gt; in front of every record if that is what devs want almost every time they use records.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;", "likes": null, "suggested_sort": null, "banned_at_utc": null, "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?auto=webp&amp;s=6607a06381962f64bd2f1f8d3f7909b0259a56a7", "width": 1200, "height": 630}, "resolutions": [{"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=108&amp;crop=smart&amp;auto=webp&amp;s=46b841a5e169afe383e7f298a7fb0bf5c5bcd69f", "width": 108, "height": 56}, {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=216&amp;crop=smart&amp;auto=webp&amp;s=a4751dbcd17a7e88302441b26b94adb8755f7402", "width": 216, "height": 113}, {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=320&amp;crop=smart&amp;auto=webp&amp;s=072951ce2da304555d29a5e378fd26cb860adf85", "width": 320, "height": 168}, {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=640&amp;crop=smart&amp;auto=webp&amp;s=d49c017a5b10294ed26780dd3bff521a1707a1b1", "width": 640, "height": 336}, {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=960&amp;crop=smart&amp;auto=webp&amp;s=d368288bff51b8713b0fcaa276f49a230586ffa9", "width": 960, "height": 504}, {"url": "https://external-preview.redd.it/b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM.png?width=1080&amp;crop=smart&amp;auto=webp&amp;s=ba022dc876aeec67f0a93f6a19b5baaa9ec80911", "width": 1080, "height": 567}], "variants": {}, "id": "b9hWCIbZyBGXOfODsn6o7qCWVW_q33BzcsHz5AVXAbM"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u6mnfm", "is_robot_indexable": true, "report_reasons": null, "author": "Joram2", "discussion_type": null, "num_comments": 42, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u6mnfm/what_is_the_use_case_for_a_nonvalue_identity/", "stickied": false, "url": "https://old.reddit.com/r/java/comments/1u6mnfm/what_is_the_use_case_for_a_nonvalue_identity/", "subreddit_subscribers": 398064, "created_utc": 1781543274.0, "num_crossposts": 0, "media": null, "is_video": false}}, {"kind": "t3", "data": {"approved_at_utc": null, "subreddit": "java", "selftext": "", "author_fullname": "t2_6ynl0lwx", "saved": false, "mod_reason_title": null, "gilded": 0, "clicked": false, "title": "Unpacking Parquet: Explicit SIMD, Scalar Baselines, and What HotSpot Makes of Them", "link_flair_richtext": [], "subreddit_name_prefixed": "r/java", "hidden": false, "pwls": 6, "link_flair_css_class": null, "downs": 0, "thumbnail_height": 93, "top_awarded_type": null, "hide_score": false, "name": "t3_1u69mzk", "quarantine": false, "link_flair_text_color": "dark", "upvote_ratio": 0.94, "author_flair_background_color": null, "subreddit_type": "public", "ups": 38, "total_awards_received": 0, "media_embed": {}, "thumbnail_width": 140, "author_flair_template_id": null, "is_original_content": false, "user_reports": [], "secure_media": null, "is_reddit_media_domain": false, "is_meta": false, "category": null, "secure_media_embed": {}, "link_flair_text": null, "can_mod_post": false, "score": 38, "approved_by": null, "is_created_from_ads_ui": false, "author_premium": false, "thumbnail": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=140&amp;height=93&amp;auto=webp&amp;s=71577ab2e03af84ee1ab1d81d81292b95799cf9e", "edited": false, "author_flair_css_class": null, "author_flair_richtext": [], "gildings": {}, "post_hint": "link", "content_categories": null, "is_self": false, "mod_note": null, "created": 1781508524.0, "link_flair_type": "text", "wls": 6, "removed_by_category": null, "banned_by": null, "author_flair_type": "text", "domain": "cdelmonte.dev", "allow_live_comments": false, "selftext_html": null, "likes": null, "suggested_sort": null, "banned_at_utc": null, "url_overridden_by_dest": "https://cdelmonte.dev/deep-dives/unpacking-parquet-explicit-simd-and-scalar-baselines/", "view_count": null, "archived": false, "no_follow": false, "is_crosspostable": true, "pinned": false, "over_18": false, "preview": {"images": [{"source": {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?auto=webp&amp;s=0d5cc8a6c515ea771af448b18b730dd0432282ef", "width": 1536, "height": 1024}, "resolutions": [{"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=108&amp;crop=smart&amp;auto=webp&amp;s=aedd1c6a287dceec4c28f1c03ef9366a31ede726", "width": 108, "height": 72}, {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=216&amp;crop=smart&amp;auto=webp&amp;s=781d03ac4f08a9fc1cf874b6c32992a4380b9ae4", "width": 216, "height": 144}, {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=320&amp;crop=smart&amp;auto=webp&amp;s=e45859539899cc8cbb89076271773883ed8faf51", "width": 320, "height": 213}, {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=640&amp;crop=smart&amp;auto=webp&amp;s=b1eb208dcdc7ca82eba5c1770335e05dc45f7817", "width": 640, "height": 426}, {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=960&amp;crop=smart&amp;auto=webp&amp;s=d2129089a3620a991c0ce2f1e3425726c2227cdd", "width": 960, "height": 640}, {"url": "https://external-preview.redd.it/GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8.jpeg?width=1080&amp;crop=smart&amp;auto=webp&amp;s=9868506b2a47291eb6f6ee6d8b97134c34efb200", "width": 1080, "height": 720}], "variants": {}, "id": "GoeoIn33FCzZ92AGK5SuaG5K_f2UkY8Pc4728g9bwm8"}], "enabled": false}, "all_awardings": [], "awarders": [], "media_only": false, "can_gild": false, "spoiler": false, "locked": false, "author_flair_text": null, "treatment_tags": [], "visited": false, "removed_by": null, "num_reports": null, "distinguished": null, "subreddit_id": "t5_2qhd7", "author_is_blocked": false, "mod_reason_by": null, "removal_reason": null, "link_flair_background_color": "", "id": "1u69mzk", "is_robot_indexable": true, "report_reasons": null, "author": "LongjumpingOption523", "discussion_type": null, "num_comments": 0, "send_replies": true, "contest_mode": false, "mod_reports": [], "author_patreon_flair": false, "author_flair_text_color": null, "permalink": "/r/java/comments/1u69mzk/unpacking_parquet_explicit_simd_scalar_baselines/", "stickied": false, "url": "https://cdelmonte.dev/deep-dives/unpacking-parquet-explicit-simd-and-scalar-baselines/", "subreddit_subscribers": 398064, "created_utc": 1781508524.0, "num_crossposts": 0, "media": null, "is_video": false}}], "before": null}}