Tagir Valeev

@tagir-valeev.bsky.social

Work at JetBrains. Java Champion. Check my Java book: https://mng.bz/671p

Totally missed a very cool API appeared in Java 22, ListFormat: > ListFormat.getInstance(Locale.ENGLISH, ListFormat.Type.OR, ListFormat.Style.FULL).format(Arrays.asList("Java", "Kotlin", "Scala")) "Java, Kotlin, and Scala"

Today is the 15th Global Accessibility Awareness Day #GAAD. In honor of it, we want to share recent improvements to compatibility with assistive technologies across different platforms, keyboard navigation, and non-visual feedback in JetBrains IDEs: blog.jetbrains.com/platform/202...

Improving Accessibility in JetBrains IDEs: What’s New and What’s Next in 2026 | The JetBrains Platform Blog

On Global Accessibility Awareness Day, we’re sharing recent improvements and what’s next for assistive technologies, navigation, and non-visual feedback.

blog.jetbrains.com

Big day for #Java – Java 26 is here! ☕ IntelliJ IDEA already supports it, so you can try the new features right away. Read more in our blog post: jb.gg/avyjks. Visiting JavaOne? Stop by the JetBrains booth to talk about Java 26 and IntelliJ IDEA with us in person.

Java 26 in IntelliJ IDEA | The IntelliJ IDEA Blog

Java 26 was released on March 17, 2026. At JetBrains, we are committed to supporting the latest technologies in IntelliJ IDEA and adding useful enhancements for both stable and preview features. In…

jb.gg

Just seen on a code review: > .groupBy({ it.second }, { it.first }) People may think it's short and concise. I think, it's cryptic and unreadable. You have to go several lines above and find `to` inside one of previous lambdas to finally understand what is `it.first` and what is `it.second`.

In today crazy #Java series: this code works (with Java 25): <T extends Integer> void test(T t) { t++; //t+=1; IO.println(t); } void main() { test(10); } But if you replace t++ with t+=1, it stops working! Main.​java:3: error: incompatible types: int cannot be converted to T

Will you expect this code to be JSpecify-compliant? If not, then how to fix it? @NullMarked public final class Demo { List<String> removeNulls(List<@Nullable String> input) { return input .stream().filter(Objects::nonNull).toList(); } }

A user reports wrong highlighting in IntelliJ IDEA: the code is red, but both javac compiler and ecj compiler compile the code successfully, using any version of compiler. Next you read the spec and realize that IntelliJ IDEA behavior is correct, and both compilers are wrong. Weird feeling.

Bild

Fixed a static analysis warning in a Java file in the repo . . . It was a demonstration Java file used to onboard users and teach them about IntelliJ IDEA inspections and quick-fixes. The warning was there to illustrate how inspections work 🤦

TIL: In #Java, List.subList() and List.reversed() are implemented smartly. You may call these methods as many times as you want and in any order, but you don't get a long chain of references which leads to StackOverflowError. The longest chain of views is two: reversed -> subList -> original list.

BildBild