جاوا و ماشین مجازی JVM برای بسیاری از انواع نرم‌افزارها مانند Tomcat، Jetty، Glassfish و Jenkins موردنیاز است. در این آموزش، به نحوه نصب نسخه‌های مختلف محیط ران‌تایم جاوا (JRE) و کیت توسعه جاوا (JDK) با استفاده از apt خواهیم پرداخت. در اینجا نصب OpenJDK و همین‌طور، نسخه رسمی JDK را از اوراکل دریافت می‌کنیم. سپس نسخه مناسب برای پروژه موردنظرمان را انتخاب می‌کنیم. نهایتاً پس از نصب جاوا با apt، شما قادر خواهید بود که از JDK برای توسعه نرم‌افزاری و یا از JRE برای اجرای نرم‌افزارها استفاده کنید.

پیش‌نیازها

برای طی‌کردن مراحل این آموزش، به مراحل زیر احتیاج خواهید داشت:

  • یک سرور اوبونتو 04 همراه تنظیمات اولیه سرور و از جمله یک کاربر غیر روت با دسترسی sudo و یک فایروال.

نصب پیش‌فرض JRE/JDK

راحت‌ترین گزینه برای نصب جاوا، استفاده از نسخه‌ای است که همراه با اوبونتو ارائه شده است. اوبونتو 20.04 به صورت پیش‌فرض با Open JDK 11 همراه است که یک نسخه متن‌باز از JRE و JDK محسوب می‌شود.

برای نصب این نسخه، ابتدا لیست بسته‌ها را بروزرسانی کنید.

sudo apt update

بررسی کنید که جاوا در حال حاضر در سرور شما نصب است یا خیر:

java -version

در صورتی که جاوا نصب نشده باشد، خروجی زیر را مشاهده خواهید کرد.

Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.11+9-0ubuntu2~20.04, or

sudo apt install default-jre              # version 2:1.11-72

sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04

sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04

sudo apt install openjdk-8-jre-headless   # version 8u292-b10-0ubuntu1~20.04

فرمان زیر را اجرا کنید تا نسخه پیش‌فرض JRE از طریق OpenJDK 11 نصب شود.

sudo apt install default-jre

JRE این امکان را به شما می‌دهد که تقریباً تمام نرم‌افزارهای جاوا را اجرا کنید.

با استفاده از فرمان زیر، وضعیت نصب جاوا با apt را بررسی کنید.

java -version

در نتیجه، خروجی‌ای مشابه زیر را خواهید دید.

openjdk version "11.0.11" 2021-04-20

OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)

OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing))

برای کامپایل و اجرای برخی نرم‌افزارهای خاص مبتنی بر جاوا، احتمالاً به کیت توسعه جاوا علاوه بر JRE احتیاج خواهید داشت. به منظور نصب JDK، فرمان زیر را اجرا نمایید. این فرمان شامل نصب JRE نیز می‌شود.

sudo apt install default-jdk

اکنون با بررسی نسخه کامپایلر جاوا، javac، از نصب JDK مطمئن شوید.

javac -version

در نتیجه با خروجی زیر مواجه می‌شوید.

javac 11.0.11

حالا نگاهی داشته باشیم به نصب نسخه رسمی اوراکل از JDK و JRE

نصب اوراکل JDK 11

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

نسخه JDK اوراکل برای دانلود باید حتماً با اسکریپت نصب‌کننده مطابقت داشته باشد. برای پیدا کردن نسخه موردنیاز، حتماً از صفحه oracle-java11-installer دیدن کنید.

همان‌طورکه در تصویر دیده می‌شود، بسته Focal را پیدا کنید.

بسته نصب جاوا برای اوبونتو 20.04

بسته نصب‌کننده برای اوبونتو 20.04

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

نیازی به دانلود هیچ آیتمی در این صفحه ندارید. چرا که اسکریپت نصب را به سرعت از طریق apt دریافت خواهید کرد.

سپس صفحه Downloads را باز کنید و نسخه مناسب موردنظرتان را بیابید.

دانلود نصب اوراکل جاوا 11

اوراکل جاوا 11

بر روی دکمه JDK Download کلیک کنید تا به صفحه نسخه‌های در دسترس هدایت شوید. سپس روی بسته .tar.gz برای لینوکس کلیک کنید.

دانلود نسخه ویژه لینوکس

دانلود نسخه ویژه لینوکس

در نتیجه با  صفحه تأیید توافقنامه لایسنس اوراکل مواجه می‌شوید. تیک تأیید را فعال کنید و دکمه Download را بزنید. در نتیجه، دانلود فایل برایتان آغاز می‌شود. احتمالاً قبل از اینکه دانلود شروع شود، نیاز به ورود دوباره به حساب کاربری اوراکل خواهید داشت.

پس از دریافت فایل، باید آن را به سرور انتقال دهید. در سیستم محلی خود، این فایل را به سرور ارسال کنید. در سیستم‌عامل مکینتاش، لینوکس یا ویندوز، چنین کاری با استفاده از Windows Subsystem و فرمان scp برای انتقال فایل به دایرکتوری خانگی کاربر صورت می‌گیرد. فرمان زیر با فرض ذخیره فایل Oracle JDK در پوشه Downloads در سیستم محلی شما اجرا می‌شود.

scp Downloads/jdk-11.0.7_linux-x64_bin.tar.gz [email protected]_server_ip:~

وقتی ارسال فایل به پایان رسید، به سرور برگردید و منبع ثالثی را که به نصب جاوای اوراکل کمک می‌کند، اضافه کنید.

بسته software-properties-common را نصب کنید. این بسته موجب اضافه شدن فرمان add-apt-repository به سیستم شما می‌شود.

