(به : ) یک است که نخستین بار توسط در شرکت ایجاد گردید و در سال ۱۹۹۱ به عنوان بخشی از منتشر شد.
 شبیه به است؛ اما آسان‌تری دارد و از کمتری پشتیبانی می‌کند. ایدهٔ شیءگرایی جاوا از زبان گرفته شده‌است. یکی از قابلیت‌های بنیادین جاوا این است که را به‌طور خودکار انجام می‌دهد. ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به این زبان نسبت به زبان‌های نسل اول بالاتر است. برنامه‌های جاوا به صورت بایت کد می‌شوند و توسط (JVM) به کدهای ماشین تبدیل و اجرا می‌شوند. در صورت وجود JVM مانند سایر های مبتنی بر آن که وابسته به خاصی نیستند، برنامه‌های نوشته شده به جاوا بر روی هر نوع سیستم عامل و هرگونه وسیلهٔ الکترونیکی قابل اجرا می‌باشند. شعار جاوا است که به همین ویژگی اشاره دارد. این ویژگی جاوا را مستقل از سکو می‌نامند.
 در سال ۱۹۹۰ سان‌مایکروسیستمز در حال توسعه نرم‌افزاری برای استفاده ابزارهای الکترونیکی بود که مسئولیت تیم که آن را پروژه green نامیدند، جیمز گاسلینگ بر عهده گرفت. در سال ۱۹۹۱ تیم تصمیم گرفت که زبان جدید را OAK بنامند. در سال ۱۹۹۲ تیم پروژه green زبان جدیدی را معرفی کرد که با ابزارهای مختلف خانگی و لمسی کار می‌کرد. در سال ۱۹۹۳ وب جهانی توسعه یافت و زبان جدید با معرفی که قابلیت‌های زیادی به کامپیوترهای متصل به وب می‌افزود مشهور شد. در سال ۱۹۹۵ زبان OAK به JAVA تغییر نام پیدا کرد و توسط مایکروسافت و نت اسکیپ پشتیبانی شد. در سال ۱۹۹۶ دیگر java زبانی به صورت همه گیر چند منظوره شناخته شده بود. در سال ۲۰۰۷ زبان‌هایی با استاندارد JVM مانند groovy ایجاد شد و در سال ۲۰۱۴ جاوا سعی کرد با معرفی نسخه ۸ برخی از قابلیت‌های زبان‌های دیگر را به جاوا اضافه نماید.
 این زبان قسمت‌های بسیاری از خود را از و گرفته اما دارای مدل ساده‌ای است و امکانات سطح پایین کمی دارد. کاربرد جاوا در به صورت بایت کد است که صرف نظر از معماری و خصوصیات آن کامپیوتر، قابلیت اجرا روی تمامی ماشین‌های شبیه‌سازی جاوا را دارد. اجزای اصلی کامپایلرهای جاوا، ماشین‌های پیاده‌سازی و کتابخانه‌های آن توسط شرکت مذکور از سال ۱۹۹۵ منتشر شد. در مه ۱۹۹۷ این شرکت، این زبان را فراهم کرد. دیگران هم کاربردهای دیگری از این زبان مثل برای جاوا یا OPENJDK را منتشر کردند.
 با پیدایش java2، نسخهٔ جدید توانست ترکیب‌های جدیدی را برای نوع‌های مختلف مختلف ایجاد کند. به عنوان مثال J2EE، باهدف کاربرد برای تشکیلات سازمانی، و نسخهٔ برای منتشر شد. در سال ۱۹۹۶ با هدف بازاریابی، این شرکت نسخهٔ جدید J2 را با نام‌های ، و منتشر کرد. در سال ۱۹۹۷ شرکت سان‌مایکروسیستمز، ISO/IEC JTC1 standards body و Ecma International را به فرمول جاوا تغییر داد. شرکت Sun بسیاری از کاربردهای جاوا را بدون هیچ هزینه‌ای فراهم آورد. شرکت Sun با فروش مجوز برای بعضی از کاربردهای خاصش مثل درآمدی را بدست آورد. در ۱۳ نوامبر ۱۹۹۶ شرکت Sun نرم‌افزار جاوا را به صورت رایگان و با مجوز عمومی برای همه منتشر کرد.
 در ایجاد زبان جاوا پنج هدف اصلی وجود داشت
 
 
 
 
 جاوای ۸ و ۱۱ به عنوان نسخه‌های دارای پشتیبانی بلندمدت می‌باشند. نسخه‌های بزرگ منتشرشده، به همراه تاریخ انتشار آنها:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ماشین مجازی جاوا (JVM) برنامه‌ای است که بایت‌کدهای زبان جاوا را مطابق با سیستم‌عاملی خاص کامپایل کرده و آن‌ها را برای اجرا در سطح سیستم‌عامل آماده می‌کند، در حقیقت شعار اصلی زبان جاوا (یک‌بار بنویس و همه‌جا اجرا کن) با استفاده از این ماشین مجازی امکان‌پذیر شده‌است. 
 مزایا و معایب : ماشین مجازی جاوا علاوه بر قابلیت‌های بسیاری که در اختیار برنامه‌نویسان قرار می‌دهد، محدودیت‌هایی را هم ایجاد می‌کند که البته این محدودیت‌ها به نوعی راه‌گشا هستند چرا که منجر به ارتقاء امنیت نرم‌افزارهای نوشته‌شده با جاوا می‌شوند؛ به عبارت دیگر، با به‌کارگیری جِی‌وی‌اِم دولوپرها به هیچ وجه نمی‌توانند بخشی از حافظۀ اختصاص‌یافته به دیگر قسمت‌های برنامه را به زور تصاحب کنند تا بدین طریق بتوانند مثلاً آبجکتی جدید ساخته و فضای حافظه را به آن اختصاص دهند.
 یکی از مزایای کامپایل سورس‌کد و تبدیل آن به بایت‌کد این است که بدین طریق می‌توان از دیگر زبان‌های برنامه‌نویسی نیز در توسعۀ اپلیکیشن‌های نوشته‌شده به زبان جاوا استفاده کرد؛ به عبارت دیگر، چنانچه یک زبان برنامه‌نویسی قابلیتی داشته باشد که بتوان در ابتدا سورس‌کد مد نظر را کامپایل کرده و آن را به بایت‌کدی قابل‌فهم برای جاوا تبدیل کرد، در چنین شرایطی ماشین مجازی جاوا امکان اجرای آن بخش از کد که به زبان دیگری نوشته شده است را در کنار کدهای جاوا دارا است.
 جاوا برای نوشتن انواع برنامه‌های کاربردی مناسب است. با جاوا می‌توان انواع برنامه‌های زیر را نوشت:
 
 
 
 
 قابلیت خاصی در جاوا وجود دارد به نام . اپلت‌ها امکانات فراوانی برای نوشتن برنامه‌های تحت وب در اختیار برنامه‌نویسان قرار می‌دهند. البته وجود جاوا برای اجرای اپلت لازم است. اپلت‌ها نظیر فناوری سیلورلایت شرکت هستند که برنامه‌نویسان را قادر می‌سازد تا امکاناتی را به مرورگر کاربر بیفزایند. البته تفاوت این دو در امنیت می‌باشد به گونه‌ای که سیلورلایت به دلیل اینکه در محیطی به نام جعبه شنی (sandbox) اجرا می‌شوند امن هستند ولی اپلت‌ها فاقد چنین امنیتی هستند و به سادگی هدف حملات استاندارد Social Engineering Toolkit واقع می‌شوند.
 
 یکی از ویژگی‌های جاوا بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به‌طور مشابهی در کامپیوترهای مختلف با سخت‌افزارهای متفاوت اجرا شود؛ و باید این توانایی را داشته باشد که برنامه یک بار نوشته و کامپایل شده و سپس در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا ذخیره می‌شود، اما نه به‌صورت کد ماشین بلکه به‌صورت جاوا. دستورالعمل‌ها شبیه کد ماشین هستند، اما با ماشین‌های مجازی که به‌طور خاص برای سخت‌افزارهای مختلف نوشته شده‌اند، اجرا می‌شوند. در نهایت کاربر از نصب شده روی ماشین خود یا استفاده می‌کند. کتابخانه‌های استاندارد یک راه عمومی برای دسترسی به ویژگی‌های خاص فراهم می‌کنند. مانند گرافیک، نخ‌کشی و شبکه. در بعضی از نسخه‌های ، بایت‌کدها می‌توانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایت‌کد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامه‌های ترجمه شده (برنامه‌های نوشته شده به زبان‌های Interpreter ای مثل جاوا) تقریباً همیشه کندتر از برنامه‌های کامپایل شدهٔ محلی اجرا می‌شوند. این شکاف می‌تواند با چند تکنیک خوش‌بینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیک‌ها JIT است که بایت‌کد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان می‌کند. در نتیجه برنامه خیلی سریع‌تر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا می‌شود. بیشتر JVMهای پیشرفته، به‌صورت کامپایل مجدد پویا، در آنالیز JVM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینه‌سازی قسمت‌های برنامه، استفاده می‌شوند. کامپایل مجدد پویا می‌تواند کامپایل ایستا را بهینه‌سازی کند. زیرا می‌تواند قسمت hot spot برنامه و گاهی حلقه‌های داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل و کامپایل مجدد پویا به برنامه‌های جاوا اجازه می‌دهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
 تکنیک بعدی به عنوان کامپایل ایستا شناخته شده‌است؛ که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایت‌کدها را به کدهای شیء محلی ترجمه می‌کند.
 کارایی جاوا نسبت به نسخه‌های اولیه بیشتر شد. در تعدادی از تست‌ها نشان داده شد که کارایی کامپایلرJIT کاملاً مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمی‌دهند. یکی از پیشرفت‌های بی‌نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمی‌کردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثناء رخ می‌دهد، اطلاعات که در حافظه وجود دارد، ثبت می‌کنند.
 شرکت سان‌مایکروسیستمز مجوز رسمی برای پلتفرم استاندارد جاوا را به ، ، و سولاریس داده‌است. همچنین محیط‌های دیگری برای دیگر پلت فرم‌ها فراهم آورده‌است. مجوز شرکت سان‌میکروسیستمز طوری بود که با همهٔ پیاده‌سازی‌ها سازگار باشد. به علت اختلاف قانونی که با مایکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیاده‌سازی مایکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگی‌های خاصی را برای خودش اضافه کرده‌است. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعد مایکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، نمی‌تواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آن‌ها و نسخه‌های دیگر ویندوز فراهم آوردند.
 شرکت اوراکل پس از خریداری Sun Microsystems در 27 ژانویه 2010 ، مالک فعلی اجرای رسمی پلت فرم جاوا 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 برای استفاده از مارک جاوا اصرار دارد که همه پیاده سازی ها سازگار باشد. پس از آنکه سان ادعا کرد که اجرای مایکروسافت از RMI یا JNI پشتیبانی نمی کند و ویژگی های مختص پلتفرم را به خود اختصاص داده است ، این منجر به اختلاف حقوقی با مایکروسافت شد. سان در سال 1997 شکایت کرد و ، در سال 2001 ، به مبلغ 20 میلیون دلار و همچنین حکم دادگاه برای اجرای شرایط مجوز از سان پیروز شد. در نتیجه ، مایکروسافت دیگر جاوا را با ویندوز ارسال نمی کند.
 جاوا مستقل از بستر های نرم افزاری برای Java EE ضروری است و برای تأیید یک پیاده سازی اعتبار سنجی دقیق تری نیز لازم است. این محیط برنامه های قابل حمل در را فعال می کند.
 جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شیء استفاده می‌کند. برنامه‌نویس زمانی که اشیاء به وجود می‌آیند، این حافظه را تعیین می‌کند؛ و در زمان اجرا نیز، زمانی که این اشیاء در استفادهٔ زیاد طولانی نباشند، برنامه‌نویس مسئول بازگرداندن این حافظه‌است. زمانی که مرجعی برای شی‌های باقی‌مانده نیست، شی‌های غیرقابل دسترس برای آزاد شدن به صورت خودکار توسط ، انتخاب می‌شوند. اگر برنامه‌نویس مقداری از حافظه را برای شی‌هایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق می‌افتند.
 یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامه‌نویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده می‌گیرد. در بعضی از زبان‌ها حافظه لازم برای ایجاد یک شیء، به صورت ضمنی و بدون شرط، به پشته تخصیص داده می‌شود؛ یا به‌طور صریح اختصاص داده شده و از heap بازگردانده می‌شود. در هر کدام از این راه‌ها، مسئولیت ادارهٔ اقامت حافظه با برنامه‌نویس است. اگر برنامه شیء را برنگرداند، سوراخ حافظه اتفاق می‌افتد. اگر برنامه تلاش کند به حافظه‌ای را که هم‌اکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بی‌ثبات شده یا تخریب شود. این ممکن است با استفاده از اشاره‌گر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد می‌شود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. به‌طوری‌که این زمانی اتفاق می‌افتد که برنامه بی‌کار باشد. اگر حافظهٔ خالی کافی برای تخصیص شیء جدید در وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیاء استفاده می‌شوند.
 جاوا از نوع اشاره‌گر ریاضی C و ++C پشتیبانی نمی‌کند. در جایی که آدرس اشیاء و می‌توانند به جای هم استفاده شوند. همانند ++C و بعضی زبان‌های شی‌گرای دیگر، متغیرهای نوع‌های اولیهٔ جاوا شی‌گرا نبودند. مقدار نوع‌های اولیه، مستقیماً در فیلدها ذخیره می‌شوند. در فیلدها (برای اشیاء) و در پشته (برای توابع)، بیشتر از استفاده می‌شود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شی‌گرای خالص به حساب می‌آید.
 گرامر جاوا محدودتر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شی‌گرایی، زبان جاوا یک زبان شی‌گرای خالص می‌باشد. فقط نوع دادهٔ اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگی‌ها را پشتیبانی می‌کند و از کلاس‌ها برای ساده‌تر کردن برنامه‌نویسی و کاهش خطا استفاده می‌کند.
 در زیر نمونه‌ای از برنامه‌ای که در جاوا نوشته شده‌است آورده شده‌است. البته برای کامپایل کردن این برنامه بایستی JDK ( ) بر روی سیستم مورد نظر نصب شده باشد.
 برنامه های جاوا بعد از کد نویسی باید توسط کیت توسعه جاوا کامپایل شوند، این فرایند با خروجی فایلی 
 با پسوند class. پایان میابد که بتواند با موتور مجازی جاوا، اجرا شود
 در کد پایین کامپایل فایل، و خروجی class. را انجام میدهیم
 
 
 سپس یک فایل خروجی به نام Test.class دریافت می‌شود. بعد با استفاده از دستور زیر برنامه توسط موتور مجازی جاوا قابل اجرا است:
 
 
 نکته : در هنگام اجرای برنامه های کامپایل شده جاوا (Filename.class) باید پسووند فایل ان را برداریم، مانند کد بالا.
 به این صورت در زبان جاوا می‌تواند نوشته شود:
 بر طبق قرارداد فایل‌ها باید هم نام کلاس‌های عمومی نام‌گذاری شوند. سپس باید پسوند 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) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه می‌کند.
 
