مقدمه 

در این مقاله قرار است نسخه ی اوراکل JDK را با نسخه ی OpenJDK مقایسه کنیم . در ابتدا یک معرفی مختصری از هر دو خواهیم داشت و سپس مقایسه ای بین این دو انجام خواهیم داد و در پایان هم دیگر پیاده سازی های JDK را خواهیم دید . 

 

تاریخچه ی Oracle JDK و Java SE

JDK یا Java Development Kit یک محیط توسعه ی برنامه است که از برنامه نویسی Java در آن استفاده میشود و دارای jre یا Java Runtime Environment نیز هست . این نام از این واقعیت ناشی شده است که حاوی ابزارهای بیشتری نسبت به JRE مستقل و همچنین سایر مؤلفه های مورد نیاز برای توسعه برنامه های جاوا است.

شرکت اوراکل به شدت تاکید دارد که از عبارت JDK برای Java SE (Standard Edition) Development Kit  استفاده شود . ( نسخه های Enterprise Edition و Micro Edition platforms نیز وجود دارد ) .

در زیر تاریخچه ی Java SE لیست شده است . 

 

  • JDK Beta – 1995
  • JDK 1.0 – January 1996
  • JDK 1.1 – February 1997
  • J2SE 1.2 – December 1998
  • J2SE 1.3 – May 2000
  • J2SE 1.4 – February 2002
  • J2SE 5.0 – September 2004
  • Java SE 6 – December 2006
  • Java SE 7 – July 2011
  • Java SE 8 (LTS) – March 2014
  • Java SE 9 – September 2017
  • Java SE 10 (18.3) – March 2018
  • Java SE 11 (18.9 LTS) – September 2018
  • Java SE 12 (19.3) – March 2019

 

نکته : برخی ورژن های بالا دیگر پشتیبانی نمیشوند . 

در تاریخچه ی بالا مشاهده میکنید که حدودا از هر دو سال یکبار نسخه ی جدیدی از Java SE منتشر شده است البته تا قبل از نسخه ی Java SE 7 و بعد از نسخه ی 6 میبینید که حدود 5 سالی طول کشیده است تا نسخه ی جدیدی از Java SE بیاید و همچنین برای انتشار نسخه ی 8 هم سه سال طول کشیده است . 

تا انتشار نسخه ی 10 java se ، میتوانستیم انتظار یک بروزرسانی جدید در هر شش ماه یکبار را داشته باشیم  و البته هم که همه ی این نسخه ها پشتیبانی بلند مدت یا LTS نبوده اند .

طبق گفته ای در سایت اوراکل نسخه های پشتیبانی بلند مدت یا LTS هر سه سال یکبار منتشر میشود . 

آخرین نسخه ی LTS نسخه ی JAVA SE 11 میباشد ولی نسخه ی JAVA SE 8 تا تاریخ December 2020 بروزرسانی خواهد شد البته برای استفاده های غیر تجاری . 

این کیت توسعه نام خود را زمانی به دست آورد که شرکت اوراکل آنرا از Sun Microsystems در سال 2010 خریداری کرد . قبل از آن نامش SUN JDK بود و پیاده سازی رسمی از زبان برنامه نویسی Java بود .

 

OpenJDK چیست ؟ 

OpenJDK یک پیاده سازی رایگان و متن باز از پلتفرم JAVA SE  است و برای اولین بار در سال 2007 منتشر شد و نتیجه ی چیزی بود که شرکت Sun Microsystems از سال 2006 توسعه ی آنرا شروع کرده بود . 

در نظر داشته باشید که OpenJDK یک پیاده سازی رسمی روی Java Standard Edition تا نسخه ی  SE 7 است .

در ابتدا OpenJDK روی JDK 7 بود اما از نسخه ی 10 جاوا ، وظیفه ی پیاده سازی متن باز آن بر عهده ی پروژه ی  JDK است و همانند نسخه ی اوراکل ، پروژه JDK هم هر شش ماه یکبار آپدیت جدید میدهد . 

باید توجه داشته باشیم که قبل از این پروژه طولانی مدت ،  پروژه ی JDK وجود داشته است که ابزار را منتشر کرده بود ولی بعدا متوقف شده بود . 

 

