stanford-oval/wikipedia huggingface dataset:
سینمای اوگاندا

ملکه کاتوه ۲۰۱۶ با بازی مدینا نالوانگا بازیگر زن سینمای اوگاندا
سینمای اوگاندا یک صنعت نوپا و در حال ظهور است که بیشتر با عنوان اوگاوود یا گاهی کیناوگاندا توسط مردم این سرزمین شناخته می‌شود. اولین فیلم بومی تولید شده در اوگاندا مبارزه یا احساسات ساخته اشرف اسموو جریری محصول ۲۰۰۵ است. بدنه دولتی اوگاندا اصرار دارد که به همان روشی که نالیوود (سینمای نیجریه) و بالیوود از هالیوود الهام گرفته‌اند، صنعت فیلم این کشور به‌طور مداوم در حال رشد است.
تولید فیلم در اوگاندا شدیداً به بودجه برخی از سازمان‌های مردم نهاد وابسته است. در حال حاضر سیاست فیلم‌سازی بر تولید آثار بسیار کم خرج با وسایل ابتدایی است. برخی استودیوها مانند کمپانی رامون‌فیلم در نزدیکی کامپالا طی ۱۰ سال گذشته بیش از ۴۰ فیلم اکشن با بودجه کم تولید کرده‌است. این استودیو بیشتر با فیلم چه کسی کاپیتان الکس را کشت؟ شناخته شده‌است. فیلمی که با بودجه باورنکردنی ۸۵ دلاری ساخته شده‌است.
دفتر تحقیقات دولتی (۲۰۱۱)، افسانه فلیستاس ساخته دیلمن دیلا ۲۰۱۳ و کانی: دستور از بالا (۲۰۱۹) از فیلم‌های اوگاوودی هستند که با گستره توزیع مناسب روبرو بودند. کانی: دستور از بالا در سال ۲۰۱۹ به عنوان نماینده سینمای اوگاندا برای جایزه اسکار بهترین فیلم بین‌المللی معرفی شده بود.
مدینا نالوانگا بازیگر جوان سینمای اوگاندا با حضور در فیلم ملکه کاتوه ۲۰۱۶ و درخشش در این فیلم سهم زیادی در معرفی سینمای اوگاندا داشت.
فیلم‌هایی که تمام یا بخشی از آن در اوگاندا فیلم‌برداری شدند

آخرین پادشاه اسکاتلند ۲۰۰۶ مهمترین فیلمی که در تاریخ سینمای اوگاندا در این کشور ساخته شده‌است.هورن بازرگان (۱۹۳۱)
معادن شاه سلیمان (۱۹۵۰)
ملکه آفریقایی (۱۹۵۱)
موگامبو (۱۹۵۳)
شیر (۱۹۶۲)
میسیسیپی ماسالا (۱۹۹۱)
ایس ونچورا: هنگامی که طبیعت فرا می‌خواند (۱۹۹۴)
کنگو (۱۹۹۵)
غریزه (۱۹۹۹)
آخرین پادشاه اسکاتلند (۲۰۰۶)
ارتش خاموش (۲۰۰۹)
سلام (۲۰۱۱)
تارزان (۲۰۱۳)
ملکه کاتوه (۲۰۱۶)
پلنگ سیاه (۲۰۱۸)
جشنواره‌ها

از سال ۲۰۱۱ سینمای اوگاندا یک جشنواره فیلم سالیانه با نام جشنواره بین‌المللی فیلم مروارید (Pearl International Film Festival) برگزار می‌کند.
یواس‌اس هاوارد (دی‌دی‌جی-۸۳)

