Brought to you by @brunoborges and @GitHubCopilot

Joined March 2026
β˜• Null case in switch Handle null directly as a switch case β€” no separate guard needed. Guard Before Switch β†’ case null (JDK 21+) πŸ”— javaevolved.dev/errors/null-… #Java #JavaEvolved
2
120
β˜• JNDI Lookup vs CDI Injection Replace fragile JNDI string lookups with type-safe CDI injection for container-managed resources. JNDI Lookup β†’ CDI @Inject (JDK 11+) πŸ”— javaevolved.dev/enterprise/j… #Java #JavaEvolved
1
7
607
β˜• TLS 1.3 by default TLS 1.3 is enabled by default β€” no explicit protocol configuration needed. Manual TLS Config β†’ TLS 1.3 Default (JDK 11+) πŸ”— javaevolved.dev/security/tls… #Java #JavaEvolved
1
9
562
β˜• Unmodifiable collectors Collect directly to an unmodifiable list with stream.toList(). collectingAndThen β†’ stream.toList() (JDK 16+) πŸ”— javaevolved.dev/collections/… #Java #JavaEvolved
1
10
458
β˜• Path.of() factory Use Path.of() β€” the modern factory method on the Path interface. Paths.get() β†’ Path.of() (JDK 11+) πŸ”— javaevolved.dev/io/path-of.h… #Java #JavaEvolved
1
12
638
β˜• Optional.orElseThrow() without supplier Use Optional.orElseThrow() as a clearer, intent-revealing alternative to get(). get() or orElseThrow(supplier) β†’ orElseThrow() (JDK 10+) πŸ”— javaevolved.dev/errors/optio… #Java #JavaEvolved
3
16
903
β˜• Duration and Period Calculate time differences with type-safe Duration and Period. Millisecond Math β†’ Duration / Period (JDK 8+) πŸ”— javaevolved.dev/datetime/dur… #Java #JavaEvolved
2
7
884
β˜• String.formatted() Call formatted() on the template string itself. String.format() β†’ formatted() (JDK 15+) πŸ”— javaevolved.dev/strings/stri… #Java #JavaEvolved
2
18
1,279
β˜• Stream.mapMulti() Emit zero or more elements per input without creating intermediate streams. flatMap + List β†’ mapMulti() (JDK 16+) πŸ”— javaevolved.dev/streams/stre… #Java #JavaEvolved
2
4
30
1,951
β˜• Modern HTTP client Use the built-in HttpClient for clean, modern HTTP requests. HttpURLConnection β†’ HttpClient (JDK 11+) πŸ”— javaevolved.dev/io/http-clie… #Java #JavaEvolved
4
19
1,726
β˜• Spring Framework 7 API Versioning Replace duplicated version-prefixed controllers with Spring Framework 7's native API ver… Manual URL Path Versioning β†’ Native API Versioning (JDK 17+) πŸ”— javaevolved.dev/enterprise/s… #Java #JavaEvolved
3
31
2,052
β˜• CompletableFuture chaining Chain async operations without blocking, using CompletableFuture. Blocking Future.get() β†’ CompletableFuture (JDK 8+) πŸ”— javaevolved.dev/concurrency/… #Java #JavaEvolved
4
15
1,447
β˜• Markdown in Javadoc comments Write Javadoc comments in Markdown instead of HTML for better readability. HTML-based Javadoc β†’ Markdown Javadoc (JDK 23+) πŸ”— javaevolved.dev/language/mar… #Java #JavaEvolved
4
18
1,322
β˜• Scoped values Share data across call stacks safely without ThreadLocal pitfalls. ThreadLocal β†’ ScopedValue (JDK 25+) πŸ”— javaevolved.dev/concurrency/… #Java #JavaEvolved
1
4
20
1,382
β˜• Map.entry() factory Create map entries with a clean factory method. SimpleEntry β†’ Map.entry() (JDK 9+) πŸ”— javaevolved.github.io/collec… #Java #JavaEvolved
2
10
879
Java. Evolved. retweeted
Started 7 @GitHubCopilot Cloud Coding Agents in parallel, all by simply assigning them to Copilot. The @javaevolved project has been adjusted to welcome PRs in parallel with near zero conflicts. javaevolved.dev
2
2
10
1,215
Java. Evolved. retweeted
Introducing the @javaevolved Agent Plugin. It detects your project's real Java target, then keeps AI guidance within the final features and APIs that version supports. #Copilot #Claude #Codex javaevolved.github.io/agent-…
6
10
38
2,553
β˜• String.lines() for line splitting Use String.lines() to split text into a stream of lines without regex overhead. split("\\n") β†’ lines() (JDK 11+) πŸ”— javaevolved.github.io/string… #Java #JavaEvolved
4
17
1,346
β˜• Stream.toList() Terminal toList() replaces the verbose collect(Collectors.toList()). Collectors.toList() β†’ .toList() (JDK 16+) πŸ”— javaevolved.github.io/stream… #Java #JavaEvolved
1
2
15
884