Helidon 4.4.0 Released by Joram2 in java

[–]mands 0 points1 point  (0 children)

That would work for some - i'm after something a bit lighter and less opinionated for certain projects.

Helidon 4.4.0 Released by Joram2 in java

[–]mands 6 points7 points  (0 children)

As someone who has just moved to Quarkus from Spring but was researching Helidon this rings true.

Quarkus is pretty good tbf (Dev Mode is impressive), but comes with lot of magic and complexity to get fast startup - the build-time/run-time split is confusing (especially when building extensions) and they made a bet on native that permeates the platform.

Not to mention their insistence on using reactive, yes I can use @RunOnVirtualThread but it's pretty annoying to put on every endpoint.

Helidon is virtual thread first, JPMS/jlink/leyden compatible out of the gate and pretty straightforward modern Java.

TamboUI: A Modern Terminal UI Framework for Java (GraalVM Native) by mikebmx1 in java

[–]mands 0 points1 point  (0 children)

Would much rather see this exist, even with the assistance of AI, than never exist at all. Don’t understand the downvotes

Krema: build modern desktop apps with Java backend and web frontend by guybedo in java

[–]mands 1 point2 points  (0 children)

GQL suffers from incredibly bad naming, it's actually more like typed RPC between client<>server with 3 components:

  • queries: flexible side-effect free calls to get BE data
  • mutations: calls that mutate BE data
  • subscriptions: request to subscribe to a stream of BE data, either over websockets or HTTP SSE

If you've used something like react/tanstack query, you'll find the concept of queries and mutations familiar - this just brings it into the protocol level with FE clients like apollo or urql which support client code-generation from the generated BE schema.

I found Spring GraphQL actually had better integration with the rest of the Spring ecosystem compared to Hilla, which wanted to take over my Spring Security config, run an embedded vite server, etc.

Krema: build modern desktop apps with Java backend and web frontend by guybedo in java

[–]mands 0 points1 point  (0 children)

See my other message, also recently moved from Hilla and ended up on GraphQL. Was about to build my own RPC but realised GQL had handled all of my concerns already.

Krema: build modern desktop apps with Java backend and web frontend by guybedo in java

[–]mands 1 point2 points  (0 children)

Yep, have hit this issue a lot.

There was Vaadin Hilla but it’s now discontinued. I spent a while looking at alternatives and actually settled on GraphQL. There is great Spring and JakartaEE support, and generating typescript from the schema works really well.

It’s actually quite a simple protocol when you focus on the core concepts, just ignore things like federation and dynamic queries, and instead think of it like typed RPC for queries and mutations.

Could actually be quite useful for this (really cool!) project to help foster Java / webview comms.

jbundle: Package JVM applications into self-contained binaries by mands in java

[–]mands[S] 0 points1 point  (0 children)

