<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: IgorIOT</title>
    <description>The latest articles on Forem by IgorIOT (@igoriot).</description>
    <link>https://forem.com/igoriot</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3760784%2F5e3fc0c5-4eab-49c7-ae85-78cba32d6280.jpeg</url>
      <title>Forem: IgorIOT</title>
      <link>https://forem.com/igoriot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/igoriot"/>
    <language>en</language>
    <item>
      <title>Bringing Java Closer to Education: A Community-Driven Initiative</title>
      <dc:creator>IgorIOT</dc:creator>
      <pubDate>Wed, 22 Apr 2026 09:17:35 +0000</pubDate>
      <link>https://forem.com/igoriot/bringing-java-closer-to-education-a-community-driven-initiative-30hk</link>
      <guid>https://forem.com/igoriot/bringing-java-closer-to-education-a-community-driven-initiative-30hk</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1wxahu339o5w82oiyt7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1wxahu339o5w82oiyt7.jpg" alt="AI-generated image depicting the role of Java in education 01" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Story Horse?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Java has long been one of the most powerful, stable, and widely-used programming languages in the world. Yet when it comes to education, especially for beginners, schools, and coding clubs, it has often been overlooked in favor of languages perceived as simpler or more modern.&lt;/p&gt;

&lt;p&gt;That’s changing now.&lt;/p&gt;

&lt;p&gt;A new community initiative called the &lt;strong&gt;Foojay Java in Education Catalog&lt;/strong&gt; is working to change perceptions and make high-quality Java learning resources much easier to find and use.&lt;/p&gt;

&lt;p&gt;The idea for this project was born from my own desire to give Java the recognition it deserves in the educational space. I started the Java Education Catalog initiative with the goal of creating a central hub for high-quality Java learning resources. Fortunately, the Foojay team loved the vision and fully embraced the idea, turning it into a true community-driven project with great visibility and support from the Java ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdybwa24veps3opd9fv8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdybwa24veps3opd9fv8a.png" alt="Foojay" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One Place for All Java Learning Resources
&lt;/h2&gt;

&lt;p&gt;The initiative’s main goal is simple but powerful: bring together Java and education-related materials in one central, easy-to-access place.&lt;/p&gt;

&lt;p&gt;Instead of scattered tutorials, videos, books, and tools across the internet, the catalog creates a curated hub where students, teachers, coding club mentors, and self-learners can discover excellent Java educational content.&lt;/p&gt;

&lt;p&gt;You can explore the live catalog here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://education.foojay.social/" rel="noopener noreferrer"&gt;https://education.foojay.social/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is fully open and community-driven. The GitHub repository that powers it is available at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/foojayio/java-education-catalog" rel="noopener noreferrer"&gt;https://github.com/foojayio/java-education-catalog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everyone is invited to contribute great resources they know or create.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenging Outdated Perceptions
&lt;/h2&gt;

&lt;p&gt;At the same time, this initiative directly addresses some old myths about Java:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java is no longer slow or overly verbose.&lt;/li&gt;
&lt;li&gt;Modern Java is clean, concise, productive, and genuinely enjoyable to write.&lt;/li&gt;
&lt;li&gt;It is an excellent language for learning programming fundamentals and object-oriented concepts properly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to position Java as a strong, future-proof choice for beginners,  not just for enterprise, but for teaching core programming skills that last a lifetime.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going Beyond the Catalog: Real-World Impact
&lt;/h2&gt;