| پیشینه> مالک | پیشینه>  |
| --- | --- |
سفارش ساخت::  ۲۰ ژوئن ۱۹۹۶
آب‌اندازی::  ۹ دسامبر ۱۹۹۸
آغاز کار::  ۲۰ نوامبر ۱۹۹۹
اعزام::  ۲۰ اکتبر ۲۰۰۱
شعار::  Ready for Victory
نشان::  
مشخصات اصلی: مشخصات اصلی
وزن::  9,200 tons
درازا::  ۵۰۹ فوت ۶ اینچ (۱۵۵٫۳۰ متر)
پهنا::  ۶۶ فوت (۲۰ متر)
آبخور::  ۳۱ فوت (۹٫۴ متر)
سرعت::  30+ knots
یواس‌اس هاوارد (دی‌دی‌جی-۸۳) (به انگلیسی: USS Howard (DDG-83)) یک کشتی است که طول آن ۵۰۹ فوت ۶ اینچ (۱۵۵٫۳۰ متر) می‌باشد. این کشتی در سال ۱۹۹۹ ساخته شد.
جاوا

| 0 | 1 |
| --- | --- |
پارادایم برنامه‌نویسی: چندالگویی: همگانی، شیءگرا (مبتنی بر شیء)، دستوری، پژواکی
طراحی شده توسط: جیمز گاسلینگ  سان مایکروسیستمز
توسعه‌دهنده: شرکت اوراکل
ظهوریافته در: ۲۳ مه ۱۹۹۵؛ ۲۹ سال پیش (۱۹۹۵-23}})
شیوه نوع‌دهی: ایستا، نیرومند، ایمن، نامی، آشکار
زبان پیاده‌سازی: C و C++
سیستم‌عامل: چندسکویی (multi-platform)
پروانه: پروانه عمومی همگانی گنو، فرایند انجمن جاوا
پسوند(های) نام پرونده: .java , .class, .jar
وبگاه: oracle.com/java
پیاده‌سازی‌های بزرگ: پیاده‌سازی‌های بزرگ
اوپن‌جی‌دی‌کی، GNU Compiler for Java(gcj), many others: اوپن‌جی‌دی‌کی، GNU Compiler for Java(gcj), many others
گویش: گویش
Generic Java، Pizza: Generic Java، Pizza
متأثر از: متأثر از
Ada 83, سی++, C#, Eiffel, Generic Java, Mesa, ماجولا ۳, Oberon, آبجکتیو-سی، UCSD Pascal, اسمال‌تاک: Ada 83, سی++, C#, Eiffel, Generic Java, Mesa, ماجولا ۳, Oberon, آبجکتیو-سی، UCSD Pascal, اسمال‌تاک
تأثیر گذاشته بر: تأثیر گذاشته بر
ایدا ۲۰۰۵، BeanShell، C#، کلوژر، دی، ECMAScript، گرووی، J#، جاوااسکریپت، Kotlin، پی‌اچ‌پی، پایتون، اسکالا، Seed7، والا: ایدا ۲۰۰۵، BeanShell، C#، کلوژر، دی، ECMAScript، گرووی، J#، جاوااسکریپت، Kotlin، پی‌اچ‌پی، پایتون، اسکالا، Seed7، والا
   Java Programming    در ویکی‌کتاب (انگلیسی):    Java Programming    در ویکی‌کتاب (انگلیسی)
جاوا (به انگلیسی: Java) یک زبان برنامه‌نویسیِ شیءگرا است که نخستین بار توسط جیمز گاسلینگ در شرکت سان‌مایکروسیستمز ایجاد گردید و در سال ۱۹۹۱ به عنوان بخشی از سکوی جاوا منتشر شد.
زبان جاوا شبیه به سی‌پلاس‌پلاس است؛ اما مدل شیءگرایی آسان‌تری دارد و از قابلیت‌های سطح پایین کمتری پشتیبانی می‌کند. ایدهٔ شیءگرایی جاوا از زبان اسمال‌تاک گرفته شده‌است. یکی از قابلیت‌های بنیادین جاوا این است که مدیریت حافظه را به‌طور خودکار انجام می‌دهد. ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به این زبان نسبت به زبان‌های نسل اول C بالاتر است. برنامه‌های جاوا به‌صورت بایت کد می‌شوند و توسط ماشین مجازی جاوا (JVM) به کدهای ماشین تبدیل و اجرا می‌شوند. در صورت وجود JVM مانند سایر زبانهای مبتنی بر آن که وابسته به سیستم‌عامل خاصی نیستند، برنامه‌های نوشته شده به جاوا بر روی هر نوع سیستم‌عامل و هرگونه وسیلهٔ الکترونیکی قابل اجرا می‌باشند. شعار جاوا «یک‌بار بنویس و همه‌جا اجرا کن» (Write once, Run anywhere) است که به همین ویژگی اشاره دارد. این ویژگیِ جاوا را مستقل از سکو می‌نامند.
تاریخچه

