
Brought to you by @brunoborges and @GitHubCopilot
Joined March 2026
- Tweets55
- Following25
- Followers382
- Likes1
β 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
β 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
β 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
β Manual JPA Transaction vs Declarative @Transactional
Replace verbose begin/commit/rollback blocks with a single @Transactionaβ¦
Manual Transaction β @Transactional (JDK 11+)
π javaevolved.dev/enterprise/mβ¦
#Java #JavaEvolved
β Unmodifiable collectors
Collect directly to an unmodifiable list with stream.toList().
collectingAndThen β stream.toList() (JDK 16+)
π javaevolved.dev/collections/β¦
#Java #JavaEvolved
β 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
β 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
β Duration and Period
Calculate time differences with type-safe Duration and Period.
Millisecond Math β Duration / Period (JDK 8+)
π javaevolved.dev/datetime/durβ¦
#Java #JavaEvolved
β String.formatted()
Call formatted() on the template string itself.
String.format() β formatted() (JDK 15+)
π javaevolved.dev/strings/striβ¦
#Java #JavaEvolved
β Stream.mapMulti()
Emit zero or more elements per input without creating intermediate streams.
flatMap + List β mapMulti() (JDK 16+)
π javaevolved.dev/streams/streβ¦
#Java #JavaEvolved
β Modern HTTP client
Use the built-in HttpClient for clean, modern HTTP requests.
HttpURLConnection β HttpClient (JDK 11+)
π javaevolved.dev/io/http-clieβ¦
#Java #JavaEvolved
β 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
β CompletableFuture chaining
Chain async operations without blocking, using CompletableFuture.
Blocking Future.get() β CompletableFuture (JDK 8+)
π javaevolved.dev/concurrency/β¦
#Java #JavaEvolved
β 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
β Scoped values
Share data across call stacks safely without ThreadLocal pitfalls.
ThreadLocal β ScopedValue (JDK 25+)
π javaevolved.dev/concurrency/β¦
#Java #JavaEvolved
β Map.entry() factory
Create map entries with a clean factory method.
SimpleEntry β Map.entry() (JDK 9+)
π javaevolved.github.io/collecβ¦
#Java #JavaEvolved
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
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-β¦
β 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
β Stream.toList()
Terminal toList() replaces the verbose collect(Collectors.toList()).
Collectors.toList() β .toList() (JDK 16+)
π javaevolved.github.io/streamβ¦
#Java #JavaEvolved