در لیست زیر نسخه های مختلف OpenJdk را میبینید . 

 

  • OpenJDK 6 project – based on JDK 7, but modified to provide an open-source version of Java 6
  • OpenJDK 7 project – 28 July 2011
  • OpenJDK 7u project – this project develops updates to Java Development Kit 7
  • OpenJDK 8 project – 18 March 2014
  • OpenJDK 8u project – this project develops updates to Java Development Kit 8
  • OpenJDK 9 project – 21 September 2017
  • JDK project release 10 – 20 March 2018
  • JDK project release 11 – 25 September 2018
  • JDK project release 12 – Stabilization phase

 

Oracle JDK در برابر OpenJDK

در این بخش بصورت کامل به تفاوت بین OpenJDK و Oracle JDK میپردازیم .

 

  1. زمانبندی انتشار 
    همانطور که بالا هم توضیح دادیم نسخه ی Oracle هر سه سال یکبار یک نسخه ارائه میدهد ولی OpenJDK هر شش ماه یکبار یک بروزرسانی ارائه میدهد . 

  2. مجوزها یا لایسنس
    نسخه ی Oracle JDK بر پایه ی لایسنس شرکت اوراکل به نام Oracle Binary Code License Agreement است درحالیکه نسخه ی OpenJDK بر پایه ی لایسنس GNU General Public License (GNU GPL) version 2 است . 
    هنگام استفاده از پلتفرم Oracle برخی از پیامدهای صدور مجوز وجود دارد. مطابق اعلام Oracle ، به روزرسانی های عمومی برای Oracle Java SE 8 منتشر شده پس از ژانویه 2019 ، برای استفاده های تجاری ، بازرگانی یا استفاده تجاری بدون مجوز تجاری ، در دسترس نخواهد بود. در حالیکه OpenJDK متن باز و رایگان است و مجور بهتری نسبت به نسخه ی اوراکل دارد . 

  3. پرفرمنس 
    هیچ تفاوت فنی واقعی بین این دو از نظر پرفرمنس وجود ندارد زیرا روند ساخت برای Oracle JDK بر اساس OpenJDK است .
    وقتی صحبت از عملکرد می شود ، اوراکل از نظر پاسخگویی و عملکرد JVM بسیار بهتر عمل می کند و این امر هم به دلیل وجود مشتری های تجاری است که به آنها خدمات میدهد . 
    در مقابل OpenJDK نیز زود به زود اپدیت میشود  . بر اساس فیدبک های جامعه ی استفاده کنندگان برخی از مشکلات پرفرمنسی در OpenJDK وجود دارد . 

  4. امکانات 
    اگر بخواهیم امکانات و ابزارهای ارائه شده در این دو نسخه را بررسی کنیم نسخه ی Oracle دارای امکانات زیر نسبت به نسخه ی OpenJDK است 
    * Flight Recorder
    * Java Mission Control
    * Application Class-Data Sharing features
    و نسخه ی OpenJDK نیز دارای ابزار Font Renderer است . 

  5. توسعه و محبوبیت 
    نسخه ی Oracle JDK توسط شرکت اوراکل در حال توسعه است در حالیکه OpenJDK توسط شرکت اوراکل ، OpenJDK و جامعه ی جاوا توسعه داده میشود . 
    با این حال ، شرکت های درجه یک مانند Red Hat ، Azul Systems ، IBM ، Apple Inc. ، SAP AG نیز نقش فعالی در توسعه آن دارند . 
    زمانی که نسخه ی Oracle JDK محبوبیت خوبی داشت شرکت های بزرگ مثل جت برینز برای محیط های معروف Android Studio  و IntelliJ IDEA از آن نسخه استفاده کردند ولی هر دوی آنها الان روی OpenJDK استوار هستند . اینجا را ببینید . 
    از طرف دیگر اکثر لینوکس های محبوب مثل Fedora, Ubuntu, Red Hat Enterprise Linux نسخه ی OpenJDK را بصورت پیشفرض روی خود دارند . 

تغییرات در نسخه ی 11 جاوا

همانطور که در این مقاله رسمی در سایت اوراکل میبینید چندین تغییر اساسی در نسخه ی 11 جاوا اعمال شده است . 