در سال ۱۹۹۰ سان‌مایکروسیستمز در حال توسعه نرم‌افزاری برای استفاده ابزارهای الکترونیکی بود که مسئولیت تیم که آن را پروژه green نامیدند، جیمز گاسلینگ بر عهده گرفت. در سال ۱۹۹۱ تیم تصمیم گرفت که زبان جدید را OAK بنامند. در سال ۱۹۹۲ تیم پروژه green زبان جدیدی را معرفی کرد که با ابزارهای مختلف خانگی و لمسی کار می‌کرد. در سال ۱۹۹۳ وب جهانی توسعه یافت و زبان جدید با معرفی اپلت که قابلیت‌های زیادی به کامپیوترهای متصل به وب می‌افزود مشهور شد. در سال ۱۹۹۵ زبان OAK به JAVA تغییر نام پیدا کرد و توسط مایکروسافت و نت اسکیپ پشتیبانی شد. در سال ۱۹۹۶ دیگر java زبانی به‌صورت همه‌گیر چند منظوره شناخته شده بود. در سال ۲۰۰۷ زبان‌هایی با استاندارد JVM مانند groovy ایجاد شد و در سال ۲۰۱۴ جاوا سعی کرد با معرفی نسخه ۸ برخی از قابلیت‌های زبان‌های دیگر را به جاوا اضافه نماید.
این زبان قسمت‌های بسیاری از گرامر خود را از C و ++C گرفته اما دارای مدل شی‌گرایی ساده‌ای است و امکانات سطح پایین کمی دارد. کاربرد جاوا در کامپایل به‌صورت بایت کد است که صرف نظر از معماری و خصوصیات آن کامپیوتر، قابلیت اجرا روی تمامی ماشین‌های شبیه‌سازی جاوا را دارد. اجزای اصلی کامپایلرهای جاوا، ماشین‌های پیاده‌سازی و کتابخانه‌های آن توسط شرکت مذکور از سال ۱۹۹۵ منتشر شد. در مه ۱۹۹۷ این شرکت، نرم‌افزار رایگان این زبان را فراهم کرد. دیگران هم کاربردهای دیگری از این زبان مثل کامپایلر GNU برای جاوا یا OPENJDK را منتشر کردند.
با پیدایش java 2، نسخهٔ جدید توانست ترکیب‌های جدیدی را برای نوع‌های مختلف سکوهای مختلف ایجاد کند. به عنوان مثال J2EE، با هدف کاربرد برای تشکیلات سازمانی، و نسخهٔ سکوی جاوا، نسخه میکرو برای تلفن همراه منتشر شد. در سال ۱۹۹۶ با هدف بازاریابی، این شرکت نسخهٔ جدید J2 را با نام‌های سکوی جاوا، نسخه سازمانی، سکوی جاوا، نسخه میکرو و سکوی جاوا، نسخه استاندارد منتشر کرد. در سال ۱۹۹۷ شرکت سان‌مایکروسیستمز، ISO/IEC JTC1 standards body و Ecma International را به فرمول جاوا تغییر داد. شرکت Sun بسیاری از کاربردهای جاوا را بدون هیچ هزینه‌ای فراهم آورد. شرکت Sun با فروش مجوز برای بعضی از کاربردهای خاصش مثل Java Enterprise System درآمدی را به‌دست‌آورد. در ۱۳ نوامبر ۱۹۹۶ شرکت Sun نرم‌افزار جاوا را به‌صورت رایگان و با مجوز عمومی برای همه منتشر کرد.
تاریخچه > اهداف اولیه

در ایجاد زبان جاوا پنج هدف اصلی وجود داشت:
این زبان باید ساده و شیءگرا باشد.
مطمئن و بدون خطا باشد.
وابسته به معماری رایانه نبوده و قابل انتقال باشد.
باید با کارایی بالا اجرا شود.
باید به‌صورت پویا و نخ‌کشی‌شده باشد.
تاریخچه > نسخه‌ها