&lt;p&gt;In parallel with building the catalog, there is active work to bring Java into physical computing and global coding clubs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code Clubs and CoderDojo: Efforts are underway to introduce Java as a viable learning path in Code Clubs and CoderDojo communities worldwide. The aim is to make structured, high-quality Java materials naturally available to mentors and young learners.&lt;/li&gt;
&lt;li&gt;Raspberry Pi: In collaboration with the Pi4J team (the excellent Java library for Raspberry Pi), work is progressing to make the Java experience on the Raspberry Pi as smooth and beginner-friendly as Python. The vision is to lower the barriers so that running Java applications on physical hardware feels seamless.&lt;/li&gt;
&lt;li&gt;Astro Pi: The famous Astro Pi program currently sends only Python code to the International Space Station. I’m actively advocating for the inclusion of Java in this program. The dream? Soon we’ll be able to say that Java has been sent to space, and who knows, maybe even Jakarta EE running on the ISS one day.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Java’s combination of readability, strong typing, vast ecosystem, and long-term stability makes it incredibly valuable for education. By making these resources visible and accessible, we can help more young people, and their teachers, discover the real power and joy of Java from the very beginning of their coding journey.&lt;/p&gt;

&lt;p&gt;This is not a top-down project. It belongs to the entire Java community. Whether you’re an educator, developer, content creator, or just someone who loves Java, your contributions are welcome and needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fajvhdbukj9vbsluujz30.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fajvhdbukj9vbsluujz30.jpg" alt="AI-generated image depicting the role of Java in education 02" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Visit the catalog: &lt;a href="//education.foojay.social"&gt;education.foojay.social&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Check the GitHub repository and contribute resources: &lt;a href="//github.com/foojayio/java-education-catalog"&gt;github.com/foojayio/java-education-catalog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Read the original announcement: &lt;a href="https://foojay.io/today/bringing-java-closer-to-education-a-community-driven-initiative/" rel="noopener noreferrer"&gt;Bringing Java Closer to Education&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you believe Java deserves a stronger presence in education, join the movement. Let’s show the next generation that Java is not just enterprise-ready, it’s future-ready, beginner-friendly, and exciting.&lt;/p&gt;

&lt;p&gt;Together, we can grow Java where it matters most: at the beginning.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>learning</category>
      <category>resources</category>
    </item>
    <item>
      <title>Stop Saying Java is Slow</title>
      <dc:creator>IgorIOT</dc:creator>
      <pubDate>Thu, 05 Mar 2026 16:59:33 +0000</pubDate>
      <link>https://forem.com/igoriot/stop-saying-java-is-slow-15nh</link>
      <guid>https://forem.com/igoriot/stop-saying-java-is-slow-15nh</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yizkc08ck44nvucqo8c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yizkc08ck44nvucqo8c.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How goes the battle?&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 25 Performance: Faster Starts, Smarter Memory, Better GC
&lt;/h2&gt;

&lt;p&gt;Java 25 isn’t just another incremental release. It brings meaningful performance improvements that directly impact how fast your applications start, how much memory they consume, and how efficiently they manage garbage collection.&lt;/p&gt;

&lt;p&gt;Let’s break down what changed, and why it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Faster Startup with the New AOT Cache
&lt;/h2&gt;

&lt;p&gt;One of the most exciting additions in Java 25 is the new Ahead-of-Time (AOT) cache.&lt;/p&gt;

&lt;p&gt;Traditionally, when a Java application starts, the Just-In-Time (JIT) compiler kicks in and begins optimizing code as it runs. While this leads to excellent long-term performance, it adds overhead during startup.&lt;/p&gt;

&lt;p&gt;Java 25 changes that.&lt;/p&gt;

&lt;p&gt;With the AOT cache (introduced through JEPs 483 and 514), you can perform a “training run” of your application. During this run, the JVM observes which classes and methods are actually used. It then generates an optimized cache specifically for that execution profile.&lt;/p&gt;

&lt;p&gt;Later, when the application starts in production, the JVM loads this prebuilt cache directly into memory. The result? Much less JIT work at startup, and dramatically faster boot times.&lt;br&gt;
In large applications with many classes, startup times can improve by up to 50%.&lt;br&gt;
And it gets better.&lt;br&gt;
JEP 515 enhances the AOT cache by incorporating profiling data collected by the JIT itself. That means the cache isn’t just precompiled, it’s optimized based on real runtime behavior. Smarter data, better performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/483" rel="noopener noreferrer"&gt;JEP 483&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/514" rel="noopener noreferrer"&gt;JEP 514&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/515" rel="noopener noreferrer"&gt;JEP 515&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Smaller Object Headers, Lower Memory Usage
&lt;/h2&gt;

