Best Java IDEs for AI Coding, Testing and CI/CD (2026)
Compare IntelliJ IDEA, VS Code, Eclipse, Cursor and Devin Desktop for AI-assisted Java development in 2026. AI models, free tiers, pricing, testing and CI/CD support at a glance.
“Core Java” is Sun’s term, used to refer to Java SE, the standard edition and a set of related technologies, like the Java VM, CORBA, etc. This is mostly to differentiate from others like Java ME or Java EE. “Core Java” is Oracle’s definition and refers to subset of Java SE technologies.
The Core Java technologies and application programming interfaces (APIs) are the foundation of the Java Platform, Standard Edition (Java SE). They are used in all classes of Java programming, from desktop applications to Java EE applications.
Compare IntelliJ IDEA, VS Code, Eclipse, Cursor and Devin Desktop for AI-assisted Java development in 2026. AI models, free tiers, pricing, testing and CI/CD support at a glance.
Convert decimal to hexadecimal by hand with worked examples, and in Java with Integer.toHexString(), String.format() and HexFormat. Also covers hex to decimal, negative numbers and invalid input.
Java has no built-in tuple type. Learn how to group values with a record, Map.entry(), Commons Lang Pair and Triple, and the javatuples classes Pair to Decade.
A module import declaration such as import module java.base; imports every package a module exports with one line, and it is final in Java 25. Learn what it imports, how to fix “reference to List is ambiguous” with a single-type import, and how it works with java.se and compact source files.
java.lang.NoSuchMethodError means code compiled against one version of a class runs with another version that lacks the called method. Learn to read the message, find the wrong jar with mvn dependency:tree, -verbose:class and javap, and fix the conflict with a BOM, an exclusion and the Enforcer dependencyConvergence rule.
A StackOverflowError means a thread made more nested calls than its stack can hold. Learn to read the repeating stack trace, fix missing base cases, deep recursion and object cycles in toString(), Lombok and Jackson, and when -Xss helps.
IllegalArgumentException is the unchecked exception a Java method throws when an argument has a value it does not accept. This post lists the JDK calls that throw it with their real Java 25 messages and the fix for each, the subclasses such as NumberFormatException, and when our own code should throw it instead of IllegalStateException or NullPointerException.
A CompletableFuture is a Future that runs the next step when its result arrives, so no thread has to wait for it. This tutorial creates, chains and combines CompletableFuture tasks on virtual threads, handles errors and timeouts, and shows the mistakes that make async code hang or lose exceptions.
A Java 25 migration is mostly a build change. This step-by-step guide upgrades a Maven project from Java 21 to Java 25, shows the support dates, and fixes the real errors from Lombok, Mockito and JaCoCo on the way.
Java 25 is the LTS release of September 2025 with 18 JEPs. This guide runs every one of them, from compact source files, module imports, flexible constructors and scoped values to compact object headers, AOT caches and the new JFR events, and shows the preview features with their –enable-preview flags. It ends with the features that became final between Java 21 and 25 and a migration checklist.
Java 26 (JDK 26) shipped on 17 March 2026 as a non-LTS release with 10 JEPs. This overview lists every JEP with its status and shows short, runnable examples for HTTP/3, final field warnings, the AOT cache with ZGC and the preview APIs.
Java 27 (JDK 27) reached general availability on 15 September 2026 with nine JEPs. Four final JEPs change JVM defaults (G1 everywhere, compact object headers, post-quantum TLS, JFR redaction), and five continue as previews or incubator. A summary table, one example per feature and the removed options.
Initialize a Java List in one line with List.of() for an unmodifiable list, or new ArrayList<>(List.of(…)) when the list changes later. Compare Arrays.asList(), Stream.toList(), Collections and Guava by mutability and null support.
“Unsupported class file major version 69” means a JVM or bytecode tool older than Java 25 tried to read a Java 25 class file. Learn to read the class file version, map it to the Java release, and fix the error by upgrading the runtime, compiling with –release, or upgrading Gradle, Spring, JaCoCo, Mockito and Lombok.
Connect Spring Boot 4.1 to Elasticsearch 9 with Spring Data Elasticsearch 6.1 and the new Java client: run Elasticsearch in Docker, map documents, search with repositories and NativeQuery, and test with Testcontainers.
A hands-on Kubernetes guide for Java developers: deploy a Spring Boot API and PostgreSQL to a local kind cluster and learn pods, Deployments, Services, Ingress, ConfigMaps, Secrets, volumes and StatefulSets with real kubectl output.
Upload an .xlsx class roster to a Spring Boot endpoint, read it with Apache POI, validate every row with Bean Validation and save the valid rows in JDBC batches. Includes a JSON error report, duplicate checks, a SAX reader for large files with measured heap, upload limits and MockMvc tests.
Set up Hibernate 7.4 in a Spring Boot 4.1 application: the JPA starter, datasource and JPA properties, entities, Spring Data repositories, transactions, the Session API, SQL logging, tests on H2 and MySQL, and the Hibernate 7 upgrade changes.
One property, spring.threads.virtual.enabled=true, moves Spring Boot requests, @Async methods and scheduled tasks to virtual threads. A weather API measured against platform threads and WebFlux, plus pinning and monitoring on Java 25.
A shared Random is thread-safe but makes every thread fight over one seed. Learn which generator each thread should use, how to keep seeded results reproducible, and what a JMH benchmark measured on Java 25.
Angular UI testing in Java with Selenide and JUnit 5. Wait for spinners without explicit waits, handle timeouts and failures, and add Allure reports.
Generate PDF from HTML template in Java with OpenHTMLtoPDF 1.1.97, Thymeleaf or FreeMarker, plus jsoup for broken HTML, page numbers, fonts and safety.
Learn to compare Java objects without getters or equals() using EqualsBuilder.reflectionEquals(), excluded fields, recursive mode and AssertJ.
Serialize object to String in Java with ObjectOutputStream and Base64 or with Jackson JSON, read it back, and avoid the deserialization security risk.
Executors.newVirtualThreadPerTaskExecutor() runs each task in a new virtual thread. Learn close(), invokeAll, Semaphore limits, thread names and errors.
Learn to filter a map by keys and values with Java streams, plus Predicate helpers, removeIf(), order-preserving toMap() and null-safe collecting.
Java Stream contains, containsAny and containsAll checks with anyMatch() and a Set, with empty-input rules, single-use streams and collection alternatives.
Learn to filter nested collections with Java streams using flatMap(), mapMulti() and anyMatch(), trim inner lists without mutation and handle null lists.
Learn Java Stream mapMulti() with examples, the type witness it needs, when it beats flatMap() and when it does not, primitive variants and a real case.
Get the first and last day of week, month or year in Java with TemporalAdjusters, WeekFields for locales, YearMonth and quarter boundaries.
Learn how to call an interface default method in Java, from Interface.super to proxies with InvocationHandler.invokeDefault() and MethodHandles.
Learn what an object identity string is in Java, how Objects.toIdentityString() and System.identityHashCode() build it, and what its hash part means.
Base64 encode and decode a file in Java with examples for text and image files, data URIs, streaming large files with wrap(), MIME and decoding errors.
Learn to initialize HashMap in Java with Map.of, newHashMap and streams, and see how initial capacity and load factor decide when the map resizes.
orElse vs orElseGet in Java explained with examples. Learn why orElse always computes its default, when orElseGet saves work and how to avoid side effects.
Calculate the weeks between two dates in Java with ChronoUnit.WEEKS.between(), get leftover days, round up started weeks and count calendar weeks.
Get the day name from a date in Java with getDisplayName() and TextStyle, print it in any language, list all names and parse names back.
Split a date-time range into equal intervals in Java, cut fixed-length chunks, or split by days, weeks, months and years with half-open ranges and DST.
Java StopWatch examples with Guava Stopwatch, Commons Lang and Spring StopWatch, plus a small testable java.time version that records named laps.
Get the elapsed time since midnight in Java in seconds or milliseconds with LocalTime, in any time zone, correct on daylight saving days.
Learn to get the quarter from a date in Java with IsoFields, find quarter start and end dates, format Q3 labels and calculate fiscal quarters.
Convert month number to name in Java with Month.getDisplayName(), and parse full or short month names back to numbers in any locale.
Java date format with day period using pattern B in DateTimeFormatter (Java 16+). Print in the morning or at night, parse it and set custom ranges.
Learn how Math.divideExact() in Java detects the Integer.MIN_VALUE / -1 overflow, how it handles zero, and how it compares to floorDivExact().
Java Math.abs() vs Math.absExact() with examples. Why Math.abs(Integer.MIN_VALUE) is negative, when absExact() throws, and safe alternatives.
Java string concatenation performance on JDK 25 with JMH results, how + compiles since JEP 280, why += in loops is slow, and concat() vs StringBuilder.
Java text block formatting with variables using formatted(), String.format(), MessageFormat and named placeholders, plus what happened to string templates.
Write a Java multiline string with text blocks, control indentation, line breaks and trailing spaces, and see the String.join() options for Java 8 to 14.
Capture a Java thread dump with jcmd, jstack, kill -3 or JSON for virtual threads, read every line and find deadlocks, CPU hogs and stuck pools.
Create and extract a JAR file with the jar command on Linux, macOS and Windows. Cheat sheet, runnable JARs, manifest, –dir and unzip options.
HowToDoInJava provides tutorials and how-to guides on Java and related technologies.
It also shares the best practices, algorithms & solutions and frequently asked interview questions.