جاوای ۸، ۱۱ و ۱۷ به عنوان نسخه‌های دارای پشتیبانی بلندمدت می‌باشند. نسخه‌های بزرگ منتشرشده، به همراه تاریخ انتشار آنها:
JDK 1.0، انتشار در ۲۱ ژانویهٔ ۱۹۹۶
JDK 1.1، انتشار در ۱۹ فوریهٔ ۱۹۹۷
J2SE 1.2، انتشار در ۸ دسامبر ۱۹۹۸
J2SE 1.3، انتشار در ۸ مه ۲۰۰۰
J2SE 1.4، انتشار در ۶ فوریهٔ ۲۰۰۲
J2SE 5.0، انتشار در ۳۰ سپتامبر ۲۰۰۴
Java SE 6، انتشار در ۱۱ دسامبر ۲۰۰۶
Java SE 7، انتشار در ۲۱۲۸ ژوئیه ۲۰۱۱
Java SE 8، انتشار در ۱۸ مارس ۲۰۱۴
Java SE 9، انتشار در ۲۱ سپتامبر ۲۰۱۷
Java SE 10، انتشار در ۲۰ مارس ۲۰۱۸
Java SE 11، انتشار در ۲۵ سپتامبر ۲۰۱۸
Java SE 12، انتشار در ۱۹ مارس ۲۰۱۹
Java SE 13، انتشار در ۱۷ سپتامبر ۲۰۱۹
Java SE 14، انتشار در ۱۷ مارس ۲۰۲۰
Java SE 15, انتشار در ۱۵ سپتامبر ۲۰۲۰
Java SE 16, انتشار در ۱۶ مارس ۲۰۲۱
Java SE 17, انتشار در ۱۴ سپتامبر ۲۰۲۱
Java SE 18, انتشار در ۲۲ مارس ۲۰۲۲
Java SE 19, انتشار در ۲۰ سپتامبر ۲۰۲۲
Java SE 20, انتشار در ۲۱ مارس ۲۰۲۳
Java SE 21، انتشار در 19 سپتامبر 2023
ماشین مجازی جاوا (JVM)

مقالهٔ اصلی: ماشین مجازی جاوا
ماشین مجازی جاوا (JVM) برنامه‌ای است که بایت‌کدهای زبان جاوا را مطابق با سیستم‌عاملی خاص کامپایل کرده و آن‌ها را برای اجرا در سطح سیستم‌عامل آماده می‌کند، در حقیقت شعار اصلی زبان جاوا (یک‌بار بنویس و همه‌جا اجرا کن) با استفاده از این ماشین مجازی امکان‌پذیر شده‌است.
مزایا و معایب: ماشین مجازی جاوا علاوه بر قابلیت‌های بسیاری که در اختیار برنامه‌نویسان قرار می‌دهد، محدودیت‌هایی را هم ایجاد می‌کند که البته این محدودیت‌ها به نوعی راه‌گشا هستند؛ چرا که منجر به ارتقاء امنیت نرم‌افزارهای نوشته‌شده با جاوا می‌شوند؛ به عبارت دیگر، با به‌کارگیری جِی‌وی‌اِم دولوپرها به هیچ وجه نمی‌توانند بخشی از حافظهٔ اختصاص‌یافته به دیگر قسمت‌های برنامه را به زور تصاحب کنند تا بدین طریق بتوانند مثلاً آبجکتی جدید ساخته و فضای حافظه را به آن اختصاص دهند.
یکی از مزایای کامپایل سورس‌کد و تبدیل آن به بایت‌کد این است که بدین طریق می‌توان از دیگر زبان‌های برنامه‌نویسی نیز در توسعهٔ اپلیکیشن‌های نوشته‌شده به زبان جاوا استفاده کرد؛ به عبارت دیگر، چنانچه یک زبان برنامه‌نویسی قابلیتی داشته باشد که بتوان در ابتدا سورس‌کد مد نظر را کامپایل کرده و آن را به بایت‌کدی قابل‌فهم برای جاوا تبدیل کرد، در چنین شرایطی ماشین مجازی جاوا امکان اجرای آن بخش از کد که به زبان دیگری نوشته شده‌است را در کنار کدهای جاوا دارا است.
برنامه‌های جاوا و اپلت‌ها

