<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Java Code Geeks</title>
    <link>https://www.javacodegeeks.com/feed/</link>
    <description>Java Developers Resource Center</description>
    <pubDate>Thu, 22 Oct 2026 16:35:52 +0000</pubDate>
    <lastBuildDate>Thu, 22 Oct 2026 16:35:52 +0000</lastBuildDate>
    <image>
      <url>https://www.javacodegeeks.com/wp-content/uploads/2012/12/JavaCodeGeeks-favIcon.png</url>
      <title>Java Code Geeks</title>
      <link>https://www.javacodegeeks.com/</link>
    </image>
    <item>
      <title>MCP Logging in Spring AI</title>
      <link>https://www.javacodegeeks.com/mcp-logging-in-spring-ai.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/enterprise-java&gt;Enterprise Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;MCP Logging in Spring AI&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-8&#34; href=https://www.javacodegeeks.com/category/java/enterprise-java&gt;Enterprise Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;MCP Logging in Spring AI&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The Model Context Protocol (MCP) lets an AI application call out to external tools and data sources through a standard client-server interface. When a tool runs on the server, the client usually only sees the final result — which makes it hard to know what happened in between: which step the server reached, what branch it took, or why it took so long. MCP solves this with a built-in logging capability: the server can stream log messages to the client while a tool is executing, independent of the tool’s actual return value. Spring AI’s MCP support exposes this capability on both the server and client side with just a few lines of code. This guide covers what MCP and MCP logging are, then walks through one complete example of a server that logs tool execution and a client that consumes those logs.&lt;h2&gt;&lt;a name=section-1&gt;&lt;/a&gt;1. What Is MCP? What Is MCP Logging?&lt;/h2&gt;&lt;p&gt;MCP (Model Context Protocol) is an open protocol that standardizes how an AI application (the &lt;em&gt;client&lt;/em&gt;) talks to external systems (the &lt;em&gt;server&lt;/em&gt;) that expose tools, resources, and prompts. Instead of writing a bespoke integration for every tool, both sides speak the same protocol — the client discovers what the server offers and invokes it in a uniform way, over transports like stdio or HTTP/SSE. MCP logging is one of the optional capabilities a server can declare. Once enabled, the server can send &lt;code&gt;notifications/message&lt;/code&gt; events to the client at any point — before, during, or after a tool call — each carrying a severity level (&lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;notice&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;critical&lt;/code&gt;, &lt;code&gt;alert&lt;/code&gt;, &lt;code&gt;emergency&lt;/code&gt;), a logger name, and a message. The client can also call &lt;code&gt;logging/setLevel&lt;/code&gt; to tell the server the minimum severity it wants to receive, filtering out noise like &lt;code&gt;debug&lt;/code&gt; messages in production.&lt;ul&gt;&lt;li&gt;Logging is separate from the tool’s return value — it’s for observability, not for passing data back to the model.&lt;li&gt;It’s capability-based — a server only sends log notifications if it declared &lt;code&gt;logging&lt;/code&gt; support during initialization.&lt;li&gt;It’s level-filtered — the client controls the noise floor via &lt;code&gt;setLoggingLevel(...)&lt;/code&gt;.&lt;/ul&gt;&lt;h2&gt;&lt;a name=section-2&gt;&lt;/a&gt;2. Code Example&lt;/h2&gt;&lt;p&gt;The example below has two parts: an MCP server that exposes a single weather tool and emits log notifications while handling it, and an MCP client that subscribes to those logs and calls the tool.&lt;h3&gt;2.1 Dependencies and Configuration&lt;/h3&gt;&lt;p&gt;Spring AI ships separate starters for the MCP server and MCP client; the server also needs the &lt;code&gt;logging&lt;/code&gt; capability turned on explicitly in configuration.&lt;pre class=&#34;brush:xml; wrap-lines:false;&#34;&gt;&amp;lt;!-- server --&amp;gt;&#xA;&amp;lt;dependency&amp;gt;&#xA;    &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;&#xA;    &amp;lt;artifactId&amp;gt;spring-ai-starter-mcp-server-webmvc&amp;lt;/artifactId&amp;gt;&#xA;&amp;lt;/dependency&amp;gt;&#xA;&#xA;&amp;lt;!-- client --&amp;gt;&#xA;&amp;lt;dependency&amp;gt;&#xA;    &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;&#xA;    &amp;lt;artifactId&amp;gt;spring-ai-starter-mcp-client&amp;lt;/artifactId&amp;gt;&#xA;&amp;lt;/dependency&amp;gt;&#xA;&lt;/pre&gt;&lt;pre class=&#34;brush:plain; wrap-lines:false;&#34;&gt;# application.properties (server)&#xA;spring.ai.mcp.server.name=weather-server&#xA;spring.ai.mcp.server.version=1.0.0&#xA;spring.ai.mcp.server.capabilities.logging=true&#xA;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;spring-ai-starter-mcp-server-webmvc&lt;/code&gt; starter auto-configures an MCP server over HTTP/SSE, while &lt;code&gt;spring.ai.mcp.server.capabilities.logging=true&lt;/code&gt; is what actually advertises the logging capability to connecting clients — without it, calls to &lt;code&gt;exchange.loggingNotification(...)&lt;/code&gt; on the server are simply ignored.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;h3&gt;2.2 Server: Tool That Emits Log Notifications&lt;/h3&gt;&lt;p&gt;A regular &lt;code&gt;@Tool&lt;/code&gt;-annotated method can accept an &lt;code&gt;McpSyncServerExchange&lt;/code&gt; parameter, which Spring AI injects automatically and which is used to push log messages back to the client while the tool runs.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;package com.example.mcp;&#xA;&#xA;import org.springframework.ai.tool.annotation.Tool;&#xA;import org.springframework.stereotype.Service;&#xA;&#xA;import io.modelcontextprotocol.server.McpSyncServerExchange;&#xA;import io.modelcontextprotocol.spec.McpSchema.LoggingLevel;&#xA;import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;&#xA;&#xA;@Service&#xA;public class WeatherTools {&#xA;&#xA;    @Tool(description = &amp;#34;Get the current weather for a city&amp;#34;)&#xA;    public String getWeather(String city, McpSyncServerExchange exchange) {&#xA;        exchange.loggingNotification(LoggingMessageNotification.builder()&#xA;                .level(LoggingLevel.DEBUG)&#xA;                .logger(&amp;#34;weather-tool&amp;#34;)&#xA;                .data(&amp;#34;Received weather request for city: &amp;#34; + city)&#xA;                .build());&#xA;&#xA;        String result = lookupWeather(city);&#xA;&#xA;        exchange.loggingNotification(LoggingMessageNotification.builder()&#xA;                .level(LoggingLevel.INFO)&#xA;                .logger(&amp;#34;weather-tool&amp;#34;)&#xA;                .data(&amp;#34;Weather lookup completed for city: &amp;#34; + city)&#xA;                .build());&#xA;&#xA;        return result;&#xA;    }&#xA;&#xA;    private String lookupWeather(String city) {&#xA;        return &amp;#34;Sunny, 25°C in &amp;#34; + city;&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;WeatherTools&lt;/code&gt; is a complete, self-contained &lt;code&gt;@Service&lt;/code&gt; class: the imports pull in &lt;code&gt;@Tool&lt;/code&gt; and &lt;code&gt;@Service&lt;/code&gt; from Spring AI, plus &lt;code&gt;McpSyncServerExchange&lt;/code&gt;, &lt;code&gt;LoggingLevel&lt;/code&gt;, and &lt;code&gt;LoggingMessageNotification&lt;/code&gt; from the MCP Java SDK that the method actually uses. Inside &lt;code&gt;getWeather&lt;/code&gt;, each call to &lt;code&gt;exchange.loggingNotification(...)&lt;/code&gt; builds a &lt;code&gt;LoggingMessageNotification&lt;/code&gt; with a severity level, a logger name used to identify the source, and a free-text message, then sends it to the client immediately — the first notification fires before the lookup happens and the second fires right after, giving the client visibility into both the start and the end of the operation without changing what &lt;code&gt;getWeather&lt;/code&gt; returns.&lt;h3&gt;2.3 Server: Registering the Tool&lt;/h3&gt;&lt;p&gt;The MCP server auto-configuration discovers tools through a &lt;code&gt;ToolCallbackProvider&lt;/code&gt; bean, so &lt;code&gt;WeatherTools&lt;/code&gt; needs to be wrapped and exposed that way.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;package com.example.mcp;&#xA;&#xA;import org.springframework.ai.tool.ToolCallbackProvider;&#xA;import org.springframework.ai.tool.method.MethodToolCallbackProvider;&#xA;import org.springframework.context.annotation.Bean;&#xA;import org.springframework.context.annotation.Configuration;&#xA;&#xA;@Configuration&#xA;public class McpServerConfig {&#xA;&#xA;    @Bean&#xA;    public ToolCallbackProvider weatherTools(WeatherTools weatherTools) {&#xA;        return MethodToolCallbackProvider.builder()&#xA;                .toolObjects(weatherTools)&#xA;                .build();&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;McpServerConfig&lt;/code&gt; is a standalone &lt;code&gt;@Configuration&lt;/code&gt; class whose imports bring in just the four Spring types the &lt;code&gt;weatherTools&lt;/code&gt; bean needs: &lt;code&gt;@Configuration&lt;/code&gt; and &lt;code&gt;@Bean&lt;/code&gt; to declare the bean, plus &lt;code&gt;ToolCallbackProvider&lt;/code&gt; and &lt;code&gt;MethodToolCallbackProvider&lt;/code&gt; to build it. &lt;code&gt;MethodToolCallbackProvider&lt;/code&gt; scans the given object (here, the &lt;code&gt;WeatherTools&lt;/code&gt; bean injected as a method parameter) for &lt;code&gt;@Tool&lt;/code&gt;-annotated methods and publishes them as callbacks the MCP server can list and invoke; this is the same mechanism Spring AI uses to expose tools to a chat model, reused here to expose them over MCP.&lt;h3&gt;2.4 Client: Consuming Log Notifications&lt;/h3&gt;&lt;p&gt;On the client side, a &lt;code&gt;loggingConsumer&lt;/code&gt; is registered when building the &lt;code&gt;McpSyncClient&lt;/code&gt;, and &lt;code&gt;setLoggingLevel(...)&lt;/code&gt; sets the minimum severity the server should send.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;package com.example.mcp;&#xA;&#xA;import java.util.Map;&#xA;&#xA;import io.modelcontextprotocol.client.McpClient;&#xA;import io.modelcontextprotocol.client.McpSyncClient;&#xA;import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;&#xA;import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;&#xA;import io.modelcontextprotocol.spec.McpSchema.CallToolResult;&#xA;import io.modelcontextprotocol.spec.McpSchema.LoggingLevel;&#xA;&#xA;public class WeatherClient {&#xA;&#xA;    public static void main(String[] args) {&#xA;        var transport = HttpClientSseClientTransport.builder(&amp;#34;http://localhost:8080&amp;#34;).build();&#xA;&#xA;        McpSyncClient client = McpClient.sync(transport)&#xA;                .loggingConsumer(notification -&amp;gt;&#xA;                        System.out.printf(&amp;#34;[%s] %s: %s%n&amp;#34;,&#xA;                                notification.level(), notification.logger(), notification.data()))&#xA;                .build();&#xA;&#xA;        client.initialize();&#xA;        client.setLoggingLevel(LoggingLevel.DEBUG);&#xA;&#xA;        CallToolResult result = client.callTool(&#xA;                new CallToolRequest(&amp;#34;getWeather&amp;#34;, Map.of(&amp;#34;city&amp;#34;, &amp;#34;Paris&amp;#34;)));&#xA;&#xA;        System.out.println(&amp;#34;Tool result: &amp;#34; + result.content());&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;WeatherClient&lt;/code&gt; is a runnable class with a &lt;code&gt;main&lt;/code&gt; method, importing &lt;code&gt;McpClient&lt;/code&gt;/&lt;code&gt;McpSyncClient&lt;/code&gt; and &lt;code&gt;HttpClientSseClientTransport&lt;/code&gt; to connect to the server, and &lt;code&gt;CallToolRequest&lt;/code&gt;/&lt;code&gt;CallToolResult&lt;/code&gt;/&lt;code&gt;LoggingLevel&lt;/code&gt; to invoke the tool and read its result. Inside &lt;code&gt;main&lt;/code&gt;, the &lt;code&gt;loggingConsumer&lt;/code&gt; lambda runs once per notification the server sends, so both the &lt;code&gt;DEBUG&lt;/code&gt; and &lt;code&gt;INFO&lt;/code&gt; messages from &lt;code&gt;WeatherTools&lt;/code&gt; are printed as they arrive; calling &lt;code&gt;setLoggingLevel(LoggingLevel.DEBUG)&lt;/code&gt; tells the server not to filter anything out, while &lt;code&gt;callTool(...)&lt;/code&gt; triggers the actual tool execution that produces those log notifications in the first place.&lt;h3&gt;2.5 Output&lt;/h3&gt;&lt;p&gt;Running &lt;code&gt;WeatherClient.main&lt;/code&gt; against the server above calls the &lt;code&gt;getWeather&lt;/code&gt; tool for “Paris” and prints the following, in order:&lt;pre class=&#34;brush:plain; wrap-lines:false;&#34;&gt;[DEBUG] weather-tool: Received weather request for city: Paris&#xA;[INFO] weather-tool: Weather lookup completed for city: Paris&#xA;Tool result: Sunny, 25°C in Paris&#xA;&lt;/pre&gt;&lt;p&gt;The two &lt;code&gt;[DEBUG]&lt;/code&gt;/&lt;code&gt;[INFO]&lt;/code&gt; lines come from the &lt;code&gt;loggingConsumer&lt;/code&gt; firing as each &lt;code&gt;exchange.loggingNotification(...)&lt;/code&gt; call arrives from &lt;code&gt;WeatherTools&lt;/code&gt;, and they both print before the final &lt;code&gt;Tool result&lt;/code&gt; line — proof that the log notifications travel to the client while &lt;code&gt;getWeather&lt;/code&gt; is still running, not after &lt;code&gt;callTool(...)&lt;/code&gt; returns.&lt;h2&gt;&lt;a name=section-1&gt;&lt;/a&gt;3. Conclusion&lt;/h2&gt;&lt;p&gt;MCP logging gives tool servers a dedicated, level-filtered channel for reporting what’s happening during execution, without overloading the tool’s actual return value. In Spring AI, enabling it is mostly configuration — &lt;code&gt;spring.ai.mcp.server.capabilities.logging=true&lt;/code&gt; on the server — plus a couple of &lt;code&gt;exchange.loggingNotification(...)&lt;/code&gt; calls inside a tool and a &lt;code&gt;loggingConsumer&lt;/code&gt; on the client. For anything beyond trivial tools, this is a cheap way to get real observability into what a remote tool is doing while it runs.&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-nWbkzgEFsGqbyfw1 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=nWbkzgEFsGqbyfw1 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-XnbWK7mkwPtUSFdi-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-XnbWK7mkwPtUSFdi-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-XnbWK7mkwPtUSFdi-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png fetchpriority=high decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-nWbkzgEFsGqbyfw1 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=nWbkzgEFsGqbyfw1 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-nWbkzgEFsGqbyfw1 value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/spring-ai rel=tag&gt;spring ai&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Yatin Batra</author>
      <guid>https://www.javacodegeeks.com/mcp-logging-in-spring-ai.html</guid>
      <pubDate>Thu, 22 Oct 2026 16:35:49 +0000</pubDate>
    </item>
    <item>
      <title>A Guide to Structured Output in Spring AI</title>
      <link>https://www.javacodegeeks.com/2026/10/a-guide-to-structured-output-in-spring-ai.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/enterprise-java&gt;Enterprise Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;A Guide to Structured Output in Spring AI&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-8&#34; href=https://www.javacodegeeks.com/category/java/enterprise-java&gt;Enterprise Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;A Guide to Structured Output in Spring AI&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Large Language Models (LLMs) naturally respond with free-form text. That’s great for a chat interface, but most applications need to feed the model’s answer into the rest of the system — save it to a database, pass it to another service, render it in a form. For that, we need predictable, structured data instead of a paragraph of prose. Spring AI solves this with its structured output support. It lets us ask a model to return data that is automatically converted into a Java object, a &lt;code&gt;List&lt;/code&gt;, a &lt;code&gt;Map&lt;/code&gt;, or any custom type we define — no manual string parsing required. In this guide, we’ll look at what structured output is and then walk through several ways to use it: converting responses into a domain entity, a list, a map, doing the conversion manually with &lt;code&gt;ChatModel&lt;/code&gt;, and finally writing our own custom converter.&lt;h2&gt;&lt;a name=section-1&gt;&lt;/a&gt;1. What Is Structured Output?&lt;/h2&gt;&lt;p&gt;&lt;a href=https://spring.io/blog/2024/05/09/spring-ai-structured-output/&gt;Structured output in Spring AI&lt;/a&gt; is built around the &lt;code&gt;StructuredOutputConverter&amp;lt;T&amp;gt;&lt;/code&gt; interface. A converter does two things:&lt;ul&gt;&lt;li&gt;Provides a format instruction — a piece of text telling the model exactly how to format its answer (e.g., “respond only with JSON matching this schema”).&lt;li&gt;Converts the raw text response — once the model replies, the converter parses that string into the target Java type.&lt;/ul&gt;&lt;p&gt;Spring AI ships with ready-made converters:&lt;ul&gt;&lt;li&gt;&lt;code&gt;BeanOutputConverter&amp;lt;T&amp;gt;&lt;/code&gt; — converts JSON into a POJO.&lt;li&gt;&lt;code&gt;ListOutputConverter&lt;/code&gt; — converts a comma-separated response into a &lt;code&gt;List&amp;lt;String&amp;gt;&lt;/code&gt;.&lt;li&gt;&lt;code&gt;MapOutputConverter&lt;/code&gt; — converts JSON into a &lt;code&gt;Map&amp;lt;String, Object&amp;gt;&lt;/code&gt;.&lt;/ul&gt;&lt;p&gt;When using the high-level &lt;code&gt;ChatClient&lt;/code&gt;, we usually don’t even touch these converters directly — calling &lt;code&gt;.entity(SomeType.class)&lt;/code&gt; picks the right one for us automatically. When we need more control, or we use the lower-level &lt;code&gt;ChatModel&lt;/code&gt; API, we can apply a converter manually.&lt;h2&gt;&lt;a name=section-1&gt;&lt;/a&gt;2. Code Example&lt;/h2&gt;&lt;p&gt;Rather than five disconnected snippets, here is one complete, runnable Spring Boot application. It exposes five endpoints — one per technique — all sharing the same &lt;code&gt;ActorFilms&lt;/code&gt; entity and the same injected &lt;code&gt;ChatClient&lt;/code&gt;/&lt;code&gt;ChatModel&lt;/code&gt; beans.&lt;h3&gt;2.1 Dependency and Configuration&lt;/h3&gt;&lt;p&gt;Before any of the conversion techniques can be used, the project needs the Spring AI OpenAI starter on the classpath along with an API key. The starter auto-configures the &lt;code&gt;ChatClient.Builder&lt;/code&gt; and &lt;code&gt;ChatModel&lt;/code&gt; beans used throughout the rest of this example.&lt;pre class=&#34;brush:xml; wrap-lines:false;&#34;&gt;&amp;lt;dependency&amp;gt;&#xA;    &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;&#xA;    &amp;lt;artifactId&amp;gt;spring-ai-starter-model-openai&amp;lt;/artifactId&amp;gt;&#xA;&amp;lt;/dependency&amp;gt;&#xA;&lt;/pre&gt;&lt;pre class=&#34;brush:plain; wrap-lines:false;&#34;&gt;# application.properties&#xA;spring.ai.openai.api-key=${OPENAI_API_KEY}&#xA;spring.ai.openai.chat.options.model=gpt-4o-mini&#xA;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;pom.xml&lt;/code&gt; entry pulls in Spring AI’s OpenAI integration, while &lt;code&gt;application.properties&lt;/code&gt; supplies the API key (read from an environment variable so it’s never hard-coded) and selects &lt;code&gt;gpt-4o-mini&lt;/code&gt; as the chat model; together these are the only setup required before injecting &lt;code&gt;ChatClient&lt;/code&gt; or &lt;code&gt;ChatModel&lt;/code&gt; into any service.&lt;h3&gt;2.2 Domain Entity&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;ActorFilms&lt;/code&gt; record is the single domain type shared by every conversion technique below — it models an actor and the list of movie titles the model should return.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;public record ActorFilms(String actor, List&amp;lt;String&amp;gt; movies) {}&#xA;&lt;/pre&gt;&lt;p&gt;Because &lt;code&gt;ActorFilms&lt;/code&gt; is a plain Java record with two typed fields, Spring AI can derive a JSON schema from it automatically and reuse that same schema across the entity, manual, and custom-converter endpoints further down.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;h3&gt;2.3 Custom Output Converter&lt;/h3&gt;&lt;p&gt;Not every response fits neatly into JSON — a plain comma-separated line is sometimes easier for a model to produce reliably. &lt;code&gt;UpperCaseListConverter&lt;/code&gt; implements &lt;code&gt;StructuredOutputConverter&amp;lt;List&amp;lt;String&amp;gt;&amp;gt;&lt;/code&gt; to handle that case, and is used later by the custom-converter endpoint.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;public class UpperCaseListConverter implements StructuredOutputConverter&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; {&#xA;&#xA;    @Override&#xA;    public List&amp;lt;String&amp;gt; convert(String text) {&#xA;        return Arrays.stream(text.trim().split(&amp;#34;\\s*,\\s*&amp;#34;))&#xA;                .map(String::toUpperCase)&#xA;                .toList();&#xA;    }&#xA;&#xA;    @Override&#xA;    public String getFormat() {&#xA;        return &amp;#34;&amp;#34;&amp;#34;&#xA;                Respond only with a comma separated list of items.&#xA;                Do not number them, and do not add any explanation or preamble.&#xA;                &amp;#34;&amp;#34;&amp;#34;;&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;getFormat()&lt;/code&gt; supplies the instruction injected into the prompt, telling the model to reply with a bare comma-separated list, while &lt;code&gt;convert()&lt;/code&gt; implements the matching parsing logic — splitting on commas and upper-casing each item — giving full control over both the request format and the response parsing.&lt;h3&gt;2.4 Service — All Five Techniques in One Class&lt;/h3&gt;&lt;p&gt;All five structured-output techniques live in a single &lt;code&gt;FilmographyService&lt;/code&gt;, each exposed as its own method so they can be compared side by side.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;@Service&#xA;public class FilmographyService {&#xA;&#xA;    private final ChatClient chatClient;&#xA;    private final ChatModel chatModel;&#xA;&#xA;    public FilmographyService(ChatClient.Builder builder, ChatModel chatModel) {&#xA;        this.chatClient = builder.build();&#xA;        this.chatModel = chatModel;&#xA;    }&#xA;&#xA;    // 1. Converting the response into our domain entity&#xA;    public ActorFilms getFilmographyAsEntity(String actor) {&#xA;        return chatClient.prompt()&#xA;                .user(&amp;#34;Generate the filmography of 5 movies for %s.&amp;#34;.formatted(actor))&#xA;                .call()&#xA;                .entity(ActorFilms.class);&#xA;    }&#xA;&#xA;    // 2. Converting the response into a List&#xA;    public List&amp;lt;String&amp;gt; getFilmographyAsList(String actor) {&#xA;        return chatClient.prompt()&#xA;                .user(&amp;#34;List the titles of 5 movies starring %s.&amp;#34;.formatted(actor))&#xA;                .call()&#xA;                .entity(new ParameterizedTypeReference&amp;lt;List&amp;lt;String&amp;gt;&amp;gt;() {});&#xA;    }&#xA;&#xA;    // 3. Converting the response into a Map&#xA;    public Map&amp;lt;String, Object&amp;gt; getFilmographyAsMap(String actor) {&#xA;        return chatClient.prompt()&#xA;                .user(&amp;#34;&amp;#34;&amp;#34;&#xA;                        Give the debut movie year and total movie count for %s.&#xA;                        Return as a JSON map with keys &amp;#34;debutYear&amp;#34; and &amp;#34;movieCount&amp;#34;.&#xA;                        &amp;#34;&amp;#34;&amp;#34;.formatted(actor))&#xA;                .call()&#xA;                .entity(new ParameterizedTypeReference&amp;lt;Map&amp;lt;String, Object&amp;gt;&amp;gt;() {});&#xA;    }&#xA;&#xA;    // 4. Converting the response manually using ChatModel&#xA;    public ActorFilms getFilmographyManually(String actor) {&#xA;        BeanOutputConverter&amp;lt;ActorFilms&amp;gt; converter =&#xA;                new BeanOutputConverter&amp;lt;&amp;gt;(ActorFilms.class);&#xA;&#xA;        String template = &amp;#34;&amp;#34;&amp;#34;&#xA;                Generate the filmography of 5 movies for {actor}.&#xA;                {format}&#xA;                &amp;#34;&amp;#34;&amp;#34;;&#xA;&#xA;        Prompt prompt = new PromptTemplate(template, Map.of(&#xA;                &amp;#34;actor&amp;#34;, actor,&#xA;                &amp;#34;format&amp;#34;, converter.getFormat()&#xA;        )).create();&#xA;&#xA;        Generation generation = chatModel.call(prompt).getResult();&#xA;        return converter.convert(generation.getOutput().getText());&#xA;    }&#xA;&#xA;    // 5. Using a custom output converter&#xA;    public List&amp;lt;String&amp;gt; getFilmographyUpperCase(String actor) {&#xA;        UpperCaseListConverter converter = new UpperCaseListConverter();&#xA;&#xA;        String template = &amp;#34;&amp;#34;&amp;#34;&#xA;                List 5 movie titles starring {actor}.&#xA;                {format}&#xA;                &amp;#34;&amp;#34;&amp;#34;;&#xA;&#xA;        Prompt prompt = new PromptTemplate(template, Map.of(&#xA;                &amp;#34;actor&amp;#34;, actor,&#xA;                &amp;#34;format&amp;#34;, converter.getFormat()&#xA;        )).create();&#xA;&#xA;        Generation generation = chatModel.call(prompt).getResult();&#xA;        return converter.convert(generation.getOutput().getText());&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;Methods 1–3 go through &lt;code&gt;ChatClient&lt;/code&gt;, using &lt;code&gt;.entity(ActorFilms.class)&lt;/code&gt; and &lt;code&gt;ParameterizedTypeReference&lt;/code&gt; to get a typed object, a list, and a map respectively; method 4 drops to the lower-level &lt;code&gt;ChatModel&lt;/code&gt; and applies a &lt;code&gt;BeanOutputConverter&lt;/code&gt; by hand; method 5 swaps that for the &lt;code&gt;UpperCaseListConverter&lt;/code&gt; defined above — the same request/response flow, just with a different converter plugged in.&lt;h3&gt;2.5 Controller&lt;/h3&gt;&lt;p&gt;A thin &lt;code&gt;FilmographyController&lt;/code&gt; exposes each service method as its own REST endpoint so every technique can be tested independently.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;@RestController&#xA;@RequestMapping(&amp;#34;/filmography&amp;#34;)&#xA;public class FilmographyController {&#xA;&#xA;    private final FilmographyService service;&#xA;&#xA;    public FilmographyController(FilmographyService service) {&#xA;        this.service = service;&#xA;    }&#xA;&#xA;    @GetMapping(&amp;#34;/{actor}/entity&amp;#34;)&#xA;    public ActorFilms entity(@PathVariable String actor) {&#xA;        return service.getFilmographyAsEntity(actor);&#xA;    }&#xA;&#xA;    @GetMapping(&amp;#34;/{actor}/list&amp;#34;)&#xA;    public List&amp;lt;String&amp;gt; list(@PathVariable String actor) {&#xA;        return service.getFilmographyAsList(actor);&#xA;    }&#xA;&#xA;    @GetMapping(&amp;#34;/{actor}/map&amp;#34;)&#xA;    public Map&amp;lt;String, Object&amp;gt; map(@PathVariable String actor) {&#xA;        return service.getFilmographyAsMap(actor);&#xA;    }&#xA;&#xA;    @GetMapping(&amp;#34;/{actor}/manual&amp;#34;)&#xA;    public ActorFilms manual(@PathVariable String actor) {&#xA;        return service.getFilmographyManually(actor);&#xA;    }&#xA;&#xA;    @GetMapping(&amp;#34;/{actor}/custom&amp;#34;)&#xA;    public List&amp;lt;String&amp;gt; custom(@PathVariable String actor) {&#xA;        return service.getFilmographyUpperCase(actor);&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;h3&gt;2.6 Main Class&lt;/h3&gt;&lt;p&gt;Finally, a standard Spring Boot entry point wires everything together and starts the embedded server.&lt;pre class=&#34;brush:java; wrap-lines:false;&#34;&gt;@SpringBootApplication&#xA;public class StructuredOutputApplication {&#xA;    public static void main(String[] args) {&#xA;        SpringApplication.run(StructuredOutputApplication.class, args);&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;@SpringBootApplication&lt;/code&gt; triggers auto-configuration for the Spring AI starter and the &lt;code&gt;ChatClient.Builder&lt;/code&gt; / &lt;code&gt;ChatModel&lt;/code&gt; beans, so no wiring beyond what’s already in &lt;code&gt;application.properties&lt;/code&gt; is needed to run any of the five endpoints.&lt;h3&gt;2.7 Code Run and output&lt;/h3&gt;&lt;p&gt;With the API key exported, the application can be started and each endpoint exercised with a simple curl command.&lt;pre class=&#34;brush:plain; wrap-lines:false;&#34;&gt;export OPENAI_API_KEY=sk-...&#xA;mvn spring-boot:run&#xA;&#xA;curl http://localhost:8080/filmography/Tom%20Hanks/entity&#xA;curl http://localhost:8080/filmography/Tom%20Hanks/list&#xA;curl http://localhost:8080/filmography/Tom%20Hanks/map&#xA;curl http://localhost:8080/filmography/Tom%20Hanks/manual&#xA;curl http://localhost:8080/filmography/Tom%20Hanks/custom&#xA;&lt;/pre&gt;&lt;p&gt;Each curl call hits one of the five endpoints on &lt;code&gt;FilmographyController&lt;/code&gt;, letting all five structured-output techniques be verified independently against the same running instance of the application. Running them against the actor “Tom Hanks” produces the following JSON responses, one per technique:&lt;pre class=&#34;brush:plain; wrap-lines:false;&#34;&gt;GET /filmography/Tom%20Hanks/entity&#xA;{&amp;#34;actor&amp;#34;:&amp;#34;Tom Hanks&amp;#34;,&amp;#34;movies&amp;#34;:[&amp;#34;Forrest Gump&amp;#34;,&amp;#34;Cast Away&amp;#34;,&amp;#34;Big&amp;#34;,&amp;#34;Toy Story&amp;#34;,&amp;#34;Saving Private Ryan&amp;#34;]}&#xA;&#xA;GET /filmography/Tom%20Hanks/list&#xA;[&amp;#34;Forrest Gump&amp;#34;,&amp;#34;Cast Away&amp;#34;,&amp;#34;Big&amp;#34;,&amp;#34;Toy Story&amp;#34;,&amp;#34;Saving Private Ryan&amp;#34;]&#xA;&#xA;GET /filmography/Tom%20Hanks/map&#xA;{&amp;#34;debutYear&amp;#34;:1980,&amp;#34;movieCount&amp;#34;:5}&#xA;&#xA;GET /filmography/Tom%20Hanks/manual&#xA;{&amp;#34;actor&amp;#34;:&amp;#34;Tom Hanks&amp;#34;,&amp;#34;movies&amp;#34;:[&amp;#34;Forrest Gump&amp;#34;,&amp;#34;Cast Away&amp;#34;,&amp;#34;Big&amp;#34;,&amp;#34;Toy Story&amp;#34;,&amp;#34;Saving Private Ryan&amp;#34;]}&#xA;&#xA;GET /filmography/Tom%20Hanks/custom&#xA;[&amp;#34;FORREST GUMP&amp;#34;,&amp;#34;CAST AWAY&amp;#34;,&amp;#34;BIG&amp;#34;,&amp;#34;TOY STORY&amp;#34;,&amp;#34;SAVING PRIVATE RYAN&amp;#34;]&#xA;&lt;/pre&gt;&lt;h2&gt;&lt;a name=section-4&gt;&lt;/a&gt;4. Conclusion&lt;/h2&gt;&lt;p&gt;Structured output is what turns an LLM from a text generator into a reliable component of a Java application. With &lt;code&gt;ChatClient.entity(...)&lt;/code&gt;, converting responses into domain objects, lists, or maps takes a single method call. When we need more control — using &lt;code&gt;ChatModel&lt;/code&gt; directly, or applying custom parsing logic — the &lt;code&gt;StructuredOutputConverter&lt;/code&gt; interface gives us the same guarantees with full flexibility.&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-SYW2KC9HqpqB7YUY lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=SYW2KC9HqpqB7YUY data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-FMSUqShcAQQnxyWb-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-FMSUqShcAQQnxyWb-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-FMSUqShcAQQnxyWb-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png fetchpriority=high decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-SYW2KC9HqpqB7YUY lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=SYW2KC9HqpqB7YUY data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-SYW2KC9HqpqB7YUY value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/llm rel=tag&gt;llm&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/llm-large-language-models rel=tag&gt;LLM (Large Language Models)&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/llm-applications rel=tag&gt;LLM Applications&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/spring-ai rel=tag&gt;spring ai&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Yatin Batra</author>
      <guid>https://www.javacodegeeks.com/2026/10/a-guide-to-structured-output-in-spring-ai.html</guid>
      <pubDate>Thu, 22 Oct 2026 15:50:06 +0000</pubDate>
    </item>
    <item>
      <title>The Economics of Flaky Tests: What They Really Cost a Team</title>
      <link>https://www.javacodegeeks.com/2026/10/the-economics-of-flaky-tests-what-they-really-cost-a-team.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/software-development&gt;Software Development&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;The Economics of Flaky Tests: What They Really Cost a Team&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-15&#34; href=https://www.javacodegeeks.com/category/software-development&gt;Software Development&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;The Economics of Flaky Tests: What They Really Cost a Team&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;A flaky test rarely breaks production. Instead, it quietly taxes every pull request your team opens.&lt;h2 class=wp-block-heading&gt;The Hidden Tax&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Every team knows the moment. A build turns red, someone shrugs, and the pipeline is simply run again. It passes, and everyone moves on. That small shrug is where the money leaks away, because each rerun costs minutes of waiting, a context switch, and a little more distrust in the suite.&lt;p class=wp-block-paragraph&gt;This article puts numbers on that tax. First, we look at what published research says. Then we use simple math to show why even tiny flake rates matter at scale.&lt;h2 class=wp-block-heading&gt;What the Research Actually Says&lt;/h2&gt;&lt;h3 class=wp-block-heading&gt;Google’s Numbers&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;In a &lt;a href=https://testing.googleblog.com/2016/05/&gt;May 2016 post on the Google Testing Blog&lt;/a&gt;, Google reported that about 1.5% of all its test runs show a flaky result, meaning the same code both passed and failed. It also found that almost 16% of its tests have some level of flakiness. In the post’s own example, a flaky rate of 1.5% means that about 15 tests will likely fail in a batch of 1,000, and each failure needs investigation by a build cop or developer.&lt;p class=wp-block-paragraph&gt;One caution is worth making here. You may have seen the “16%” quoted as the share of developer time lost to flaky tests. That reading is wrong. The 16% describes the share of tests with some flakiness, not time. Please check any article that repeats it as a time figure.&lt;h3 class=wp-block-heading&gt;What Causes Them&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Next, why do tests flake? A well-known study by Luo, Hariri, Eloussi and Marinov, &lt;a href=https://huang.isis.vanderbilt.edu/cs8395/paper/flakytest.pdf&gt;An Empirical Analysis of Flaky Tests&lt;/a&gt; (FSE 2014), examined 201 fixes in open-source projects. Its top three categories are shown below. As co-author Lamyaa Eloussi summarised on the &lt;a href=&#34;https://engineering.salesforce.com/?p=2476&#34;&gt;Salesforce engineering blog&lt;/a&gt;, they cover most of the cases.&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Cause&lt;th class=has-text-align-left data-align=left&gt;Share of fixes&lt;th class=has-text-align-left data-align=left&gt;Typical remedy found in the study&lt;tr&gt;&lt;td&gt;Async wait&lt;td&gt;45%&lt;td&gt;54% were fixed by waiting for the result instead of sleeping&lt;tr&gt;&lt;td&gt;Concurrency&lt;td&gt;20%&lt;td&gt;Data races, atomicity bugs and deadlocks&lt;tr&gt;&lt;td&gt;Test order dependency&lt;td&gt;12%&lt;td&gt;74% were fixed by cleaning shared state&lt;tr&gt;&lt;td&gt;Everything else&lt;td&gt;23% (remainder)&lt;td&gt;Network, time, unordered collections, and more&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;In short, most flakes are bugs in the tests themselves. Consequently, they are fixable engineering work, not bad luck.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;h2 class=wp-block-heading&gt;Why Small Rates Add Up Fast&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Here is the part that surprises people. A suite passes only if every test passes. So if each test flakes with probability p, a suite of n tests is green with probability (1 – p) to the power n, when the code is correct. A quick check: a 0.05% flake rate across 100 tests gives a green run about 95% of the time.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png fetchpriority=high decoding=async width=539 height=254 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png alt class=wp-image-146068 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png 539w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37-300x141.png 300w&#34; data-sizes=&#34;(max-width: 539px) 100vw, 539px&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async width=539 height=254 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png alt class=wp-image-146068 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37.png 539w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-39-37-300x141.png 300w&#34; sizes=&#34;(max-width: 539px) 100vw, 539px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;figcaption class=wp-element-caption&gt;Computed from the formula above. It assumes independent flakes, which is a simplification.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Look at the orange line. With a seemingly harmless 0.05% rate per test, a 2,000-test suite is green only about 37% of the time. Therefore, the bigger the suite, the more a tiny rate hurts.&lt;h2 class=wp-block-heading&gt;A Simple Cost Model&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Now let us turn those probabilities into hours. The assumptions below are mine, not measured data, so please replace them with your own numbers. I assumed 20 developers, 4 CI runs per developer per day, 230 working days, a 2,000-test suite, and 30 minutes lost for each false red build. I also assumed no automatic retry.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png decoding=async width=538 height=258 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png alt class=wp-image-146069 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png 538w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29-300x144.png 300w&#34; data-sizes=&#34;(max-width: 538px) 100vw, 538px&#34;&gt;&lt;noscript&gt;&lt;img decoding=async width=538 height=258 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png alt class=wp-image-146069 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29.png 538w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-40-29-300x144.png 300w&#34; sizes=&#34;(max-width: 538px) 100vw, 538px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;figcaption class=wp-element-caption&gt;Illustrative model, not measured data. Hours lost = runs per year x chance of a false red x 0.5 hours.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Per-test flake rate&lt;th class=has-text-align-left data-align=left&gt;False red builds&lt;th class=has-text-align-left data-align=left&gt;Hours lost per year&lt;th class=has-text-align-left data-align=left&gt;Share of team capacity&lt;tr&gt;&lt;td&gt;0.001%&lt;td&gt;2% of runs&lt;td&gt;182&lt;td&gt;0.5%&lt;tr&gt;&lt;td&gt;0.005%&lt;td&gt;9.5% of runs&lt;td&gt;876&lt;td&gt;2.4%&lt;tr&gt;&lt;td&gt;0.01%&lt;td&gt;18.1% of runs&lt;td&gt;1,668&lt;td&gt;4.5%&lt;tr&gt;&lt;td&gt;0.02%&lt;td&gt;33.0% of runs&lt;td&gt;3,033&lt;td&gt;8.2%&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;Capacity here means 20 developers times 230 days times 8 hours, or 36,800 hours. Even the modest 0.01% row costs about 1,668 hours, or roughly 208 working days, every year.&lt;p class=wp-block-paragraph&gt;The model also leaves out two costs that are harder to count. One is the cost of ignored failures, because people who expect a flake may dismiss a real bug. The other is infrastructure. A research paper from George Mason University, &lt;a href=https://cs.gmu.edu/~winglam/publications/2019/LamETAL19RootFinder.pdf&gt;Root Causing Flaky Tests in a Large-Scale Industrial Setting&lt;/a&gt;, reports Google spending roughly 2 to 16% of its testing budget on reruns. It cites another source for that range, and I could not trace the original, so treat it as approximate.&lt;h2 class=wp-block-heading&gt;What to Do About It&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Google’s post describes the tools it uses: rerunning only failed tests, automatic reruns, and a tool that quarantines a test when its flakiness grows too high. A test can also be marked flaky, so that it must fail three times in a row before a failure is reported. These are good first aid. However, reruns hide the cost instead of removing it, so the real fix is to repair the cause.&lt;p class=wp-block-paragraph&gt;&lt;strong&gt;Quick checklist&lt;/strong&gt;&lt;ul class=wp-block-list&gt;&lt;li&gt;Measure first: record every rerun and tag each failure as real, flaky or unknown.&lt;li&gt;Quarantine proven flakes quickly, and file a ticket for each one.&lt;li&gt;Replace sleeps with waits for a condition.&lt;li&gt;Make every test create and clean its own data.&lt;li&gt;Run tests in random order now and then to expose hidden dependencies.&lt;/ul&gt;&lt;h2 class=wp-block-heading&gt;What We Have Learned&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Flaky tests are a recurring tax, not a rare nuisance. Google reports about 1.5% of test runs as flaky and almost 16% of tests as touched by flakiness, and the 16% is a share of tests, not of time. Because a suite is green only when every test passes, a tiny per-test rate compounds quickly: at 0.05% per test, a 2,000-test suite is green about 37% of the time. In my illustrative model, a 0.01% rate costs a 20-person team around 1,668 hours a year. Since the best-known study traces most flakes to async waits, concurrency and test order, the cure is mostly better tests. So measure your own reruns, quarantine fast, and fix the cause.&lt;p class=wp-block-paragraph&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-DP3UkwhTzAS6pVe2 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=DP3UkwhTzAS6pVe2 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-g8SxxVb3WKC6tZws-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-g8SxxVb3WKC6tZws-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-g8SxxVb3WKC6tZws-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-DP3UkwhTzAS6pVe2 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=DP3UkwhTzAS6pVe2 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-DP3UkwhTzAS6pVe2 value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/continuous-integration rel=tag&gt;Continuous Integration&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/flaky-tests rel=tag&gt;Flaky Tests&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/software-testing rel=tag&gt;Software Testing&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Eleftheria Drosopoulou</author>
      <guid>https://www.javacodegeeks.com/2026/10/the-economics-of-flaky-tests-what-they-really-cost-a-team.html</guid>
      <pubDate>Thu, 22 Oct 2026 15:39:00 +0000</pubDate>
    </item>
    <item>
      <title>[DEALS] Koofr Cloud Storage: Lifetime Subscription (1TB) (75% off) &amp; Other Deals Up To 98% Off – Offers End Soon!</title>
      <link>https://www.javacodegeeks.com/2026/10/deals-koofr-cloud-storage-lifetime-subscription-1tb-75-off-other-deals-up-to-98-off-offers-end-soon-2.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;[DEALS] Koofr Cloud Storage: Lifetime Subscription (1TB) (75% off) &amp;amp; Other Deals Up To 98% Off – Offers End Soon!&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-16&#34; href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;[DEALS] Koofr Cloud Storage: Lifetime Subscription (1TB) (75% off) &amp;amp; Other Deals Up To 98% Off – Offers End Soon!&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;p&gt;Hello fellow geeks,&lt;p&gt;Fresh offers await you on our &lt;a href=https://deals.javacodegeeks.com/&gt;Deals store&lt;/a&gt;, please have a look!&lt;table width=600 cellpadding=0 cellspacing=0 border=0 align=center bgcolor=#ffffff style=&#34;width: 600px;max-width:600px;margin: 0 auto&#34;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan=2 align=center style=&#34;border-bottom: 0&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/koofr-cloud-storage-plans-lifetime-subscription-1tb?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=koofr-cloud-storage-plans-lifetime-subscription-1tb&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp2.stackassets.com/80a8f28de5a49cfb78f8d3909adfee6cb1026b56/store/07dd301d5721bb96627d24e84661a237023322f9f50585eb7189f0423fb1/koofrprimaryupdate.jpg decoding=async width=600 style=&#34;padding-top: 15px&#34; class=test-email-main-image alt data-src=https://cdnp2.stackassets.com/80a8f28de5a49cfb78f8d3909adfee6cb1026b56/store/07dd301d5721bb96627d24e84661a237023322f9f50585eb7189f0423fb1/koofrprimaryupdate.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=600 style=&#34;padding-top: 15px&#34; class=test-email-main-image alt src=https://cdnp2.stackassets.com/80a8f28de5a49cfb78f8d3909adfee6cb1026b56/store/07dd301d5721bb96627d24e84661a237023322f9f50585eb7189f0423fb1/koofrprimaryupdate.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;tr&gt;&lt;tr&gt;&lt;td style=&#34;border-top: 0;border-bottom: 0&#34; valign=top colspan=2&gt;&lt;p style=&#34;font-size: 26px;color: #222222;line-height: 120%;margin-top: 0;margin-bottom: 15px;width: 425px&#34;&gt;&lt;strong&gt;&lt;br&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/koofr-cloud-storage-plans-lifetime-subscription-1tb?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=koofr-cloud-storage-plans-lifetime-subscription-1tb&#34;&gt;Koofr Cloud Storage: Lifetime Subscription (1TB)&lt;/a&gt;&lt;br&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(75% off)&lt;/span&gt;&lt;br&gt;&lt;/strong&gt;&lt;p style=&#34;font-size: 14px;font-weight: 100;color: #666;line-height: 110%;margin-top: 0&#34;&gt;&lt;img data-lazyloaded=1 src=https://admin.stackcommerce.com/assets/mail/icon-clock-ce3479938622cf856e31d6366f64c3bdb482ad6b8298264cb66e4493f777938a.jpg decoding=async style=&#34;padding-right: 5px;position:relative;top: 3px&#34; data-src=https://admin.stackcommerce.com/assets/mail/icon-clock-ce3479938622cf856e31d6366f64c3bdb482ad6b8298264cb66e4493f777938a.jpg&gt;&lt;noscript&gt;&lt;img decoding=async style=&#34;padding-right: 5px;position:relative;top: 3px&#34; src=https://admin.stackcommerce.com/assets/mail/icon-clock-ce3479938622cf856e31d6366f64c3bdb482ad6b8298264cb66e4493f777938a.jpg&gt;&lt;/noscript&gt;Ending soon &lt;span style=&#34;padding: 0 5px&#34;&gt;//&lt;/span&gt; by Java Code Geeks&lt;p&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/koofr-cloud-storage-plans-lifetime-subscription-1tb?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=koofr-cloud-storage-plans-lifetime-subscription-1tb&#34;&gt;&lt;img data-lazyloaded=1 src=https://admin.stackcommerce.com/assets/mail/getit-d0a9c0e097c840198d1fa8b76acebbe039c0927216606397264fcc7639bfb1fc.jpg decoding=async border=0 data-src=https://admin.stackcommerce.com/assets/mail/getit-d0a9c0e097c840198d1fa8b76acebbe039c0927216606397264fcc7639bfb1fc.jpg&gt;&lt;noscript&gt;&lt;img decoding=async border=0 src=https://admin.stackcommerce.com/assets/mail/getit-d0a9c0e097c840198d1fa8b76acebbe039c0927216606397264fcc7639bfb1fc.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;tr&gt;&lt;td colspan=3&gt;&lt;p style=&#34;font-size: 14px;color: #666;line-height: 150%;width: 600px;max-width: 600px;margin: 0 auto 0 0&#34;&gt;&lt;b&gt;Access All of Your Files in One Place! Koofr Offers 1TB of Safe Cloud Storage to Secure Your Files&lt;/b&gt;&lt;/table&gt;&lt;table width=600 cellpadding=0 cellspacing=0 align=center bgcolor=#ffffff style=&#34;border-top-style: solid;border-top-width: 1px;border-top-color: #DDDDDD;padding-top: 5px;margin-top: 30px&#34;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-right: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/iscanner-app-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=iscanner-app-lifetime-subscription&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp1.stackassets.com/49bbc2d3be0a43fd04537f5a198f3b5c920af726/store/c8771d986c57cffd8f4d4db680d8eeef1bc7513707f3374ab9b579fb5159/sale_297719_primary_image.jpg decoding=async width=285 data-src=https://cdnp1.stackassets.com/49bbc2d3be0a43fd04537f5a198f3b5c920af726/store/c8771d986c57cffd8f4d4db680d8eeef1bc7513707f3374ab9b579fb5159/sale_297719_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp1.stackassets.com/49bbc2d3be0a43fd04537f5a198f3b5c920af726/store/c8771d986c57cffd8f4d4db680d8eeef1bc7513707f3374ab9b579fb5159/sale_297719_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/iscanner-app-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=iscanner-app-lifetime-subscription&#34;&gt;iScanner App: Lifetime Subscription (iPhone, iPad &amp;amp; Android)&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(87% off)&lt;/span&gt;&lt;/strong&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-left: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/iprovpn-5-year-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=iprovpn-5-year-subscription&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp0.stackassets.com/40851682d2c989f3deca1b00e8075af2e3aa8188/store/88c5754b7d8f12bd508d14414f85695bd0d2b9665dcc6f0263ba83df4999/sale_328954_primary_image.jpg decoding=async width=285 data-src=https://cdnp0.stackassets.com/40851682d2c989f3deca1b00e8075af2e3aa8188/store/88c5754b7d8f12bd508d14414f85695bd0d2b9665dcc6f0263ba83df4999/sale_328954_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp0.stackassets.com/40851682d2c989f3deca1b00e8075af2e3aa8188/store/88c5754b7d8f12bd508d14414f85695bd0d2b9665dcc6f0263ba83df4999/sale_328954_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/iprovpn-5-year-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=iprovpn-5-year-subscription&#34;&gt;iProVPN: 5-Year Subscription&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(94% off)&lt;/span&gt;&lt;/strong&gt;&lt;tr&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-right: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/internxt-cloud-storage-lifetime-subscription-10tb-plan?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=internxt-cloud-storage-lifetime-subscription-10tb-plan&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp3.stackassets.com/c138c84c2b612289d6c41de636968b387bd39781/store/7e7aa9045aa3ef19fbdb4a864528bebc2efea567feeaf4839b4dd1f1ac91/product_xxxxx_product_shots1.jpg decoding=async width=285 data-src=https://cdnp3.stackassets.com/c138c84c2b612289d6c41de636968b387bd39781/store/7e7aa9045aa3ef19fbdb4a864528bebc2efea567feeaf4839b4dd1f1ac91/product_xxxxx_product_shots1.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp3.stackassets.com/c138c84c2b612289d6c41de636968b387bd39781/store/7e7aa9045aa3ef19fbdb4a864528bebc2efea567feeaf4839b4dd1f1ac91/product_xxxxx_product_shots1.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/internxt-cloud-storage-lifetime-subscription-10tb-plan?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=internxt-cloud-storage-lifetime-subscription-10tb-plan&#34;&gt;Internxt Cloud Storage Lifetime Subscription: 10TB Plan&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(90% off)&lt;/span&gt;&lt;/strong&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-left: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/headway-premium-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=headway-premium-lifetime-subscription&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp0.stackassets.com/d8439b620dcf27d44a6677dd52e0047778eab196/store/93c2138337fcc5e12bb1156ff69aba57fc18c7f3ee9425f8b86904401cc0/sale_318822_primary_image.jpg decoding=async width=285 data-src=https://cdnp0.stackassets.com/d8439b620dcf27d44a6677dd52e0047778eab196/store/93c2138337fcc5e12bb1156ff69aba57fc18c7f3ee9425f8b86904401cc0/sale_318822_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp0.stackassets.com/d8439b620dcf27d44a6677dd52e0047778eab196/store/93c2138337fcc5e12bb1156ff69aba57fc18c7f3ee9425f8b86904401cc0/sale_318822_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/headway-premium-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=headway-premium-lifetime-subscription&#34;&gt;Headway Premium: Lifetime Subscription&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(76% off)&lt;/span&gt;&lt;/strong&gt;&lt;tr&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-right: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/glooin-starter-plan-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=glooin-starter-plan-lifetime-subscription&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp0.stackassets.com/bb5a21f3b67c64ce923a129602656da259e33709/store/05373e4b7a6c3ef5c5427557cc141d49165f3c2e54011d23a680f26cb464/sale_329746_primary_image.jpg decoding=async width=285 data-src=https://cdnp0.stackassets.com/bb5a21f3b67c64ce923a129602656da259e33709/store/05373e4b7a6c3ef5c5427557cc141d49165f3c2e54011d23a680f26cb464/sale_329746_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp0.stackassets.com/bb5a21f3b67c64ce923a129602656da259e33709/store/05373e4b7a6c3ef5c5427557cc141d49165f3c2e54011d23a680f26cb464/sale_329746_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/glooin-starter-plan-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=glooin-starter-plan-lifetime-subscription&#34;&gt;Glooin Starter Plan: Lifetime Subscription&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(74% off)&lt;/span&gt;&lt;/strong&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-left: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/microsoft-office-2024-professional-plus?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-office-2024-professional-plus&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp2.stackassets.com/a8445fd94e610347ee8ff6b036dafec3b60859b6/store/f073dd2174f43918f39a752fa0e6693fbe57685a972067b97318d4e430af/sale_328296_primary_image.jpg decoding=async width=285 data-src=https://cdnp2.stackassets.com/a8445fd94e610347ee8ff6b036dafec3b60859b6/store/f073dd2174f43918f39a752fa0e6693fbe57685a972067b97318d4e430af/sale_328296_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp2.stackassets.com/a8445fd94e610347ee8ff6b036dafec3b60859b6/store/f073dd2174f43918f39a752fa0e6693fbe57685a972067b97318d4e430af/sale_328296_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/microsoft-office-2024-professional-plus?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-office-2024-professional-plus&#34;&gt;Microsoft Office 2024 Professional Plus for Windows: Lifetime License&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(80% off)&lt;/span&gt;&lt;/strong&gt;&lt;tr&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-right: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/microsoft-visual-studio-professional-2026?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-visual-studio-professional-2026&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp0.stackassets.com/f1297381e8eb826788aa085c99fad3245fa457f7/store/b6bde761df8f625c022a554886d32c52085c43e35137943eefb4026e6a71/sale_329072_primary_image.jpg decoding=async width=285 data-src=https://cdnp0.stackassets.com/f1297381e8eb826788aa085c99fad3245fa457f7/store/b6bde761df8f625c022a554886d32c52085c43e35137943eefb4026e6a71/sale_329072_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp0.stackassets.com/f1297381e8eb826788aa085c99fad3245fa457f7/store/b6bde761df8f625c022a554886d32c52085c43e35137943eefb4026e6a71/sale_329072_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/microsoft-visual-studio-professional-2026?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-visual-studio-professional-2026&#34;&gt;Microsoft Visual Studio Professional 2026&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(94% off)&lt;/span&gt;&lt;/strong&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-left: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/microsoft-windows-11-pro-10?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-windows-11-pro-10&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp2.stackassets.com/869cb4a416b2ac567eac5001e69ab00e9a5bc184/store/d20bf1ebaba8f3c24720eea691fcdeb7ecbfe9d1abd007c816dd8d80313e/sale_Win11Pro_primary_image.jpg decoding=async width=285 data-src=https://cdnp2.stackassets.com/869cb4a416b2ac567eac5001e69ab00e9a5bc184/store/d20bf1ebaba8f3c24720eea691fcdeb7ecbfe9d1abd007c816dd8d80313e/sale_Win11Pro_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp2.stackassets.com/869cb4a416b2ac567eac5001e69ab00e9a5bc184/store/d20bf1ebaba8f3c24720eea691fcdeb7ecbfe9d1abd007c816dd8d80313e/sale_Win11Pro_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/microsoft-windows-11-pro-10?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=microsoft-windows-11-pro-10&#34;&gt;Microsoft Windows 11 Pro&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(92% off)&lt;/span&gt;&lt;/strong&gt;&lt;tr&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-right: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/oystervpn-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=oystervpn-lifetime-subscription&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp1.stackassets.com/d1ca08525798ab50ffe1f598492b078830646910/store/0b74f6a4466d4cbd68d89266e39936cabdffffc4be174352ddd3d5d43ab8/sale_322980_primary_image.jpg decoding=async width=285 data-src=https://cdnp1.stackassets.com/d1ca08525798ab50ffe1f598492b078830646910/store/0b74f6a4466d4cbd68d89266e39936cabdffffc4be174352ddd3d5d43ab8/sale_322980_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp1.stackassets.com/d1ca08525798ab50ffe1f598492b078830646910/store/0b74f6a4466d4cbd68d89266e39936cabdffffc4be174352ddd3d5d43ab8/sale_322980_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/oystervpn-lifetime-subscription?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=oystervpn-lifetime-subscription&#34;&gt;OysterVPN: VPN Lifetime Subscription&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(85% off)&lt;/span&gt;&lt;/strong&gt;&lt;td valign=top width=300 style=&#34;padding-top: 30px;padding-left: 15px&#34;&gt;&lt;a class=campaign-sale-link href=&#34;http://deals.javacodegeeks.com/sales/pcmover-business-5-licenses?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=pcmover-business-5-licenses&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp1.stackassets.com/9d2d3330a6879c502215a54059e402968bf6ffb0/store/3aba618ddecf1878c84f623065b2640559753e2569be80b5d36a5fedc4e0/sale_301238_primary_image.jpg decoding=async width=285 data-src=https://cdnp1.stackassets.com/9d2d3330a6879c502215a54059e402968bf6ffb0/store/3aba618ddecf1878c84f623065b2640559753e2569be80b5d36a5fedc4e0/sale_301238_primary_image.jpg&gt;&lt;noscript&gt;&lt;img decoding=async width=285 src=https://cdnp1.stackassets.com/9d2d3330a6879c502215a54059e402968bf6ffb0/store/3aba618ddecf1878c84f623065b2640559753e2569be80b5d36a5fedc4e0/sale_301238_primary_image.jpg&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;p&gt;&lt;p style=&#34;font-size: 16px;color: #222222;line-height: 120%;margin-bottom: 15px;width: 250px&#34;&gt;&lt;a class=campaign-sale-link style=&#34;color: #222222;text-decoration: none&#34; href=&#34;http://deals.javacodegeeks.com/sales/pcmover-business-5-licenses?utm_source=JVG&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-10-22_JVG_koofr-cloud-storage-plans-lifetime-subscription-1tb&amp;amp;utm_content=pcmover-business-5-licenses&#34;&gt;PCmover Business: Non-Expiring Licenses&lt;/a&gt;&lt;br&gt;&lt;strong&gt;&lt;span style=&#34;color: #00B0FF&#34;&gt;(25% off)&lt;/span&gt;&lt;/strong&gt;&lt;/table&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-irYKvks8aHu4tGcS lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=irYKvks8aHu4tGcS data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-HXKFxZcxuUdFFvmi-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-HXKFxZcxuUdFFvmi-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-HXKFxZcxuUdFFvmi-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png fetchpriority=high decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-irYKvks8aHu4tGcS lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=irYKvks8aHu4tGcS data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-irYKvks8aHu4tGcS value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/deals rel=tag&gt;Deals&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Java Code Geeks</author>
      <guid>https://www.javacodegeeks.com/2026/10/deals-koofr-cloud-storage-lifetime-subscription-1tb-75-off-other-deals-up-to-98-off-offers-end-soon-2.html</guid>
      <pubDate>Thu, 22 Oct 2026 10:30:30 +0000</pubDate>
    </item>
    <item>
      <title>BEAM Supervision Trees and “Let It Crash”: What Java Services Can Steal from Erlang</title>
      <link>https://www.javacodegeeks.com/2026/10/beam-supervision-trees-and-let-it-crash-what-java-services-can-steal-from-erlang.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;BEAM Supervision Trees and “Let It Crash”: What Java Services Can Steal from Erlang&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-7&#34; href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;BEAM Supervision Trees and “Let It Crash”: What Java Services Can Steal from Erlang&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Most Java code tries hard to never fail. Erlang takes the opposite view, and the idea travels better than you might expect.&lt;h2 class=wp-block-heading&gt;Where “Let It Crash” Comes From&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;The phrase sounds reckless at first. In practice, it is a careful design rule. Joe Armstrong, one of Erlang’s creators, laid it out in his December 2003 doctoral thesis, &lt;a href=https://mirror.its.dal.ca/freebsd/distfiles/erlang-doc/r13/armstrong_thesis_2003.pdf&gt;Making reliable distributed systems in the presence of software errors&lt;/a&gt;. The thesis has dedicated sections called “Let some other process fix the error” and “Let it crash”.&lt;p class=wp-block-paragraph&gt;His reasoning is simple. We know how to survive hardware faults, because we can replicate. Software bugs are different. As Armstrong wrote on the &lt;a href=https://erlang.org/pipermail/erlang-questions/2003-November/010649.html&gt;Erlang mailing list&lt;/a&gt;, replicating faulty software just gives you two programs failing for the same reason. Therefore, the goal shifts from preventing every error to recovering from it quickly.&lt;h2 class=wp-block-heading&gt;How a Supervision Tree Works&lt;/h2&gt;&lt;h3 class=wp-block-heading&gt;Workers and Supervisors&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;In OTP, the Erlang platform’s library set, processes are arranged in a tree. Workers do the real job, while supervisors only watch them and restart them when they die. Because the tree nests, a supervisor can itself be supervised.&lt;h3 class=wp-block-heading&gt;Restart Strategies&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;The &lt;a href=https://www.erlang.org/docs/23/design_principles/sup_princ.html&gt;OTP design principles&lt;/a&gt; define the main strategies. The default is &lt;code&gt;one_for_one&lt;/code&gt;.&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Strategy&lt;th class=has-text-align-left data-align=left&gt;What happens when one child dies&lt;tr&gt;&lt;td&gt;one_for_one&lt;td&gt;Only that child is restarted (the default)&lt;tr&gt;&lt;td&gt;one_for_all&lt;td&gt;All children are restarted&lt;tr&gt;&lt;td&gt;rest_for_one&lt;td&gt;The failed child and those started after it are restarted&lt;/table&gt;&lt;/figure&gt;&lt;h3 class=wp-block-heading&gt;The Safety Valve&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Restarting forever would only hide a real bug. For that reason, the &lt;a href=https://www.erlang.org/docs/19/man/supervisor.html&gt;supervisor manual&lt;/a&gt; defines a maximum restart intensity. If more than &lt;code&gt;intensity&lt;/code&gt; restarts happen within &lt;code&gt;period&lt;/code&gt; seconds, the supervisor terminates all its children and then itself. The defaults are 1 restart in 5 seconds. As a result, the failure climbs one level up the tree, where a wider restart can be attempted.&lt;h2 class=wp-block-heading&gt;What Java Teams Can Borrow&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Java does not have a built-in supervision tree, and its threads share one heap. Still, the ideas transfer in four useful ways.&lt;p class=wp-block-paragraph&gt;First, keep the supervisor separate from the work. The code that restarts a task should not be the code that performs it. Second, always put a limit on restarts, as OTP does. Third, escalate when the limit is hit, instead of retrying silently. Finally, restart into a clean state, rather than patching a half-broken object.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;p class=wp-block-paragraph&gt;You do not have to build this from scratch. Apache Pekko, the open-source fork of Akka, offers supervision for actors, and its &lt;a href=https://pekko.apache.org/docs/pekko/1.0/typed/fault-tolerance.html&gt;fault tolerance guide&lt;/a&gt; shows a restart strategy limited to a number of retries within a time window. Note that in typed actors the default is to stop the actor after an exception, not restart it.&lt;h2 class=wp-block-heading&gt;A Tiny Supervisor You Can Run&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;To see the idea clearly, I wrote a minimal version in plain Java with no libraries. It mirrors the OTP rule: give up when more than three crashes occur within one second. The worker handles 1,000 tasks, and it crashes on every Nth task. I tested it on JDK 21, and it needs JDK 11 or newer. Save it as &lt;code&gt;Sup.java&lt;/code&gt;.&lt;pre class=brush:java&gt;import java.util.ArrayDeque;&#xA;import java.util.concurrent.atomic.AtomicInteger;&#xA;&#xA;public class Sup {&#xA;    static final AtomicInteger done = new AtomicInteger();&#xA;&#xA;    // Like OTP: give up when more than maxRestarts crashes happen within windowMs.&#xA;    static int supervise(Runnable worker, int maxRestarts, long windowMs)&#xA;            throws InterruptedException {&#xA;        var crashes = new ArrayDeque&amp;lt;Long&amp;gt;();&#xA;        int restarts = 0;&#xA;        while (true) {&#xA;            Throwable[] failure = new Throwable[1];&#xA;            Thread t = new Thread(worker);&#xA;            t.setUncaughtExceptionHandler((th, ex) -&amp;gt; failure[0] = ex);&#xA;            t.start();&#xA;            t.join();&#xA;            if (failure[0] == null) return restarts;        // finished normally&#xA;            long now = System.currentTimeMillis();&#xA;            crashes.addLast(now);&#xA;            while (now - crashes.peekFirst() &amp;gt; windowMs) crashes.removeFirst();&#xA;            if (crashes.size() &amp;gt; maxRestarts) {&#xA;                throw new IllegalStateException(&amp;#34;gave up after &amp;#34; + restarts + &amp;#34; restarts&amp;#34;);&#xA;            }&#xA;            restarts++;&#xA;        }&#xA;    }&#xA;&#xA;    static Runnable worker(int crashEvery, int total) {&#xA;        return () -&amp;gt; {&#xA;            int n;&#xA;            while ((n = done.incrementAndGet()) &amp;lt;= total) {&#xA;                try { Thread.sleep(2); } catch (InterruptedException e) { return; }&#xA;                if (n % crashEvery == 0) throw new RuntimeException(&amp;#34;boom at task &amp;#34; + n);&#xA;            }&#xA;        };&#xA;    }&#xA;&#xA;    public static void main(String[] args) throws Exception {&#xA;        for (int every : new int[] {25, 50, 100, 200, 400}) {&#xA;            done.set(0);&#xA;            String result;&#xA;            try {&#xA;                int r = supervise(worker(every, 1000), 3, 1000);&#xA;                result = &amp;#34;finished, restarts=&amp;#34; + r;&#xA;            } catch (IllegalStateException e) {&#xA;                result = e.getMessage();&#xA;            }&#xA;            System.out.println(&amp;#34;crash every &amp;#34; + every + &amp;#34; tasks: &amp;#34; + result&#xA;                + &amp;#34;, tasks done=&amp;#34; + Math.min(done.get(), 1000));&#xA;        }&#xA;        // unsupervised: one thread, dies at first crash&#xA;        done.set(0);&#xA;        Thread t = new Thread(worker(400, 1000));&#xA;        t.setUncaughtExceptionHandler((th, ex) -&amp;gt; { });&#xA;        t.start(); t.join();&#xA;        System.out.println(&amp;#34;unsupervised (crash every 400): tasks done=&amp;#34; + Math.min(done.get(), 1000));&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;pre class=brush:java&gt;java Sup.java&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;I ran it twice and got identical output both times. Timing-based results can shift on a slower machine, so treat the exact crash counts as illustrative. First, an unsupervised worker that crashes every 400 tasks stops at task 400. With the supervisor, the same worker finishes all 1,000 tasks after two restarts.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png fetchpriority=high decoding=async width=544 height=259 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png alt class=wp-image-146064 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png 544w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23-300x143.png 300w&#34; data-sizes=&#34;(max-width: 544px) 100vw, 544px&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async width=544 height=259 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png alt class=wp-image-146064 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23.png 544w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-31-23-300x143.png 300w&#34; sizes=&#34;(max-width: 544px) 100vw, 544px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Next, the safety valve matters. When the worker crashes often, the supervisor stops restarting and escalates instead of looping.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png decoding=async width=542 height=260 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png alt class=wp-image-146065 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png 542w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05-300x144.png 300w&#34; data-sizes=&#34;(max-width: 542px) 100vw, 542px&#34;&gt;&lt;noscript&gt;&lt;img decoding=async width=542 height=260 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png alt class=wp-image-146065 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05.png 542w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-32-05-300x144.png 300w&#34; sizes=&#34;(max-width: 542px) 100vw, 542px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;figcaption class=wp-element-caption&gt;Both charts demonstrate the restart-limit behavior of this small program and are not benchmarks.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Crashing every 25, 50 or 100 tasks hit the limit after three restarts, so the supervisor gave up. Crashing every 200 or 400 tasks stayed under the limit, and the work completed.&lt;h2 class=wp-block-heading&gt;Where the Analogy Breaks&lt;/h2&gt;&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Topic&lt;th class=has-text-align-left data-align=left&gt;Erlang/BEAM&lt;th class=has-text-align-left data-align=left&gt;Typical Java service&lt;tr&gt;&lt;td&gt;Failure isolation&lt;td&gt;Processes are isolated and share nothing&lt;td&gt;Threads share one heap&lt;tr&gt;&lt;td&gt;Restart cost&lt;td&gt;Restarting a process is part of the design&lt;td&gt;You must build and test it yourself&lt;tr&gt;&lt;td&gt;Bad state&lt;td&gt;Dies with the process&lt;td&gt;Can leak into shared objects&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;Moreover, a restart cannot fix a bug that fails the same way every time. It only buys you recovery from transient faults, which is why the limit exists. Also, “let it crash” never means skipping input validation at the system boundary.&lt;p class=wp-block-paragraph&gt;&lt;strong&gt;Quick checklist&lt;/strong&gt;&lt;ul class=wp-block-list&gt;&lt;li&gt;Separate the code that supervises from the code that works.&lt;li&gt;Cap restarts per time window, and escalate when the cap is hit.&lt;li&gt;Restart into clean state, not into a half-damaged object.&lt;li&gt;Make restarted work idempotent, so a retry does no harm.&lt;li&gt;Still validate input at the boundary.&lt;/ul&gt;&lt;h2 class=wp-block-heading&gt;What We Have Learned&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Armstrong’s 2003 thesis argued that software errors cannot be replicated away, so systems should recover instead. OTP puts this into supervision trees, where supervisors restart workers under strategies such as one_for_one, one_for_all and rest_for_one. A restart limit, which defaults to 1 restart in 5 seconds, makes a supervisor escalate rather than loop forever. Java lacks a built-in tree, but the habits carry over, and Pekko offers a ready-made version. My small supervisor showed both sides: a worker that crashed every 400 tasks finished all 1,000 under supervision, while a worker that crashed too often triggered the safety valve. In short, supervise separately, limit restarts, and escalate.&lt;p class=wp-block-paragraph&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-qVWJaDQxWM1lv9MX lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=qVWJaDQxWM1lv9MX data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-LqbuKFpu2seD9uaj-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-LqbuKFpu2seD9uaj-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-LqbuKFpu2seD9uaj-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-qVWJaDQxWM1lv9MX lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=qVWJaDQxWM1lv9MX data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-qVWJaDQxWM1lv9MX value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/erlang rel=tag&gt;Erlang&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/fault-tolerance rel=tag&gt;Fault Tolerance&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/java-resilience rel=tag&gt;Java Resilience&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Eleftheria Drosopoulou</author>
      <guid>https://www.javacodegeeks.com/2026/10/beam-supervision-trees-and-let-it-crash-what-java-services-can-steal-from-erlang.html</guid>
      <pubDate>Thu, 22 Oct 2026 05:29:00 +0000</pubDate>
    </item>
    <item>
      <title>Strings and Unicode: UTF-16, Compact Strings, and Why Emoji Break charAt</title>
      <link>https://www.javacodegeeks.com/2026/10/strings-and-unicode-utf-16-compact-strings-and-why-emoji-break-charat.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;Strings and Unicode: UTF-16, Compact Strings, and Why Emoji Break charAt&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-7&#34; href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;Strings and Unicode: UTF-16, Compact Strings, and Why Emoji Break charAt&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Java says a string has two characters, while your user sees exactly one. Both answers are correct, and that is the trap.&lt;h2 class=wp-block-heading&gt;The Bug Behind a Single Smiley&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Imagine a form that limits a nickname to ten characters. A user types ten emoji, yet your code rejects the input as too long. Alternatively, a truncation routine cuts a status message and leaves a broken symbol at the end. Both bugs share one cause, and understanding it takes only a few minutes.&lt;h2 class=wp-block-heading&gt;What a Java String Really Stores&lt;/h2&gt;&lt;h3 class=wp-block-heading&gt;Chars Are 16-Bit Units&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;A Java &lt;code&gt;char&lt;/code&gt; is a 16-bit unit, but Unicode defines far more than 65,536 code points. Therefore, anything beyond that range, including most emoji, is stored as two chars called a surrogate pair. Methods such as &lt;code&gt;length()&lt;/code&gt; and &lt;code&gt;charAt()&lt;/code&gt; count these units, not what a person would call a character.&lt;h3 class=wp-block-heading&gt;Three Different Answers to “How Long?”&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;To make this concrete, I ran a small program on JDK 21 and counted the same strings in three ways. The flag and the family emoji are the interesting rows. The family is five code points glued together with zero-width joiners, yet it renders as one symbol.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png fetchpriority=high decoding=async width=541 height=261 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png alt class=wp-image-146060 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png 541w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50-300x145.png 300w&#34; data-sizes=&#34;(max-width: 541px) 100vw, 541px&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async width=541 height=261 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png alt class=wp-image-146060 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50.png 541w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-15-50-300x145.png 300w&#34; sizes=&#34;(max-width: 541px) 100vw, 541px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;As the chart shows, plain text agrees across all three counts. However, the moment emoji appear, the numbers drift apart. The Unicode term for what users perceive is a grapheme cluster, defined in &lt;a href=https://www.unicode.org/reports/tr29/&gt;Unicode Standard Annex #29&lt;/a&gt;.&lt;h2 class=wp-block-heading&gt;A Short Program You Can Run&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;The code below needs JDK 11 or newer to launch as a single file, and I tested it on JDK 21. I wrote the emoji as escape sequences, so it works whatever your terminal or file encoding is.&lt;pre class=brush:java&gt;import java.util.regex.Pattern;&#xA;&#xA;public class Emoji {&#xA;    public static void main(String[] args) {&#xA;        String smile = &amp;#34;\uD83D\uDE00&amp;#34;;   // one emoji, U+1F600&#xA;        System.out.println(&amp;#34;length     = &amp;#34; + smile.length());&#xA;        System.out.println(&amp;#34;codePoints = &amp;#34; + smile.codePointCount(0, smile.length()));&#xA;        System.out.printf(&amp;#34;charAt(0)  = U+%04X%n&amp;#34;, (int) smile.charAt(0));&#xA;        System.out.printf(&amp;#34;codePointAt(0) = U+%X%n&amp;#34;, smile.codePointAt(0));&#xA;&#xA;        String family = &amp;#34;\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67&amp;#34;;&#xA;        long graphemes = Pattern.compile(&amp;#34;\\X&amp;#34;).matcher(family).results().count();&#xA;        System.out.println(&amp;#34;family length = &amp;#34; + family.length());&#xA;        System.out.println(&amp;#34;family code points = &amp;#34; + family.codePoints().count());&#xA;        System.out.println(&amp;#34;family graphemes   = &amp;#34; + graphemes);&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;pre class=brush:java&gt;java Emoji.java&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;Expected output: a length of 2, one code point, and &lt;code&gt;charAt(0)&lt;/code&gt; returning U+D83D. That value is only half of the emoji, a lone high surrogate. For the family, you get 8 units, 5 code points, and 1 grapheme. The regex &lt;code&gt;\X&lt;/code&gt; matches one extended grapheme cluster, so counting its matches gives the user-visible length.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;h2 class=wp-block-heading&gt;Compact Strings: Same API, Smaller Memory&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Next comes the part that surprises many developers. Since JDK 9, &lt;a href=https://openjdk.org/jeps/254&gt;JEP 254&lt;/a&gt; changed the internal storage from a &lt;code&gt;char&lt;/code&gt; array to a byte array plus an encoding flag. According to the &lt;a href=https://www.oracle.com/java/technologies/javase/9-enhancements.html&gt;JDK 9 release notes&lt;/a&gt;, a string is stored either as Latin-1 (one byte per character) or as UTF-16 (two bytes per character), depending on its content. The JEP explicitly says that using UTF-8 internally was not a goal.&lt;p class=wp-block-paragraph&gt;Importantly, the public API did not change. &lt;code&gt;charAt()&lt;/code&gt; still returns UTF-16 units, so the emoji problem above is identical on every modern JDK.&lt;h3 class=wp-block-heading&gt;One Character Can Double a String&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Here the trade-off becomes visible. I read the backing array of four 1,000-character strings through reflection, using &lt;code&gt;--add-opens&lt;/code&gt; on my own machine. This is internal detail, not something to ship in production code.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png decoding=async width=546 height=261 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png alt class=wp-image-146061 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png 546w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24-300x143.png 300w&#34; data-sizes=&#34;(max-width: 546px) 100vw, 546px&#34;&gt;&lt;noscript&gt;&lt;img decoding=async width=546 height=261 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png alt class=wp-image-146061 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24.png 546w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-18-24-300x143.png 300w&#34; sizes=&#34;(max-width: 546px) 100vw, 546px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&lt;p class=wp-block-paragraph&gt;Both charts come from my own runs on OpenJDK 21. They are single-machine measurements of string layout, not performance benchmarks.&lt;/blockquote&gt;&lt;p class=wp-block-paragraph&gt;A single non-Latin-1 character switches the whole string to two bytes per character. Consequently, text that is almost entirely English but contains one emoji costs twice as much memory. For completeness, starting the JVM with &lt;code&gt;-XX:-CompactStrings&lt;/code&gt; made even the plain ASCII and Latin-1 strings use 2,000 bytes in my run.&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Internal form&lt;th class=has-text-align-left data-align=left&gt;Bytes per char&lt;th class=has-text-align-left data-align=left&gt;Used when&lt;tr&gt;&lt;td&gt;Latin-1&lt;td&gt;1&lt;td&gt;Every character is U+00FF or lower&lt;tr&gt;&lt;td&gt;UTF-16&lt;td&gt;2&lt;td&gt;Any character is above U+00FF&lt;/table&gt;&lt;/figure&gt;&lt;h2 class=wp-block-heading&gt;Choosing the Right Tool&lt;/h2&gt;&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Your question&lt;th class=has-text-align-left data-align=left&gt;Use this&lt;tr&gt;&lt;td&gt;How many UTF-16 units?&lt;td&gt;&lt;code&gt;length()&lt;/code&gt;&lt;tr&gt;&lt;td&gt;How many Unicode code points?&lt;td&gt;&lt;code&gt;codePointCount()&lt;/code&gt; or &lt;code&gt;codePoints()&lt;/code&gt;&lt;tr&gt;&lt;td&gt;How many characters does the user see?&lt;td&gt;Grapheme clusters, for example regex &lt;code&gt;\X&lt;/code&gt;&lt;tr&gt;&lt;td&gt;How many bytes on the wire?&lt;td&gt;&lt;code&gt;getBytes(StandardCharsets.UTF_8)&lt;/code&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;&lt;strong&gt;Quick checklist&lt;/strong&gt;&lt;ul class=wp-block-list&gt;&lt;li&gt;Never assume one &lt;code&gt;char&lt;/code&gt; equals one character.&lt;li&gt;Do not cut a string at an arbitrary index, since you may split a surrogate pair.&lt;li&gt;Validate user-facing limits by grapheme count, and storage limits by bytes.&lt;li&gt;Remember that one emoji can double a mostly Latin-1 string in memory.&lt;li&gt;Test with emoji, flags, and accented text, not only ASCII.&lt;/ul&gt;&lt;h2 class=wp-block-heading&gt;What We Have Learned&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;A Java string is a sequence of 16-bit UTF-16 units, so emoji and other supplementary characters occupy two of them. That is why &lt;code&gt;charAt&lt;/code&gt; can return half of a character and &lt;code&gt;length&lt;/code&gt; can disagree with what users see. Code points fix the first problem, and grapheme clusters fix the second, as the family emoji (8 units, 5 code points, 1 grapheme) showed. Meanwhile, compact strings, introduced in JDK 9, store Latin-1 text in one byte per character without changing the API, although one wider character doubles the whole string. As a result, choose your counting method by the question you are asking, and test with emoji early.&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-DAdJeZXKY4g85CcB lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=DAdJeZXKY4g85CcB data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-asHAGdAJcKbbdkjD-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-asHAGdAJcKbbdkjD-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-asHAGdAJcKbbdkjD-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-DAdJeZXKY4g85CcB lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=DAdJeZXKY4g85CcB data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-DAdJeZXKY4g85CcB value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/java-strings rel=tag&gt;Java Strings&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/jvm-internals rel=tag&gt;JVM Internals&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/unicode rel=tag&gt;Unicode&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Eleftheria Drosopoulou</author>
      <guid>https://www.javacodegeeks.com/2026/10/strings-and-unicode-utf-16-compact-strings-and-why-emoji-break-charat.html</guid>
      <pubDate>Wed, 21 Oct 2026 16:15:00 +0000</pubDate>
    </item>
    <item>
      <title>[FREE EBOOKS] No One Works Here, Rapid Reculturing &amp; Four More Best Selling Titles</title>
      <link>https://www.javacodegeeks.com/2026/10/free-ebooks-no-one-works-here-rapid-reculturing-four-more-best-selling-titles-2.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;[FREE EBOOKS] No One Works Here, Rapid Reculturing &amp;amp; Four More Best Selling Titles&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-16&#34; href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;[FREE EBOOKS] No One Works Here, Rapid Reculturing &amp;amp; Four More Best Selling Titles&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;p&gt;Hello fellow geeks,&lt;p&gt;Fresh offers await you on our &lt;a href=https://javacodegeeks.tradepub.com/ target=_blank&gt;Information Technology Research Library&lt;/a&gt;, please have a look!&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile933&amp;amp;ch=w_wile933-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_wile933/images/w_wile933c4.gif decoding=async data-src=https://img.tradepub.com/free/w_wile933/images/w_wile933c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_wile933/images/w_wile933c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;No One Works Here: How AI-Driven Enterprises Are Raising the Bar for Business, Leadership, and Competition ($30.00 Value) FREE for a Limited Time&lt;/h2&gt;&lt;p&gt;USA TODAY BESTSELLER. The first signs of corporate collapse rarely appear in balance sheets. They appear in latency. They appear in hiring delays, in meetings that solve nothing, and in the weeks it takes to make a decision that a machine could have made in seconds. For the last century, business moved at the speed of human cognition. We gathered data, deliberated, and executed. That cycle took quarters. Today, AI has compressed that cycle to hours. Historically, organizational design has always accounted for latency, but only within the constraints of a human-centric hierarchy. Today, the fundamental unit of the enterprise has changed. An organization is no longer just a collection of people; it is a complex network of nodes, some human, some autonomous AI agents. To build for this reality, traditional management theory must be re-evaluated. We must now look to system architecture and human-computer interaction, hardwiring their rigorous principles of latency and data flow directly into organizational design. In No One Works Here, Paul Cheek, MIT Senior Lecturer, software engineer, and entrepreneur, delivers a provocative and urgent roadmap for the post-human organization. He argues that we are witnessing a fundamental shift in the physics of business: moving from an era where humans do the work to an era where humans design the intent. This book redefines how we think about the structure of work, the meaning of enterprise, and the future of capitalism itself. Similarly, it presents how incumbent organizations and economies have a new threat presented in the opportunity for underdog companies and economies to leapfrog them. It is both a visionary manifesto and a practical playbook for the AI era…one that reframes not only how we build organizations, but how we define them. This is not a book about mass unemployment. It is a manual for the greatest organizational design pivot since the Industrial Revolution. Inside, you will discover: The Latency Trap: Why the most dangerous metric in your company isn’t burn rate, it’s the time cost of human involvement. The New Operating System: How to build AI-Driven Enterprises that allow your organization to run, learn, and optimize while you sleep. From Operator to Architect: A tactical guide for leaders who need to stop working in their business so they can start programming it. The companies that thrive in this new age will be the ones that delegate cognitive work to intelligent systems. The ones that die will be the ones that insist on keeping a human in the loop for decisions that were obsolete yesterday. For companies competing on scale and speed, you are now on borrowed time from your last human-gated decision. This book is your guide to buying that time back.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile933&amp;amp;ch=w_wile933-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile932&amp;amp;ch=w_wile932-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_wile932/images/w_wile932c4.gif decoding=async data-src=https://img.tradepub.com/free/w_wile932/images/w_wile932c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_wile932/images/w_wile932c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;Rapid Reculturing: Transforming Organizations at Pace and Scale ($30.00 Value) FREE for a Limited Time&lt;/h2&gt;&lt;p&gt;How can we lead for success in the age of AI? An answer to the leadership crisis facing today’s organizations. Rapid Reculturing: Transforming Organizations at Pace and Scale takes on one of the biggest issues facing today’s business world. To thrive in an AI-powered world, organizations need an entirely new approach. In this book, award-winning authors Alex Bailey and Kerri O’Neill offer a fresh, science-backed model for building sustainable high performance in the AI era. With traditional change models breaking down under the pressures of AI, diversity, five generations at work, and burnout rates skyrocketing, leaders urgently need a new playbook. If you’re looking for a shortcut to creating a culture that works in the Intelligence Age, this book is for you. It will ignite you to shed the practices that no longer serve us and respond to the demand for more human, adaptive leadership for a complex world. Lead culture change to support high performance in the complex, fast-paced “Intelligence Age”. Identify and replace leadership practices that are no longer effective in today’s world. Become more adaptive, so you and your organization can thrive amid ongoing change. Tackle employee burnout and high turnover, boosting productivity without sacrificing the people who make it happen. This book inspires a mindset shift in business leaders, HR professionals, and transformation consultants. With Re-Culturing Your Organization at Pace and Scale, you can ride the tide of AI-driven change and come out on top.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile932&amp;amp;ch=w_wile932-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile931&amp;amp;ch=w_wile931-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_wile931/images/w_wile931c4.gif decoding=async data-src=https://img.tradepub.com/free/w_wile931/images/w_wile931c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_wile931/images/w_wile931c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;Strategic Approaches to Intrusion Detection in Cloud-IoT Ecosystem ($225.00 Value) FREE for a Limited Time&lt;/h2&gt;&lt;p&gt;Future-proof your digital infrastructure with this essential book, which provides a comprehensive exploration of both traditional and advanced machine and deep learning models to implement resilient and intelligent intrusion detection systems for securing complex cloud-IoT environments. The rapid growth of cloud computing and the Internet of Things has transformed industry by enabling real-time data collection, processing, and automation. However, this increasing interconnectivity also introduces significant security challenges, including data breaches, unauthorized access, and cyber threats. Ensuring the security and privacy of cloud-IoT environments requires advanced intrusion detection mechanisms, privacy-preserving strategies, and efficient resource management. This book explores various advanced methods to achieve these goals, including machine and deep learning models, to protect cloud-IoT systems against cyber threats. This book covers both traditional and advanced techniques to implement intrusion detection systems and provides detailed comparative analysis. By offering practical insights, readers will gain a deeper understanding of how to effectively implement intelligent security solutions, ensuring resilience, privacy, and protection against evolving cyber threats in cloud-IoT environments. Readers will find the volume: Provides comprehensive coverage of topics like machine and deep learning for intelligent security;. Explores cyber-IoT systems and intrusion detection systems for identifying suspicious activities and mitigating potential threats;. Discusses various security mechanisms to safeguard the cloud-IoT environment and implement various techniques to detect intrusions early on.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile931&amp;amp;ch=w_wile931-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile930&amp;amp;ch=w_wile930-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_wile930/images/w_wile930c4.gif decoding=async data-src=https://img.tradepub.com/free/w_wile930/images/w_wile930c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_wile930/images/w_wile930c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;The New Rules of AI Search: SEO for visibility in ChatGPT, Google Gemini and Generative Search ($26.99 Value) FREE for a Limited Time&lt;/h2&gt;&lt;p&gt;Optimize your brand visibility for AI-powered search engines and large language models. In The New Rules of AI Search: SEO for visibility in ChatGPT, Google Gemini and Generative Search, Crystal Carter delivers a practical guide to optimizing brand visibility across AI-powered platforms. As large language models transform how consumers discover products and services, traditional SEO strategies require fundamental updates to remain effective in this new search paradigm. The New Rules of AI Search explores the technical and strategic dimensions of generative engine optimization. Crystal Carter examines how AI search platforms aggregate and present information differently than traditional search engines, providing actionable frameworks for ensuring your brand appears prominently when users query ChatGPT, Google Gemini, and similar platforms for recommendations and information. Readers will also discover: Specific techniques for structuring content that AI systems can easily understand, cite, and recommend to users seeking information. Strategies for building brand authority signals that large language models recognize and prioritize in their generated responses. Methods for monitoring and measuring your brand’s visibility across multiple AI search platforms and generative interfaces. Practical approaches for adapting existing SEO infrastructure to meet the unique requirements of AI-powered discovery channels. Frameworks for anticipating future developments in generative search and positioning your brand ahead of algorithmic changes. Essential for digital marketers, SEO professionals, brand managers, and business owners seeking to maintain competitive visibility, this guide provides the strategic foundation for succeeding as AI fundamentally transforms how consumers search for and discover information online. Offer Expires 10/27/2026.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_wile930&amp;amp;ch=w_wile930-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_aice161&amp;amp;ch=w_aice161-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_aice161/images/w_aice161c4.gif decoding=async data-src=https://img.tradepub.com/free/w_aice161/images/w_aice161c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_aice161/images/w_aice161c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;10 Canva AI Features Every Creator Should Use in 2026 ($21 Value) FREE For a Limited Time&lt;/h2&gt;&lt;p&gt;Master the newest Canva tools, from AI video to branded emails, and save hours on content creation. The latest Canva release is packed with features that radically improve how creators work. Whether you’re designing visuals, launching campaigns, or building brands, these updates are built for speed and simplicity. This guide gives you a clear, no-fluff breakdown of the most useful tools added in 2026 – including AI-powered video, smart design assistants, and real-time publishing. In this book you will learn: How Canva’s Magic Video turns raw clips into ready-to-post edits. Why creators are using AI layouts to skip design blocks. How to launch branded email campaigns without leaving Canva. What Canva Grow offers for running full ad campaigns in one place. How to manage forms, brands, and data in one dashboard. If you’re a creator, marketer, or business owner using Canva, this is your shortcut to mastering the biggest update yet. Download now to upgrade your content workflow in minutes.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_aice161&amp;amp;ch=w_aice161-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;tr&gt;&lt;td width=25% style=&#34;border: 0px;vertical-align: top&#34;&gt;&lt;a href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_aice208&amp;amp;ch=w_aice208-j&#34; target=_blank&gt;&lt;img data-lazyloaded=1 src=https://img.tradepub.com/free/w_aice208/images/w_aice208c4.gif decoding=async data-src=https://img.tradepub.com/free/w_aice208/images/w_aice208c4.gif&gt;&lt;noscript&gt;&lt;img decoding=async src=https://img.tradepub.com/free/w_aice208/images/w_aice208c4.gif&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;td style=&#34;vertical-align: top;border: 0px&#34;&gt;&lt;h2 style=&#34;text-align: center;background: #c8dbf7&#34;&gt;How to Build Your First Notion Dashboard in Minutes ($21 Value) FREE For a Limited Time&lt;/h2&gt;&lt;p&gt;Learn how to build a Notion dashboard that shows everything that matters in one place – – tasks, projects, quick capture and more. Perfect for beginners who think Notion is too complicated to set up. Most people think Notion is too complicated – – but a great dashboard isn’t about looking pretty, it’s about seeing everything that matters in one place without clicking around. This free guide shows you how to build your first command-centre dashboard in minutes. You’ll learn: How to set up a Home page that acts as your command centre. How to create a clean top section with your priority, date and focus. How to add a tasks database filtered to show only what’s due now. How to pull in active projects as a linked board view. How to add a quick-capture section for ideas and brain dumps. How to pin your dashboard and review it weekly so it evolves with your workflow. Whether you’re brand new to Notion or rebuilding your setup, you’ll finish with a single dashboard you check every morning instead of juggling tabs and sticky notes. To unlock all AI tutorials, visit CNTRAL.AI/TUTORIALS.&lt;p style=&#34;text-align: center;height: 65px;margin-top: 40px&#34;&gt;&lt;a class=download style=&#34;background-color: #c8dbf7;border-color: #b0c4de;padding-top: 19px;text-decoration: none&#34; href=&#34;https://javacodegeeks.tradepub.com/c/pubRD.mpl?secure=1&amp;amp;sr=oc&amp;amp;_t=oc:&amp;amp;qf=w_aice208&amp;amp;ch=w_aice208-j&#34; target=_blank&gt;&lt;span style=&#34;font-size: 20px;font-weight: bold;vertical-align: middle&#34;&gt;Get it FREE!&lt;/span&gt;&lt;/a&gt;&lt;/table&gt;&lt;p&gt;That’s it for now, we hope you found them insightful. Stay tuned for more!&lt;p&gt;Till next time, keep geeking!&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-11HSXl7hQrjio45o lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=11HSXl7hQrjio45o data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-g9mqwx7oveGwl5eu-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-g9mqwx7oveGwl5eu-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-g9mqwx7oveGwl5eu-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png fetchpriority=high decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-11HSXl7hQrjio45o lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=11HSXl7hQrjio45o data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-11HSXl7hQrjio45o value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/ebooks rel=tag&gt;eBooks&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/offers rel=tag&gt;Offers&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Java Code Geeks</author>
      <guid>https://www.javacodegeeks.com/2026/10/free-ebooks-no-one-works-here-rapid-reculturing-four-more-best-selling-titles-2.html</guid>
      <pubDate>Wed, 21 Oct 2026 10:30:30 +0000</pubDate>
    </item>
    <item>
      <title>JFR Event Streaming: Continuous Production Profiling Without a Vendor Agent</title>
      <link>https://www.javacodegeeks.com/2026/10/jfr-event-streaming-continuous-production-profiling-without-a-vendor-agent.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;JFR Event Streaming: Continuous Production Profiling Without a Vendor Agent&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-7&#34; href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;JFR Event Streaming: Continuous Production Profiling Without a Vendor Agent&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Your JVM already ships with a profiler that is safe for production. Since JDK 14, it can also talk to you in real time.&lt;h2 class=wp-block-heading&gt;Why You May Not Need an Agent&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Many teams reach for a vendor agent the moment production slows down. However, the JDK has carried its own recorder for years. &lt;a href=https://openjdk.org/jeps/328&gt;JEP 328&lt;/a&gt; brought Flight Recorder into OpenJDK 11, according to &lt;a href=https://blogs.oracle.com/javamagazine/post/java-flight-recorder-and-jfr-event-streaming-in-java-14&gt;Oracle’s Java Magazine&lt;/a&gt;. Until Java 14, though, it only produced files that you had to dump and open later.&lt;p class=wp-block-paragraph&gt;That changed with &lt;a href=https://openjdk.org/jeps/349&gt;JEP 349&lt;/a&gt;. It exposes JFR data for continuous monitoring, and the JEP notes that HotSpot emits more than 500 data points through JFR. As a result, you can react to events while the application is still running.&lt;h2 class=wp-block-heading&gt;How Event Streaming Works&lt;/h2&gt;&lt;h3 class=wp-block-heading&gt;Inside the Same JVM&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;The entry point is &lt;code&gt;RecordingStream&lt;/code&gt; in the &lt;code&gt;jdk.jfr.consumer&lt;/code&gt; package. You enable the events you care about, register a handler, and start the stream. Each handler is simply a lambda that runs when an event arrives.&lt;h3 class=wp-block-heading&gt;From Another Process&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Streaming also works from outside. JEP 349 explains that the disk repository location is stored in the &lt;code&gt;jdk.jfr.repository&lt;/code&gt; system property, which you can read through the attach API. In addition, &lt;code&gt;RemoteRecordingStream&lt;/code&gt; in the &lt;code&gt;jdk.management.jfr&lt;/code&gt; module lets a separate process consume events, as the &lt;a href=https://inside.java/2022/05/12/sip49&gt;Inside Java overview&lt;/a&gt; shows.&lt;h3 class=wp-block-heading&gt;A Small Example You Can Run&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;The program below needs JDK 14 or newer (I ran it on JDK 21). Save it as &lt;code&gt;Stream.java&lt;/code&gt;, then start it with the single command underneath. It prints CPU load every second and reports any lock wait longer than 10 ms.&lt;pre class=brush:java&gt;import java.time.Duration;&#xA;import jdk.jfr.consumer.RecordingStream;&#xA;&#xA;public class Stream {&#xA;    public static void main(String[] args) throws Exception {&#xA;        try (var rs = new RecordingStream()) {&#xA;            rs.enable(&amp;#34;jdk.CPULoad&amp;#34;).withPeriod(Duration.ofSeconds(1));&#xA;            rs.enable(&amp;#34;jdk.JavaMonitorEnter&amp;#34;)&#xA;              .withThreshold(Duration.ofMillis(10));&#xA;            rs.onEvent(&amp;#34;jdk.CPULoad&amp;#34;, e -&amp;gt; System.out.printf(&#xA;                &amp;#34;jvm user cpu: %.1f%%%n&amp;#34;, e.getFloat(&amp;#34;jvmUser&amp;#34;) * 100));&#xA;            rs.onEvent(&amp;#34;jdk.JavaMonitorEnter&amp;#34;, e -&amp;gt; System.out.println(&#xA;                &amp;#34;lock wait: &amp;#34; + e.getDuration().toMillis() + &amp;#34; ms&amp;#34;));&#xA;            rs.startAsync();&#xA;&#xA;            Object lock = new Object();&#xA;            Thread t = new Thread(() -&amp;gt; {&#xA;                synchronized (lock) {&#xA;                    try { Thread.sleep(300); } catch (Exception x) { }&#xA;                }&#xA;            });&#xA;            t.start();&#xA;            Thread.sleep(50);&#xA;            synchronized (lock) { }&#xA;            Thread.sleep(3000);&#xA;        }&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;pre class=brush:java&gt;java Stream.java&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;On my machine it printed a lock wait of roughly 250 ms, followed by one CPU line per second. Your exact numbers will differ, naturally.&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;h2 class=wp-block-heading&gt;What Does It Cost?&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Overhead is the question every operator asks first. The JDK answers it inside its own configuration files. The &lt;code&gt;default&lt;/code&gt; setting is described as safe for continuous production use, typically under 1% overhead, while &lt;code&gt;profile&lt;/code&gt; is described as typically around 2%. Notice that these are documented targets, not measurements from my workloads, so test your own service before trusting them.&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Setting&lt;th class=has-text-align-left data-align=left&gt;Documented overhead&lt;th class=has-text-align-left data-align=left&gt;Intended use&lt;tr&gt;&lt;td&gt;default&lt;td&gt;Typically under 1%&lt;td&gt;Always-on production recording&lt;tr&gt;&lt;td&gt;profile&lt;td&gt;Typically around 2%&lt;td&gt;Short, focused investigations&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;The difference comes from how aggressively each setting collects data. I read both files from the JDK 21 installation on my machine. The profile setting simply halves every threshold, so it catches shorter waits and slower calls.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png fetchpriority=high decoding=async width=542 height=260 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png alt class=wp-image-146056 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png 542w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57-300x144.png 300w&#34; data-sizes=&#34;(max-width: 542px) 100vw, 542px&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async width=542 height=260 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png alt class=wp-image-146056 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57.png 542w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-04-57-300x144.png 300w&#34; sizes=&#34;(max-width: 542px) 100vw, 542px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;Similarly, profile samples twice as often. Converting the configured values into samples per second makes this easy to see.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-full&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png decoding=async width=544 height=262 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png alt class=wp-image-146057 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png 544w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56-300x144.png 300w&#34; data-sizes=&#34;(max-width: 544px) 100vw, 544px&#34;&gt;&lt;noscript&gt;&lt;img decoding=async width=544 height=262 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png alt class=wp-image-146057 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56.png 544w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/2026-10-15_12-05-56-300x144.png 300w&#34; sizes=&#34;(max-width: 544px) 100vw, 544px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;One more caution applies here. According to the Inside Java overview, how you implement a stream can itself affect performance. Therefore, keep handlers short, and push heavy work onto another thread.&lt;h2 class=wp-block-heading&gt;A Practical Production Setup&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;First, start the JVM with a rolling on-disk recording. Replace &lt;code&gt;app.jar&lt;/code&gt; with your own application.&lt;pre class=brush:java&gt;java -XX:StartFlightRecording:name=prod,settings=default,maxage=6h,disk=true -jar app.jar&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;Later, if something looks wrong, copy the recent data to a file with &lt;code&gt;jcmd&lt;/code&gt;. The JVM prints this hint itself at startup. Replace &lt;code&gt;&amp;lt;pid&amp;gt;&lt;/code&gt; with your process id.&lt;pre class=brush:java&gt;jcmd &amp;lt;pid&amp;gt; JFR.dump name=prod filename=/tmp/prod.jfr&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;&lt;strong&gt;Quick checklist&lt;/strong&gt;&lt;ul class=wp-block-list&gt;&lt;li&gt;Start with the &lt;code&gt;default&lt;/code&gt; setting, never &lt;code&gt;profile&lt;/code&gt;, for always-on use.&lt;li&gt;Enable only the events you actually read.&lt;li&gt;Keep stream handlers fast and non-blocking.&lt;li&gt;Set &lt;code&gt;maxage&lt;/code&gt; so the disk repository stays bounded.&lt;li&gt;Measure overhead on your own workload first.&lt;/ul&gt;&lt;h2 class=wp-block-heading&gt;Streaming Versus Dump Files&lt;/h2&gt;&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=has-text-align-left data-align=left&gt;Question&lt;th class=has-text-align-left data-align=left&gt;Event streaming&lt;th class=has-text-align-left data-align=left&gt;Dump file&lt;tr&gt;&lt;td&gt;When do you see data?&lt;td&gt;As events arrive&lt;td&gt;After you dump&lt;tr&gt;&lt;td&gt;Best for&lt;td&gt;Alerts and live metrics&lt;td&gt;Deep post-incident analysis&lt;tr&gt;&lt;td&gt;Extra tooling&lt;td&gt;A small consumer program&lt;td&gt;A viewer such as JDK Mission Control&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;To be fair, a vendor product still adds dashboards, long-term storage, and cross-service views that JFR does not provide on its own. Nevertheless, for many teams the built-in route covers the first and most urgent questions at no licence cost.&lt;h2 class=wp-block-heading&gt;What We Have Learned&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;JFR has been part of OpenJDK since version 11, and JEP 349 added live event streaming in Java 14. A &lt;code&gt;RecordingStream&lt;/code&gt; lets one JVM watch itself, while a remote stream and the disk repository allow outside consumers. The documented overhead is typically under 1% for the default setting and around 2% for profile, and profile simply samples twice as aggressively. Consequently, a rolling default recording plus a small stream consumer gives you continuous production insight without installing a vendor agent. Just measure on your own system, and keep your handlers light.&lt;p class=wp-block-paragraph&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-inMaK8hF5BPHwzT2 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=inMaK8hF5BPHwzT2 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-4hsyW3XqrvCUGK3N-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-4hsyW3XqrvCUGK3N-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-4hsyW3XqrvCUGK3N-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png.webp decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png.webp alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png.webp alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-inMaK8hF5BPHwzT2 lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=inMaK8hF5BPHwzT2 data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-inMaK8hF5BPHwzT2 value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/java-flight-recorder rel=tag&gt;Java Flight Recorder&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/jvm-monitoring rel=tag&gt;JVM Monitoring&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/performance rel=tag&gt;Performance&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Eleftheria Drosopoulou</author>
      <guid>https://www.javacodegeeks.com/2026/10/jfr-event-streaming-continuous-production-profiling-without-a-vendor-agent.html</guid>
      <pubDate>Wed, 21 Oct 2026 05:02:00 +0000</pubDate>
    </item>
    <item>
      <title>Mutation testing with PIT: why 100% coverage proves almost nothing</title>
      <link>https://www.javacodegeeks.com/2026/10/mutation-testing-with-pit-why-100-coverage-proves-almost-nothing.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java&gt;Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;Mutation testing with PIT: why 100% coverage proves almost nothing&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-7&#34; href=https://www.javacodegeeks.com/category/java/core-java&gt;Core Java&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;Mutation testing with PIT: why 100% coverage proves almost nothing&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;div class=&#34;stream-item stream-item-above-post-content&#34;&gt;&lt;div class=stream-item-size&gt;&lt;div id=adngin-in-post-0 style=&#34;float:left; margin-right:20px; margin-bottom:10px; width:300px; height:274px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;&lt;a href=https://pitest.org/&gt;PIT&lt;/a&gt; (also called Pitest) is the usual mutation testing tool for the JVM. It generates mutants for you, using a set of built-in mutators that cover things like boundary changes, negated conditions, arithmetic operators and return values. It plugs into Maven and Gradle, and its source lives in the &lt;a href=https://github.com/hcoles/pitest&gt;project repository&lt;/a&gt;, whose latest release when I checked was 1.30.0.&lt;p class=wp-block-paragraph&gt;Now for an honest note about this article. I could not run PIT itself. The sandbox I used for the measurements cannot reach Maven Central, where PIT’s jars are published, and the GitHub release only ships source code. So I did the next best thing: I wrote a small script that applies PIT-style changes by hand, one at a time, and runs the tests each time. The coverage numbers below come from real JaCoCo, but the mutation numbers are from my own harness. PIT would generate its own list of mutants, and its counts could differ from mine.&lt;h2 class=wp-block-heading&gt;The experiment: 100% coverage, zero mutants killed&lt;/h2&gt;&lt;h3 class=wp-block-heading&gt;The code under test&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;I wrote a small shipping-cost rule, the kind of logic that lives in every e-commerce codebase. The base fee is 500 cents. Parcels over 1,000 grams pay 20 cents per extra 100 grams. Express doubles the cost. Orders of 10,000 cents or more ship free.&lt;pre class=brush:java&gt;public class ShippingCost {&#xA;    private ShippingCost() { }&#xA;&#xA;    public static int cents(int orderCents, int weightGrams, boolean express) {&#xA;        int cost = 500;&#xA;        if (weightGrams &amp;gt; 1000) {&#xA;            cost += (weightGrams - 1000) / 100 * 20;&#xA;        }&#xA;        if (express) {&#xA;            cost = cost * 2;&#xA;        }&#xA;        if (orderCents &amp;gt;= 10_000) {&#xA;            return 0;&#xA;        }&#xA;        return cost;&#xA;    }&#xA;}&#xA;&lt;/pre&gt;&lt;h3 class=wp-block-heading&gt;Two test suites&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;The first suite is the kind many of us have written on a tired Friday. It touches every branch and asserts only that the answer is sane.&lt;pre class=brush:java&gt;public class WeakTest {&#xA;    @Test public void lightStandard() { assertTrue(ShippingCost.cents(2000, 500, false) &amp;gt;= 0); }&#xA;    @Test public void heavyExpress()  { assertNotNull(ShippingCost.cents(2000, 2500, true)); }&#xA;    @Test public void bigOrder()      { assertTrue(ShippingCost.cents(20000, 500, false) &amp;gt;= 0); }&#xA;}&#xA;&lt;/pre&gt;&lt;p class=wp-block-paragraph&gt;The second suite checks exact values, including the awkward edges of each rule.&lt;pre class=brush:java&gt;public class StrongTest {&#xA;    @Test public void lightStandard()       { assertEquals(500,  ShippingCost.cents(2000, 500, false)); }&#xA;    @Test public void exactlyAtWeightLimit(){ assertEquals(500,  ShippingCost.cents(2000, 1000, false)); }&#xA;    @Test public void justOverWeightLimit() { assertEquals(520,  ShippingCost.cents(2000, 1100, false)); }&#xA;    @Test public void heavyExpress()        { assertEquals(1600, ShippingCost.cents(2000, 2500, true)); }&#xA;    @Test public void justBelowFreeLimit()  { assertEquals(500,  ShippingCost.cents(9999, 500, false)); }&#xA;    @Test public void exactlyAtFreeLimit()  { assertEquals(0,    ShippingCost.cents(10000, 500, false)); }&#xA;    @Test public void freeExpress()         { assertEquals(0,    ShippingCost.cents(20000, 500, true)); }&#xA;}&#xA;&lt;/pre&gt;&lt;h3 class=wp-block-heading&gt;What coverage says&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;I ran each suite under JaCoCo 0.8.15 on JDK 25 (Temurin 25+36) with JUnit 4.13.2. Both suites pass, and both get the same report:&lt;div style=&#34;display:inline-block; margin: 15px 0;&#34;&gt;&lt;div id=adngin-JavaCodeGeeks_incontent_video-0 style=display:inline-block;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Metric&lt;th&gt;Weak suite&lt;th&gt;Strong suite&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Instructions covered&lt;td&gt;28 of 28&lt;td&gt;28 of 28&lt;tr&gt;&lt;td&gt;Branches covered&lt;td&gt;6 of 6&lt;td&gt;6 of 6&lt;tr&gt;&lt;td&gt;Lines covered&lt;td&gt;8 of 8&lt;td&gt;8 of 8&lt;tr&gt;&lt;td&gt;Methods covered&lt;td&gt;1 of 1&lt;td&gt;1 of 1&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;Read that table again. By coverage alone, the two suites are identical. A dashboard would give both a gold star.&lt;h3 class=wp-block-heading&gt;What mutation testing says&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Next I applied twelve single-change mutants, one at a time, and ran both suites against each. Every mutant compiled cleanly, and I checked that each kill came from failing assertions, not from a build error.&lt;figure class=wp-block-table&gt;&lt;table class=has-fixed-layout&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;#&lt;th&gt;Mutator style&lt;th&gt;Change&lt;th&gt;Weak suite&lt;th&gt;Strong suite&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;td&gt;Conditional boundary&lt;td&gt;&lt;code&gt;weightGrams &amp;gt; 1000&lt;/code&gt; to &lt;code&gt;&amp;gt;= 1000&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;survived&lt;tr&gt;&lt;td&gt;2&lt;td&gt;Negated conditional&lt;td&gt;&lt;code&gt;weightGrams &amp;gt; 1000&lt;/code&gt; to &lt;code&gt;&amp;lt;= 1000&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;3&lt;td&gt;Math&lt;td&gt;&lt;code&gt;weightGrams - 1000&lt;/code&gt; to &lt;code&gt;+ 1000&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;4&lt;td&gt;Math&lt;td&gt;&lt;code&gt;/ 100 * 20&lt;/code&gt; to &lt;code&gt;* 100 * 20&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;5&lt;td&gt;Math&lt;td&gt;&lt;code&gt;/ 100 * 20&lt;/code&gt; to &lt;code&gt;/ 100 / 20&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;6&lt;td&gt;Math&lt;td&gt;&lt;code&gt;cost +=&lt;/code&gt; to &lt;code&gt;cost -=&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;7&lt;td&gt;Negated conditional&lt;td&gt;&lt;code&gt;if (express)&lt;/code&gt; to &lt;code&gt;if (!express)&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;8&lt;td&gt;Math&lt;td&gt;&lt;code&gt;cost * 2&lt;/code&gt; to &lt;code&gt;cost / 2&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;9&lt;td&gt;Conditional boundary&lt;td&gt;&lt;code&gt;orderCents &amp;gt;= 10_000&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;10&lt;td&gt;Negated conditional&lt;td&gt;&lt;code&gt;orderCents &amp;gt;= 10_000&lt;/code&gt; to &lt;code&gt;&amp;lt;&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;11&lt;td&gt;Return value&lt;td&gt;&lt;code&gt;return 0;&lt;/code&gt; to &lt;code&gt;return 1;&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;tr&gt;&lt;td&gt;12&lt;td&gt;Return value&lt;td&gt;&lt;code&gt;return cost;&lt;/code&gt; to &lt;code&gt;return 0;&lt;/code&gt;&lt;td&gt;survived&lt;td&gt;killed&lt;/table&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;The weak suite killed 0 of 12. The strong suite killed 11 of 12. Here is the same story as a picture.&lt;div class=wp-block-image&gt;&lt;figure class=&#34;aligncenter size-large&#34;&gt;&lt;a href=https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-scaled.png&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1024x497.png fetchpriority=high decoding=async width=1024 height=497 data-src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1024x497.png alt class=wp-image-145981 data-srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1024x497.png 1024w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-300x146.png 300w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-767x372.png 767w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1536x745.png 1536w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-2048x994.png 2048w&#34; data-sizes=&#34;(max-width: 1024px) 100vw, 1024px&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async width=1024 height=497 src=https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1024x497.png alt class=wp-image-145981 srcset=&#34;https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1024x497.png 1024w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-300x146.png 300w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-767x372.png 767w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-1536x745.png 1536w, https://www.javacodegeeks.com/wp-content/uploads/2026/10/coverage_vs_mutants_killed-2048x994.png 2048w&#34; sizes=&#34;(max-width: 1024px) 100vw, 1024px&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;figcaption class=wp-element-caption&gt;Identical 100% coverage, very different mutation results (12 hand-made mutants).&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;h3 class=wp-block-heading&gt;The mutant that nobody can kill&lt;/h3&gt;&lt;p class=wp-block-paragraph&gt;Did you spot mutant 1? It survived even the strong suite. Is that a gap in the tests?&lt;p class=wp-block-paragraph&gt;No, and this is a lesson worth learning early. Changing &lt;code&gt;&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;gt;=&lt;/code&gt; on the weight check only matters at exactly 1,000 grams. At that weight the surcharge works out to &lt;code&gt;(1000 - 1000) / 100 * 20&lt;/code&gt;, which is zero, so the output is identical either way. No test could ever tell the two versions apart. This is called an equivalent mutant, and every mutation tool produces some of them. They are noise you learn to recognize and dismiss.&lt;h2 class=wp-block-heading&gt;Why this keeps happening in real projects&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;The weak suite was not written by a villain. Look at its assertions: not negative, not null. Both are true for almost every wrong answer too. A mutant that returns 0, 1, or a negated cost sails straight through.&lt;p class=wp-block-paragraph&gt;A few habits make this easy to fall into:&lt;ul class=wp-block-list&gt;&lt;li&gt;Chasing a coverage percentage, so tests are written to execute lines rather than to pin down results.&lt;li&gt;Asserting on the shape of a result (it exists, it is positive) instead of its value.&lt;li&gt;Skipping boundary values, which is exactly where &lt;code&gt;&amp;gt;&lt;/code&gt; versus &lt;code&gt;&amp;gt;=&lt;/code&gt; bugs live.&lt;/ul&gt;&lt;p class=wp-block-paragraph&gt;Notice that all three are failures of &lt;em&gt;assertions&lt;/em&gt;, not of effort. Coverage cannot see assertions at all, which is why it stays calm while the safety net has holes.&lt;h2 class=wp-block-heading&gt;Using PIT without drowning in reports&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Mutation testing has a reputation for being slow and noisy, and that reputation is partly earned. Each mutant means running tests again. As far as I know PIT reduces the cost by using coverage data to run only the tests that actually reach the mutated line, but I have not benchmarked that myself, so measure it on your own codebase.&lt;p class=wp-block-paragraph&gt;A sensible way to start:&lt;ol class=wp-block-list&gt;&lt;li&gt;Run it on one package or one recent change first, not the whole project.&lt;li&gt;Read the survivors, not the score. Each surviving mutant points at a specific line and a specific missing assertion.&lt;li&gt;Dismiss equivalent mutants quickly and move on.&lt;li&gt;Do not chase 100% mutation score. Treat it as a smoke detector, not a target.&lt;/ol&gt;&lt;p class=wp-block-paragraph&gt;Notice how that last point mirrors the original problem. Any number becomes useless once people optimize the number instead of the behavior it was meant to represent.&lt;h2 class=wp-block-heading&gt;Conclusion&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Here is what the experiment showed. Two test suites, both green, both reporting 100% instruction, branch and line coverage on the same class. One of them killed none of twelve hand-made mutants, and the other killed eleven, with the twelfth being an equivalent mutant that no test could catch.&lt;p class=wp-block-paragraph&gt;Coverage tells you where tests have &lt;em&gt;been&lt;/em&gt;. Mutation testing tells you whether they would &lt;em&gt;notice&lt;/em&gt; a problem. They answer different questions, and only the second one is about whether your safety net holds.&lt;p class=wp-block-paragraph&gt;So the next time a report says 100%, ask a follow-up: if I broke this line on purpose, would anything fail? Then let a tool like PIT answer it for you. Remember, my mutation numbers came from a hand-built harness, so run PIT on your own code and trust its report over my table.&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-H7YU3hhaqMqjeqaN lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=H7YU3hhaqMqjeqaN data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-9erKftAwkuspKRXN-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-9erKftAwkuspKRXN-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-9erKftAwkuspKRXN-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-H7YU3hhaqMqjeqaN lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=H7YU3hhaqMqjeqaN data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-H7YU3hhaqMqjeqaN value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/java-testing rel=tag&gt;Java Testing&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/mutation-testing rel=tag&gt;Mutation Testing&lt;/a&gt; &lt;a href=https://www.javacodegeeks.com/tag/pit rel=tag&gt;PIT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Eleftheria Drosopoulou</author>
      <guid>https://www.javacodegeeks.com/2026/10/mutation-testing-with-pit-why-100-coverage-proves-almost-nothing.html</guid>
      <pubDate>Tue, 20 Oct 2026 15:33:00 +0000</pubDate>
    </item>
    <item>
      <title>Learn secure SDLC practices and the rest of the CISSP domains for $19.99</title>
      <link>https://www.javacodegeeks.com/2026/10/learn-secure-sdlc-practices-and-the-rest-of-the-cissp-domains-for-19-99.html</link>
      <description>&lt;header class=entry-header-outer&gt;&lt;nav id=breadcrumb&gt;&lt;a href=https://www.javacodegeeks.com/&gt;&lt;span class=tie-icon-home aria-hidden=true&gt;&lt;/span&gt;Home&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;a href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;em class=delimiter&gt;»&lt;/em&gt;&lt;span class=current&gt;Learn secure SDLC practices and the rest of the CISSP domains for $19.99&lt;/span&gt;&lt;/nav&gt;&lt;div class=entry-header&gt;&lt;span class=post-cat-wrap&gt;&lt;a class=&#34;post-cat tie-cat-16&#34; href=https://www.javacodegeeks.com/category/meta-jcg&gt;Meta JCG&lt;/a&gt;&lt;/span&gt;&lt;h1 class=&#34;post-title entry-title&#34;&gt;Learn secure SDLC practices and the rest of the CISSP domains for $19.99&lt;/h1&gt;&lt;/div&gt;&lt;/header&gt;&lt;div class=&#34;entry-content entry clearfix&#34;&gt;&lt;figure class=&#34;wp-block-stack-hive-sale-image wp-block-image&#34;&gt;&lt;a data-hive-link=true href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle&amp;amp;utm_term=SALE-319537&#34;&gt;&lt;img data-lazyloaded=1 src=https://cdnp1.stackassets.com/47c39b53eb291f0ab917d6bc3b35e56d4c48f874/store/0fe6efdef2bd307b9af04c0941eecdd0600a6f287142139f8523a4dd4368/sale_319537_article_image.jpg fetchpriority=high decoding=async data-src=https://cdnp1.stackassets.com/47c39b53eb291f0ab917d6bc3b35e56d4c48f874/store/0fe6efdef2bd307b9af04c0941eecdd0600a6f287142139f8523a4dd4368/sale_319537_article_image.jpg width=823 height=548 alt=&#34;8 Courses on CISSP&#39;s 8 Domains to Help You Pass the Exam &amp;amp; Get Certified in the Field&#34;&gt;&lt;noscript&gt;&lt;img fetchpriority=high decoding=async src=https://cdnp1.stackassets.com/47c39b53eb291f0ab917d6bc3b35e56d4c48f874/store/0fe6efdef2bd307b9af04c0941eecdd0600a6f287142139f8523a4dd4368/sale_319537_article_image.jpg width=823 height=548 alt=&#34;8 Courses on CISSP&#39;s 8 Domains to Help You Pass the Exam &amp;amp; Get Certified in the Field&#34;&gt;&lt;/noscript&gt;&lt;/a&gt;&lt;br&gt;&lt;/figure&gt;&lt;p class=wp-block-paragraph&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;a href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle-2026-10-12&amp;amp;utm_term=SALE-319537&#34; target=_blank rel=&#34;noreferrer noopener&#34; class=link&gt;Study all eight CISSP domains&lt;/a&gt; with lifetime access to the CISSP Security &amp;amp; Risk Management Training Bundle for $19.99 (MSRP $424).&lt;p class=wp-block-paragraph&gt;The CISSP exam spans eight domains, from risk management to secure software development, and preparing for all of them takes a lot of material. You can study each domain separately with The &lt;a href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle-2026-10-12&amp;amp;utm_term=SALE-319537&#34; target=_blank rel=&#34;noreferrer noopener&#34; class=link&gt;CISSP Security &amp;amp; Risk Management Training&lt;/a&gt; Bundle, and lifetime access is on sale for $19.99 (MSRP $424).&lt;h2 class=wp-block-heading id=264-lectures-across-all-eight-cissp-domains&gt;264 lectures across all eight CISSP domains&lt;/h2&gt;&lt;p class=wp-block-paragraph&gt;Across eight courses, you get 264 lectures and about 21 hours of content. Each course focuses on one domain, so you can start with the areas you know least instead of working through one long course from beginning to end.&lt;p class=wp-block-paragraph&gt;Early courses teach security and risk management, asset classification, and security engineering, including how cryptography and system vulnerabilities affect architecture decisions. That knowledge applies directly when you review a system design or decide which risks a project can accept. Later &lt;a href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle-2026-10-12&amp;amp;utm_term=SALE-319537&#34; target=_blank rel=&#34;noreferrer noopener&#34; class=link&gt;courses move into network security, identity and access management&lt;/a&gt;, security testing, and daily security operations like logging, monitoring, and incident response.&lt;p class=wp-block-paragraph&gt;For developers, the final course on security in the software development life cycle may be the most useful one day to day. You’ll learn how to plan each SDLC phase with risk in mind, choose the right SDLC model for a project, and run a risk analysis on your software’s security. Architects and team leads also get the managerial side, including the difference between role-based and rule-based access control and how to measure whether security controls are working.&lt;p class=wp-block-paragraph&gt;Every course has a 5.0/5 average rating. You can watch on desktop or mobile, and a basic understanding of computers, networks, and security will help before you start.&lt;p class=wp-block-paragraph&gt;Study for the CISSP exam one domain at a time, on your own schedule.&lt;p class=wp-block-paragraph&gt;For a limited time, get the &lt;a href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle-2026-10-12&amp;amp;utm_term=SALE-319537&#34; target=_blank rel=&#34;noreferrer noopener&#34; class=link&gt;CISSP Security &amp;amp; Risk Management Training Bundle&lt;/a&gt; on sale for $19.99 (MSRP $424).&lt;div class=&#34;stack-hive-cta has-global-padding&#34; style=&#34;position:relative;overflow:hidden;margin-top:var(--chakra-space-6, 1.5em);margin-bottom:var(--chakra-space-6, 1.5em)&#34;&gt;&lt;div class=stack-hive-cta__container style=&#34;gap: 2.5vw;display: grid;grid-template-columns: 4fr 6fr;border: 1px solid #000;border-radius: 0px;padding: 35px 35px&#34;&gt;&lt;div style=flex:30%&gt;&lt;img data-lazyloaded=1 src=https://cdnp1.stackassets.com/238a2094d7950fef69624a99dc406bc709abed28/store/690042038a2c13bc2dd941cfe9995f6797647850d12915f66718f91f4495/sale_319537_primary_image.jpg decoding=async data-src=https://cdnp1.stackassets.com/238a2094d7950fef69624a99dc406bc709abed28/store/690042038a2c13bc2dd941cfe9995f6797647850d12915f66718f91f4495/sale_319537_primary_image.jpg style=width:100% alt&gt;&lt;noscript&gt;&lt;img decoding=async src=https://cdnp1.stackassets.com/238a2094d7950fef69624a99dc406bc709abed28/store/690042038a2c13bc2dd941cfe9995f6797647850d12915f66718f91f4495/sale_319537_primary_image.jpg style=width:100% alt&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;div class=stack-hive-cta__content style=flex:70%;justify-content:center;display:flex;flex-direction:column;align-items:flex-start&gt;&lt;p style=&#34;margin-top: 0px!important;color: #222;font-weight: 400;font-size: 16px&#34;&gt;The CISSP Security &amp;amp; Risk Management Training Bundle&lt;p&gt;&lt;a data-hive-link=true style=&#34;display: inline-block;text-decoration: none;color: #fff;background-color: #000;border-radius: 4px;font-size: 16px;font-weight: 400;padding: 10px 24px&#34; href=&#34;https://deals.javacodegeeks.com/sales/the-2023-cissp-security-and-risk-management-training-bundle?utm_source=Javacodegeeks.com&amp;amp;utm_content=PS-19946&amp;amp;utm_medium=Referral&amp;amp;utm_campaign=the-cissp-security-risk-management-training-bundle&amp;amp;utm_term=SALE-319537&#34; target=_blank rel=noopener&gt;See Deal&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=wp-block-paragraph&gt;&lt;a href=https://www.stacksocial.com/&gt;&lt;em&gt;StackSocial&lt;/em&gt;&lt;/a&gt; &lt;em&gt;prices subject to change.&lt;/em&gt;&lt;/p&gt;&lt;style&gt;.lepopup-progress-60 div.lepopup-progress-t1&gt;div{background-color:#e0e0e0;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{background-color:#bd4070;}.lepopup-progress-60 div.lepopup-progress-t1&gt;div&gt;div{color:#ffffff;}.lepopup-progress-60 div.lepopup-progress-t1&gt;label{color:#444444;}.lepopup-form-60, .lepopup-form-60 *, .lepopup-progress-60 {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box span i{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-signature-box,.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;text&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;email&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;password&#39;],.lepopup-form-60 .lepopup-element div.lepopup-input select,.lepopup-form-60 .lepopup-element div.lepopup-input select option,.lepopup-form-60 .lepopup-element div.lepopup-input textarea{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#555555;font-style:normal;text-decoration:none;text-align:left;background-color:rgba(255, 255, 255, 0.7);background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow: inset 0px 0px 15px -7px #000000;}.lepopup-form-60 .lepopup-element div.lepopup-input ::placeholder{color:#555555; opacity: 0.9;} .lepopup-form-60 .lepopup-element div.lepopup-input ::-ms-input-placeholder{color:#555555; opacity: 0.9;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect::-webkit-scrollbar-thumb{background-color:#cccccc;}.lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-left, .lepopup-form-60 .lepopup-element div.lepopup-input&gt;i.lepopup-icon-right{font-size:20px;color:#444444;border-radius:0px;}.lepopup-form-60 .lepopup-element .lepopup-button,.lepopup-form-60 .lepopup-element .lepopup-button:visited{font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#ffffff;font-weight:700;font-style:normal;text-decoration:none;text-align:center;background-color:#326693;background-image:none;border-width:1px;border-style:solid;border-color:#326693;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label{border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element div.lepopup-input .lepopup-imageselect+label span.lepopup-imageselect-label{font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label:after{background-color:rgba(255, 255, 255, 0.7);}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-square:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl:checked+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;checkbox&#39;].lepopup-checkbox-tgl+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-classic+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-fa-check+label,.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot+label{background-color:rgba(255, 255, 255, 0.7);border-color:#cccccc;color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input input[type=&#39;radio&#39;].lepopup-radio-dot:checked+label:after{background-color:#555555;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]+label:hover{background-color:#bd4070;color:#ffffff;}.lepopup-form-60 .lepopup-element div.lepopup-input div.lepopup-multiselect&gt;input[type=&#39;checkbox&#39;]:checked+label{background-color:#a93a65;color:#ffffff;}.lepopup-form-60 .lepopup-element input[type=&#39;checkbox&#39;].lepopup-tile+label, .lepopup-form-60 .lepopup-element input[type=&#39;radio&#39;].lepopup-tile+label {font-size:15px;color:#444444;font-style:normal;text-decoration:none;text-align:center;background-color:#ffffff;background-image:none;border-width:1px;border-style:solid;border-color:#cccccc;border-radius:0px;box-shadow:none;}.lepopup-form-60 .lepopup-element-error{font-size:15px;color:#ffffff;font-style:normal;text-decoration:none;text-align:left;background-color:#d9534f;background-image:none;}.lepopup-form-60 .lepopup-element-2 {background-color:rgba(226, 236, 250, 1);background-image:none;border-width:1px;border-style:solid;border-color:rgba(216, 216, 216, 1);border-radius:3px;box-shadow: 1px 1px 15px -6px #d7e1eb;}.lepopup-form-60 .lepopup-element-3 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-3 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:26px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-3 .lepopup-element-html-content {min-height:73px;}.lepopup-form-60 .lepopup-element-4 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-4 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:19px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-4 .lepopup-element-html-content {min-height:23px;}.lepopup-form-60 .lepopup-element-5 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-5 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-5 .lepopup-element-html-content {min-height:24px;}.lepopup-form-60 .lepopup-element-6 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-6 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-6 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-7 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-7 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-7 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-8 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-8 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-8 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-9 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-9 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-9 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-10 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-10 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-10 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-11 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-11 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-11 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-12 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-12 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-12 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-13 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-13 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:15px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-13 .lepopup-element-html-content {min-height:18px;}.lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-left, .lepopup-form-60 .lepopup-element-14 div.lepopup-input .lepopup-icon-right {line-height:36px;}.lepopup-form-60 .lepopup-element-15 div.lepopup-input{height:auto;line-height:1;}.lepopup-form-60 .lepopup-element-16 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-16 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:14px;color:#333333;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-16 .lepopup-element-html-content {min-height:5px;}.lepopup-form-60 .lepopup-element-19 * {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-19 {font-family:&#39;Arial&#39;,&#39;arial&#39;;font-size:13px;color:#333333;font-style:normal;text-decoration:none;text-align:left;background-color:transparent;background-image:none;border-width:1px;border-style:none;border-color:transparent;border-radius:0px;box-shadow:none;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.lepopup-form-60 .lepopup-element-19 .lepopup-element-html-content {min-height:363px;}.lepopup-form-60 .lepopup-element-0 * {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;}.lepopup-form-60 .lepopup-element-0 {font-size:15px;color:#ffffff;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;background-color:#5cb85c;background-image:none;border-width:0px;border-style:solid;border-color:#ccc;border-radius:5px;box-shadow: 1px 1px 15px -6px #000000;padding-top:40px;padding-right:40px;padding-bottom:40px;padding-left:40px;}.lepopup-form-60 .lepopup-element-0 .lepopup-element-html-content {min-height:160px;}&lt;/style&gt;&lt;div class=lepopup-inline style=&#34;margin: 0 auto;&#34;&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-E8THO4Utvx9w198Y lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=E8THO4Utvx9w198Y data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=1 data-xd=off data-width=820 data-height=430 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:820px;height:430px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:820px;height:430px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-2 lepopup-element-rectangle&#34; data-type=rectangle data-top=0 data-left=0 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:501;top:0px;left:0px;width:820px;height:430px;&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-3 lepopup-element-html&#34; data-type=html data-top=7 data-left=10 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:502;top:7px;left:10px;width:797px;height:73px;&gt;&lt;div class=lepopup-element-html-content&gt;Do you want to know how to develop your skillset to become a &lt;span style=&#34;color: #CAB43D; text-shadow: 1px 1px #835D5D;&#34;&gt;Java Rockstar?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-4 lepopup-element-html&#34; data-type=html data-top=83 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:503;top:83px;left:308px;width:473px;height:23px;&gt;&lt;div class=lepopup-element-html-content&gt;Subscribe to our newsletter to start Rocking &lt;span style=&#34;text-decoration: underline;&#34;&gt;right now!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-5 lepopup-element-html&#34; data-type=html data-top=107 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:504;top:107px;left:308px;width:473px;height:24px;&gt;&lt;div class=lepopup-element-html-content&gt;To get you started we give you our best selling eBooks for &lt;span style=&#34;color:#e01404; text-shadow: 1px 1px #C99924; font-size: 15px;&#34;&gt;FREE!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-6 lepopup-element-html&#34; data-type=html data-top=136 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:505;top:136px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;1.&lt;/span&gt; JPA Mini Book&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-7 lepopup-element-html&#34; data-type=html data-top=156 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:506;top:156px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;2.&lt;/span&gt; JVM Troubleshooting Guide&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-8 lepopup-element-html&#34; data-type=html data-top=176 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:507;top:176px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;3.&lt;/span&gt; JUnit Tutorial for Unit Testing&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-9 lepopup-element-html&#34; data-type=html data-top=196 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:508;top:196px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;4.&lt;/span&gt; Java Annotations Tutorial&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-10 lepopup-element-html&#34; data-type=html data-top=216 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:509;top:216px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;5.&lt;/span&gt; Java Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-11 lepopup-element-html&#34; data-type=html data-top=236 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:510;top:236px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;6.&lt;/span&gt; Spring Interview Questions&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-12 lepopup-element-html&#34; data-type=html data-top=256 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:511;top:256px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;span style=&#34;font-weight: bold;&#34;&gt;7.&lt;/span&gt; Android UI Design&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-13 lepopup-element-html&#34; data-type=html data-top=282 data-left=308 data-animation-in=bounceInDown data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:512;top:282px;left:308px;width:473px;height:18px;&gt;&lt;div class=lepopup-element-html-content&gt;and many more ....&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-14&#34; data-type=email data-deps data-id=14 data-top=305 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:513;top:305px;left:308px;width:473px;height:36px;&gt;&lt;div class=lepopup-input&gt;&lt;input type=email name=lepopup-14 class=lepopup-ta-left placeholder=&#34;Enter your e-mail...&#34; autocomplete=email data-default aria-label=&#34;Email Field&#34; oninput=lepopup_input_changed(this); onfocus=lepopup_input_error_hide(this);&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-15&#34; data-type=checkbox data-deps data-id=15 data-top=344 data-left=308 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:514;top:344px;left:308px;width:160px;&gt;&lt;div class=&#34;lepopup-input lepopup-cr-layout-1 lepopup-cr-layout-left&#34;&gt;&lt;div class=&#34;lepopup-cr-container lepopup-cr-container-medium lepopup-cr-container-left&#34;&gt;&lt;div class=lepopup-cr-box&gt;&lt;input class=&#34;lepopup-checkbox lepopup-checkbox-classic lepopup-checkbox-medium&#34; type=checkbox name=lepopup-15[] id=lepopup-checkbox-a1qQifxFkS87R3x9-14-0 value=on data-default=off onchange=lepopup_input_changed(this);&gt;&lt;label for=lepopup-checkbox-a1qQifxFkS87R3x9-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-cr-label lepopup-ta-left&#34;&gt;&lt;label for=lepopup-checkbox-a1qQifxFkS87R3x9-14-0 onclick=lepopup_input_error_hide(this);&gt;&lt;/label&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-16 lepopup-element-html&#34; data-type=html data-top=344 data-left=338 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:515;top:344px;left:338px;width:350px;height:5px;&gt;&lt;div class=lepopup-element-html-content&gt;I agree to the &lt;a href=https://www.javacodegeeks.com/about/terms-of-use target=_blank&gt;Terms&lt;/a&gt; and &lt;a href=https://www.javacodegeeks.com/about/privacy-policy target=_blank&gt;Privacy Policy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-17&#34; data-type=button data-top=372 data-left=308 data-animation-in=bounceIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:516;top:372px;left:308px;width:85px;height:37px;&gt;&lt;a class=&#34;lepopup-button lepopup-button-zoom-out&#34; href=https://www.javacodegeeks.com/feed/ onclick=&#34;return lepopup_submit(this);&#34; data-label=&#34;Sign up&#34; data-loading=Loading...&gt;&lt;span&gt;Sign up&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-element lepopup-element-19 lepopup-element-html&#34; data-type=html data-top=67 data-left=-15 data-animation-in=fadeIn data-animation-out=fadeOut style=animation-duration:0ms;animation-delay:0ms;z-index:518;top:67px;left:-15px;width:320px;height:363px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;img data-lazyloaded=1 src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png decoding=async data-src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;noscript&gt;&lt;img decoding=async src=https://www.javacodegeeks.com/wp-content/uploads/2015/01/books_promo.png alt width=320 height=363&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;lepopup-form lepopup-form-60 lepopup-form-E8THO4Utvx9w198Y lepopup-form-icon-inside lepopup-form-position-middle-right&#34; data-session=0 data-id=E8THO4Utvx9w198Y data-form-id=60 data-slug=7lQM6oyWL5bTm5lw data-title=&#34;Under the Post Inline&#34; data-page=confirmation data-xd=off data-width=420 data-height=320 data-position=middle-right data-esc=off data-enter=on data-disable-scrollbar=off style=display:none;width:420px;height:320px; onclick=event.stopPropagation();&gt;&lt;div class=lepopup-form-inner style=width:420px;height:320px;&gt;&lt;div class=&#34;lepopup-element lepopup-element-0 lepopup-element-html&#34; data-type=html data-top=80 data-left=70 data-animation-in=bounceInDown data-animation-out=fadeOutUp style=animation-duration:1000ms;animation-delay:0ms;z-index:500;top:80px;left:70px;width:280px;height:160px;&gt;&lt;div class=lepopup-element-html-content&gt;&lt;h4 style=&#34;text-align: center; font-size: 18px; font-weight: bold;&#34;&gt;Thank you!&lt;/h4&gt;&lt;p style=&#34;text-align: center;&#34;&gt;We will contact you soon.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;input type=hidden id=lepopup-logic-E8THO4Utvx9w198Y value=[]&gt;&lt;/div&gt;&lt;div class=&#34;post-bottom-meta post-bottom-tags post-tags-classic&#34;&gt;&lt;div class=post-bottom-meta-title&gt;&lt;span class=tie-icon-tags aria-hidden=true&gt;&lt;/span&gt;Tags&lt;/div&gt;&lt;span class=tagcloud&gt;&lt;a href=https://www.javacodegeeks.com/tag/deals rel=tag&gt;Deals&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=post-extra-info&gt;&lt;div class=theiaStickySidebar&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=clearfix&gt;&lt;/div&gt;</description>
      <author>Java Code Geeks</author>
      <guid>https://www.javacodegeeks.com/2026/10/learn-secure-sdlc-practices-and-the-rest-of-the-cissp-domains-for-19-99.html</guid>
      <pubDate>Tue, 20 Oct 2026 10:30:30 +0000</pubDate>
    </item>
  </channel>
</rss>