جیمز گاسلینگ زبان برنامه‌نویسی جاوا را در اواسط دهه‌ی 1990 ساخت. جاوا به خاطر ریزه‌کاری‌های هوشمندانه و خوش‌فهم بودن معماری‌‌اش خوب درخشید و بعد از محبوبیتی که با اپلت‌ها (Applet) و وب کسب کرد، به عنوان یک زبان قوی، قابل اطمینان و همه‌کاره برای سرورها و میان‌افزارها (Middleware) در نظر گرفته شد.

همچنین، جاوا آرام به تراشه‌های امبدد (Embedded، جاسازی شده) نفوذ کرد، Java Mobile Edition (Java ME) برای اجرای برنامه‌های کوچک روی گوشی‌های موبایل بوجود آمد، جاوا تکنولوژی اصلی پخش‌کننده‌های بلو-ری (Blu-ray) شد و خلاصه استفاده از جاوا به عنوان زبان اصلی توسعه برنامه‌های اندروید چندان تعجبی ندارد.

نکته: یک تراشه‌ی امبدد یک چیپ کامپیوتر است که در وسیله‌ای -برای کاربردی خاص- تعبیه شده است. چیپ‌های موجود در اتومبیل‌های امروزی، نوعی تراشه‌ی امبدد است یا چیپ‌هایی که دستگاه‌های فتوکپی را کنترل می‌کنند. به زودی، گلدان‌های لب پنجره هم احتمالا مجهز به تراشه‌های امبدد خواهند شد!!

نکته: اپلت به برنامه‌ای گفته می‌شود که در زمینه‌ی برنامه‌ی دیگر اجرا می‌شود. مثلا فایل‌های فلش که در صفحات وب قرار گرفته و توسط مرورگر اجرا می‌شوند نوعی اپلت هستند. نقطه‌ی شروع محبوبیت جاوا، اپلت‌های آن می‌باشد. جاوا زمانی بوجود آمد که اینترنت در آغاز رشد خود بود و به یک زبان برنامه‌نویسی مستقل از محیط نیاز داشت که تکنولوژی اپلت‌های جاوا توانست نیاز آن را رفع نماید.

مشابه اندروید، هر نسخه‌ی جاوا چندین اسم دارد: شناسه‌ی محصول (Product Version) یک نام رسمی برای معرفی جهانی و عمومی محصول است؛ شناسه‌ی توسعه‌دهنده (Developer Version) یک شماره است که معمولا توسعه‌دهنده‌ها آن را دنبال می‌کنند؛ همچنین یک نام دوستانه‌تر (Codename) نیز وجود دارد که در هنگام ایجاد هر نسخه به آن نسبت داده می‌شود.

Year

Product
Version

Developer
Version

Codename

1995

Beta

1996*

JDK 1.0

1.0

1997

JDK 1.1

1.1

1998*

J2SE 1.2

1.2

Playground

2000

J2SE 1.3

1.3

Kestrel

2002

J2SE 1.4

1.4

Merlin

2004*

J2SE 5.0

1.5

Tiger

2006*

Java SE 6

1.6

Mustang

2011

Java SE 7

1.7

Dolphin

2013

Java SE 8

1.8

در زمان‌هایی فرمول نام‌گذاری شناسه‌ی محصول عوض شده که با علامت ستاره در جدول مشخص شده است. تا قبل از 1998 شناسه‌ی محصول Java Development Kit یا همان JDK بود. بعد از آن شخصی تصمیم گرفت شناسه‌ی محصول را Java 2 Standard Edition نام‌گذاری کند که تا امروز همه را گیج کرده است. در واقع برای مشخص بودن توزیع پیش‌فرض (استاندارد) جاوا و تمایز آن از خواهر برادرش -J2EE (Java 2 Enterprise Edition) و J2ME (Java 2 Mobile Edition)- این نام‌گذاری انجام شد. در سال 2004 قسمت 1. از شناسه‌ی محصول حذف شد و در سال 2006 هم قسمت‌های 2 و .0 رفتند.

اندروید وقتی وارد صحنه شد که جاوا در نسخه‌ی SE 6 بود و به همین خاطر جاوا در همین نسخه برای توسعه‌دهنده‌های اندروید فریز شده است. یعنی وقتی یک برنامه‌ی اندروید می‌نویسید می‌توانید از J2SE 5.0 استفاده کنید اما نمی‌توانید قابلیت‌های Java SE 7 (مثلا استفاده از string در switch) یا Java SE 8 (مثلا استفاده از lambda expressions) را به کار بگیرید.

تفاوت JVM و JRE و JDK

در جاوا کدهای برنامه‌نویس توسط کامپایلر به بایت‌کد (Bytecode) تبدیل می‌شوند که در تمام دستگاه‌ها -مستقل (Independent) از پلت‌فرم سخت‌افزاری یا نرم‌افزاری دستگاه- قابل اجرا هستند. بایت‌کد توسط ماشین مجازی جاوا یا JVM (Java Virtual Machine) اجرا می‌شود. JVM به پلت‌فرم سخت‌افزاری یا نرم‌افزاری وابسته (Dependent) است و می‌توان آن را به عنوان نماینده (سفیر) جاوا در یک دستگاه در نظر گرفت که از یک طرف بایت‌کد می‌فهمد و از طرف دیگر زبان آن دستگاه خاص را.

البته JVM یک مدل انتزاعی است و JRE (Java Runtime Environment) نمونه‌ی پیاده‌سازی شده‌ی آن است که شامل فایل‌های کتابخانه‌ای بوده و محیط اجرای بایت‌کد را فراهم می‌کند. کاربران معمولی برای کامپیوترهای خود به JRE نیاز دارند، اما اگر توسعه دهنده هستید باید JDK (Java Development Kit) را دانلود کنید که شامل JRE و ابزارهایی برای توسعه‌ی برنامه‌های جاوا است.