جاوا برای نوشتن انواع برنامه‌های کاربردی مناسب است. با جاوا می‌توان انواع برنامه‌های زیر را نوشت:
برنامه‌های تحت وب
برنامه‌نویسی سیستم‌های کوچک مانند تلفن همراه، رایانه جیبی و …
برنامه‌های کاربردی بزرگ (Enterprise)
برنامه‌های رومیزی (Desktop)
قابلیت خاصی در جاوا وجود دارد به نام اپلت. اپلت‌ها امکانات فراوانی برای نوشتن برنامه‌های تحت وب در اختیار برنامه‌نویسان قرار می‌دهند. البته وجود ماشین مجازی جاوا برای اجرای اپلت لازم است. اپلت‌ها نظیر فناوری سیلورلایت شرکت مایکروسافت هستند که برنامه‌نویسان را قادر می‌سازد تا امکاناتی را به مرورگر کاربر بیفزایند. البته تفاوت این دو در امنیت می‌باشد به گونه‌ای که سیلورلایت به دلیل اینکه در محیطی به نام جعبه شنی (sandbox) اجرا می‌شوند امن هستند ولی اپلت‌ها فاقد چنین امنیتی هستند و به سادگی هدف حملات استاندارد Social Engineering Toolkit واقع می‌شوند.
سیستم‌عامل: تا سال ۲۰۰۴ net. تنها بر روی پلتفرم ویندوز اجرا می‌شد و برخی ویندوز را سیستم‌عامل غیرقابل اعتمادی در برنامه‌نویسی Enterprise می‌دانستند. ولی جاوا از این نظر انتخاب خوبی محسوب می‌شد.
قابلیت حمل: جاوا بر روی سکوهای رایانش گوناگونی قابل اجرا است، از ATM و ماشین رختشویی گرفته تا سرورهای سولاریس با قابلیت پشتیبانی از ۱۰۲۴ پردازنده (CPU) برای پردازش.
خط مشی جاوا

یکی از ویژگی‌های جاوا قابل حمل بودن آن است؛ یعنی برنامهٔ نوشته شده به زبان جاوا باید به‌طور مشابهی در کامپیوترهای مختلف با سخت‌افزارهای متفاوت اجرا شود؛ و باید این توانایی را داشته باشد که برنامه یک بار نوشته و کامپایل شده و سپس در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا ذخیره می‌شود، اما نه به‌صورت کد ماشین بلکه به‌صورت بایت‌کد جاوا. دستورالعمل‌ها شبیه کد ماشین هستند، اما با ماشین‌های مجازی که به‌طور خاص برای سخت‌افزارهای مختلف نوشته شده‌اند، اجرا می‌شوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده می‌کند. کتابخانه‌های استاندارد یک راه عمومی برای دسترسی به ویژگی‌های خاص فراهم می‌کنند. مانند گرافیک، نخ‌کشی و شبکه. در بعضی از نسخه‌های ماشین مجازی جاوا، بایت‌کدها می‌توانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایت‌کد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامه‌های ترجمه شده (برنامه‌های نوشته شده به زبان‌های Interpreter ای مثل جاوا) تقریباً همیشه کندتر از برنامه‌های کامپایل شدهٔ محلی اجرا می‌شوند. این شکاف می‌تواند با چند تکنیک خوش‌بینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیک‌ها JIT است که بایت‌کد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان می‌کند. در نتیجه برنامه خیلی سریع‌تر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا می‌شود. بیشتر JVMهای پیشرفته، به‌صورت کامپایل مجدد پویا، در آنالیز JVM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینه‌سازی قسمت‌های برنامه، استفاده می‌شوند. کامپایل مجدد پویا می‌تواند کامپایل ایستا را بهینه‌سازی کند؛ زیرا می‌تواند قسمت hot spot برنامه و گاهی حلقه‌های داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامه‌های جاوا اجازه می‌دهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
تکنیک بعدی به عنوان کامپایل ایستا شناخته شده‌است؛ که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایت‌کدها را به کدهای شیء محلی ترجمه می‌کند.
کارایی جاوا نسبت به نسخه‌های اولیه بیشتر شد. در تعدادی از تست‌ها نشان داده شد که کارایی کامپایلر JIT کاملاً مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمی‌دهند. یکی از پیشرفت‌های بی‌نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمی‌کردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثناء رخ می‌دهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت می‌کنند.
پیاده‌سازی