sudo apt install software-properties-common

سپس نوبت به وارد کدرن کلید امضا برای تأیید نرم‌افزاری است که می‌خواهید نصب کنید.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

در نتیجه، خروجی زیر را مشاهده خواهید کرد.

gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported

gpg: Total number processed: 1

gpg:               imported: 1

حالا با استفاده از فرمان add-apt-repository منبع جاوا را به لیست بسته‌های خود اضافه کنید.

sudo add-apt-repository ppa:linuxuprising/java

نمونه خروجی

Oracle Java 11 (LTS) and 16 installer for Ubuntu (21.04, 20.10, 20.04, 18.04, 16.04 and 14.04), Pop!_OS, Linux Mint and Debian.

Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java, so a working Internet connection is required.

The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java

Created for users of https://www.linuxuprising.com/

Installation instructions (with some tips), feedback, suggestions, bug reports etc.:

. . .

Press [ENTER] to continue or Ctrl-c to cancel adding it.

کلید Enter را بزنید تا روند نصب جاوا ادامه یابد. ممکن است با پیامی مبنی بر عدم وجود داده معتبر OpenPGP روبرو شوید. امّا با اطمینان خاطر می‌توانید آن را نادیده بگیرید.

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

sudo apt update

برنامه نصب‌کننده به دنبال Oracle JDK در آدرس /var/cache/oracle-jdk11-installer-local خواهد گشت. این دایرکتوری را بسازید و اوراکل JDK را به آن منتقل کنید.

sudo mkdir -p /var/cache/oracle-jdk11-installer-local/

sudo cp jdk-11.0.7_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

نهایتاً بسته را نصب کنید.

sudo apt install oracle-java11-installer-local

برنامه نصب‌کننده ابتدا از شما می‌خواهد که توافقنامه لایسنس اوراکل را تأیید کنید. سپس بسته جاوا استخراج شده و نصب می شود.

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

مدیریت جاوا

می‌توانید چند نسخه از جاوا را به صورت همزمان در سرور نصب داشته باشید. با استفاده از فرمان update-alternatives می‌توانید تعیین کنید که کدام نسخه به صورت پیش‌فرمان در خط فرمان به کار گرفته شود.

sudo update-alternatives --config java

در صورتی که دو نسخه نصب جاوا در این آموزش را انجام داده باشید، با خروجی‌ای مشابه زیر روبرو می‌شوید.

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                         Priority   Status

------------------------------------------------------------

0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode

1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode

* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:

عدد همراه با نسخه نصب جاوا را برای تعیین نسخه پیش‌فرض استفاده کنید. همچنین می‌توانید با فشردن دکمه Enter، تنظیمات را به همان حالت قبلی رها کنید.

چنین کاری برای سایر فرمان‌های جاوا نیز قابل‌انجام است؛ از جمله کامپایلر یا javac.

sudo update-alternatives --config javac

keytool، javadoc و jarsigner از جمله فرمان‌های دیگری هستند که چنین کاری را می‌توان برای آنها انجام داد.

تنظیم متغیر محیطی JAVA_HOME

بسیاری از برنامه‌هایی که با جاوا نوشته شده‌اند، از متغیر محیطی JAVA_HOME برای تعیین موقعیت نصب جاوا استفاده می‌کنند. برای تنظیم این متغیر محیطی، ابتدا باید معیّن کنید که جاوا در چه جایی نصب شده است. برای این منظور، از فرمان update-alternatives استفاده می‌شود.

sudo update-alternatives --config java

این فرمان نشان می‌دهند که هر کدام از نسخه‌های جاوا در چه موقعیتی نصب شده‌اند.

نمونه خروجی

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                         Priority   Status

------------------------------------------------------------

0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode

1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode

* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:

در اینجا مسیرهای نصب از قرار زیرند:

  • موقعیت OpenJDK 11 در آدرس /usr/lib/jvm/java-11-openjdk-amd64/bin/java.
  • موقعیت Oracle Java در آدرس /usr/lib/jvm/java-11-oracle/jre/bin/java.

مسیر نصب جاوای موردنظرتان را کپی کنید. سپس با استفاده از nano یا هر ویرایشگر متنی دیگر، فایل /etc/environment را باز کنید.

sudo nano /etc/environment

در پایان این فایل، خط زیر را اضافه کنید. حتی موقعیت خودتان را در این خط جایگزین کنید و بخش bin/ را نیز حذف نمایید.

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

اصلاح این فایل باعث می‌شود که مسیر JAVA_HOME برای تمام کاربران در سیستم شما تنظیم گردد.

اکنون فایل را ذخیره کرده و از ویرایشگر خارج شوید.

فایل را دوباره بارگذاری کنید تا تغییرات برایتان اِعمال شوند.

source /etc/environment

همچنین بررسی کنید که تنظیم متغیر محیطی به‌درستی انجام گرفته است یا خیر.

echo $JAVA_HOME

در نتیجه، مسیری را که تنظیم کرده بودید، مشاهده خواهید کرد.

/usr/lib/jvm/java-11-openjdk-amd64

سایر کاربران می‌بایست فرمان source /etc/environment را اجرا کرده و یا با یک خروج و ورود دوباره به حساب کاربران، از این تنظیمات استفاده کنند.

جمع‌بندی

در این آموزش به نحوه نصب نسخه‌های جاوا پرداختیم و همچنین نحوه مدیریت این نسخه‌ها را بررسی کردیم. حالا می‌توانید نرم‌افزارهایی را که در بستر جاوا هستند، از جمله Tomcat، Jetty، Glassfish، Cassandra و Jenkins را اجرا کنید.