Java: Then and now

Hi, I’m Lilavati Mhaske — a tech enthusiast, Java learner, and aspiring full stack developer. I created this blog to document and share my journey through Full Stack Java development, from the fundamentals to frameworks like Spring Boot, REST APIs, databases, and frontend integration. I believe in learning by doing—and explaining! Whether you're just starting out or brushing up your Java skills, I hope my posts make your learning smoother and more enjoyable. Let’s grow together, one line of code at a time. ☕💻
"Write Once, Run Anywhere" — this was the vision behind Java, and even decades later, it remains a cornerstone in software development.
Welcome to the first post of my Full Stack Java learning series! I’m diving deep into Full Stack Java, and to truly appreciate where we’re heading, it’s important to understand where it all started. So here’s a look at the history, purpose, and power of Java.
The Beginning of Java
Java was officially introduced by Sun Microsystems on January 23, 1996. But the story begins back in 1991, when a team of 30 engineers led by James Gosling and Patrick Naughton started working on a project called Green.
Their aim?
To create a platform-independent, simple, and reliable programming language for smart devices and embedded systems.
The language was originally named Oak, but due to trademark issues, it was later renamed Java, inspired by Java coffee.
Java's Journey & Versions
Over the years, Java evolved rapidly:
Versions 1 to 6 were developed under Sun Microsystems.
From version 7 onwards, Oracle took over after acquiring Sun Microsystems.
| Version | Release Year | Highlights |
| Java 1.0 | 1996 | First official release |
| Java 2 (1.2) | 1998 | Swing, Collections Framework |
| Java 5 | 2004 | Generics, Enums, Annotations |
| Java 8 | 2014 | Lambdas, Streams API |
| Java 9 | 2017 | Modular system (Project Jigsaw) |
| Java 11 | 2018 | LTS; New HTTP Client, local-variable syntax |
| Java 14 | 2020 | Switch expressions, Records (preview) |
| Java 17 | 2021 | LTS; Sealed classes, Pattern matching (preview) |
| Java 21 | 2023 | LTS; Virtual threads, Sequenced collections |
| Java 22 | 2024 | String templates, Unnamed patterns (preview) |
| Java 23 | 2024 (Expected) | Non-LTS release |
| Java 24 | 2025 (March) | Latest non-LTS version (as of April 2025) |
Core Goals Behind Java
When the team designed Java, they had three main objectives:
Simple Programming Language
Less execution time → More performance
Less memory usage → Reduced cost
Less power consumption → Lower maintenance
It removes complexity like manual memory management and pointers, offering automatic Garbage Collection and a clean, readable syntax.
Tightly Coded Programming Language
Java lets you write fewer lines of code while maintaining clarity and structure. Let’s compare how a simple stack is implemented across C++, Java, and Python.
Stack Implementation Comparison
Use Case: push(), pop(), and peek() operations
In C++:
#include <stack>
#include <iostream>
using namespace std;
int main() {
stack<string> s;
s.push("AAA");
s.pop();
cout << s.top() << endl;
}
Why not C++?
Needs extra boilerplate like #include, using namespace std
Manual memory handling in many cases
STL is powerful but less beginner-friendly
In Java:
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<String> s = new Stack<>();
s.push("AAA");
s.pop();
System.out.println(s.peek());
}
}
Why Java?
Clean and readable syntax
Strong type safety using generics (Stack<String>)
Automatic garbage collection
Built-in robust libraries and consistent method naming
In Python:
stack = []
stack.append("AAA")
stack.pop()
print(stack[-1] if stack else "Empty")
Why not Python for everything?
Very concise and beginner-friendly
But dynamically typed, which can cause runtime bugs
Less structure compared to Java for large-scale systems
Summary: Why Java is a Good Balance
| Language | Pros | Cons |
| C++ | Performance, control | Verbose, manual memory handling |
| Python | Concise, simple | Dynamic typing, less strict |
| Java | Strongly typed, readable, scalable | Slightly more verbose than Python, but ideal for real-world projects |
Java offers a powerful balance between performance, safety, and readability—perfect for building enterprise-grade, maintainable systems.
Architecturally Neutral
Java is designed to be platform-independent.
Java code is compiled into bytecode, which runs on the Java Virtual Machine (JVM). This means you can write code on Windows and run it on Linux, macOS, or any device that has a JVM.
Hence the famous phrase:
“Write Once, Run Anywhere.”
Why Java Still Matters in 2025
Used heavily in enterprise applications
Powers Android apps
Essential for cloud-native apps
Robust ecosystems: Spring, Hibernate, Maven, etc.
Massive community and long-term stability
Conclusion
From a lab project at Sun Microsystems to one of the most used programming languages in the world, Java has had a remarkable journey.
This was just the start of my Full Stack Java journey. In the next post, I’ll explore Core Java concepts — variables, data types, operators, and control flow.
Let me know in the comments — when did you first encounter Java? What’s your favorite Java feature?
Stay tuned for more posts as I dive deeper into backend, Spring Boot, databases, and frontend integration!


