<?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>DEV Community: Jun Hao</title>
    <description>The latest articles on DEV Community by Jun Hao (@junhao).</description>
    <link>https://dev.to/junhao</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%2F3953558%2F8601565c-ea15-4bed-8493-202fbfa0df69.png</url>
      <title>DEV Community: Jun Hao</title>
      <link>https://dev.to/junhao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/junhao"/>
    <language>en</language>
    <item>
      <title>Why It Still Dominates Frontend Development</title>
      <dc:creator>Jun Hao</dc:creator>
      <pubDate>Tue, 02 Jun 2026 11:22:10 +0000</pubDate>
      <link>https://dev.to/junhao/why-it-still-dominates-frontend-development-4lkg</link>
      <guid>https://dev.to/junhao/why-it-still-dominates-frontend-development-4lkg</guid>
      <description>&lt;p&gt;React continues to be one of the most popular frontend libraries because it balances flexibility, performance, and a massive ecosystem.&lt;/p&gt;

&lt;p&gt;Here’s why developers and companies keep choosing React:&lt;/p&gt;

&lt;p&gt;✅ Component-Based Architecture&lt;br&gt;
Build reusable UI components that make applications easier to maintain and scale.&lt;/p&gt;

&lt;p&gt;✅ Virtual DOM Performance&lt;br&gt;
React efficiently updates only what changes, resulting in fast and responsive user interfaces.&lt;/p&gt;

&lt;p&gt;✅ Rich Ecosystem&lt;br&gt;
From routing and state management to testing and deployment, React has mature solutions for nearly every requirement.&lt;/p&gt;

&lt;p&gt;✅ Strong Community Support&lt;br&gt;
Millions of developers contribute tutorials, libraries, and tools, making it easier to solve problems and accelerate development.&lt;/p&gt;

&lt;p&gt;✅ Cross-Platform Development&lt;br&gt;
With React Native, teams can leverage React knowledge to build mobile applications for both iOS and Android.&lt;/p&gt;

&lt;p&gt;✅ AI-Ready Frontends&lt;br&gt;
React integrates seamlessly with modern AI workflows, real-time applications, streaming responses, and interactive user experiences.&lt;/p&gt;

&lt;p&gt;Modern React Best Practices&lt;br&gt;
Prefer functional components and hooks.&lt;br&gt;
Use server-side rendering or React Server Components when appropriate.&lt;br&gt;
Optimize rendering with memoization only when needed.&lt;br&gt;
Keep state as close as possible to where it is used.&lt;br&gt;
Focus on accessibility and performance from day one.&lt;/p&gt;

&lt;p&gt;React isn't just a UI library anymore—it's the foundation for many of today's web applications, AI products, SaaS platforms, and enterprise systems.&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Understanding the Three Key Stacks in Java</title>
      <dc:creator>Jun Hao</dc:creator>
      <pubDate>Tue, 02 Jun 2026 04:53:41 +0000</pubDate>
      <link>https://dev.to/junhao/understanding-the-three-key-stacks-in-java-1hi</link>
      <guid>https://dev.to/junhao/understanding-the-three-key-stacks-in-java-1hi</guid>
      <description>&lt;p&gt;Java's execution model is built around three closely related stack structures that work together whenever a method runs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;JVM Stack (Thread Stack)
Every thread in Java gets its own JVM stack.
Responsibilities:
Tracks active method calls
Stores stack frames
Manages method entry and return&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
public static void main(String[] args) {&lt;br&gt;
    process();&lt;br&gt;
}&lt;br&gt;
static void process() {&lt;br&gt;
    validate();&lt;br&gt;
}&lt;br&gt;
static void validate() {&lt;br&gt;
}&lt;br&gt;
While validate() is running, the stack looks like:&lt;br&gt;
validate()&lt;br&gt;
process()&lt;br&gt;
main()&lt;br&gt;
As methods return, their frames are removed from the stack.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Local Variable Table&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each stack frame contains a local variable table.&lt;/p&gt;

&lt;p&gt;static int add(int a, int b) {&lt;br&gt;
    int sum = a + b;&lt;br&gt;
    return sum;&lt;br&gt;
}&lt;br&gt;
Conceptually:&lt;br&gt;
Slot 0 → a&lt;br&gt;
Slot 1 → b&lt;br&gt;
Slot 2 → sum&lt;br&gt;
Stores:&lt;br&gt;
Method parameters&lt;br&gt;
Local variables&lt;br&gt;
References to objects&lt;br&gt;
The size is determined when the method is compiled, making access extremely fast.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Operand Stack
The JVM is a stack-based virtual machine. Most bytecode instructions operate on the operand stack.
int x = 2;
int y = 3;
int z = x + y;
Behind the scenes:
push 2
push 3
add
store result
Execution:
[]
push 2 → [2]
push 3 → [2, 3]
add    → [5]
store  → []
Used for:
Arithmetic operations
Method argument passing
Intermediate results
Comparisons and branching
How They Work Together
Consider:
int result = add(10, 20);
Step 1: A new frame is pushed onto the JVM stack.
add()
main()
Step 2: Parameters are placed into the local variable table.
a = 10
b = 20
Step 3: Values are loaded onto the operand stack.
[10]
[10, 20]
[30]
Step 4: The result is returned and the frame is popped.
main()
Quick Summary
Structure   Scope   Purpose
JVM Stack   Per Thread  Tracks active method calls
Local Variable Table    Per Stack Frame Stores parameters and local variables
Operand Stack   Per Stack Frame Performs bytecode operations&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>computerscience</category>
      <category>java</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>type-level string parsing</title>
      <dc:creator>Jun Hao</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:25:50 +0000</pubDate>
      <link>https://dev.to/junhao/type-level-string-parsing-mif</link>
      <guid>https://dev.to/junhao/type-level-string-parsing-mif</guid>
      <description>&lt;p&gt;Parse and transform complex strings entirely within the type system while preserving accurate type inference.&lt;/p&gt;

&lt;p&gt;Key Challenges:&lt;br&gt;
1.Compile-Time String Analysis — TypeScript must understand string patterns before the code runs.&lt;br&gt;
2.Accurate Type Inference — Every transformation must remain fully type-safe and correctly inferred.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
