جاوا (زبان برنامه نویسی)

از ویکیپدیا، دانشنامه آزاد
رفتن به ناوبری پرش به جستجو

جاوا
Java programming language logo.svg
الگوچند پارادایم : عمومی ، شی گرا ( مبتنی بر کلاس ) ، کاربردی ، ضروری ، بازتابنده ، همزمان
طراحی شده توسطجیمز گاسلینگ
توسعه دهندهشرکت اوراکل
اولین بار ظاهر شد23 مه 1995 ؛ 26 سال پیش [1] (1995-05-23)
انتشار پایدار
جاوا SE 17 [2] Edit this on Wikidata / 14 سپتامبر 2021 ؛ 30 روز پیش (14 September 2021)
رشته تایپاستاتیک ، قوی ، ایمن ، اسمی ، آشکار
پسوندهای نام فایل.java ، .class ، .jar ، .jmod
سایت اینترنتیoracle .com /java /
تحت تأثیر قرار گرفته است
CLU ، [3] Simula67 ، [3] Lisp ، [3] Smalltalk ، [3] Ada 83 ، C ++ ، [4] C# ، [5] ایفل ، [6] Mesa ، [7] Modula-3 ، [8] اوبرون ، [9] Objective-C ، [10] UCSD Pascal ، [11] [12] Object Pascal [13]
تحت تأثیر قرار گرفته است
Ada 2005 ، BeanShell ، C# ، Chapel ، [14] Clojure ، ECMAScript ، Fantom ، Gambas ، [15] Groovy ، Hack ، [16] Haxe ، J# ، Kotlin ، PHP ، Python ، Scala ، Seed7 ، Vala ، JavaScript

جاوا است سطح بالا ، مبتنی بر کلاس ، شی گرا زبان برنامه نویسی طراحی شده است که به عنوان چند اجرای دارند وابستگی که ممکن است. این یک زبان برنامه نویسی عمومی است که به برنامه نویسان اجازه می دهد یکبار بنویسند ، هر جا اجرا شوند (WORA) ، [17] به این معنی که کد جاوا کامپایل شده می تواند بر روی همه سیستم عامل هایی که جاوا را پشتیبانی می کنند بدون نیاز به تجدید نظر اجرا شود. [18] برنامه های جاوا معمولاً به صورت کد بایتی کامپایل می شوند که می توانند بر روی هر ماشین مجازی جاوا (JVM) بدون در نظر گرفتن زمینه اصلی اجرا شوند.معماری کامپیوتر . نحو جاوا شبیه به C و C ++ است، اما کمتر سطح پایین امکانات از هر دوی آنها. زمان اجرا جاوا قابلیت های پویایی (مانند بازتاب و اصلاح کد اجرا) را ارائه می دهد که معمولاً در زبانهای کامپایل سنتی موجود نیست. طبق گزارش GitHub ، از سال 2019 ، جاوا یکی از محبوب ترین زبان های برنامه نویسی بود ، [19] [20] به ویژه برای برنامه های وب سرویس گیرنده سرویس گیرنده ، با 9 میلیون توسعه دهنده گزارش شده است. [21]

جاوا در ابتدا توسط جیمز گاسلینگ در Sun Microsystems توسعه یافت ( که پس از آن توسط اوراکل خریداری شد ) و در سال 1995 به عنوان یکی از اجزای اصلی پلتفرم جاوا Sun Microsystems منتشر شد . کامپایلرهای جاوا ، ماشین های مجازی و کتابخانه های کلاس پیاده سازی اصلی و مرجع در ابتدا توسط Sun تحت مجوزهای اختصاصی منتشر شد . از ماه مه 2007 ، مطابق با مشخصات فرایند جامعه جاوا ، سان اکثر فناوری های جاوا خود را تحت مجوز GPL-2.0 مجدداً مجوز داده بود. اوراکل HotSpot اختصاصی خود را ارائه می دهدماشین مجازی جاوا، با این حال این مقام اجرای مرجع است openjdk به JVM که رایگان نرم افزار منبع باز و استفاده شده توسط بسیاری از توسعه دهندگان و JVM به طور پیش فرض برای تقریبا تمام توزیعهای لینوکس است.

از اکتبر 2021 ، جاوا 17 آخرین نسخه است. جاوا 8 ، 11 و 17 نسخه های پشتیبانی بلند مدت (LTS) فعلی هستند . اوراکل آخرین به روزرسانی عمومی بدون نسخه رایگان برای نسخه قدیمی Java 8 LTS را در ژانویه 2019 برای استفاده تجاری منتشر کرد ، اگرچه در غیر این صورت هنوز از جاوا 8 با به روزرسانی های عمومی برای استفاده شخصی به طور نامحدود پشتیبانی می کند. فروشندگان دیگر شروع به ارائه نسخه های بدون هزینه OpenJDK 8 و 11 کرده اند که هنوز در حال دریافت امنیت و سایر ارتقاء هستند.

Oracle (و دیگران) به شدت توصیه می کنند که نسخه های قدیمی و پشتیبانی نشده جاوا را به دلیل خطرات جدی ناشی از مشکلات امنیتی حل نشده ، حذف کنید. [22] اوراکل به کاربران خود توصیه می کند که فوراً به نسخه پشتیبانی شده ، مانند یکی از نسخه های LTS (8 ، 11 ، 17) مراجعه کنند.

تاریخچه

دوک ، طلسم جاوا
جیمز گاسلینگ ، خالق جاوا ، در سال 2008
TIOBE برنامه نویسی محبوبیت زبان شاخص نمودار از سال 2002 تا 2018. جاوا به طور پیوسته در بالای از اواسط 2015 تا اوایل 2020 بود.

جیمز گاسلینگ ، مایک شریدان و پاتریک ناتون پروژه زبان جاوا را در ژوئن 1991 آغاز کردند. [23] جاوا در اصل برای تلویزیون تعاملی طراحی شده بود ، اما در آن زمان برای صنعت تلویزیون کابلی دیجیتال بسیار پیشرفته بود. [24] زبان در ابتدا با نام شد بلوط پس از یک بلوط درخت است که در خارج از دفتر احمق ایستاد. بعدها این پروژه با نام Green شناخته شد و در نهایت به جاوا ، از قهوه جاوا ، نوعی قهوه از اندونزی تغییر نام داد . [25] احمق جاوا با طراحی C / C ++نحو سبک که برنامه نویسان سیستم و برنامه برای آنها آشنا هستند. [26]

Sun Microsystems اولین پیاده سازی عمومی را با نام جاوا 1.0 در سال 1996 منتشر کرد. [27] این وعده نوشتن یکبار ، اجرا در هر نقطه (WORA) را می دهد و زمان اجرای بدون هزینه ای را بر روی پلتفرم های محبوب ارائه می دهد . نسبتاً امن و دارای امنیت قابل تنظیم ، محدودیت دسترسی به شبکه و فایل را مجاز می دانست. مرورگرهای اصلی وب به زودی قابلیت اجرای اپلت های جاوا را در صفحات وب شامل می شوند و جاوا به سرعت محبوب می شود. کامپایلر جاوا 1.0 توسط آرتور ون هوف مجدداً در جاوا نوشته شد تا با مشخصات زبان جاوا 1.0 کاملاً مطابقت داشته باشد. [28]با ظهور جاوا 2 (در ابتدا با عنوان J2SE 1.2 در دسامبر 1998 - 1999 منتشر شد) ، نسخه های جدید دارای چندین پیکربندی برای انواع مختلف سیستم عامل ها بودند. J2EE شامل فناوری ها و API هایی برای برنامه های سازمانی است که معمولاً در محیط سرور اجرا می شوند ، در حالی که J2ME دارای API های بهینه شده برای برنامه های تلفن همراه است. نسخه دسکتاپ به J2SE تغییر نام داد. در سال 2006 ، Sun به منظور بازاریابی ، نسخه های جدید J2 را به ترتیب به نام Java EE ، Java ME و Java SE تغییر نام داد .

در سال 1997 ، Sun Microsystems برای رسمی شدن جاوا به سازمان استاندارد ISO/IEC JTC 1 و بعداً Ecma International مراجعه کرد ، اما به زودی از این روند کنار رفت. [29] [30] [31] جاوا یک استاندارد عملا باقی می ماند ، که از طریق فرایند جامعه جاوا کنترل می شود . [32] در یک زمان ، Sun اکثر برنامه های کاربردی جاوا خود را با وجود وضعیت نرم افزاری اختصاصی بدون هزینه در دسترس قرار داد. Sun از طریق فروش مجوز برای محصولات تخصصی مانند Java Enterprise System از جاوا درآمد کسب کرد.