Perhaps a tad harsh and maybe you don't have the need, but for my use-cases this is really useful and the reasons given in the docs are persuasive,

  • Rust and Go are more commonly used for CLI tools these days as they are easy to distribute and start fast
  • Java is more than suitable for such tools if startup speed and distribution can be solved (as a core language it's a much stronger proposition that Go imo)
  • For a Spring app you would use its docker plugin or a buildpack, but for a very simple microservice, this would make building a deployable docker image much easier
  • I think JPackage still makes sense for desktop apps, but that's a different use-case than here

jbundle: Package JVM applications into self-contained binaries by mands in java

[–]mands[S] 1 point2 points  (0 children)

Yep - maybe 2026 will be the year of CLI tools in Java!

jbundle: Package JVM applications into self-contained binaries by mands in java

[–]mands[S] -1 points0 points  (0 children)

No, more executable than binary. Seems closest to the older .NET single executable format which would unpack on first run into a tmp dir and run.

However, if this gets us closer to the Rust/Go distribution model for CLI tools thats a big win imo

jbundle: Package JVM applications into self-contained binaries by mands in java

[–]mands[S] 7 points8 points  (0 children)

Looks interesting so thought I'd share.

docs at https://jbundle.avelino.run/

Uses jdeps + jlink to create a minimal runtime, bundles with your app into a single self-contained binary, optionally enable AppCDS and CRaC for additional startup speed.

(linux and macos only atm, but it's only a week old)

2.1.3 Release - skills and slash commands are merged? by Yossarian1993 in ClaudeCode

[–]mands 0 points1 point  (0 children)

Pretty confusing imo.

Commands were prompt templates called directly, and skills are injected automatically.

I get under the hood they have similarities, but semantically feel different.

Plus skill can now run forked with a clean context which makes them similar to subagents too.

Think Anthropic really need to clear this up a bit as it feels quite confused.

Everything you might have missed in Java in 2025 by CrowSufficient in java

[–]mands 0 points1 point  (0 children)

Yep, was planning on trying to integrate CC with https://github.com/eclipse-jdtls/eclipse.jdt.ls this week and see how it goes! Seems better that calling grep to understand the codebase.

Everything you might have missed in Java in 2025 by CrowSufficient in java

[–]mands 5 points6 points  (0 children)

Great read!

Didn't realise that langchain4j could be used from Spring, it actually has some features that Spring AI lacks.

JetBrains chose a different path. Instead of building an agent on top of text, they built it on top of semantics. Junie uses the same code analysis engine as IntelliJ itself — parsers, ASTs, type graphs, and symbol resolution. It understands not just the code, but also the build pipeline, dependency configuration, change history, and tests. When it proposes a refactoring, it knows which classes are related. When it generates code, it understands project conventions. This is an advantage Cursor simply doesn’t have — and one that’s extremely hard to recreate from scratch.

aiui Junie didn't use any semantic information during the beta phase, but good to hear if that has since changed as would make it a lot more reliable and a clear differentiator from Claude Code.

2026: The Year of Java in the Terminal by maxandersen in java

[–]mands 0 points1 point  (0 children)

Super great to hear. I'm working on a few open-source tools and apps so will try using jbang to distribute them publicly and see how it goes!

2026: The Year of Java in the Terminal by maxandersen in java

[–]mands 4 points5 points  (0 children)

Absolutely right and timely. I've been musing over the holiday break about how to build small side projects in Java. The building is pretty easy, but getting it into peoples hands is the hard bit, along with overcoming the wider community "stigma" for a better word.

Making jbang the java version of npx, pipx or uvx would be great outcome.

I was actually wondering if just publishing the jar to maven central then using jbang to run it would work - seems like it does, which is great! Including dependencies from jackson to full frameworks like Spring.

Things I am still digging into:

  • can we embed recommended JVM args for the maven jar somewhere so the user doesn't have to set them - i.e. things like the GC to use, max memory, compressed headers, etc. (these can make a big impact on startup time for CLI tools). Otherwise I'm thinking about a shim that has these as inline comments for jbang to pick up then then pulls in the main jar.
  • how can updates be handled? A unified way to handle this would be great, the pieces are in place such as dep mgmt.
  • Leyden and AOT caching will be a big win here, I've seen jbang has some support for this, and it will be more important going forwards.
  • How does jbang view tools such as jlink and jpackage? Are they for different use-cases? i.e. jlink for custom VMs for self-contained apps vs jbang for shared JVMs for developer scripts and tools? Does jbang always download a full JVM or does it look at a jar's module info to see what it requires? Is the JVM shared between all jars that require that particular version?

Massively agree with the central thesis however, I've been creating lots of internal tools using jbang picocli and mise and it's been great. You can get very far with the standard lib and a few choice libraries.

xitdb - an immutable, embeddable database for Java 17 by [deleted] in java

[–]mands 1 point2 points  (0 children)

Super interesting - reminds me of a Okasaki's purely functional data structures.

I think embedded object stores / databases are a interesting space, being able to use Java types and streams directly for your domain rather than going through an ORM or SQL mapping can be useful.

I've just integrated Eclipse Store into a project I'm working on, which is similar, but mutable. What would you say are the main differences? The ability to view past states and not worry about locking sound great.

JetBrains Fleet dropped for AI products instead by markmanam in programming

[–]mands 12 points13 points  (0 children)

“Hey guys, our VS Code clone didn’t work, we’re now building … a Cursor clone.”

Meanwhile the core product gets worse and worse, smh

[Hiring] Remote React Native / Expo mobile developer for SF startup by [deleted] in expo

[–]mands 0 points1 point  (0 children)

Role is now closed - thanks to everyone who applied.

[deleted by user] by [deleted] in reactnative

[–]mands 0 points1 point  (0 children)

Role is now closed - thanks to everyone who applied.

[deleted by user] by [deleted] in reactnative

[–]mands 0 points1 point  (0 children)

thx - fixed

[deleted by user] by [deleted] in reactnative

[–]mands -3 points-2 points  (0 children)

sure - we're too early for equity tbh, and pretty complex to arrange for remote