شرکت سان‌مایکروسیستمز مجوز رسمی برای پلتفرم استاندارد جاوا را به مایکروسافت ویندوز، لینوکس و سولاریس داده‌است. همچنین محیط‌های دیگری برای دیگر پلتفرم‌ها فراهم آورده‌است. علامت تجاری مجوز شرکت سان‌میکروسیستمز طوری بود که با همهٔ پیاده‌سازی‌ها سازگار باشد. به علت اختلاف قانونی که با مایکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیاده‌سازی مایکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگی‌های خاصی را برای خودش اضافه کرده‌است. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعد مایکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمی‌تواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آن‌ها و نسخه‌های دیگر ویندوز فراهم آوردند.
شرکت اوراکل پس از خریداری Sun Microsystems در ۲۷ ژانویه ۲۰۱۰، مالک فعلی اجرای رسمی پلتفرم جاوا SE است. این پیاده‌سازی براساس اجرای اصلی جاوا توسط Sun است. پیاده‌سازی Oracle برای Microsoft Windows (هنوز برای XP کار می‌کند، در حالی که فقط نسخه‌های بعدی در حال حاضر به‌طور رسمی پشتیبانی می‌شوند)، macOS ,Linux و Solaris در دسترس است. از آنجا که جاوا فاقد هرگونه استانداردسازی رسمی است که توسط Ecma International ,ISO / IEC ,ANSI یا سایر سازمان‌های استاندارد شخص ثالث شناخته شده باشد، اجرای اوراکل استاندارد واقعی است.
پیاده‌سازی Oracle به دو توزیع مختلف بسته‌بندی شده‌است: Java Runtime Environment (JRE) که شامل قسمت‌هایی از سیستم‌عامل Java SE برای اجرای برنامه‌های جاوا است و برای کاربران نهایی در نظر گرفته شده‌است و کیت توسعهٔ جاوا (JDK) که در نظر گرفته شده‌است. برای توسعه‌دهندگان نرم‌افزار و شامل ابزارهای توسعه مانند کامپایلر جاوا، Javadoc ,Jar و رفع اشکال است. Oracle همچنین GraalVM، یک کامپایلر و مفسر پویای جاوا با کارایی بالا را منتشر کرده‌است.
OpenJDK یکی دیگر از برنامه‌های قابل توجه جاوا SE است که تحت GNU GPL مجوز دارد. زمانی که Sun شروع به انتشار کد منبع جاوا تحت GPL کرد، شروع به کار کرد. از Java SE 7 ،OpenJDK اجرای رسمی مرجع جاوا است.
هدف جاوا سازگاری کلیهٔ پیاده‌سازی‌های جاوا است. از نظر تاریخی، مجوز مارک تجاری Sun برای استفاده از مارک جاوا اصرار دارد که همهٔ پیاده‌سازی‌ها سازگار باشد. پس از آنکه Sun ادعا کرد که اجرای مایکروسافت از RMI یا JNI پشتیبانی نمی‌کند و ویژگی‌های مختص پلتفرم را به خود اختصاص داده‌است، این منجر به اختلاف حقوقی با مایکروسافت شد. Sun در سال ۱۹۹۷ شکایت کرد و در سال ۲۰۰۱، به مبلغ ۲۰ میلیون دلار و همچنین حکم دادگاه برای اجرای شرایط مجوز از Sun پیروز شد. در نتیجه، مایکروسافت دیگر جاوا را با ویندوز ارسال نمی‌کند.
جاوا مستقل از بسترهای نرم‌افزاری برای Java EE ضروری است و برای تأیید یک پیاده‌سازی اعتبار سنجی دقیق‌تری نیز لازم است. این محیط برنامه‌های قابل حمل در سمت سرور را فعال می‌کند.
اداره خودکار حافظه

جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شیء استفاده می‌کند. برنامه‌نویس زمانی که اشیاء به وجود می‌آیند، این حافظه را تعیین می‌کند؛ و در زمان اجرا نیز، زمانی که این اشیاء در استفادهٔ زیاد طولانی نباشند، برنامه‌نویس مسئول بازگرداندن این حافظه‌است. زمانی که مرجعی برای شی‌های باقی‌مانده نیست، شی‌های غیرقابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب می‌شوند. اگر برنامه‌نویس مقداری از حافظه را برای شی‌هایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق می‌افتند.
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامه‌نویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده می‌گیرد. در بعضی از زبان‌ها حافظه لازم برای ایجاد یک شیء، به صورت ضمنی و بدون شرط، به پشته تخصیص داده می‌شود؛ یا به‌طور صریح اختصاص داده شده و از heap بازگردانده می‌شود. در هر کدام از این راه‌ها، مسئولیت ادارهٔ اقامت حافظه با برنامه‌نویس است. اگر برنامه شیء را برنگرداند، سوراخ حافظه اتفاق می‌افتد. اگر برنامه تلاش کند به حافظه‌ای را که هم‌اکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بی‌ثبات شده یا تخریب شود. این ممکن است با استفاده از اشاره‌گر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد می‌شود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. به‌طوری‌که این زمانی اتفاق می‌افتد که برنامه بی‌کار باشد. اگر حافظهٔ خالی کافی برای تخصیص شیء جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیاء استفاده می‌شوند.
جاوا از نوع اشاره‌گر ریاضی C و ++C پشتیبانی نمی‌کند. در جایی که آدرس اشیاء و اعداد صحیح می‌توانند به جای هم استفاده شوند. همانند ++C و بعضی زبان‌های شی‌گرای دیگر، متغیرهای نوع‌های اولیهٔ جاوا شی‌گرا نبودند. مقدار نوع‌های اولیه، مستقیماً در فیلدها ذخیره می‌شوند. در فیلدها (برای اشیاء) و در پشته (برای توابع)، بیشتر از هیپ استفاده می‌شود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شی‌گرای خالص به حساب می‌آید.
گرامر

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

در زیر نمونه‌ای از برنامه‌ای که در جاوا نوشته شده‌است آورده شده‌است. البته برای کامپایل کردن این برنامه بایستی JDK (کیت توسعهٔ جاوا) بر روی سیستم مورد نظر نصب شده باشد.
public class Test{
    public static void main(String[] args) {
        // java code
  }
}
برنامه‌های جاوا بعد از کدنویسی باید توسط کیت توسعهٔ جاوا کامپایل شوند، این فرایند با خروجی فایلی با پسوند class. پایان میابد که بتواند با موتور مجازی جاوا، اجرا شود.
در کد پایین کامپایل فایل، و خروجی class. را انجام می‌دهیم.
$ javac Test.java
سپس یک فایل خروجی به نام Test.class دریافت می‌شود. بعد با استفاده از دستور زیر برنامه توسط موتور مجازی جاوا قابل اجرا است:
$ java Test
نکته: در هنگام اجرای برنامه‌های کامپایل شده جاوا (Filename.class) باید پسوند فایل آن را برداریم، مانند کد بالا.
نمونه‌هایی از برنامه‌های جاوا > مثال‌ها