&lt;p&gt;Java 25 also takes aim at memory efficiency with Compact Object Headers (JEP 519).&lt;/p&gt;

&lt;p&gt;Every object in Java carries a header containing metadata used by the JVM. While small individually, these headers add up quickly in systems managing millions of objects.&lt;br&gt;
Java 25 optimizes and reduces the size of these headers, decreasing overall memory footprint.&lt;/p&gt;

&lt;p&gt;Why does this matter?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications consume less memory&lt;/li&gt;
&lt;li&gt;The Garbage Collector has less work to do&lt;/li&gt;
&lt;li&gt;Performance improves under memory pressure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In extensive production testing across hundreds of services, memory usage dropped by up to 20% in some workloads. Processing time improved by up to 10%, and GC cycles were up to 15% less frequent.&lt;/p&gt;

&lt;p&gt;That’s not theoretical, that’s production-grade validation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/450" rel="noopener noreferrer"&gt;JEP 450&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/519" rel="noopener noreferrer"&gt;JEP 519&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ♻️ Garbage Collection Keeps Evolving
&lt;/h2&gt;

&lt;p&gt;Java has always offered multiple garbage collectors for different workloads. In Java 25, all major collectors receive meaningful upgrades.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shenandoah Goes Generational&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shenandoah is known for low-latency performance, minimizing pause times by performing most of its work concurrently with the application.&lt;/p&gt;

&lt;p&gt;With JEP 521, Shenandoah now supports a generational mode. Generational GC typically performs better because most objects die young — and now Shenandoah can take advantage of that reality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZGC Embraces Generational Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ZGC also moves forward with a generational implementation (JEP 474). In fact, the non-generational mode has been deprecated. Since generational approaches generally provide better performance characteristics, future innovation will focus there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;G1 Gets Smarter About JNI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;G1, still the default GC in Java 25, also improves through JEP 423. The focus here is reducing pause times during operations involving JNI (Java Native Interface).&lt;/p&gt;

&lt;p&gt;For applications interacting with native code, this means smoother performance and fewer unexpected delays.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/423" rel="noopener noreferrer"&gt;JEP 423&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/474" rel="noopener noreferrer"&gt;JEP 474&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/521" rel="noopener noreferrer"&gt;JEP 521&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Big Picture
&lt;/h2&gt;

&lt;p&gt;Java 25 isn’t flashy, it’s practical.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster startup with AOT caching&lt;/li&gt;
&lt;li&gt;Lower memory usage with compact object headers&lt;/li&gt;
&lt;li&gt;Smarter, more efficient garbage collection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren’t cosmetic changes. They directly impact cloud deployments, containerized applications, microservices, and large enterprise systems.&lt;/p&gt;

&lt;p&gt;Modern Java keeps evolving, and it’s becoming faster, leaner, and more production-optimized with every release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffslgontypnsdmmkg6bg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffslgontypnsdmmkg6bg7.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Picture 01: Duke speedster inspired&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Java 25 represents a major leap forward in making the JVM more efficient and developer-friendly than ever before. With the new AOT caching system dramatically slashing startup times (up to 50% in many cases), Compact Object Headers shrinking memory usage by up to 20%, and meaningful refinements to G1, ZGC, and Shenandoah, the platform is now faster to launch, lighter on resources, and more responsive under load, all while maintaining the reliability and scalability Java is known for. Whether you’re building cloud-native microservices, real-time applications, or large-scale enterprise systems, these improvements mean less waiting, lower costs, and smoother performance right out of the gate. Java 25 isn’t just an incremental update, it’s a clear signal that the language continues to evolve to meet modern demands. Time to upgrade and experience the difference yourself!&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://inside.java/2025/10/20/jdk-25-performance-improvements/" rel="noopener noreferrer"&gt;https://inside.java/2025/10/20/jdk-25-performance-improvements/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gillius.org/blog/2025/10/java-25-framework-startup.html" rel="noopener noreferrer"&gt;https://gillius.org/blog/2025/10/java-25-framework-startup.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>news</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop Saying Java Is Verbose</title>
      <dc:creator>IgorIOT</dc:creator>
      <pubDate>Sun, 15 Feb 2026 21:23:06 +0000</pubDate>
      <link>https://forem.com/igoriot/stop-saying-java-is-verbose-127i</link>
      <guid>https://forem.com/igoriot/stop-saying-java-is-verbose-127i</guid>
      <description>&lt;p&gt;How’s it going there?&lt;/p&gt;