اول از همه اوراکل لایسنس قدیمی خود یعنی BCL را با یک لایسنس جدیدی که ترکیبی از  GNU General Public License v2 و Classpath Exception (GPLv2+CPE) و لایسنس تجاری میباشد ،  جایگزین کرده است . زمانی که از نسخه ی Oracle JDK استفاده میکنید بعنوان بخشی از یک محصول یا سرویس اوراکل هستید و در نظر داشته باشید از دنیای متن باز هم زیاد استقبال نمیشود . 

هر مجوز دارای بیلد خود خواهد بود ،‌ اما از لحاظ عملکردی اینها فقط از منظر ظاهری و بسته بندی باهم تفاوت خواهند داشت . 

در نظر داشته باشید که بسیاری از ابزارهای تجاری که در نسخه ی oracle هست هم اکنون درون OpenJDK هم وجود دارد همانند : Flight Recorder, Java Mission Control, and Application Class-Data Sharing .

Oracle JDK و OpenJDK از نسخه ی 11 جاوا در اصل بیلدهای یکسانی هستند . 

بیایید تفاوت های اصلی را بررسی کنیم :

  • زمانی که از گزینه ی -XX:+UnlockCommercialFeatures استفاده میشود کیت oracle برای java 11 یک هشدار نمایش میدهد ولی نسخه ی OpenJDK جاوا یک خطا برمیگرداند . 
  • نسخه ی Oracle JDK تنظیماتی را ارائه میدهد تا داده های تاریخچه ی استفاده یا همان لاگ را برای Advanced Management Console فراهم کند .
  • نسخه ی Oracle همواره به رمزنگار های شخص ثالث نیاز دارد ولی  فریمورک رمزنگاری در نسخه ی OpenJDK توسط یک اینترفیس متن باز اجرا میشود و به این معنی است که هیچ محدودیتی در آن نیست . 
  • Oracle JDK 11 به داشتن installers, branding و JRE packaging ادامه خواهد داد در حالیکه نسخه ی OpenJDK یک فایل zip یا tar.gz است . 

 

دیگر پیاده سازی های جاوا بغیر از Oracle JDK و OpenJDK 

بعد از بررسی دو نسخه ی Oracle JDK و OpenJDK بیایید ببینیم که دیگر چه پیاده سازی هایی برای جاوا موجود و قابل استفاده است.

* نسخه های رایگان و متن باز 

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

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS Engine
  • RopeVM
  • uJVM

 

* نسخه های اختصاصی 

در زیر لیستی از جاوا ها را مشاهده میکنید که دارای کپی رایت و اختصاصی هستند  

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T – Industrial Smart Software Technology)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

همچنین شما میتوانید پیاده سازی های جاوا فعال و پیاده سازی های غیر فعال جاوا را مطالعه کنید . 

 

نتیجه گیری مقاله درباره ی پیاده سازی های مختلف جاوا 

در این مقاله قصد ما بررسی دو نسخه ی اصلی جاوا یعنی نسخه ی Oracle و نسخه ی OpenJDK بود که از محبوبیت خوبی برخوردار هستند. 

ما ابتدا هریک از آنها را توصیف کردیم و سپس برجسته ترین تفاوتها بین آنها را بررسی کردیم. سپس ، ما توجه ویژه ای به تغییرات و اختلافات از زمان جاوا 11 داشتیم. سرانجام ، ما دیگر برنامه های فعال را که امروزه در دسترس هستند ، لیست کردیم.

 

لینک کوتاه این مقاله : https://avasam.ir/post/179
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖
برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

.:: نظرهای کاربران ::.
هامون طاهری / 2 سال پیش

سلام من وقتی هر گیمی که به جاوا نیاز داره رو باز میکنم برنامه ی open JDKL از صد درصد سی پی یوم استفاده میکنه هر اتفاقی که توی گیم بیوفته. از رم هم خیلی استفاده میکنه و پیسیم صدای وحشتناک زیادی میده. چیکار کنم؟؟؟؟

mostafa ahmadi / 4 سال پیش

بسیار عالی ، ممنون از شما

دوره ی آموزش پروژه محور ساخت کافه بازار دوره ی آموزش پروژه محور ساخت فروشگاه دیجیکالا آموزش لاراول دوره ی آموزش ویو جی اس