<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Probably Overthinking It</provider_name><provider_url>https://www.allendowney.com/blog</provider_url><author_name>AllenDowney</author_name><author_url>https://www.allendowney.com/blog/author/allendowney_6dbrc4/</author_url><title>Think Java, but interactive - Probably Overthinking It</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="Qn73STWWK4"&gt;&lt;a href="https://www.allendowney.com/blog/2026/08/22/think-java-but-interactive/"&gt;Think Java, but interactive&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://www.allendowney.com/blog/2026/08/22/think-java-but-interactive/embed/#?secret=Qn73STWWK4" width="600" height="338" title="&#x201C;Think Java, but interactive&#x201D; &#x2014; Probably Overthinking It" data-secret="Qn73STWWK4" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://www.allendowney.com/blog/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><description>The online version of Think Java now features interactive widgets that run the code examples in the browser. For readers, it means you can try out the examples, modify them, and test your code. And for us it means we can publish an interactive version of the book without providing servers. The widgets use java-runner, an in-browser Java editor and interpreter developed by Think Java co-author Chris Mayfield. java-runner implements a subset of Java with the features needed for most... Read More Read More</description></oembed>