برنامه «سلام، دنیا!» به این صورت در زبان جاوا می‌تواند نوشته شود:
// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
  }
}
بر طبق قرارداد فایل‌ها باید هم نام کلاس‌های عمومی نام‌گذاری شوند. سپس باید پسوند java را به این صورت به نام فایل اضافه کرد: "HelloWorld.java". این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل HelloWorld.class ایجاد می‌شود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما می‌تواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.
کلاسی که به‌صورت خصوصی تعریف می‌شود ممکن است در فایل java. ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف می‌شود یک کلاس فایل تولید می‌کند؛ که نام این کلاس فایل همنام کلاس است با پسوند class.
کلمهٔ کلیدی public (عمومی) برای قسمت‌هایی که می‌توانند از کدهای کلاس‌های دیگر صدا زده شوند، به کار برده می‌شود.
کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونه‌هایی از کلاس، نشان می‌دهد. فقط تابع‌های ایستا می‌توانند توسط اشیاء بدون مرجع صدا زده شوند. داده‌های ایستا به متغیرهایی که ایستا نیستند، نمی‌توانند دسترسی داشته باشند.
کلمهٔ کلیدی void (تهی) نشان می‌دهد که تابع main هیچ مقداری را برنمی‌گرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید ()System.exit صدا زده شود.
کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا می‌زند. برنامهٔ جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.
تابع main باید آرایه‌ای از اشیاء رشته‌ای را بپذیرد. تابع main می‌تواند از آرگومان‌های متغیر به شکل public static void main(String… args) استفاده کند که به تابع main اجازه می‌دهد اعدادی دلخواه از اشیاء رشته‌ای را فراخوانی کند. پارامتر String[] args آرایه‌ای از اشیاء رشته‌ای است که شامل تمام آرگومان‌هایی که به کلاس فرستاده می‌شود، است.
چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کرده‌است. شیء out یک نمونه از کلاس PrintStream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه می‌کند.
یک مثال دیگر به شرح زیر است:
public class Student{
    private int code;
    private String name;

    public Student(int code, String name){
        this.code = code;
        this.name = name;
    }

    public int getCode(){
        return this.code;
    }

    public String getName(){
        return this.name;
    }

    public void setCode(int code){
        this.code = code;
    }

    public void setName(String name){
        this.name = name;
    }
}
کامنت های جاوا به شرح زیر است:
//Single Line Comment

/*
Multi
Line
Comment
*/

/*
 * Documentiation
 * Comment (Java Docs)
*/
توزیع‌های جاوا

منظور از توزیع جاوا پیاده‌سازی‌های مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانه‌های استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیع‌کنندهٔ عمدهٔ جاوا وجود دارند:
سان میکروسیستمز: توزیع‌کننده اصلی جاوا و مبدع آن می‌باشد. در اکثر موارد هنگامی که گفته می‌شود جاوا منظور توزیع سان می‌باشد.
GNU Classpath: این توزیع از سوی مؤسسه نرم‌افزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهره‌گیری از توزیع شرکت سان از اول پیاده‌سازی شده‌است. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این مؤسسه ایجاد شده‌است. فلسفهٔ انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است به‌طوری‌که هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیط‌های اجرایی برنامه‌های جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا می‌کند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم است ذکر شود که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرم‌افزارهای آزاد به‌صورت متن باز منتشر کرده‌است و قول انتشار قسمت بسیار کوچکی از این مجموعه را که به‌دلیل استفاده از کدهای شرکت‌های ثانویه نتوانسته به‌صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها داده‌است.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه می‌باشد که توسط مایکروسافت و در چارچوب net. ارائه شده‌است. انتظار اینکه در سیستم‌عاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی می‌باشد که امکان برنامه‌نویسی Aspect Oriented را به جاوا می‌افزاید. این برنامه توسط بنیاد برنامه‌نویسی جلوه‌گرا و به صورت کدباز ارائه شده‌است.
کلاس‌های خاص > برنامک (برنامه‌های کاربردی کوچک)

اپلت جاواها برنامه‌هایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شده‌اند. واژهٔ import باعث می‌شود کامپایلر جاوا کلاس‌های javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه می‌دهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست می‌کند. کلاس اپلت یک تابع پنجره‌ای مجرد است که برنامه‌های کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم می‌کند. کلاس Hello تابع موروثی (print(Graphicsy را از سوپر کلاس container باطل می‌کند، برای اینکه کدی که اپلت را نمایش می‌دهد، فراهم کند.
تابع paint شی‌های گرافیکی را که شامل زمینه‌های گرافیکی هستند را می‌فرستد تا برای نمایش اپلت‌ها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع (drawstring(string,int,in را صدا می‌زند.