Rama Alkhayer

الأعضاء
  • المساهمات

    4
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

0 Neutral
  1. يُخفّض الضّغط من أوقات الاستجابة من خلال تقليص حجم استجابة HTTP. يُعدُّ Gzip طريقةَ الضّغط الأكثر شيوعًا وفعاليّةً في الوقت الحاضر و عادةً ما يُقلّص حجم الاستجابة بما يقارب 70%. في عام 2009، كانت 90% من حركة البيانات على الإنترنت تعبر من خلال متصفّحات تدعم Gzip. أمّا اليوم: يمكنك القيام بذلك على خادم مبنيٍّ على Apache من خلال الملف ‎.htaccess: # BEGIN GZIP <ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule> # END GZIP يُمثّل ما سبق قائمةً بأنواع MIME التي سيُطبّق عليها الضّغط حينئذٍ. يمكنك التعديل على هذه القائمة كما ترى مناسبًا لتشمل جميع أصولك النّصيّة التي ستخدّمها: يُقدّم مشروع HTML5 Boilerplate إعدادات الخواديم لجميع الخواديم الشائعة. هذه هي نسخة المشروع لملف htaccess. <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/vnd.geo+json" \ "application/vnd.ms-fontobject" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> ترجمة -وبتصرف- للمقال Active Gzip Compression لصاحبه Chris Coyier
  2. تُعرّف Node.js بأنّها منصّة JavaScript للبرمجة عامّة الأغراض تسمح للمستخدمين ببناء تطبيقات شبكيّة بسرعة. تجعل Node.js عمليّة التّطوير أكثر اتّساقًا وتكاملًا وذلك بتسخير ميّزات JavaScript في كلٍّ من الواجهة الأماميّة (front end) والواجهة الخلفيّة (backend). سنعرض لك في هذا الدّليل كيفيّة البدء بمنصة Node.js على نظام خادم أبونتو 18.04. المتطلبات يفترض هذا الدّليل أنك تستخدم أبونتو 18.04. قبل أن تبدأ، يجب أن يتوفّر لديك على نظامك حساب مستخدم غير جذر (non-root) ذا امتيازات sudo. يمكنك تعلُّم كيفيّة القيام بهذا من خلال اتّباع خطوات دليل إعداد الخادم الابتدائي لنظام أبونتو 18.04. تثبيت إصدار التوزيعة المستقرة (Distro-Stable) في أبونتو يتضمّن أبونتو 18.04 في مستودعاته الافتراضيّة إصدارًا من Node.js يُمكن استخدامه للحصول على تجربة مُتّسقة على عدّة أنظمة. حتى كتابة هذا الدّليل، فإن الإصدار المتوفّر في المستودعات هو 8.10.0. هذا الإصدار ليس الأحدث، لكنّه مُستقّرٌ وكافٍ لإجراء تجارب سريعةٍ مع اللغة. للحصول على هذا الإصدار، يمكنك استخدام مدير الحزمة apt. قم بتحديث فهرس الحزمة المحليّة لديك بكتابة الأمر التالي: sudo apt update قم بتثبيت Node.js من المستودعات: sudo apt install nodejs إذا لبّت الحزمة الموجودة في المستودعات حاجتك، فهذا كل ما تحتاج القيام به لإعداد Node.js. في معظم الحالات، قد ترغب في تثبيت مدير الحزم الخاصّ بالمنصة (Node.js package manager أو npm). يمكنك القيام بذلك بكتابة التّالي: sudo apt install npm سيسمح ما سبق لك بتثبيت وحدات وحزم لاستخدامها مع Node.js. نظرًا لوجود تعارضٍ مع حزمة أخرى، يُدعى الملفّ التّنفيذيّ المُحمّل من مستودعات أبونتو nodejs بدلًا من node. تذكّر هذا الأمر جيدًا عند تشغيلك للبرمجيّة. للتّحقق من إصدار Node.js المُثبّت لديك بعد هذه الخطوات الأوليّة، قم بكتابة الأمر التّالي: nodejs -v بعد أن تتأكد من إصدار Node.js المُثبّت لديك من مستودعات أبونتو، تستطيع حينها أن تقرر إذا ما كنت تريد العمل مع إصدارات مُغايرة، أرشفة حزم مختلفة أو مدير إصدار آخر. سنناقش هذه العناصر فيما يلي كما سنعرض سُبلًا أكثر مرونةً وحداثةً للتّثبيت. التّثبيت باستخدام أرشيف الحزم الشّخصي PPA للحصول على إصداراتٍ أحدث من Node.js، يمكنك إضافة أرشيف الحزم الشّخصي المُدار من قبل NodeSource. يحتوي هذا الأرشيف على إصدارات أحدث مما هو موجود في مستودعات أبونتو الرّسميّة. كما سيسمح لك بالاختيار من باقة إصدارات أوسع تتراوح بين Node.js v8.x (المدعومة حتى نهاية العام الجاري)، الإصدار ذي الدّعم الطّويل الأمد الحالي Node.js v10.x، والإصدار الحالي Node.js v12.x. قم أوّلًا بتثبيت PPA لتستطيع الوصول إلى محتوياته. من الدّليل الرّئيسيّ لديك، استخدم curl لجلب البرنامج النّصي لتّثبيت الإصدار المُفضّل لديك، لا تنسَ استبدال ‎10.x بالسّلسلة الخاصة بالإصدار الذي تريده إن لم يكن هو المطلوب: cd ~ curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh يمكنك فحص محتويات هذا البرنامج النّصّي من خلال فتحه باستخدامnano أو باستخدام محرّرك النّصّي المُفضّل: nano nodesource_setup.sh قم بتنفيذ البرنامج النّصّي ضمن امتيازات sudo: sudo bash nodesource_setup.sh سيُضاف أرشيف الحزم الشخصي هذا إلى إعداداتك وستُحدّث خابية الحزم المحليّة لديك تلقائيًّا. بعد تنفيذ نص التثبيت من Nodesource، يمكنك تثبيت حزمة Node.js بنفس الطريقة المذكورة أعلاه: sudo apt install nodejs للتّحقق من إصدار Node.js المُثبّت لديك بعد هذه الخطوات الأوليّة، قم بكتابة الأمر التّالي: nodejs -v وسترى خرجًا مشابهًا للتّالي: v10.14.0 nvmتتضمّن حزمة nodejs الملف الثنائي nodejs بالإضافة إلى npm. لذلك، فلست بحاجةٍ لتثبيت npm على حدة. يستخدم npm ملف إعدادات في دليلك الرّئيسيّ لتعقّب التّحديثات. سيُنشَئ هذا الملف عند المرّة الأولى التي تقوم بها بتشغيل npm. قم بتنفيذ هذا الأمر للتّحقق أنّ npm مُثبّتة بالفعل وإنشاء ملف الإعدادت هذا: npm -v وسترى خرجًا مشابهًا للتّالي: 6.4.1 لكي يتسنّى لبعض حزم npm أن تعمل (تتطلّب تلك الحزم على سبيل المثال ترجمة الشّيفرة البرمجيّة من المصدر)، أنت بحاجةٍ لتثبيت حزمة build-essential: sudo apt install build-essential أصبح لديك الآن الأدوات الضّروريّة للعمل مع حزم npm التي تتطلّب ترجمة الشيفرة البرمجيّة من المصدر. التثبيت باستخدام NVM كبديلٍ عن تثبيت Node.js باستخدام apt، يمكنك استخدام أداة nvm، هذه الأداة هي مدير إصدارات المنصة (Node.js Version Manager). عوضًا عن العمل على مستوى نظام التشغيل، تعمل nvm على مستوى مجلد مستقلٍّ داخل مجلدك الرّئيسيّ. هذا يعني أنّ بإمكانك تثبيت عدّة إصدارات قائمة بحدّ ذاتها من Node.js ضمن المجلد الرّئيسيّ دون التّأثير على النّظام بأكمله. يسمح لك ضبط بيئتك باستخدام nvm بالوصول إلى أحدث إصدارات Node.js وفي الوقت ذاته الإبقاء على الإصدارات السابقة وإدارتها بفعاليّة. إنّها وسيلة مختلفةٌ كليًّا عن apt كما أنّ إصدارات Node.js التي تديرها باستخدام nvm مميّزة عن تلك التي تديرها باستخدام apt. يمكنك استخدام curl لتنزيل البرنامج النّصي الخاص بتثبيت nvm من صفحة المشروع على GitHub. لاحظ أنّ رقم الإصدار قد يختلف عمّا هو موجود في هذا الدّليل: curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh -o install_nvm.sh تفحّص البرنامج النّصي للتّثبيت باستخدامnano: nano install_nvm.sh قم بتنفيذ البرنامج النّصي باستخدام bash: bash install_nvm.sh سيثبِّت الأمر السّابق البرمجيّة في مجلد فرعيّ من المجلد الرئيسي ضمن الملف ‎~/.nvm كما سيضيف الأسطر اللازمة إلى الملف ‎~/.profile لاستخدام الملف المذكور. لتستطيع النّفاذ إلى قدرات nvm الوظيفيّة، ستحتاج إما لتسجيل الخروج ومن ثمّ تسجيل الدّخول مرة أخرى أو إعادة تحميل الملف ~/.profile باستخدام الأمر source وذلك حتى تدرك الجلسة الحاليّة التّغييرات التي أحدثتها. source ~/.profile الآن بعد أن قمت بتثبيت nvm، يمكنك تثبيت إصدارات معزولةٍ من Node.js. للحصول على معلومات حول إصدارات Node.js المتوفّرة، نفذ الأمر التّالي: nvm ls-remote سيظهر لك خرجٌ مشابهٌ لما يلي: ... v10.15.3 (Latest LTS: Dubnium) v11.0.0 v11.1.0 v11.2.0 v11.3.0 v11.4.0 v11.5.0 v11.6.0 v11.7.0 v11.8.0 v11.9.0 v11.10.0 v11.10.1 v11.11.0 v11.12.0 v11.13.0 v11.14.0 v11.15.0 v12.0.0 v12.1.0 v12.2.0 كما ترى، الإصدار ذو الدّعم الطّويل الأمد الحالي عند كتابة هذا الدّليل هو v10.15.3، يمكنك تثبيته من خلال الأمر التّالي: nvm install 10.15.3 عادة ما تُبدّل nvm لاستخدام الإصدار الأحدث. يمكنك أن تحدّد الإصدار الذي قمت بتحميله توًّا لتستخدمه nvm من خلال الأمر: nvm use 10.15.3 عندما تُثبّت Node.js باستخدام nvm، فإنّ الملف التنفيذي يحمل الاسم node. يمكنك معرفة الإصدار الذي تستخدمه الصّدفة (Shell) لديك من خلال الأمر التّالي: node -v وسيكون الخرج: v10.15.3 إذا كان لديك أكثر من إصدار Node.js، يمكنك معاينتها بكتابة الأمر: nvm ls إذا رغبت بتحديد أحد هذه الإصدارات كافتراضيّ، نفذ الأمر التالي: nvm alias default 10.15.3 سيتم اختيار هذا الإصدار تلقائيًّا عند الشّروع في جلسةٍ جديدة. يمكنك أيضًا الإشارة إلى الإصدار باسم بديل (Alias) كما يلي: nvm use default يقوم كل إصدار من Node.js بتعقب حزمه ويتوفر لديه npm خاصّ لإدارة هذه الحزم. يمكنك استخدام npm لتثبيت حزم إلى دليل مشروع Node.js وهو ‎./node_modules. استخدم الصّياغة التّالية لتثبيت الوحدة express: npm install express إذا أردت تثبيت الوحدة على نحوٍ عموميٍّ (Global) لجعلها متاحةً للمشاريع الأخرى باستخدام الإصدار نفسه من Node.js، يمكنك إضافة الراية ‎-g: npm install -g express سيقوم الأمر السّابق بتثبيت الحزمة في: ~/.nvm/versions/node/node_version/lib/node_modules/express سيسمح لك تثبيت الوحدة على نحوٍ عموميٍّ بتنفيذ أوامر من سطر الأوامر، لكن سيكون عليك ربط الحزمة في النّطاق الخاص بك لطلبها من داخل برنامج ما: npm link express يمكنك الاطلاع على المزيد من الخيارات التي يوفرها nvm بكتابة الأمر التالي: nvm help حذف منصة Node.js يمكنك حذف Node.js باستخدام apt أو apt تبعًا للإصدار الذي تريد حذفه. لحذف إصدار التّوزيعة المستقرّة، عليك أن تستخدم الأداة apt على مستوى النّظام. لحذف إصدار التّوزيعة المستقرّة، استخدم الأمر الآتي: sudo apt remove nodejs سيحذف هذا الأمرُ الحزمةَ ويحتفظ بملفات الإعدادات. قد تكون هذه الملفات ذات فائدة لك إذا ما رغبت بتثبيت الحزمة مرة أخرى بعد مرور الوقت. إن لم ترد الاحتفاظ بملف الإعدادات لاستخدامه لاحقًا، قم بتنفيذ الأمر التالي: sudo apt purge nodejs سيقوم هذا الأمر بإلغاء تثبيت الحزمة وحذف ملفات الإعدادات المرافقة لها. كخطوة أخيرة، يمكنك حذف جميع الحزم غير المستخدمة والتي تم تثبيتها تلقائيًّا مع الحزم التي قمت بحذفها توًّا باستخدام الأمر التالي: sudo apt autoremove لإلغاء تثبيت إصدار قمت بتفعليه باستخدام nvm ، تحقق أولًّا فيما إذا كان الإصدار المعنيّ هو الإصدار النشط حاليًّا: nvm current إذا لم يكن الإصدار المستهدف هو الإصدار النّشط حاليًّا، نفذ الأمر التّالي: nvm uninstall node_version سيقوم هذا الأمر بإلغاء تثبيت الإصدار المختار من Node.js. أمّا إذا كان الإصدار الذي ترغب بحذفه هو الإصدار النشط، عليك أولًا إلغاء تفعيل nvm لتمكين التّغييرات التي ستقوم بإجرائها: nvm deactivate يمكنك الآن إلغاء تثبيت الإصدار الحالي باستخدام أمر uninstall المستخدم أعلاه والذي سيقوم بحذف جميع الملفات المرافقة للإصدار المعني من Node.js ما عدا الملفات المخبّأة والتي يمكن استخدامها لاحقًا لإعادة التّثبيت. الخاتمة هناك بالفعل العديد من الطّرق للبدء باستخدام Node.js على خادم أبونتو 18.04. عادةً ما تملي الظروف أيًّا من الطرق المذكورة أعلاه هي الأفضل. وفي حين أنّ استخدام الإصدار الموجود في مستودع أبونتو هو الخيار الأسهل، يُقدّم استخدام nvm خيارات ومرونةً أكثر. ترجمة -وبتصرف- للمقال How To Install Node.js on Ubuntu 18.04 لصاحبيه Brennen Bearnes و Kathleen Juell
  3. يمثّل كلٌّ من الضّغط والتّصغيرأمرًا تقوم بتنفيذه على الأصول الموجودة في موقعك (مثل ملفات css. وملفات js.). تستطيع من خلال كِلَيهما تقليص حجم الملف وبالتّالي جعلَه أكثر فعاليّةً في عبور الشبكة بين الخواديم والمتصفّحات. بكلمات أخرى، يصبح الأداء أفضل بتقليص حجم أصولك. تمثّل الشبكة نقطةَ اختناقٍ لسرعة الويب. لهذا السّبب، يساعد تخفيض حجم الملف وتقليصه في تفادي تحميل عبء زائد على الشّبكة. لكنّهما - أي الضغط والتصغير - يختلفان عن بعضهما بوضوح. إن كنت لا تعرف هذا بالفعل، فالأمر يستحق الاطّلاع. يقوم التّصغير بأمورٍ مثل حذف الفواصل، وحذف التّعليقات، وحذف الفواصل المنقوطة غير الضّروريّة وتقليل طول الرّموز السّت عشريّة وغيرها من الأمور المشابهة. يبقى الملف شيفرةً صالحةً تمامًا. لن ترغبَ في محاولة قراءتها أو العمل عليها، لكنها لا تخرق أيًّا من القواعد. يستطيع المتصفّح قراءتها واستخدامها كما هو الحال في الملف الأصليّ. يُنشئ التّصغير ملفًا جديدًا تقومُ أنتَ باستخدامه في نهاية المطاف. على سبيل المثال، تستطيع إنشاء ملف style.css لتعمل عليه، ومن ثمّ بإمكانك تصغيره إلى style.min.css. يتحرّى الضّغط جميع المقاطع المكرّرة ويستبدلها بمؤشّرات إلى موضع الورود الأول للمقطع المعنيّ. قدّمت جوليا إيفانز Julia Evans طريقةً رائعة لفهم ما سبق (راجع منشورها والفيديو). إليك الفقرة الأولى من القصيدة: .red { color: red; } Once upon a midnight dreary, while I {pon}dered weak an{d wea}{ry,} Over many{ a }quaint{ and }curious volume of forgotten lore, W{hile I }nodded, n{ear}ly napping, su{dde}n{ly }th{ere} ca{me }a t{apping,} As{ of }so{me o}ne gent{ly }r{apping, }{rapping} at my chamb{er }door. `'Tis{ some }visitor,'{ I }mu{tte}r{ed, }`t{apping at my chamber door} - O{nly th}is,{ and }no{thi}{ng }m{ore}. وَجد gzip أن النّصّ الوارد ضمن أقواس متعرّجة هو نصٌّ مكرّر. لهذا السبب، سيُستبدل بمؤشّر يستهلك مساحةً أقل مما يستهلكه النّصّ نفسه. تظهر فعاليّة هذا الأمر في إنقاص حجم الملف، خاصّةً في حالة الشّيفرة البرمجيّة على اعتبار أنّها تحتوي بطبيعتها على الكثير من المقاطع المكرّرة. تخيّل فقط عدد مرّات ورود ‎<div في ملف HTML أو عدد مرّات ورود { في ملف CSS. يمكنك إنشاء إصدارات مضغوطة من الملفات، على سبيل المثال style.css.zip لكنّك نادرًا ما ستضطّر لذلك ولن يعرف المتصفّح ماذا يفعل بهذه الإصدارات. تتّم عمليّة الضّغط على الويب من قبل الخادم مباشرةً ذلك إذا ما قمت بإعداده للقيام بها. حالما تُطبّق الإعدادات، يحدث الضّغط تلقائيًّا ولا حاجةَ بك للقيام بأي عمل آخر. يضغط الخادم الملف ويرسله عبر الشبكة مضغوطًا. يستقبل المتصفح الملف ويفكّ ضغطه قبل استخدامه. لم أسمع قطُّ أحدًا يذكر أعباء عمليّتَي الضّغط وفكّ الضّغط، لذا سأفترض أنّها مهملةٌ وأنّ فوائدها تفوقُ أعباءها بكثيرٍ. يجري عادةً أتمتة عملية الضغط عبر أدوات البناء مثل Gulp مما يسهل عليك العملية. إليك كيفيّة تفعيل عمليّة الضّغط على خادم Apache من خلال استخدام الوحدة mod_deflate . كما يّقدّم H5BP إعدادات الخواديم لجميع الخواديم الشّائعة التي تدعم الضّغط. مثال سنستخدم ملف CSS من Bootstrap على اعتباره مرجعًا شائعًا. ستُوفّر ما يقارب 17% عند تصغير ملف CSS، أو 85% عند ضغطه أو 86% عند قيامك بكليهما. الوضع المثاليّ عند التأكد من عمل كلِّ شيءٍ كما ينبغي من خلال أدوات المطور (DevTools) موضّح كما يلي: الضّغط أكثر فعاليّة، لكنّ القيام بكليهما هو الأفضل بالمطلق. تُخفّض عمليّة الضّغط حجم الملف أكثر بخمسة أضعاف من عمليّة التّصغير. لكنّك تحصل على دفعة صغيرة إضافيّة عند القيام بالتّصغير أيضًا. هناك أيضًا دليلٌ على أنّ المتصفّحات تقرأ وتحلّل الملف المُصغّر أسرع: شرَعَت مايكروسوفت هي الأخرى بتحسين مُحلّلاتها لهذا الأمر: يندرج التّخزين المؤقّت للأصول في هذا السّياق أيضًا حيث لا يوجد ما هو أسرع من مُتصفّح لا يحتاج إلى طلب الأصول على الإطلاق. يوجد الكثير من المعلومات حول هذا الموضوع على الوِيب (أو في الكتب)، وقد نقوم بنشر مقال حول هذا الموضوع قريبًا. ترجمة -وبتصرف- للمقال The Difference Between Minification and Gzipping لصاحبه Chris Coyier
  4. نحتاج إلى كلٍّ من جافا (Java) وآلة جافا الوهميّة (Java Virtual Machine) لتشغيل العديد من البرمجيّات مثل Tomcat، و Jetty، و Glassfish، و Cassandra، و Jenkins. سنتعلم في هذا الدّليل كيفية تثبيت إصدارات مختلفة من (Java Runtime Environment (JRE و (Java Developer Kit (JDK باستخدام apt. سنثبِّت OpenJDK بالإضافة إلى الحزم الرّسميّة من موقع Oracle، سنختار بعدئذٍ الإصدار الذي تريد استخدامه لمشروعك. ستستطيع عند الانتهاء من استخدام JDK لتطوير البرمجيّات أو استخدام Java Runtime لتنفيذ البرمجيّات. المتطلبات ستحتاج لمتابعة هذا الدّليل إلى: خادم أبنتو 18.04 سبق إعداده باتّباع خطوات دليل إعداد الخادم الابتدائي، وهذا يتضمّن سحاب مستخدم غير جذر (non-root) ذا امتيازات sudo وجدارًا ناريًّا. تثبيت JRE/JDK الافتراضيّة الخيار الأسهل عند تثبيت جافا هو استخدام الإصدارات المُضمّنة مع أبنتو. يتضمّن أوبنتو 18.04 افتراضيًّا Open JDK والتي هي تنويعة مفتوحة المصدر من JRE و JDK. لتثبيت الإصدار 11 من OpenJDK، قُم أوّلًا بتحديث فهرس الحزمة: sudo apt update تحقّق بعد ذلك إذا ما كانت جافا مُثبّتةً بالفعل: java -version إذا لم تكن جافا مُثبّتةً، سترى الخرج التّالي: Output Command 'java' not found, but can be installed with: apt install default-jre apt install openjdk-11-jre-headless apt install openjdk-8-jre-headless apt install openjdk-9-jre-headless نفّذ الأمر التّالي لتثبيت OpenJDK: sudo apt install default-jre سيُثبّت هذا الأمر بيئة التشغيل الآني لجافا (JRE اختصار للعبارة Java Runtime Environment) التي ستسمح لك بتشغيل جميع برمجيّات جافا تقريبًا. تحقّق من التّثبيت باستخدام: java -version سترى الخرج التّالي: Output openjdk version "11.0.3" 2019-04-16 OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1) OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed mode, sharing) قد تحتاج إلى أدوات جافا التطويرية (JDK اختصار للعبارة Java Development Kit) إلى جانب JRE إذا أردت ترجمة وتشغيل بعض البرمجيّات المعتمدة على جافا. لتثبيت JDK، قم بتنفيذ الأمر التّالي: sudo apt install default-jdk سيثبت هذا الأمر JRE أيضًا. تحقّق من تثبيت JDK من خلال تفحّص إصدار مصرِّف جافا javac: javac -version سترى الخرج التّالي: javac 11.0.3 سنعمل الآن على تحديد الإصدار الذي نريد تثبيته من OpenJDK. تثبيت إصدارات محددة من OpenJDK بالإضافة إلى تثبيت حزمة OpenJDK الافتراضية، يمكنك أيضًا تثبيت إصدارات مختلفة من OpenJDK. ستتعلّم في هذا الدّليل تثبيت الإصدارين الحاليّ والسّابق من الإصدارات ذات الدّعم الطّويل الأمد. OpenJDK 8 جافا 8 هي إحدى الإصدارات ذات الدّعم الطّويل الأمد من Oracle. على الرّغم من انتهاء صيانتها العامّة منذ كانون الثّاني من هذا العام إلّا أن التّحديثات العامّة للإصدارات الشّخصيّة وإصدارات التّطوير مستمرّة حتى كانون الأوّل 2020. لتثبيت OpenJDK 8، قم بتنفيذ الأمر التّالي: sudo apt install openjdk-8-jdk تحقّق من التّثبيت من خلال الأمر: java -version سيظهر لك الخرج التّالي: Output openjdk version "1.8.0_162" OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12) OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode) من المُمكن تثبيت JRE فقط من خلال تنفيذ الأمر sudo apt install openjdk-8-jre. OpenJDK 11 جافا 11 هي الإصدار الحاليّ ذي الدّعم الدّعم الطّويل الأمد ومن المُتوقّع أن يستمرّ دعمها حتّى العام 2022 . لتثبيت OpenJDK 11، قم بتنفيذ الأمر التّالي: sudo apt install openjdk-11-jdk لتثبيت JRE فقط، استخدم الأمر التّالي: sudo apt install openjdk-11-jre سنقوم الآن بتثبيت حزم JDK و JRE الرّسميّة من Oracle. تثبيت Oracle JDK إذا أردت تثبيت Oracle JDK، الإصدار الرّسمي الذي توزعه Oracle، ستحتاج لإضافة مستودع حزمة جديد للإصدار الذي ترغب باستخدامه. لتثبيت جافا 8، قم أولًا بإضافة مستودع حزمته: sudo add-apt-repository ppa:webupd8team/java عند إضافة المستودع، سترى رسالةً كهذه: Output Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK8). There are no actuJava files in this PPA. Important -> Why Oracle Java 7 And 6 Installers No Longer Work: http://www.webupd8.org/2017/06/why-oracl e-java-7-and-6-installers-no.html Update: Oracle Java 9 has reached end of life: http://www.oracle.com/technetwork/java/javase/downloads/j dk9-downloads-3848520.html The PPA supports Ubuntu 18.04, 17.10, 16.04, 14.04 and 12.04. More info (and Ubuntu installation instructions): - for Oracle Java 8: http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html Debian installation instructions: - Oracle Java 8: http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html For Oracle Java 10, see a different PPA: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html More info: https://launchpad.net/~webupd8team/+archive/ubuntu/java Press [ENTER] to continue or Ctrl-c to cancel adding it. اضغط ENTER للاستمرار ثمّ قُم بتحديث قائمة الحزم: sudo apt update حالما تُحدَّث القائمة، قُم بتثبيت جافا 8: sudo apt install oracle-java8-installer سيُنزّل نظامك JDK من Oracle ويطلب منك قبول اتفاقيّة التّرخيص. قُم بالموافقة على الاتفاقيّة وسيبدأ تثبيت JDK. سننظر الآن إلى إمكانيّة اختيار إصدار جافا الذي ترغب باستخدامه. إدارة جافا قد يتوفّر لديك عدّة إصدارات جافا مُثبّتةٍ على خادمٍ واحد. يمكنك إعداد أيٍّ من هذه الإصدارات ليكون الافتراضي لديك أو استخدام سطر الأوامر من خلال الأمرupdate-alternatives: sudo update-alternatives --config java إذا ثبَّت جميع إصدارات جافا في هذا الدّليل، سيبدو الخرج لديك كالتّالي: Output There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode اختر الرّقم الموافق لإصدار جافا الذي ترغب في استخدامه افتراضيّا، أو اضغط ENTER لترك الإعدادت على ما هي عليه. يمكنك القيام بهذا لأوامر جافا أخرى، مثل المترجم (javac): sudo update-alternatives --config javac نذكر على سبيل المثال لا الحصر من بعض الأوامر الأخرى التي يمكنك تنفيذ ما سبق عليها: keytool، Javadoc و jarsigner. تعيين متغير البيئة JAVA_HOME تستخدم العديد من البرامج المكتوبة باستخدام لغة جافا مُتغيّر البيئة JAVA_HOME لتحديد مسار تثبيت جافا. لتعيين مُتغيّر البيئة هذا، حدّد أولًا أين ثُبتّت جافا. استخدم الأمر update-alternatives كما يلي: sudo update-alternatives --config java سيعرض لك هذا الأمر جميع تثبيات جافا لديك مع مسار كلٍّ منها: There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode Press <enter> to keep the current choice[*], or type selection number: في حالتنا هذه، فإنّ مسارات التّثبيت هي كالتّالي: OpenJDK 11 على المسار ‎/usr/lib/jvm/java-11-openjdk-amd64/bin/java. OpenJDK 8 على المسار ‎/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java. Oracle Java 8 على المسار ‎/usr/lib/jvm/java-8-oracle/jre/bin/java. قُم بنسخ مسار الإصدار المفضّل لديك ثم افتح الملف ‎/etc/environment باستخدام nano أو محرّر النّصوص الذي تفضّله: sudo nano /etc/environment أَضِف السطر التّالي في نهاية هذا الملف وتأكّد من استبدال المسار الملّون بالمسار الذي قمت أنت بنسخه: JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/" سيضبط تعديل هذا الملف مسار JAVA_HOME لجميع المستخدمين على نظامك. احفظ تعديلاتك على الملف وأغلق المُحرّر. أعِد تحميل هذا الملف لتطبيق التعديلات على جلستك الحاليّة: source /etc/environment تحقّق من تعيين مُتغيّر البيئة: echo $JAVA_HOME سترى المسار الذي قمت بتعيينه منذ قليل: Output /usr/lib/jvm/java-11-openjdk-amd64/bin/ سيحتاج المستخدمون الآخرون إلى تنفيذ الأمر source /etc/environment أو تسجيل الخروج وإعادة تسجيل الدخول ليصبح هذا الضّبط نافذ المفعول. خاتمة قمتَ في هذا الدّليل بتثبيت عدة إصدارات من جافا وتعلّمت كيفيّة إدارة هذه الإصدارات. يمكنك الآن تثبيت برمجيات تعمل على Java مثل Tomcat، أو Jetty، أو Glassfish، أو Cassandra، أو Jenkins. ترجمة -وبتصرف- للمقال How To Install Java with apt on Ubuntu 18.04 لصاحبه Koen Vlaswinkel