در 13 نوامبر 2006 ، سان بسیاری از ماشین های مجازی جاوا (JVM) خود را تحت شرایط مجوز GPL-2.0 فقط به عنوان نرم افزار رایگان و منبع باز (FOSS) منتشر کرد. در 8 مه 2007 ، سان این فرآیند را به پایان رساند ، و همه کد اصلی JVM خود را تحت شرایط نرم افزاری رایگان /شرایط توزیع منبع باز ، جدا از بخش کوچکی از کد که Sun حق کپی رایت آن را نداشت ، در دسترس قرار داد. [33]

ریچ گرین ، نایب رئیس Sun گفت که نقش ایده آل سان در رابطه با جاوا به عنوان یک بشارت دهنده بود . [34] به دنبال دستیابی شرکت Sun Oracle به شرکت Sun Microsystems در سالهای 2009 تا 2009 ، اوراکل خود را به عنوان متولی فناوری جاوا با تعهد بی وقفه برای تقویت جامعه مشارکت و شفافیت معرفی کرد. [35] این امر مانع از آن شد که اوراکل مدت کوتاهی پس از آن از Google به دلیل استفاده از جاوا در SDK Android استفاده کند (به بخش Android مراجعه کنید ).

در 2 آوریل 2010 ، جیمز گاسلینگ از اوراکل استعفا داد . [36]

در ژانویه 2016 ، اوراکل اعلام کرد که محیط های جاوا بر اساس JDK 9 افزونه مرورگر را متوقف می کند. [37]

نرم افزار جاوا روی همه چیز از لپ تاپ گرفته تا مراکز داده ، کنسول های بازی تا ابر رایانه های علمی اجرا می شود . [38]

اصول

پنج هدف اصلی در ایجاد زبان جاوا وجود داشت: [18]

  1. باید ساده ، شی گرا و آشنا باشد.
  2. باید محکم و ایمن باشد.
  3. باید از نظر معماری خنثی و قابل حمل باشد.
  4. باید با کارایی بالا اجرا شود.
  5. باید تفسیر ، رشته و پویا باشد.

نسخه ها

از سپتامبر 2021 ، جاوا 8 ، 11 و 17 به عنوان نسخه های پشتیبانی بلند مدت (LTS) پشتیبانی می شوند . [39] نسخه های اصلی انتشار جاوا به همراه تاریخ انتشار آنها:

نسخه تاریخ
JDK بتا 1995
JDK1.0 23 ژانویه 1996 [40]
JDK 1.1 19 فوریه 1997
J2SE 1.2 8 دسامبر 1998
J2SE 1.3 8 مه 2000
J2SE 1.4 6 فوریه 2002
J2SE 5.0 30 سپتامبر 2004
جاوا SE 6 11 دسامبر 2006
جاوا SE 7 28 جولای 2011
جاوا SE 8 (LTS) 18 مارس 2014
جاوا SE 9 21 سپتامبر 2017
جاوا SE 10 20 مارس 2018
جاوا SE 11 (LTS) 25 سپتامبر 2018 [41]
جاوا SE 12 19 مارس 2019
جاوا SE 13 17 سپتامبر 2019
جاوا SE 14 17 مارس 2020
جاوا SE 15 15 سپتامبر 2020 [42]
جاوا SE 16 16 مارس 2021
جاوا SE 17 (LTS) 14 سپتامبر 2021
جاوا SE 18 مارس 2022

نسخه ها

سان چهار نسخه جاوا با هدف قرار دادن محیط های مختلف برنامه را تعریف کرده و پشتیبانی می کند و بسیاری از API های خود را به گونه ای تقسیم بندی کرده است که به یکی از سیستم عامل ها تعلق داشته باشد. سکوها عبارتند از:

کلاس در API های جاوا را به گروه های مجزا به نام سازمان یافته بسته . هر بسته شامل مجموعه ای از رابط ها ، کلاس ها ، زیر بسته ها و استثنا می باشد.

Sun همچنین نسخه ای به نام Personal Java ارائه داد که توسط جفت های مشخصات پیکربندی جاوا ME مبتنی بر استانداردها جایگزین شده است.

سیستم اجرایی

JVM جاوا و کد بایت

یکی از اهداف طراحی جاوا قابلیت حمل است ، به این معنی که برنامه هایی که برای پلتفرم جاوا نوشته شده اند باید به طور مشابه بر روی هر ترکیبی از سخت افزار و سیستم عامل با پشتیبانی کافی از زمان اجرا اجرا شوند. این امر با کامپایل کد زبان جاوا در یک نمای متوسط ​​به نام Java bytecode ، به جای مستقیم به کد ماشین مخصوص معماری ، بدست می آید . دستورالعمل های بایت جاوا شبیه کد ماشین است ، اما باید توسط یک ماشین مجازی (VM) که مخصوص سخت افزار میزبان نوشته شده است اجرا شود. کاربران نهایی معمولاً از Java Runtime Environment (JRE) نصب شده بر روی دستگاه خود برای برنامه های مستقل جاوا یا در مرورگر وب برایاپلت های جاوا .

کتابخانه های استاندارد راهی عمومی برای دسترسی به ویژگی های اختصاصی میزبان مانند گرافیک ، رشته و شبکه ارائه می دهند .

استفاده از بایت کد جهانی حمل و نقل را ساده می کند. با این حال ، هزینه تفسیر بایت کد در دستورالعمل های ماشین باعث می شود برنامه های تفسیری تقریباً کندتر از اجزای اجرایی بومی اجرا شوند . کامپایلرهای Just-in-time (JIT) که در زمان اجرا کدهای بایت را به کد ماشین کامپایل می کنند ، از همان مراحل اولیه معرفی شدند. کامپایلر جاوا Hotspot در واقع دو کامپایلر در یک است. و با GraalVM (شامل جاوا 11 ، اما از جاوا 16 حذف شده است) که امکان تدوین طبقه ای را فراهم می آورد. [47] جاوا به خودی خود مستقل از پلتفرم است و با پلتفرم خاصی که توسط ماشین مجازی جاوا (JVM) برای آن اجرا می شود ، سازگار است.بایت کد جاوا را به زبان ماشین پلتفرم تبدیل کنید. [48]

عملکرد

برنامه هایی که به زبان جاوا نوشته شده اند نسبت به برنامه های نوشته شده با C ++ کندتر هستند و به حافظه بیشتری نیاز دارند . [49] [50] با این حال، سرعت اجرای برنامه های جاوا به طور قابل توجهی با معرفی بهبود کامپایل درجا در 1997/1998 برای جاوا 1.1 ، [51] علاوه بر این از ویژگی های زبان حمایت از تجزیه و تحلیل بهتر کد (مانند کلاس درونی ، کلاس StringBuilder ، ادعاهای اختیاری و غیره) و بهینه سازی در ماشین مجازی جاوا ، مانند تبدیل شدن HotSpot به JVM پیش فرض Sun در سال 2000. با جاوا 1.5 ، عملکرد با افزودن بسته java.util.concurrent بهبود یافت ، از جمله پیاده سازی های بدون قفل ازConcurrentMaps و دیگر مجموعه های چند هسته ای ، و با جاوا 1.6 بهبود بیشتری یافت.

غیر JVM

برخی از سیستم عامل ها از سخت افزار مستقیم برای جاوا پشتیبانی می کنند. میکرو کنترلرهایی وجود دارند که می توانند بایت کد جاوا را در سخت افزار به جای یک ماشین مجازی جاوا نرم افزاری اجرا کنند [52] و برخی از پردازنده های مبتنی بر ARM می توانند از سخت افزار برای اجرای بایت کد جاوا از طریق گزینه Jazelle استفاده کنند ، اگرچه پشتیبانی بیشتر در پیاده سازی های فعلی کاهش یافته است. از ARM

مدیریت خودکار حافظه