&lt;p&gt;Whether you’re a student learning your first “Hello, World” or an experienced developer writing quick prototypes, Java 25 streamlines the experience. For decades, this was a barrier. Beginners had to learn about classes, static methods, arrays, String, System.out, packages, imports, the main keyword's meaning, and public access modifiers before they could even print text.&lt;/p&gt;

&lt;p&gt;But it is not Java 25 that brings it all; it's been a while since a lot of stuff has been happening. Let's see some of the evolution.&lt;/p&gt;

&lt;p&gt;In almost all of those JEP summaries, you can see this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Evolve the Java language so that students can write their first programs without needing to understand language features designed for large programs.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Java 21 – Unnamed Classes and Instance Main Methods (JEP 445)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/445" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/445&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unnamed classes: Programs could omit the class declaration entirely; the compiler would wrap top-level methods into an unnamed class.&lt;/p&gt;

&lt;p&gt;Instance main methods introduced: You no longer need &lt;em&gt;public static void main(String[] args)&lt;/em&gt;. Instead, you can declare &lt;em&gt;void main()&lt;/em&gt; or &lt;em&gt;void main(String[] args)&lt;/em&gt; as an instance method inside a class.&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 22 – Implicitly Declared Classes and Instance Main Methods (JEP 463)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/463" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/463&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The “unnamed classes” concept was replaced in Java 22 with a more streamlined and intuitive model: implicitly declared classes, or implicit classes. Instead of requiring a special classification, the compiler now treats any top-level code without an explicit class declaration as belonging to a standard class automatically generated by the compiler. This class is given a host-determined name (the name of your .java file), is final, belongs to the unnamed package, extends Object, and cannot implement interfaces—yet functions like a regular class in behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 23 – Implicitly Declared Classes and Instance Main Methods (JEP 477)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/477" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/477&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No need to reference System.out and wonder what it means. They introduced a new IO class with print/read features (print, println, readln), and the amazing part is that these methods are auto-imported, so you can directly write &lt;em&gt;println("Hello, World!");&lt;/em&gt;. In addition, all public classes in java.base are now auto-imported, making types like List, File, or BigDecimal usable with zero ceremony.&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 24 – Simple Source Files and Instance Main Methods (JEP 495)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/495" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/495&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It looks like nothing has been changed in the code feature here, but they decided to unify the feature under the name simple source files instead of implicit classes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 25 – Compact Source Files and Instance Main Methods (JEP 512)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/512" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/512&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The static methods originally provided in java.io.IO (println, …) have been moved to java.lang.IO (and since everything in java.lang is imported by default, they are now more accessible).&lt;br&gt;
These operations are now based on System.out/System.in rather than the Console API. However, the static methods of the IO class are no longer implicitly imported into compact source files. This means that method calls must explicitly reference the class.&lt;/p&gt;