یک مثال دیگر به شرح زیر است: منظور از توزیع جاوا پیاده‌سازی‌های مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانه‌های استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیع‌کنندهٔ عمده جاوا وجود دارند:
 
 
 
 اپلت جاواها برنامه‌هایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شده‌اند. واژهٔ import باعث می‌شود کامپایلر جاوا کلاس‌های javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه می‌دهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست می‌کند. کلاس اپلت یک تابع پنجره‌ای مجرد است که برنامه‌های کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم می‌کند. کلاس Hello تابع موروثی (print(Graphicsy را از سوپر کلاس container باطل می‌کند، برای اینکه کدی که اپلت را نمایش می‌دهد، فراهم کند.
تابع paint شی‌های گرافیکی را که شامل زمینه‌های گرافیکی هستند را می‌فرستد تا برای نمایش اپلت‌ها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع (drawstring(string,int,in را صدا می‌زند.
 تکنولوژی servlet جاوا گسترش وب را به آسانی فراهم می‌کند؛ و شامل مکانیزم‌هایی برای توسعهٔ تابعی و برای دسترسی به سیستم‌های تجاری موجود است.servlet قسمتی از javaEE است که به درخواست‌های مشتری پاسخ می‌دهد.
 واژهٔ import کامپایلر جاوا را هدایت می‌کند که تمام کلاس‌های عمومی و واسط‌ها را از بسته‌های java.io وjava.servlet را در کامپایل وارد کند.
 کلاس Hello کلاس Genericservlet را توسعه می‌دهد. کلاس Genericservlet واسطی برای سرور فراهم می‌کند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
 صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید می‌کند. نوعاً صفحات HTML به درخواست‌های HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه می‌کنند.JSP به javaservlet کامپایل می‌شود.
 Swing کتابخانهٔ است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شده‌اند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد می‌کند.
 اولین جملهٔ import کامپایلر جاوا را هدایت می‌کند تا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند؛ و import دوم همهٔ کلاس‌های عمومی و واسط آن‌ها را از بستهٔ javax.swing اضافه می‌کند. کلاس Hello کلاس Jframe را توسعه می‌دهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.
 زمانی که برنامه آغاز می‌شود، تابع main با JVM صدا زده می‌شود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده می‌شود.
 کتابخانه‌های جاوا که به صورت بایت کد از کد اصلی کامپایل شده‌اند، برای پشتیبانی از بعضی از کاربردهای جاوا، توسطJRE منتشر شده‌است. مثال‌هایی از این کتابخانه‌ها عبارتند از:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 شرکت سان میکروسیستم، ۴ نوع ویرایش از کاربردهای مختلف جاوا را ارائه داده‌است:
 
 
 
 مصرف حافظه بالا و سخت‌افزار در برنامه‌های نوشته شده و مدیریت غیر متوازن Thread Pool و عدم قابلیت توزیع پذیری.
 حذف اشاره‌گرها در جاوا به دلیل مشکلاتی بوده که آن‌ها در طول تاریخشان به وجود آورده‌اند (البته در زمان گذشته که در برنامه‌هایی مانند ++c برنامه‌نویس مستقیماً به مدیریت اقدام می‌نمود)، اگرچه این موارد در برنامه‌های سیستمی لازم به‌نظر می‌رسد ولی در محیط‌های تحت‌وب که بستر اصلی جاوا هستند می‌توانند اثراتی به مراتب شدیدتر نسبت به آنچه در برنامه‌های سیستمی دارند داشته باشند و باعث می‌شود که توجه برنامه‌نویسان از مسائلی چون کارایی، و مقیاس‌پذیری برنامه به تنظیم اشاره‌گرها معطوف گردد.
 از ابتدای به وجود آمدن جاوا، کتابخانه JNI - Java Native Interface در آن وجود داشته که قابلیت فراخوانی و دستکاری برنامه‌هایی در ++C و… را می‌داده که از نمونه‌های آن می‌توان به Jtwain که یک بسته‌ایست که از کتابخانه‌های ویندوز برای اسکن عکس استفاده می‌کند، یا SWT که یک بسته نرم‌افزاریست که از کتابخانه‌های ویندوز و لینوکس (برحسب سیستم‌عامل) برای ساخت (UI) استفاده می‌کند، نام برد.
 جاوا امروزه به عنوان یک زبان پر کاربرد به خصوص در برنامه‌های کاربردی تجاری مطرح است و بسیاری از سازمان‌ها و شرکت‌های از این زبان و تکنولوژی‌های مربوط به آن استفاده می‌کنند. ابزارهای زیادی برای تست برنامه‌های نوشته شده توسط جاوا مورد استفاده قرار می‌گیرند. برای مثال: در جاوا به دلیل مدیریت حافظه توسط Garbage collection ممکن است به دلیل نوشتن غیر استاندارد برنامه در حافظه نشتی داشته باشیم (memory leakage)که این امر سبب می‌شود حافظه گرفته شده آزاد نشود و با پر شدن حافظه برنامه دچار خلل شود. برای حل این مشکل و سایر مشکلات نیاز به تست نرم‌افزارهای نوشته شده در جاوا هستیم. با بزرگ شدن حجم نرم‌افزار تست آن نیز سخت‌تر می‌شود. بهتر از قبل از نوشتن برنامه‌های تجاری بزرگ به تست و نحوه آن هم فکر شود. 
 برخی مردم به علت شباهت اسمی، جاوا و را با هم اشتباه می‌گیرند. در حالیکه این دو زبان گرچه در ظاهر و کلمات شباهت دارند ولی به‌طور ساختاری با یکدیگر کاملاً متفاوت هستند. جاوااسکریپت محصول شرکت است. جاوا برای اجرا باید به مجازی ترجمه شود اما جاوااسکریپت زبانی است که معمولاً در صفحات وب نوشته می‌شود و توسط مرورگر تفسیر می‌گردد. در جاوا متغیرها همگی بر اساس نوع آن‌ها معرفی می‌شوند ولی در جاواسکریپت نوع متغیرها به صورت ضمنی مشخص می‌شود 
 جاوا در نسخه ۸ تغییرات بسیار مهم و گسترده‌ای داشته‌است. مفاهیمی مانند واسط‌های تابعی، عبارت‌های لامبدا، جویبار (Stream) و امکانات گسترده کتابخانه‌ای در این نسخه معرفی شده‌اند. در این نسخه، رویکرد برنامه‌نویسی تابعی، علاوه بر رویکرد شیءگرایی، ممکن شده‌است.
 در نسخهٔ جاوا ۹ که در تاریخ ۲۱ سپتامبر ۲۰۱۷، به صورت عمومی عرضه شد، پروژه‌ای به نام Jigsaw به آن اضافه شد که قابلیت برنامه‌نویسی در قالب ماژول را در جاوا امکان‌پذیر کرد
 داشتن یک پلتفرم ماژولار و ماژولار شدن JDK به توسعه‌دهندگان آن کمک می‌کند چنین پلتفرم قدیمی، گنده و بزرگی را مدیریت کنند و به جلو حرکت دهند. آن‌طور که معماران آن می‌گویند، الان تنها فرصتی بود که به سمت ماژولار کردن JDK پیش بروند وگرنه در آینده هرگز چنین اتفاقی ممکن نمی‌شد. ماژولاریتی علاوه بر کمک کردن به توسعه‌دهندگان JDK برای حرکت آن رو به جلو، فرصتی استثنایی‌تر را برای ما ایجاد می‌کند. تصور کنید که یک ساده تحت کنسول نوشته‌اید، نه از امکانات JavaEE استفاده می‌کنید، نه کاری به CORBA دارید، نه JPA. احتمالاً تنها چیزی که نیاز دارید موارد پایه‌ای است. اما برای اجرا و توزیع برنامه‌تان نیاز به یک JRE کامل و حجیم دارید که احتمالاً راه انداختنش هم چندان ارزان نیست. اما با ماژولار شدن جاوا شما می‌توانید فقط ماژول‌هایی که استفاده کرده‌اید را در قالب یک Runtime Image داشته باشید که دیگر چیزهای اضافی‌ای که از آن‌ها استفاده نکرده‌اید را ندارد. با این قابلیت، حجم برنامه‌ها کم شده و شما می‌توانید از دستگاه‌های Embedded که حافظه محدودتری دارند هم استفاده کنید.
 هر ماژول دارای یک اسم است، کدهای مرتبط و پکیج‌ها را در درون خود نگه می‌دارد و کامل است به این معنی که یک کار مشخص را انجام می‌دهد و وظایفش را از طریق APIهای مشخص شده در دسترس دیگران قرار می‌دهد. یک ماژول به صورت صریح بیان می‌کند برای کار کردن به چه ماژول‌هایی نیاز دارد و کدام بخش از پکیج‌هایش برای دیگر ماژول‌ها قابل دسترسی است. این‌گونه به سادگی می‌توانیم وابستگی بین ماژول‌ها را تشخیص دهیم، بر روی Internal APIهایمان کنترل داشته باشیم و در صورت نبود یک ماژول در آغاز برنامه از نبود آن فوراً مطلع شویم و در صورت وجود هرگونه تداخلی به سرعت به خطا بربخوریم. 
 این نسخه که در نسخه ۲۰ مارس ۲۰۱۸ عرضه گردید، یک نسخه کوتاه مدت بوده و بیشتر شامل مجموعه‌ای از بهینه‌سازی‌ها می‌باشد. در این میان قابلیت جالبی به نام Local Variable Type Interface دیده می‌شود.
اگر با زبان پایتون کد زده باشید این قابلیت شبیه به تعریف متغیر در این زبان است. به‌طور خلاصه باید گفت با استفاده از این قابلیت دیگر نیاز به تعیین دقیق نوع متغیرهای محلی نداریم. این کامپایلر است که نوع متغیر را با توجه به مقداردهی تشخیص می‌دهد. تا به الان اگر می‌خواستیم لیستی از رشته‌ها بسازیم، کد مشابه پایین را می‌زدیم:
 حال اگر بخواهیم از این قابلیت جدید استفاده کنیم کافیست به جای List (در اینجا نوع متغیر است) var را جایگزین کنیم. پس کد بالا به صورت زیر تغییر خواهد کرد:
 var نه کلمهٔ کلیدی جدیدی است و نه هیچ بایت کد جدیدی برای آن تعریف شده‌است. براساس مقداری که به متغیر می‌دهیم تفسیر می‌شود. 
 یکی دیگر از گزینه‌های محبوب در سازمان‌های بزرگ می‌باشد و ده‌ها سال است که به همان شکل باقی مانده است. جاوا به طور گسترده‌ای برای ساخت برنامه‌های تحت وب در مقیاس سازمانی استفاده می‌شود و مدت‌هاست که در لیست دیده می‌شود. جاوا بسیار پایدار است و بنابراین، بسیاری از سازمان‌های بزرگ آن را پذیرفته‌اند. اگر به دنبال شغل مبتنی بر توسعه در یک سازمان بزرگ هستید، جاوا زبانی است که شما باید یاد بگیرید. جاوا همچنین در توسعه برنامه کاربرد گسترده‌ای دارد. تقریباً هر شغلی امروز به یک برنامه اندروید نیاز دارد. با توجه به اینکه امروز میلیاردها کاربر اندروید وجود دارد و با توجه به این واقعیت که یک چارچوب عالی برای توسعه مبتنی بر جاوا (Android Studio) ایجاد کرده است.
{"title": "جاوا", "link": "https://fa.wikipedia.org//w/index.php?title=%D8%AC%D8%A7%D9%88%D8%A7&oldid=34962320", "language": "fa"}