جاوا از یک جمع آوری زباله خودکار برای مدیریت حافظه در چرخه زندگی شی استفاده می کند . برنامه نویس تعیین می کند که چه موقع اشیاء ایجاد می شوند و زمان اجرا جاوا مسئول بازیابی حافظه است هنگامی که اشیاء دیگر مورد استفاده قرار نمی گیرند. هنگامی که هیچ اشاره ای به یک شیء باقی نمی ماند ، حافظه غیرقابل دسترسی واجد شرایط آزاد شدن خودکار توسط جمع کننده زباله می شود. اگر کد برنامه نویس مرجع یک شی را که دیگر به آن نیاز ندارید ذخیره کند ، چیزی شبیه به نشت حافظه ممکن است رخ دهد ، به طور معمول زمانی که اشیایی که دیگر مورد نیاز نیستند در ظروفی که هنوز در حال استفاده هستند ذخیره شوند. اگر متدهایی برای یک شیء موجود فراخوانی شود ، یک استثناء نشانگر تهی پرتاب می شود. [53] [54]

یکی از ایده هایی که در پشت مدل مدیریت حافظه خودکار جاوا وجود دارد این است که برنامه نویسان می توانند از عهده مدیریت مدیریت حافظه به صورت دستی رهایی یابند. در برخی از زبانها، حافظه برای ایجاد اشیاء طور تلویحی بر این اختصاص داده پشته یا به صراحت اختصاص داده و deallocated از پشته . در حالت دوم ، مسئولیت مدیریت حافظه بر عهده برنامه نویس است. اگر برنامه یک شیء را تخصیص ندهد ، نشت حافظه رخ می دهد. اگر برنامه تلاش کند به حافظه ای که قبلاً تخصیص داده شده است دسترسی پیدا کند یا تخصیص دهد ، نتیجه نامشخص است و پیش بینی آن دشوار است و احتمالاً برنامه ناپایدار یا خراب می شود. با استفاده از اشاره گرهای هوشمند می توان تا حدی این مشکل را برطرف کرد، اما اینها سربار و پیچیدگی را اضافه می کنند. توجه داشته باشید که جمع آوری زباله مانع از نشت حافظه منطقی نمی شود ، یعنی مواردی که هنوز در آنها به حافظه اشاره شده اما هرگز مورد استفاده قرار نگرفته است.

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

جاوا از محاسبات اشاره گر سبک C/C ++ پشتیبانی نمی کند ، جایی که آدرس اشیاء را می توان به صورت حسابی دستکاری کرد (به عنوان مثال با افزودن یا تفریق افست). این به جمع کننده زباله اجازه می دهد تا اشیاء مرجع را جابجا کند و ایمنی و امنیت نوع را تضمین می کند.

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

جاوا شامل چندین نوع جمع آوری زباله است. از جاوا 9 ، HotSpot از Garbage First Garbage Collector (G1GC) به عنوان پیش فرض استفاده می کند. [55] با این حال ، چندین جمع کننده زباله دیگر نیز وجود دارد که می توانند برای مدیریت انبار استفاده شوند. برای اکثر برنامه های کاربردی در جاوا ، G1GC کافی است. پیش از این ، Parallel Garbage Collector در جاوا 8 استفاده می شد.

حل مشکل مدیریت حافظه ، برنامه نویسی را از عهده ی مدیریت مناسب انواع دیگر منابع ، مانند اتصالات شبکه یا پایگاه داده ، دسته فایل و غیره ، به ویژه در موارد استثنا ، بر نمی دارد.

نحو

نمودار وابستگی کلاسهای Java Core (ایجاد شده با jdeps و Gephi )

نحو جاوا تا حد زیادی تحت تأثیر C ++ و C است . بر خلاف C ++ ، که نحو برنامه نویسی ساختار یافته ، عمومی و شی گرا را ترکیب می کند ، جاوا تقریباً منحصراً به عنوان یک زبان شی گرا ساخته شده است. [18] همه کدها در داخل کلاسها نوشته می شوند و هر مورد داده به جز انواع داده های اولیه (یعنی اعداد صحیح ، اعداد شناور ، مقادیر بولی و کاراکترها) یک شیء است که به دلایل عملکرد شیء نیستند. به جاوا از برخی جنبه های محبوب C ++ (مانند printfروش) استفاده مجدد می کند .

بر خلاف C ++ ، جاوا از اضافه بار اپراتور [56] یا وراثت چندگانه برای کلاس ها پشتیبانی نمی کند ، اگرچه وراثت چندگانه برای رابط ها پشتیبانی می شود . [57]

