You are currently viewing نکاتی برای مهاجرت به OpenJDK

نکاتی برای مهاجرت به OpenJDK


بسیاری از سازمان هایی که آماده مهاجرت از Oracle Java SE هستند تعجب می کنند که این فرآیند چقدر طول می کشد. با این حال، هیچ پاسخ واحدی برای این سوال وجود ندارد. زمان لازم برای مهاجرت به حداقل نیم دوجین متغیری بستگی دارد که مختص یک سازمان هستند.

یکی از این متغیرها اهداف مهاجرت شرکت است – دستیابی به برخی از اهداف نسبت به سایرین زمان بیشتری می برد. به عنوان مثال، اگر هدف انتقال کامل Oracle Java در سریع ترین زمان ممکن باشد، برنامه مهاجرت با سازمانی که در درجه اول به دنبال پشتیبانی از برنامه های قدیمی است متفاوت خواهد بود. نسخه های قدیمی جاوا را اجرا می کندمانند جاوا 6 و 7، و یک رویکرد مرحله ای را در یک دوره طولانی تر ترجیح می دهند.

در حال آماده شدن برای مهاجرت از Oracle Java SE

اولین مرحله انتقال، انجام یک فهرست جاوا است که اغلب وقت‌گیرترین بخش کیت توسعه جاوا است.JDK) مهاجرت به دلیل تنوع نسخه های JDK مورد استفاده. به طور معمول، هنگامی که یک برنامه جدید مستقر می شود، از آخرین نسخه JDK در آن زمان استفاده می کند و حتی زمانی که نسخه های جدیدتر جاوا منتشر می شود، به استفاده از آن ادامه می دهد. این کاملاً منطقی است زیرا با نسخه مستقر آزمایش شده است.

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

برای ایجاد فهرست کاملی از استفاده از JDK، سازمان‌ها باید هر ماشینی را در دارایی خود بررسی کنند که هر برنامه‌ای مبتنی بر ماشین مجازی جاوا (JVM) را اجرا می‌کند. اگر از ابزارهای مدیریت دارایی فناوری اطلاعات (ITAM) برای نظارت بر استفاده از نرم افزار استفاده شود، این می تواند آسان باشد. بسیاری از شرکت ها این ابزارها را برای اطمینان از رعایت شرایط مجوز پیاده سازی می کنند. این ابزارها می توانند به سرعت گزارشی تولید کنند که نشان می دهد کدام ماشین ها کدام نسخه از جاوا را نصب کرده اند. اسکریپت هایی نیز از فروشندگانی مانند Azul برای کمک به موجودی یکپارچه JVM موجود است.

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

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

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

اخیر تغییرات در مجوز و قیمت گذاری Oracle JDKبا این حال، به این معنی است که کاربران به طور فزاینده ای هنگام اجرای JDK های جایگزین به پشتیبانی نیاز دارند. بسیاری از فروشندگان برنامه اکنون تا زمانی که برنامه بر روی یک نسخه تایید شده فناوری سازگاری کیت (TCK) از OpenJDK اجرا شود، پشتیبانی ارائه می کنند. از آنجایی که آنها می توانند به این گونه توزیع ها اعتماد کنند که از نظر عملکردی با Oracle JDK یکسان هستند، لازم نیست نگران آزمایش توزیع های متعدد با برنامه های خود باشند.

گاهی اوقات برنامه نشان می دهد که ایمن است توزیع های OpenJDK برای پشتیبانی معتبر هستند، اما نه موردی که سازمان می خواهد از آن استفاده کند. در این حالت، کاربران باید با ارائه دهنده برنامه تماس بگیرند تا توزیع مورد نیاز را به لیست خود اضافه کنند. تا زمانی که برای TCK آزمایش می شود، ارائه دهنده نباید مخالفتی داشته باشد.

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

مهاجرت به OpenJDK