&lt;p&gt;Compact source files automatically access all public classes and interfaces from java.base module (i.e., import module java.base;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Java 25 – Flexible Constructor Bodies (JEP 513)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openjdk.org/jeps/513" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/513&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One important part of this flow is constructor chaining. If a class has a parent class, Java ensures that the parent constructor runs before the child constructor logic. This guarantees that the object is built step by step, starting from the top of the inheritance hierarchy.&lt;/p&gt;

&lt;p&gt;This improves this situation because it allows certain statements to appear before #super() or #this() calls, making constructors more expressive and readable.&lt;/p&gt;

&lt;p&gt;This is not an exhaustive list, and I really suggest you go there and try out some examples of each one to really get a good understanding of those benefits.&lt;/p&gt;

&lt;h2&gt;
  
  
  VSCode Plugin
&lt;/h2&gt;

&lt;p&gt;Did you know that you can run a simple Hello World in one line of code without knowing anything?&lt;/p&gt;

&lt;p&gt;There's a nice &lt;a href="https://inside.java/2025/12/09/new-vscode-extension/" rel="noopener noreferrer"&gt;VSCode plugin&lt;/a&gt; that also introduces Interactive Java Notebooks (IJNB), which allow you to create notebooks that combine formatted text (Markdown), executable Java code, and execution results in any order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's do a simple test;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You just need to install VSCode and install the plugin; that is it. If you don’t have Java on your machine, the plugin will ask you to auto-install it for you. Of course, choose Java 25.&lt;br&gt;
Open a new notebook, and that’s it: a Java Hello World in one line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkf37wis4lk9dun6fpp1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkf37wis4lk9dun6fpp1.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sample Code 1: Hello World in One Line&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Launching Simple Source-Code Programs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.java/learn/launch-simple-source-code-programs/" rel="noopener noreferrer"&gt;Another nice point here.&lt;/a&gt; This can be a great way to learn how to use Java or explore new features within the Java API, without having to go through the cruft of compiling and then executing code. A simple Java as a JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39wmkayrvx02z1r3lxlz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39wmkayrvx02z1r3lxlz.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sample Code 2: Hello World from Terminal&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To really understand what’s happening under the hood here, I suggest using the &lt;a href="https://docs.oracle.com/en/java/javase/11/tools/javap.html" rel="noopener noreferrer"&gt;javap&lt;/a&gt; tool to disassemble the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flt6ox577ndy0isj8b8ca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flt6ox577ndy0isj8b8ca.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sample Code 3: Javap Disassemble the File Result&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The output shows that the Java compiler automatically generated a FileName class with the default constructor. This behavior shows that while the syntax has been simplified, the underlying Java class structure is still preserved. In short, the Java compiler writes the class for us with the class name named after the source file name.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/lGAYLVk5HaY"&gt;
  &lt;/iframe&gt;


&lt;br&gt;
&lt;em&gt;Video: Dan Vega Talking About Java Is Verbose Back in 2024&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Call to Action
&lt;/h2&gt;

&lt;p&gt;Go there and try to explore those things. Let me know what your thoughts are. Any JEP or anything else that I forgot to add in this list? I would love to hear from you.&lt;/p&gt;

&lt;p&gt;From now on, if you see anyone saying that Java is verbose, you can simply send this blog post link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Java evolution shows a clear vision: making Java simpler for small programs, powerful for big ones.&lt;/p&gt;

&lt;p&gt;Java 25 marks a turning point. With compact source files and instance main methods, Java finally aligns with beginner expectations while preserving its scalability for enterprise use, a game-changing feature that dramatically reduces boilerplate code for simple programs. With those updates, Java finally offers a beginner-friendly way to write code without the overhead of explicit classes, public static void main, or import statements—making the language more accessible than ever.&lt;/p&gt;

&lt;p&gt;Remember, you can have an if-else in one line; you can use the "Ternary Operator", but this might translate into more difficult code to read and understand. So a lower number of lines does not necessarily mean better code. Sometimes being verbose is a good thing.&lt;/p&gt;

&lt;p&gt;There is much more to explore regarding Java in a single file, Java as scripts in terminal, and Java in a notebook.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jdk.java.net/25/" rel="noopener noreferrer"&gt;All Java 25 info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I really recommend this 2022 &lt;a href="https://openjdk.org/projects/amber/design-notes/on-ramp" rel="noopener noreferrer"&gt;blog&lt;/a&gt; from Brian Goetz that might be the beginning of the JEP 512 initiative&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cr.openjdk.org/~gbierman/jep445/jep445-20230502/specs/unnamed-classes-instance-main-methods-jls.html" rel="noopener noreferrer"&gt;The Unnamed Classes Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javapro.io/2025/11/27/behind-the-bytecode-exploring-java-features-with-javap-tool/" rel="noopener noreferrer"&gt;JavaP and More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you know about “JEP 519: Compact Object Headers” that comes with the idea to reduce the object header size? Does this mean that we can say that Java is not slow anymore? Stay tuned here for the next blog “Stop Saying Java Is Slow.”&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Welcome to IgorIOT (a.k.a. I Go Riot)</title>
      <dc:creator>IgorIOT</dc:creator>
      <pubDate>Mon, 09 Feb 2026 00:19:33 +0000</pubDate>
      <link>https://forem.com/igoriot/welcome-to-igoriot-aka-i-go-riot-1kng</link>
      <guid>https://forem.com/igoriot/welcome-to-igoriot-aka-i-go-riot-1kng</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey everyone!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve decided it’s time to start a new chapter. I’m officially relaunching my blog under a new name: IgorIOT; Yes, that’s “Igor I-O-T”, but also my playful way of saying “I Go Riot”.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the change?
&lt;/h2&gt;

&lt;p&gt;My old blog &lt;a href="http://www.igfasouza.com/blog/" rel="noopener noreferrer"&gt;igfasouza.com/blog&lt;/a&gt; has been a place where I’ve explored everything from development to data engineering. Over the last couple of years, most of my public content, especially on social media, has focused on Apache Kafka and streaming platforms. &lt;/p&gt;

&lt;p&gt;This new blog will focus primarily on Java and Raspberry Pi, exploring how modern Java can be used in hands-on projects, learning environments, and real-world experiments with affordable hardware. &lt;/p&gt;

&lt;p&gt;As part of this change, I’ve also created a separate space dedicated exclusively to Apache Kafka, where I’ll continue publishing in-depth posts and sharing practical insights. That Kafka-focused space will be accompanied by its own &lt;a href="https://topicigor.substack.com/p/hello-world-welcome-to-topic-igor" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;, so readers interested in event-driven architectures and streaming platforms can follow that content independently.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is IgorIOT?
&lt;/h2&gt;

&lt;p&gt;IgorIOT is more than a name; It’s a blend of who I am as a developer and what excites me outside of work.&lt;br&gt;
While “IoT” is in the name (and yes, it also sounds like “I Go Riot”), this blog is not limited to just Internet of Things content. It’s a space where I explore the crossover between my professional experience and personal passions.&lt;/p&gt;

&lt;p&gt;In addition to technical content, this blog will also be a place where I share updates and ideas related to my initiative around Java in Education. The goal is to explore how Java can be made more accessible and engaging for students, educators, and coding communities, using modern tools and hands-on approaches. I’ll use this space to document progress, discuss challenges, and highlight community-driven efforts to bring Java closer to learning environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvxprt8mrjp0xpp07sow.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvxprt8mrjp0xpp07sow.jpg" alt=" " width="456" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that, my &lt;a href="http://www.igfasouza.com/blog/" rel="noopener noreferrer"&gt;igfasouza blog&lt;/a&gt; will be taken offline soon. However, none of the content will be lost. I’ll be saving and maintaining all posts and materials in a &lt;a href="https://github.com/igfasouza" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; repository. This way, the content will remain accessible, preserved, and open for anyone who wants to explore or reuse it in the future. I’ll share the GitHub link once everything is organized. I’m not sure yet if I’ll go all the way and set up a Hugo site on GitHub for the old blog, but at least the content will be preserved in some form.&lt;/p&gt;

&lt;p&gt;Thanks to everyone who has followed and supported the blog over the years!&lt;/p&gt;

</description>
      <category>iot</category>
      <category>java</category>
      <category>news</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