جاوا از نظراتی مشابه C ++ استفاده می کند. سه نوع مختلف از نظرات وجود دارد: یک سبک تک خطی که با دو خط تیره ( //) مشخص می شود ، یک سبک چند خطی که با /*و با آن بسته می شود */، و شیوه اظهار نظر Javadoc با /**و با آن باز می شود */. شیوه اظهارنظر Javadoc به کاربر اجازه می دهد تا برنامه اجرایی Javadoc را برای ایجاد اسناد برای برنامه اجرا کند و می تواند توسط برخی از محیط های توسعه یکپارچه (IDE) مانند Eclipse خوانده شود تا توسعه دهندگان به اسناد داخل IDE دسترسی پیدا کنند.

سلام نمونه جهان

برنامه سنتی Hello world را می توان به زبان جاوا نوشت: [58]

 کلاس  عمومی HelloWorldApp  {
    public  static  void  main ( String []  args )  {
        سیستم . خارج . println ( "سلام جهان!"  // رشته را روی کنسول چاپ می کند.
    }
}

همه فایلهای منبع باید بر اساس کلاس عمومی حاوی آنها نامگذاری شوند .java، به عنوان مثال پسوند اضافه شود HelloWorldApp.java. ابتدا باید با استفاده از یک کامپایلر جاوا ، به صورت کد بایتی کامپایل شود و یک فایل با .classپسوند ( HelloWorldApp.classدر این مورد) تولید کند. فقط در این صورت است که می توان آن را اجرا یا راه اندازی کرد. فایل منبع جاوا ممکن است فقط شامل یک کلاس عمومی باشد ، اما می تواند شامل چندین کلاس با اصلاح کننده دسترسی غیر عمومی و هر تعداد کلاس داخلی عمومی باشد . هنگامی که فایل منبع شامل چندین کلاس است ، لازم است یک کلاس (معرفی شده توسط classکلمه کلیدی) عمومی (قبل از کلمه کلیدی) عمومی شود publicو نام فایل منبع با آن نام کلاس عمومی.

کلاسی که عمومی اعلام نشده است ممکن است در هر .javaفایلی ذخیره شود . کامپایلر یک فایل کلاس برای هر کلاس تعریف شده در فایل منبع ایجاد می کند. نام فایل کلاس نام کلاس است ، .class ضمیمه شده است. برای ایجاد فایل کلاس ، با کلاس های ناشناس طوری رفتار می شود که گویی نام آنها ترکیبی از نام کلاس محصور کننده آنها ، $ و یک عدد صحیح است.

کلمه کلیدی public نشان می دهد که یک روش می توان از کد در کلاس های دیگر نامیده می شود، یا این که یک کلاس را میتوان با خارج از کلاسها سلسله مراتب کلاس استفاده می شود. سلسله مراتب کلاس مربوط به نام پوشه ای است که فایل .java در آن قرار دارد. این را اصلاح کننده سطح دسترسی می نامند. سایر اصلاح کننده های سطح دسترسی عبارتند از کلمات کلیدی private(روشی که فقط در یک کلاس قابل دسترسی است) و protected(که اجازه دسترسی به کد از یک بسته را می دهد). اگر یک قطعه کد سعی کند به روشهای خصوصی یا روشهای محافظت شده دسترسی پیدا کند ، JVM یک فایل را ارسال می کندSecurityException

کلمه کلیدی static[19] در مقابل یک متد یک روش ایستا را نشان می دهد که فقط با کلاس ارتباط دارد و نه با هیچ نمونه خاصی از آن کلاس. تنها روشهای ایستا را می توان بدون اشاره به شیء فراخوانی کرد. متدهای استاتیک نمی توانند به هیچ یک از اعضای کلاس که ایستا نیستند نیز دسترسی داشته باشند. روشهایی که استاتیک تعیین نشده اند ، روشهای نمونه هستند و برای کار نیاز به نمونه خاصی از کلاس دارند.

کلمه کلیدی voidنشان می دهد که روش اصلی هیچ مقداری را به تماس گیرنده بر نمی گرداند. اگر برنامه جاوا باید با کد خطا خارج شود ، باید System.exit()صریحاً تماس بگیرد .

نام روش mainیک کلمه کلیدی در زبان جاوا نیست. این فقط نام روشی است که پرتاب کننده جاوا برای انتقال کنترل به برنامه فرا می خواند. کلاس های جاوا که در محیط های مدیریت شده مانند برنامه های کاربردی و Enterprise JavaBeans اجرا می شوند ، از main()متدی استفاده نمی کنند یا نیازی ندارند . یک برنامه جاوا ممکن است شامل چندین کلاس باشد که دارای mainمتد هستند ، به این معنی که به VM باید به طور واضح گفته شود که از کدام کلاس راه اندازی شود.

روش اصلی باید آرایه ای از Stringاشیاء را بپذیرد . طبق قرارداد ، به آن اشاره شده است argsاگرچه از هر نام شناسه قانونی دیگری می توان استفاده کرد. از جاوا 5 ، روش اصلی همچنین می تواند از آرگومان های متغیر استفاده کند ، به این صورت public static void main(String... args)که اجازه می دهد روش اصلی با تعداد دلخواه Stringآرگومان فراخوانی شود. تأثیر این اعلان جایگزین از نظر معنایی یکسان است (با argsپارامتری که هنوز آرایه ای از Stringاشیاء است) ، اما نحو جایگزینی را برای ایجاد و ارسال آرایه امکان پذیر می کند.

راه انداز جاوا با بارگیری یک کلاس معین (مشخص شده در خط فرمان یا به عنوان یک ویژگی در JAR ) و شروع public static void main(String[])روش آن ، جاوا را راه اندازی می کند . برنامه های مستقل باید این روش را به صراحت اعلام کنند. String[] argsپارامتر آرایه ای از است Stringاشیاء حاوی هر آرگومان به کلاس. پارامترهایی که mainاغلب با استفاده از خط فرمان ارسال می شوند .

چاپ بخشی از یک کتابخانه استاندارد جاوا است: Systemکلاس یک میدان استاتیک عمومی به نام را تعریف می کند out. outشی یک نمونه از است PrintStreamکلاس و روش های مختلفی برای چاپ داده را فراهم می کند بیرون استاندارد ، از جمله println(String)که همچنین اضافه یک خط جدید به تصویب رشته .

رشته "Hello World!"توسط کامپایلر به طور خودکار به شی String تبدیل می شود.

مثال با روشها

// این نمونه ای از نظر یک خط با استفاده از دو خط افقی است

/ * 
* این نمونه ای از یک نظر چند خطی با استفاده از اسلش و ستاره است. 
* از این نوع نظر می توان برای نگهداری اطلاعات زیاد یا غیرفعال کردن 
کد * استفاده کرد ، اما به خاطر سپردن بستن نظر بسیار مهم است. 
*/

بسته های  fibsandlies ؛

واردات  java.util.Map ؛ 
واردات  java.util.HashMap ؛

/*** 
این نمونه ای از نظر Javadoc است. Javadoc می تواند اسناد 
* را از این متن 
جمع آوری کند. نظرات جاوادوک باید بلافاصله قبل از کلاس ، روش ، * یا فیلد مستند شده باشد. 
*author ویکیپدیا داوطلبان 
* / 
عمومی  کلاس  FibCalculator  گسترش  فیبوناچی  ابزار  ماشین حساب  { 
    خصوصی  استاتیک  نقشه < عدد صحیح ،  عدد صحیح >  مموایز  =  جدید  HashMap <> ()؛

    / * 
     * روش اصلی که به شرح زیر نوشته شده است توسط JVM به عنوان نقطه شروع 
     * برای برنامه استفاده می شود. 
     */ 
    public  static  void  main ( String []  args )  { 
        memoized . قرار دادن ( 1 ،  1 ) ؛ 
        مموایز . قرار دادن ( 2 ،  1 ) ؛ 
        سیستم . خارج . println ( retracement ( 12 ))؛  // دوازدهمین شماره فیبوناچی را دریافت کرده و برای کنسول چاپ کنید 
    }

    /*** 
     نمونه ای از متدی که به زبان جاوا نوشته شده و در یک کلاس پیچیده شده است. 
     * با توجه به عدد FIBINDEX غیر منفی ، عدد 
     Nth Fibonacci را 
برمی گرداند ، جایی که N برابر FIBINDEX است.      * 
     *param fibIndex شاخص از عدد فیبوناچی 
     *return تعداد فیبوناچی 
     * / 
    عمومی  استاتیک  از نوع int  فیبوناچی ( از نوع int  fibIndex )  { 
        اگر  ( مموایز . containsKey ( fibIndex ))  بازگشت  مموایز . دریافت ( fibIndex ) ؛ 
        else  { 
            int answer  =  retracement ( fibIndex  -  1 )  +  retracement ( fibIndex  -  2 
            مموایز . put ( fibIndex ،  answer ) ؛ 
            پاسخ برگشت  ؛ } } }
        
    

کلاسهای ویژه

اپلت

اپلت های جاوا برنامه هایی بودند که در برنامه های دیگر ، معمولاً در صفحه وب نمایش داده شده در مرورگر وب ، جاسازی شده بودند . API اپلت جاوا اکنون از جاوا 9 در سال 2017 منسوخ شده است. [59] [60]

سرولت

فناوری جاوا سرولت مکانیزم ساده و سازگاری را برای توسعه عملکرد سرور وب و دسترسی به سیستم های تجاری موجود در اختیار توسعه دهندگان وب قرار می دهد. سرولت ها اجزای Java EE سمت سرور هستند که به درخواست های مشتریان پاسخ می دهند . در بیشتر مواقع ، این به معنای تولید صفحات HTML در پاسخ به درخواست های HTTP است ، اگرچه تعدادی از کلاس های سرویس استاندارد دیگر نیز وجود دارد ، برای مثال برای ارتباطات WebSocket .

API servlet جاوا تا حدودی توسط دو فناوری استاندارد جاوا برای خدمات وب جایگزین شده است (اما هنوز در زیر پوشش استفاده می شود):

پیاده سازی های معمولی این API ها در سرورهای برنامه یا Servlet Containers از یک سرولت استاندارد برای رسیدگی به همه تعاملات با درخواست ها و پاسخ های HTTP استفاده می کند که به منطق واقعی کسب و کار به روش های خدمات وب اختصاص می یابد.

صفحات جاوا سرور

صفحات JavaServer (JSP) اجزای Java EE سمت سرور هستند که به درخواستهای HTTP از مشتریان ، به طور معمول صفحات HTML ، پاسخ می دهند . JSP ها کد جاوا را در یک صفحه HTML با استفاده از محدود کننده های ویژه و . JSP برای اولین بار که به آن دسترسی پیدا می کند ، به یک سرولت جاوا ، یک برنامه جاوا به تنهایی کامپایل می شود. پس از آن ، سرولت تولید شده پاسخ را ایجاد می کند. [61] <%%>

چرخش برنامه

Swing یک کتابخانه رابط کاربری گرافیکی برای پلت فرم Java SE است. این امکان وجود دارد که ظاهر و احساس متفاوتی را از طریق سیستم ظاهری و حساس Swing مشخص کنید. کلون های Windows ، GTK+ و Motif توسط Sun عرضه می شوند. اپل همچنین ظاهر و حس Aqua را برای macOS ارائه می دهد . در مواردی که پیاده سازی های اولیه این ظاهر و ظاهر ممکن است فاقد آن تلقی شده باشد ، Swing در جاوا SE 6 با استفاده از روالهای ترسیم ویجت GUI بومی سیستم عامل های زیرین ، این مشکل را برطرف می کند. [62]

برنامه JavaFX

JavaFX یک بستر نرم افزاری برای ایجاد و ارائه برنامه های رومیزی و همچنین برنامه های کاربردی وب غنی است که می تواند در انواع مختلف دستگاه ها اجرا شود. JavaFX قرار است جایگزین Swing به عنوان کتابخانه GUI استاندارد برای Java SE شود ، اما از آنجا که JDK 11 JavaFX در JDK اصلی و در عوض در یک ماژول جداگانه قرار نگرفته است. [63] JavaFX از رایانه های رومیزی و مرورگرهای وب در Microsoft Windows ، Linux و macOS پشتیبانی می کند . JavaFX از ظاهر و ظاهر سیستم عامل اصلی پشتیبانی نمی کند. [64]

جنریک

در سال 2004 ، جنریک ها به عنوان بخشی از J2SE 5.0 به زبان جاوا اضافه شدند. قبل از معرفی ژنریک ، هر اعلان متغیر باید از نوع خاصی باشد. به عنوان مثال ، برای کلاس های کانتینر ، این یک مشکل است زیرا هیچ راهی آسان برای ایجاد محفظه ای وجود ندارد که فقط انواع خاصی از اشیاء را بپذیرد. معمولاً Objectیا روی همه زیرگروه های یک کلاس یا رابط کار می کند ، یا باید کلاس ظرف متفاوتی برای هر کلاس موجود ایجاد شود. Generics امکان بررسی نوع زمان کامپایل را بدون ایجاد کلاسهای کانتینری متعدد ، که هر کدام دارای کد تقریباً یکسان هستند ، می دهد. علاوه بر فعال کردن کد کارآمدتر ، با صدور خطاهای زمان کامپایل از وقوع برخی موارد استثنا در زمان اجرا جلوگیری می شود. اگر جاوا از همه خطاهای نوع اجرا جلوگیری کرد (ClassCastExceptionث) در صورت بروز ، از نظر نوع ایمن خواهد بود .

در سال 2016، سیستم نوع جاوا ثابت شده بود نادرست . [65]

انتقاد

انتقاداتی که به جاوا وارد می شود شامل پیاده سازی ژنریک ، [66] سرعت ، [67] استفاده از اعداد بدون علامت ، [68] پیاده سازی حساب های شناور ، [69] و سابقه آسیب پذیری های امنیتی در پیاده سازی اولیه VM VM است. کانون . [70]

کتابخانه های کلاسی

کتابخانه کلاس جاوا است کتابخانه استاندارد ، توسعه یافته برای حمایت از توسعه نرم افزار به زبان جاوا. توسط Oracle با همکاری دیگران از طریق برنامه Java Community Process کنترل می شود. [71] شرکت ها یا افراد شرکت کننده در این فرایند می توانند بر طراحی و توسعه API ها تأثیر بگذارند. این روند در دهه 2010 مورد بحث و جدل قرار گرفت. [72] کتابخانه کلاس شامل ویژگی هایی از قبیل:

مستندات

Javadoc یک سیستم مستندسازی جامع است که توسط Sun Microsystems ایجاد شده است . این برنامه یک سیستم سازماندهی شده برای مستندسازی کد خود را در اختیار توسعه دهندگان قرار می دهد. نظر Javadoc یک ستاره فوق العاده در آغاز، یعنی حائل را دارند /**و */، در حالی که چند خط نظر طبیعی در جاوا با جداکننده تنظیم کردن /*و */، و نظرات تک خط شروع کردن با //. [76]

پیاده سازی

Oracle Corporation مالک فعلی اجرای رسمی پلتفرم Java SE است ، پس از خرید Sun Microsystems در 27 ژانویه 2010. این پیاده سازی بر اساس پیاده سازی اصلی جاوا توسط Sun است. پیاده سازی اوراکل برای مایکروسافت ویندوز (هنوز برای XP کار می کند ، در حالی که نسخه های بعدی آن در حال حاضر به طور رسمی پشتیبانی می شوند) ، macOS ، لینوکس و Solaris در دسترس است . از آنجا که جاوا فاقد هرگونه استانداردسازی رسمی است که توسط Ecma International ، ISO/IEC ، ANSI یا سایر سازمانهای استاندارد شخص ثالث به رسمیت شناخته شود ، پیاده سازی Oracle یک استاندارد عملا است .

پیاده سازی Oracle در دو توزیع مختلف بسته بندی شده است: Java Runtime Environment (JRE) که شامل قسمتهایی از سکوی Java SE است که برای اجرای برنامه های جاوا مورد نیاز است و برای کاربران نهایی در نظر گرفته شده است ، و کیت توسعه جاوا (JDK) ، که در نظر گرفته شده است برای توسعه دهندگان نرم افزار و شامل ابزارهای توسعه مانند کامپایلر جاوا ، Javadoc ، Jar و اشکال زدایی است . اوراکل همچنین GraalVM ، یک کامپایلر و مترجم پویا جاوا با کارایی بالا را منتشر کرده است .

OpenJDK یکی دیگر از برنامه های کاربردی Java SE است که تحت GNU GPL مجوز دارد. پیاده سازی زمانی آغاز شد که Sun شروع به انتشار کد منبع جاوا تحت GPL کرد. از Java SE 7 ، OpenJDK پیاده سازی رسمی مرجع جاوا است.

هدف جاوا این است که همه پیاده سازی های جاوا را سازگار کند. از لحاظ تاریخی ، مجوز علامت تجاری Sun برای استفاده از نام تجاری جاوا اصرار دارد که همه پیاده سازی ها سازگار باشند . این امر پس از آنکه سان ادعا کرد که پیاده سازی مایکروسافت از RMI یا JNI پشتیبانی نمی کند و ویژگی های خاص پلتفرم خود را اضافه کرده است ، با مایکروسافت اختلاف قانونی پیدا کرد . سان در سال 1997 شکایت کرد ، و در سال 2001 ، مبلغ 20 میلیون دلار آمریکا تسویه کرد و همچنین حکم دادگاه برای اعمال شرایط مجوز از سان به دست آورد. [77] در نتیجه ، مایکروسافت دیگر جاوا را با ویندوز ارسال نمی کند .

جاوا مستقل از پلتفرم برای Java EE ضروری است و برای تأیید پیاده سازی ، اعتبارسنجی دقیق تری لازم است. این محیط برنامه های قابل حمل سمت سرور را فعال می کند.

استفاده خارج از پلت فرم جاوا

زبان برنامه نویسی جاوا برای اجرای برنامه های کامپایل شده نیاز به وجود یک بستر نرم افزاری دارد.

اوراکل پلتفرم جاوا را برای استفاده با جاوا تأمین می کند . آندروید SDK یک پلت فرم نرم افزار های جایگزین، در درجه اول برای توسعه استفاده می شود برنامه های کاربردی آندروید با سیستم رابط کاربری گرافیکی خود را دارد.

اندروید

زبان جاوا یک ستون کلیدی در اندروید است ، یک سیستم عامل تلفن همراه منبع باز . اگرچه اندروید ، ساخته شده بر روی هسته لینوکس ، عمدتا با C نوشته شده است ، اما SDK Android از زبان جاوا به عنوان پایه ای برای برنامه های Android استفاده می کند ، اما از هیچ یک از GUI استاندارد ، SE ، ME یا سایر استانداردهای جاوا استفاده نمی کند. [78] زبان بایت کد پشتیبانی شده توسط Android SDK با بایت کد جاوا ناسازگار است و بر روی ماشین مجازی خود اجرا می شود که برای دستگاه های با حافظه کم مانند تلفن های هوشمند و رایانه های لوحی بهینه شده است . بسته به نسخه اندروید ، کد بایت یا توسط ماشین مجازی Dalvik تفسیر می شودیا توسط Android Runtime به کد بومی کامپایل شود .

اندروید کتابخانه استاندارد Java SE کامل را ارائه نمی دهد ، اگرچه Android SDK شامل پیاده سازی مستقل بسیاری از زیرمجموعه های آن است. از جاوا 6 و برخی از ویژگی های جاوا 7 پشتیبانی می کند و پیاده سازی سازگار با کتابخانه استاندارد ( Apache Harmony ) را ارائه می دهد.

جنجال

استفاده از فناوری مربوط به جاوا در اندروید منجر به اختلاف قانونی بین اوراکل و گوگل شد. در 7 مه 2012 ، یک هیئت منصفه در سانفرانسیسکو دریافتند که اگر API ها دارای حق نسخه برداری باشند ، گوگل با استفاده از جاوا در دستگاه های Android حق کپی رایت اوراکل را نقض کرده است. [79] قاضی ناحیه ویلیام آلسوپ در 31 مه 2012 حکم کرد که API ها نمی توانند دارای حق نسخه برداری باشند ، [80] اما این امر توسط دادگاه تجدید نظر ایالات متحده در بخش فدرال در ماه مه 2014 لغو شد. [81] در 26 مه 2016 ، ، دادگاه ناحیه به نفع گوگل تصمیم گرفت ، حکم نقض حق نسخه برداری API جاوا در Android استفاده عادلانه است. [82]در مارس 2018 ، این حکم توسط دادگاه تجدید نظر لغو شد ، که پرونده تعیین خسارت را به دادگاه فدرال سان فرانسیسکو ارسال کرد. [83] گوگل در ماه ژانویه 2019 دادخواست صدور گواهی نامه را به دیوان عالی ایالات متحده ارسال کرد تا دو حکمی را که دادگاه تجدید نظر به نفع اوراکل صادر کرده بود ، به چالش بکشد. [84] در 5 آوریل 2021 ، دادگاه 6-2 به نفع گوگل تصمیم گرفت که استفاده از API های جاوا باید استفاده منصفانه تلقی شود . با این حال ، دادگاه از صدور حکم در مورد حق نسخه برداری API خودداری کرد و در عوض تصمیم خود را با در نظر گرفتن حق نسخه برداری API جاوا "صرفاً به دلیل استدلال" تعیین کرد. [85]

همچنین ببینید

مقایسه جاوا با زبان های دیگر

مراجع

  1. ^ Binstock ، اندرو (20 مه 2015). "20 سال نوآوری جاوا" . فوربس . بایگانی شده از نسخه اصلی در 14 مارس 2016 . بازبینی شده در 18 مارس 2016 .
  2. ^ https://www.oracle.com/java/technologies/downloads/#JDK17 .
  3. ^ a b c d Barbara Liskov with John Guttag (2000). توسعه برنامه در جاوا - انتزاع ، مشخصات و طراحی شی گرا . ایالات متحده ، آدیسون وسلی شابک 9780201657685به
  4. ^ چودری ، هری اچ (28 جولای 2014). "شکستن مصاحبه برنامه نویسی جاوا :: 2000+ مصاحبه جاوا Que/Ans" . بازبینی شده در 29 مه 2016 .
  5. ^ جاوا 5.0پس از معرفی آنها درزبان C# مشابه (و رقیب) ،چندین ویژگی جدید زبان ( تقویت شده برای حلقه ، جعبه خودکار ، varargs و حاشیه نویسی ) اضافه کرد. [1] بایگانی شده در 19 مارس 2011 ، در دستگاه Wayback [2] بایگانی شده در 7 ژانویه 2006 ، در Wayback Machine
  6. ^ گاسلینگ ، جیمز ؛ مک گیلتون ، هنری (مه 1996). "جاوا محیط زیست زبان" . بایگانی شده از نسخه اصلی در 6 مه 2014 . بازبینی شده در 6 مه 2014 .
  7. ^ گاسلینگ ، جیمز ؛ شادی ، بیل ؛ استیل ، گای ؛ براشا ، گیلاد. "مشخصات زبان جاوا ، ویرایش دوم" . بایگانی شده از نسخه اصلی در 5 آگوست 2011 . بازبینی شده در 8 فوریه 2008 .
  8. ^ "AZ زبانهای برنامه نویسی: Modula-3" . Computerworld.com.au. بایگانی شده از نسخه اصلی در 5 ژانویه 2009 . بازبینی شده در 9 ژوئن 2010 .
  9. ^ نیکلاوس ویرت در چندین مورد عمومی ، به عنوان مثال در سخنرانی در موزه پلی تکنیک ، مسکو در سپتامبر 2005 اظهار داشت (چندین گزارش دست اول مستقل به زبان روسی ، به عنوان مثال با ضبط صدا: فیلیپوا ، النا (22 سپتامبر 2005) ). "سخنرانی نیکلاوس ویرت در موزه پلی تکنیک مسکو" . بایگانی شده از نسخه اصلی در 1 دسامبر 2020. بازیابی در 20 نوامبر 2011 .) ، تیم طراحی Sun Java چندین سال قبل از انتشار جاوا مجوز منابع کامپایلر Oberon را گرفت و آن را مورد بررسی قرار داد: فشردگی (نسبی) ، ایمنی نوع ، جمع آوری زباله ، عدم وراثت چندگانه برای کلاسها - همه این طراحی کلی کلیدی جاوا و اوبرون ویژگی ها را به اشتراک می گذارند.
  10. ^ پاتریک ناتون از Objective-C به عنوان یک تأثیر قوی در طراحی زبان برنامه نویسی جاوا یاد می کند و بیان می کند که مشتقات مستقیم قابل توجه شامل رابط های جاوا (برگرفته از پروتکل Objective-C) و کلاس های بسته بندی اولیه است. [3] بایگانی شده در 13 ژوئیه 2011 ، در دستگاه Wayback
  11. ^ TechMetrix Research (1999). "تاریخچه جاوا" (PDF) . سرور جاوا برنامه گزارش . بایگانی شده از نسخه اصلی (PDF) در 29 دسامبر 2010. پروژه با نام سبز پیش رفت و زبان بر اساس یک مدل قدیمی از UCSD پاسکال طراحی شده بود ، که امکان ایجاد کد تفسیری را فراهم می آورد.
  12. ^ "گفتگو با جیمز گوسلینگ - ACM صف" . Queue.acm.org. 31 آگوست 2004. بایگانی شده از نسخه اصلی در 16 جولای 2015 . بازبینی شده در 9 ژوئن 2010 .
  13. ^ در تابستان 1996 ، سان در حال طراحی پیش زمینه ای بود که امروزه مدل رویداد معماری کامپوننت AWT و JavaBeans است. بورلند کمک زیادی به این روند کرد. ما با دقت زیادی به Delphi Object Pascal نگاه کردیم و یک نمونه اولیه از مراجع متد محدود را برای درک تعامل آنها با زبان برنامه نویسی جاوا و API های آن ساختیم. مقاله سفید درباره نمایندگان مایکروسافت
  14. ^ "مشخصات نمازخانه (تقدیرنامه)" (PDF) . Cray Inc. 1 اکتبر 2015. بایگانی شده (PDF) از نسخه اصلی در 5 فوریه 2016 . بازبینی شده در 14 ژانویه 2016 .
  15. ^ "گامباس مقدمه" . وب سایت گامباس بایگانی شده از نسخه اصلی در 9 اکتبر 2017 . بازبینی شده در 9 اکتبر 2017 .
  16. ^ "پرسش و پاسخ فیس بوک: هک تایپ ایستا را به PHP جهان می آورد" . از InfoWorld . 26 مارس 2014. بایگانی شده از نسخه اصلی در 13 فوریه 2015 . بازبینی شده در 11 ژانویه 2015 .
  17. ^ "یکبار بنویس ، هر جا بدوی؟" به هفته نامه کامپیوتر . 2 مه 2002. بایگانی شده از نسخه اصلی در 13 آگوست 2021 . بازبینی شده در 27 جولای 2009 .
  18. ^ a b c "1.2 اهداف طراحی زبان برنامه نویسی جاوا" . اوراکل 1 ژانویه 1999. بایگانی شده از نسخه اصلی در 23 ژانویه 2013 . بازبینی شده در 14 ژانویه 2013 .
  19. ^ a b مک میلان ، رابرت (1 اوت 2013). "آیا جاوا موجو خود را از دست می دهد؟" به wired.com . بایگانی شده از نسخه اصلی در 15 فوریه 2017 . بازیابی شده در 8 مارس 2017 . جاوا در حال افول است ، حداقل بر اساس یک لباس که به جهان در حال تغییر زبان های برنامه نویسی رایانه توجه می کند. بیش از یک دهه است که بر فهرست انجمن برنامه نویسی TIOBE تسلط دارد و دوباره در صدر قرار گرفته است - نمایی از اشتیاق توسعه دهندگان نرم افزار که به مواردی مانند نتایج جستجوی اینترنتی نگاه می کند تا میزان وزوز زبان های مختلف را اندازه گیری کند. اما اخیراً جاوا در حال لغزش است.
  20. ^ چان ، روزالی (22 ژانویه 2019). "10 ترین زبان های برنامه نویسی محبوب، با توجه به" فیس بوک برای برنامه نویسان ، " . Business Insider . بایگانی شده از نسخه اصلی در 29 ژوئن 2019 . بازیابی شده در 29 ژوئن 2019 .
  21. ^ "جاوا وان 2013 نقد و بررسی: جاوا طول می کشد در اینترنت از چیزهایی که" . www.oracle.com . بایگانی شده از نسخه اصلی در 19 آوریل 2016 . بازبینی شده در 19 ژوئن 2016 . نشانی وب Alt
  22. ^ "چرا باید نسخه های قدیمی جاوا را از سیستم خود حذف کنم؟" به اوراکل بایگانی شده از نسخه اصلی در 12 فوریه 2018 . بازبینی شده در 24 سپتامبر 2021 .
  23. ^ بایوس ، جان (حدود 1998). "فناوری جاوا: سالهای اولیه" . شبکه توسعه دهندگان سان . Sun Microsystems . بایگانی شده از نسخه اصلی در 20 آوریل 2005 . بازبینی شده در 22 آوریل 2005 .
  24. ^ برنامه نویسی شی گرا "تاریخ فناوری جاوا" . شبکه توسعه دهندگان سان . ج 1995. بایگانی شده از نسخه اصلی در 10 فوریه 2010 . بازبینی شده در 30 آوریل 2010 .
  25. M مورفی ، کیرون (4 اکتبر 1996). "پس چرا آنها تصمیم گرفتند آن را جاوا بنامند؟" به JavaWorld . بایگانی شده از نسخه اصلی در 13 جولای 2020 . بازیابی شده 2017-07-13 .
  26. ^ کابوتز ، هاینز ؛ Once Upon a Oak بایگانی شده در 13 آوریل 2007 ، در دستگاه Wayback . آرتیما بازبینی شده در 29 آوریل 2007.
  27. ^ "JAVASOFT SHIPS JAVA 1.0" . بایگانی شده از نسخه اصلی در 10 مارس 2007 . بازبینی شده در 13 مه 2018 .
  28. ^ برنامه نویسی شی گرا با جاوا: ملزومات و برنامه های کاربردی . آموزش تاتا مک گراو هیل. پ. 34
  29. ^ "JSG - گروه مطالعه جاوا" . open-std.org . بایگانی شده از نسخه اصلی در 25 آگوست 2006 . بازبینی شده در 2 آگوست 2006 .
  30. ^ "چرا جاوا - بود - نبود - دوبار استاندارد شده است" (PDF) . بایگانی شده (PDF) از نسخه اصلی در 13 ژانویه 2014 . بازبینی شده در 3 ژوئن 2018 .
  31. ^ "ECMA چیست - و چرا مایکروسافت اهمیت می دهد" . بایگانی شده از نسخه اصلی در 6 مه 2014 . بازبینی شده در 6 مه 2014 .
  32. ^ "وب سایت فرآیند جامعه جاوا" . Jcp.org. 24 مه 2010. بایگانی شده از نسخه اصلی در 8 آگوست 2006 . بازبینی شده در 9 ژوئن 2010 .
  33. ^ "JAVAONE: Sun - قسمت عمده جاوا منبع باز است" . GrnLight.net. بایگانی شده از نسخه اصلی در 27 مه 2014 . بازبینی شده در 26 مه 2014 .
  34. ^ "نقش رو به تکامل خورشید جاوا مبلغ" . رسانه اوریلی . بایگانی شده از نسخه اصلی در 15 سپتامبر 2010 . بازبینی شده در 2 آگوست 2009 .
  35. ^ "اوراکل و جاوا" . oracle.com . شرکت اوراکل بایگانی شده از نسخه اصلی در 31 ژانویه 2010 . بازبینی شده در 23 آگوست 2010 . اوراکل از زمان ظهور جاوا در سال 1995 یکی از حامیان اصلی و اساسی بوده است و با تعهد بی وقفه به تقویت جامعه مشارکت و شفافیت نقش جدیدی را به عنوان مباشر فناوری جاوا بر عهده می گیرد.
  36. ^ احمق، جیمز (آوریل 9، 2010). "زمان حرکت کردن ..." در جاده ای جدید . بایگانی شده از نسخه اصلی در 5 نوامبر 2010 . بازبینی شده در 16 نوامبر 2011 .
  37. ^ موضوع ، دالیبور. "حرکت به وب بدون افزونه" . بایگانی شده از نسخه اصلی در 16 مارس 2016 . بازبینی شده در 15 مارس 2016 .
  38. ^ "درباره فناوری جاوا بیاموزید" . اوراکل بایگانی شده از نسخه اصلی در 24 نوامبر 2011 . بازبینی شده در 21 نوامبر 2011 .
  39. ^ "نقشه راه Oracle Java SE Support" . اوراکل 13 سپتامبر 2021 . بازبینی شده در 18 سپتامبر 2021 .
  40. ^ "JAVASOFT SHIPS JAVA 1.0" . sun.com . بایگانی شده از نسخه اصلی در 10 مارس 2007 . بازبینی شده در 5 فوریه 2008 .
  41. ^ چاندر ، شرات. "معرفی Java SE 11" . oracle.com . بایگانی شده از نسخه اصلی در 26 سپتامبر 2018 . بازیابی شده در 26 سپتامبر 2018 .
  42. ^ "ورود جاوا 15!" به اوراکل . 15 سپتامبر 2020. بایگانی شده از نسخه اصلی در 16 سپتامبر 2020 . بازیابی شده در 15 سپتامبر 2020 .
  43. ^ "مرور کلی جاوا کارت" . شبکه فن آوری اوراکل . اوراکل بایگانی شده از نسخه اصلی در 7 ژانویه 2015 . بازبینی شده در 18 دسامبر 2014 .
  44. ^ "پلت فرم جاوا ، نسخه خرد (جاوای ME)" . شبکه فن آوری اوراکل . اوراکل بایگانی شده از نسخه اصلی در 4 ژانویه 2015 . بازبینی شده در 18 دسامبر 2014 .
  45. ^ "جاوا SE" . شبکه فن آوری اوراکل . اوراکل بایگانی شده از نسخه اصلی در 24 دسامبر 2014 . بازبینی شده در 18 دسامبر 2014 .
  46. ^ "Java Platform، Enterprise Edition (Java EE)" . شبکه فن آوری اوراکل . اوراکل بایگانی شده از نسخه اصلی در 17 دسامبر 2014 . بازبینی شده در 18 دسامبر 2014 .
  47. ^ "عمیق شیرجه رفتن به جدید جاوا JIT کامپایلر - میهن دانلود | Baeldung" . www.baeldung.com . 6 آگوست 2021 . بازیابی در 13 اکتبر 2021 .
  48. ^ "آیا پلتفرم JVM (ماشین مجازی جاوا) وابسته یا مستقل است؟ استفاده از JVM چه مزیتی دارد و جاوا یک زبان ترجمه شده است؟" به مصاحبه برنامه نویس بایگانی شده از نسخه اصلی در 19 ژانویه 2015 . بازبینی شده در 19 ژانویه 2015 .
  49. ^ یلوویچ ، دژان. "چرا جاوا همیشه کندتر از C ++ است" . بایگانی شده از نسخه اصلی در 11 فوریه 2008 . بازبینی شده در 15 فوریه 2008 .
  50. ^ گوگل "تشخیص حلقه در C ++/Java/Go/Scala" (PDF) . بایگانی شده (PDF) از نسخه اصلی در 16 نوامبر 2011 . بازبینی شده در 12 جولای 2012 .
  51. ^ "کامپایلر جاوا به موقع Symantec در Sun JDK 1.1 ادغام می شود" . بایگانی شده از نسخه اصلی در 28 ژوئن 2010 . بازبینی شده در 1 آگوست 2009 .
  52. ^ سالسیچ ، زوران ؛ پارک ، هیجونگ ؛ تایش ، یورگن ؛ مالک ، آویناش ؛ ندیم ، محمد (22 ژوئیه 2017). "Noc-HMP: یک پردازنده چند هسته ای ناهمگن برای سیستم های جاسازی شده طراحی شده در SystemJ". معاملات ACM در طراحی اتوماسیون سیستم های الکترونیکی . 22 (4): 73. doi : 10.1145/3073416 . ISSN 1084-4309 . S2CID 11150290 .  
  53. ^ "NullPointerException" . اوراکل بایگانی شده از نسخه اصلی در 6 مه 2014 . بازبینی شده در 6 مه 2014 .
  54. ^ "استثنا در جاوا" . Artima.com. بایگانی شده از نسخه اصلی در 21 ژانویه 2009 . بازبینی شده در 10 آگوست 2010 .
  55. ^ "جاوا HotSpot ™ بهبود عملکرد ماشین مجازی" . Oracle.com. بایگانی شده از نسخه اصلی در 29 مه 2017 . بازبینی شده در 26 آوریل 2017 .
  56. ^ "بارگذاری بیش از حد اپراتور (C# در مقابل جاوا)" . C# برای توسعه دهندگان جاوا . مایکروسافت. بایگانی شده از نسخه اصلی در 7 ژانویه 2015 . بازبینی شده در 10 دسامبر 2014 .
  57. ^ "وراثت چندگانه حالت ، اجرا و نوع" . جاوا ™ آموزش . اوراکل بایگانی شده از نسخه اصلی در 9 نوامبر 2014 . بازبینی شده در 10 دسامبر 2014 .
  58. ^ "درس: نگاهی دقیق تر به برنامه Hello World" . آموزش های جاوا Get شروع به کار . شرکت اوراکل . بایگانی شده از نسخه اصلی در 17 مارس 2011 . بازبینی شده در 14 آوریل 2011 .
  59. ^ "API ها ، ویژگی ها و گزینه های منسوخ شده" . اوراکل بایگانی شده از نسخه اصلی در 19 ژوئن 2019 . بازیابی شده در 31 مه 2019 .
  60. ^ "Applet (جاوا پلت فرم SE 7)" . اسناد . اوراکل بایگانی شده از نسخه اصلی در 2 آگوست 2020 . بازیابی شده در 1 مه 2020 .
  61. ^ "صفحه JSP چیست؟ - آموزش Java EE 5" . docs.oracle.com . بایگانی شده از نسخه اصلی در 2 آگوست 2020 . بازیابی شده در 1 مه 2020 .
  62. ^ "دنباله: ایجاد GUI با JFC/Swing (آموزش های جاوا)" . docs.oracle.com . بایگانی شده از نسخه اصلی در 29 آوریل 2020 . بازیابی شده در 1 مه 2020 .
  63. ^ "حذف شده از JDK 11 ، JavaFX 11 به عنوان یک ماژول مستقل وارد می شود" . از InfoWorld . بایگانی شده از نسخه اصلی در 14 اکتبر 2020 . بازیابی در 13 اکتبر 2020 .
  64. ^ "شروع به کار با JavaFX: Hello World، JavaFX Style" . آموزش و اسناد JavaFX 2 . اوراکل بایگانی شده از نسخه اصلی در 2 آگوست 2020 . بازیابی شده در 1 مه 2020 .
  65. ^ "سیستمهای نوع جاوا و اسکالا نامناسب هستند" (PDF) . بایگانی شده (PDF) از نسخه اصلی در 28 نوامبر 2016 . بازبینی شده در 20 فوریه 2017 .
  66. ^ آرنولد ، کن. "جنریک ها مضر در نظر گرفته می شوند" . java.net. بایگانی شده از نسخه اصلی در 10 اکتبر 2007 . بازبینی شده در 10 سپتامبر 2015 . نظرات بیشتر به مقاله اصلی در عکسهای بایگانی قبلی موجود است.
  67. ^ یلوویچ ، دژان. "چرا جاوا همیشه کندتر از C ++ خواهد بود" . www.jelovic.com. بایگانی شده از نسخه اصلی در 11 فوریه 2008 . بازبینی شده در 17 اکتبر 2012 .
  68. ^ اونز، شان R. "جاوا و int بدون علامت، کوتاه بدون علامت، بایت بدون علامت، بدون علامت طولانی، و غیره (و یا به جای، فقدان آن)" . بایگانی شده از نسخه اصلی در 20 فوریه 2009 . بازبینی شده در 4 جولای 2011 .
  69. ^ کاهان ، ویلیام. "چگونه نقطه شناور جاوا به همه افراد در همه جا صدمه می زند" (PDF) . مهندسی برق و علوم کامپیوتر ، دانشگاه کالیفرنیا در برکلی. بایگانی شده (PDF) از نسخه اصلی در 5 سپتامبر 2012 . بازبینی شده در 4 ژوئن 2011 .
  70. ^ "آیا جاوا را بررسی کرده اید؟" به بایگانی شده از نسخه اصلی در 21 سپتامبر 2012 . بازبینی شده در 23 دسامبر 2011 .
  71. ^ Cadenhead ، Rogers (20 نوامبر 2017) ، درک نحوه عملکرد برنامه های جاوا ، بایگانی شده از نسخه اصلی در 13 آگوست 2021 ، بازیابی 26 مارس 2019
  72. ^ وولف، نیکی (2016 مه 26). "گوگل شش سال در نبرد قانونی با اوراکل بر سر حق نسخه برداری کد Android پیروز شد" . نگهبان . ISSN 0261-3077 . بایگانی شده از نسخه اصلی در 26 مارس 2019 . بازیابی شده در 26 مارس 2019 . 
  73. ^ "نمای کلی چارچوب مجموعه ها" . مستندات جاوا . اوراکل بایگانی شده از نسخه اصلی در 31 دسامبر 2014 . بازبینی شده در 18 دسامبر 2014 .
  74. ^ "مرور جاوا ™ امنیت" . مستندات جاوا . اوراکل بایگانی شده از نسخه اصلی در 3 ژانویه 2015 . بازبینی شده در 18 دسامبر 2014 .
  75. ^ "نوین: بین المللی" . جاوا ™ آموزش . اوراکل بایگانی شده از نسخه اصلی در 31 دسامبر 2014 . بازبینی شده در 18 دسامبر 2014 .
  76. ^ "نحوه نوشتن نظرات Doc برای ابزار Javadoc" . شبکه فن آوری اوراکل . اوراکل بایگانی شده از نسخه اصلی در 18 دسامبر 2014 . بازبینی شده در 18 دسامبر 2014 .
  77. ^ Niccolai، جیمز (ژانویه 24، 2001). "سان ، مایکروسافت پرونده جاوا را حل و فصل کرد" . JavaWorld . IDG سرویس خبری . بایگانی شده از نسخه اصلی در 14 جولای 2020 . بازیابی شده 2017-07-13 .
  78. ^ ون گورپ ، ژیل (13 نوامبر 2007). "Google Android: برداشتهای اولیه و انتقاد" . Javalobby . بایگانی شده از نسخه اصلی در 28 آگوست 2008 . بازبینی شده در 7 مارس 2009 . صادقانه بگویم ، من نمی فهمم چرا گوگل قصد دارد حجم وسیعی از پیاده سازی های موجود را نادیده بگیرد. به نظر می رسد یک مورد بد "در اینجا اختراع نشده است" برای من. در نهایت ، این امر پذیرش را کند می کند. در حال حاضر پلتفرم های جاوا برای دنیای موبایل بسیار زیاد است و این یکی دیگر است
  79. ^ مولین ، جو. "گوگل متهم به نقض در محاکمه اوراکل است ؛ سردردهای حقوقی آینده در راه است" . حقوق و اختلال . Ars Technica. بایگانی شده از نسخه اصلی در 8 مه 2012 . بازبینی شده در 8 مه 2012 .
  80. ^ مولین ، جو (31 مه 2012). "گوگل حکم API مهم را به دست آورد ، پرونده اوراکل ضعیف شد" . Ars Technica . بایگانی شده از نسخه اصلی در 12 مارس 2017 . بازبینی شده در 1 ژوئن 2012 .
  81. ^ روزنبلات ، ست (9 مه 2014). "دادگاه در اعتراض به حق ثبت اختراع جاوا با اوراکل در مورد اندروید طرف است" . CNET . بایگانی شده از نسخه اصلی در 10 مه 2014 . بازبینی شده در 10 مه 2014 .
  82. ^ مولین ، جو (26 مه 2016). "Google Oracle را شکست داد - Android از API های جاوا" استفاده عادلانه "می کند . Ars Technica . بایگانی شده از نسخه اصلی در 20 ژانویه 2017 . بازبینی شده در 26 مه 2016 .
  83. ^ فریور، کوروش (2018 مارس 27). " " استفاده Google از بسته های API جاوا عادلانه نبود ، "مقررات دادگاه تجدید نظر" . Ars Technica . بایگانی شده از نسخه اصلی در 24 سپتامبر 2019 . بازیابی شده در 6 اوت 2019 .
  84. ^ لی ، تیموتی (23 آوریل 2019). "گوگل از دیوان عالی درخواست می کند تا حکم فاجعه بار در مورد کپی رایت API را لغو کند" . Ars Technica . بایگانی شده از نسخه اصلی در 23 آوریل 2019 . بازیابی شده در 23 آوریل 2019 .
  85. ^ " گوگل LLC در برابر اوراکل امریکا وارز 593 آمریکا ____ (2021)" (PDF) . بایگانی شده (PDF) از نسخه اصلی در 5 آوریل 2021 . بازیابی شده در 6 آوریل 2021 .

آثار ذکر شده

پیوندهای خارجی