OpenJDK توزیع‌ها از وصله در محل برای به‌روزرسانی‌ها پشتیبانی نمی‌کنند – اعمال به‌روزرسانی در JDK مستلزم نصب یک JDK کاملاً جدید است. این بدان معناست که فرآیند نصب انتقال را می‌توان دقیقاً مانند استقرار یک به‌روزرسانی جدید انجام داد، با این تفاوت که به‌روزرسانی JDK Zulu را به‌جای به‌روزرسانی Oracle JDK نصب می‌کند.

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

در بیشتر موارد، فرآیند به روز رسانی آسان و بدون دردسر است. با این حال، گاهی اوقات یک به روز رسانی شامل تغییراتی می شود که می تواند رفتار برنامه را تغییر دهد.

نمونه تامکت

بیایید به یک مثال با استفاده از یک نمونه بسیار رایج نگاه کنیم موتور سرولت آپاچی تامکت. فرض کنید تامکت 8 روی Oracle JDK 8u202 اجرا می شود. این آخرین نسخه Tomcat نیست، اما برای برنامه ما کاملاً کار می کند، بنابراین ارتقا داده نمی شود. ما یک servlet در حال اجرا داریم که داده ها را از مشتری می گیرد، از پایگاه داده MySQL پرس و جو می کند و نتیجه را برمی گرداند.

در مورد مهاجرت ما، آپدیت 372 زولو 8 را نصب کنید و سرور را ریستارت کنید. با این حال، زمانی که می‌خواهیم از برنامه استفاده کنیم، پیام خطایی دریافت می‌کنیم که به ما می‌گوید یک لینک ارتباطی خراب است. این ربطی به حرکت از اوراکل به زولو ندارد.

در عوض، این نتیجه تغییری است که در به‌روزرسانی JDK 8 به‌روزرسانی ۲۹۱ اکتبر ۲۰۲۱ ایجاد شده است. در این به‌روزرسانی، تنظیمات پیش‌فرض برای امنیت لایه انتقال (TLS) به‌طور پیش‌فرض به غیرفعال کردن TLSv1.0 و TLSv1.1 تغییر یافت. بنابراین، برای اینکه برنامه مانند قبل کار کند، باید فایل jre/lib/security/java.security را اصلاح کنیم و ارجاعات به TLS را از تنظیمات jdk.tls.disabled algorithms حذف کنیم.

وقتی چنین اتفاقی می‌افتد، بررسی اینکه مشکل به‌جای استفاده از یک به‌روزرسانی JDK متفاوت است، مهم است. داشتن یک ارائه‌دهنده پشتیبانی تجاری که می‌تواند به‌روزرسانی‌های قدیمی‌تر را ارائه دهد، می‌تواند در چنین مواردی بسیار مفید باشد. فقط همان سطح به روز رسانی JDK را نصب کنید و سپس دوباره برنامه را تست کنید. در مورد مثال ما، تیم پشتیبانی Azul می‌تواند جزئیات تغییرات پیکربندی مورد نیاز برای حل مشکل را ارائه دهد.

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

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

آزمایش برای تأیید رفتار صحیح

فرآیند تست بسته به هر برنامه بسیار متفاوت خواهد بود. برنامه‌های داخلی توسعه‌یافته ممکن است تست‌های رگرسیون گسترده‌ای داشته باشند که می‌توانند به طور کامل تمام بخش‌های برنامه را برای تأیید رفتار مناسب اعمال کنند.

برنامه های شخص ثالث (متن باز یا تجاری) ممکن است دارای مجموعه ای از تست های استاندارد باشند که می توانند اجرا شوند. در غیر این صورت، یک کاربر با تجربه باید برنامه را اجرا کند و تا آنجا که ممکن است جنبه های کاربردی را امتحان کند.

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


این مقاله بر اساس گزیده ای از OpenJDK Migration برای Dummies Azul Special Editionتوسط سایمون ریتر قهرمان جاوا.



Source link