در این مطلب با روش برنامه نویسی جاوا در ویژوال استودیو کد آشنا خواهیم شد. در این مسیر با روش کدنویسی یک برنامه ساده Hello World آشنا شده و همچنین برخی قابلیتهای پیشرفته آن را نیز بررسی میکنیم.
راهاندازی ویژوال استودیو کد برای توسعه جاوا
در این بخش با روش راهاندازی VS Code برای کدنویسی جاوا آشنا خواهیم شد.
نصب Coding Pack for Java
برای این که بتوانید محیط ویژوال استودیو کد را هر چه سریعتر برای کدنویسی جاوا آماده سازید، بهتر است Coding Pack for Java را نصب کنید. این بسته شامل کیت توسعه جاوا (JDK) و همچنین افزونههای ضروری این زبان برنامهنویسی است. کدینگ پک را میتوان به صورت مستقل نصب کرد و یا این که یک محیط توسعه موجود را آپدیت یا ترمیم نمود.
برای نصب کدینگ پک در محیط ویندوز از این لینک (+) و برای نصب آن روی محیط مکاواس از این لینک (+) استفاده کنید.
توجه کنید که Coding Pack for Java تنها برای سیستمهای عامل ویندوز و مک عرضه شده و برای سیستمهای دیگر باید JDK، VS Code و افزونههای جاوا را مستقلاً نصب کنید.
نصب افزونهها
اگر از قبل کاربر نرمافزار VS Code هستید، میتوانید با نصب Extension Pack for Java (Extension Pack for Java) میتوانید افزونههای مورد نیاز برای برنامهنویسی جاوا در این ادیتور را نیز داشته باشید. این افزونهها شامل موارد فهرست زیر میشوند:
- Language Support for Java(TM) by Red Hat (+)
- Debugger for Java (+)
- Java Test Runner (+)
- Maven for Java (+)
- Project Manager for Java (+)
- Visual Studio IntelliCode (+)
این بسته افزونهها یک راهنمای سریع برای ادیت کد و دیباگ کردن در اختیار شما قرار میدهد. همچنین یک بخش «پرسشهای متداول» (FAQ) نیز دارد مفید واقع خواهد شد. با فشردن کلیدهای ترکیبی Ctrl+Shift+P پالت فرمان را باز کرده و سپس با استفاده از دستور زیر میتوانید این راهنما را باز کنید:
Java: Getting Started
همچنین میتوانید اکستنشنها را به طور مجزا نصب کنید. Extension Guide به منظور ارائه کمک عرضه شده است. برای باز کردن آن میتوانید از دستور Java: Extension Guide استفاده کنید. ما در ادامه این راهنما تنها به دو افزونه زیر نیاز خواهیم داشت:
- Language Support for Java(TM) by Red Hat (+)
- Debugger for Java (+)
- مطلب پیشنهادی برای مطالعه: ۹ افزونه ویژوال استودیو کد برای برنامه نویسی آسان تر — راهنمای کاربردی
تنظیمات JDK
در این بخش با تنظیماتی آشنا میشویم که برای کدنویسی در ادیتور ویاسکد باید روی JDK انجام دهیم.
نسخههای پشتیبانی شده جاوا
توجه کنید که نسخه پشتیبانی شده جهت اجرای ویاسکد برای اکستنشن جاوا و نسخه پشتیبانی شده از پروژهها دو «محیط اجرای» متفاوت محسوب میشوند برای اجرای کدهای جاوا در ویژوال استودیو کد نیاز به Java SE 11 یا بالاتر خواهید داشت. در مورد پروژهها ویژوال استودیو کد از پروژههای با کدهای 1 و 5 و بالاتر پشتیبانی میکند.
استفاده از ویزارد پیکربندی تنظیمات محیط اجرای جاوا
برای این که بتوانید ویاسکد را برای اجرای کدهای جاوا پیکربندی بکنید یک ویزارد پیکربندی محیط زمان اجرا عرضه شده است. برای باز کردن این ویزارد باید پالت فرمان را با زدن کلیدهای Ctrl+Shift+P باز کرده و دستور Java: Configure Java Runtime را وارد کنید تا واسط کاربری پیکربندی را نمایش دهد.
استفاده از تنظیمات VS Code
امکان انجام تنظیمات پیکربندی JDK با استفاده از ادیتور تنظیمات VS Code به جای ویزارد گرافیکی پیکربندی که در بخش قبل معرفی شد نیز وجود دارد. یک روش رایج برای انجام این کار استفاده از مقدار متغیر محیط سیستم JAVA_HOME برای تعیین مکان نصب JDK است. همچنین اگر میخواهید کاری کنید که تنها ویاسکد از JDK استفاده کند، میتوانید java.home را در تنظیمات User یا Workspace ویژوال استودیو کد بهره بگیرید.
نصب کیت توسعه جاوا (JDK)
اگر نیاز به نصب JDK دارید، بهتر است آن را از یکی از منابع زیر نصب کنید:
- Oracle Java SE (+)
- AdoptOpenJDK (+)
- Azul Zulu for Azure – Enterprise Edition (+)
ایجاد یک فایل به عنوان سورس کد
یک پوشه برای برنامههای جاوا بسازید. آن را در VS Code باز کنید. سپس در VS Code یک فایل ایجاد کرده و نام آن را Hello.java بگذارید. زمانی که این فایل را باز کنید، «سرور زبان جاوا» به طور خودکار شروع به لود میکند و باید یک آیکون لودینگ در سمت راست نوار وضعیت ببینید. پس از آن که لودینگ پایان یافت، مانند تصویر زیر یک آیکون انگشت رو به بالا میبینید.
توجه داشته باشید که اگر یک فایل جاوا را در VS Code بدون باز کردن پوشهاش باز کنید، سرور زبان جاوا ممکن است به درستی کار نکند.
ویژوال استودیو کد تلاش میکند تا پکیج صحیح نوع فایل جدید را یافته و فایل جدیدی را از روی قالب مربوطه ایجاد کند.
امکان ساخت یک پروژه جاوا با استفاده از دستور Java: Create Java Project نیز وجود دارد. به این منظور باید پالت فرمان را باز کرده و سپس عبارت java را وارد کنید تا این دستور نمایش یابد. پس از انتخاب دستور از شما مکان و نام پروژه پرسیده میشود. امکان انتخاب ابزار بیلد از این دستور نیز وجود دارد.
ویژوال استودیو کد از پروژههای پیچیدهتر جاوا نیز پشتیبانی میکند.
ادیت کردن سورس کد در ویژوال استودیو کد
امکان استفاده از قطعه کدهای مختلف برای ساخت کلاسها و متدها وجود دارد. ویژوال استودیو کد قابلیتی به نام IntelliSense برای تکمیل خودکار کد نیز ارائه کرده که به همراه روشهای مختلف ریفکتور کد کمک شایان توجهی به تسهیل کدنویسی جاوا در این ادیتور میکند.
در ادامه این بخش با قابلیتهای ادیت کد در ویژوال استودیو کد بیشتر آشنا میشویم.
ناوبری و ادیت کد
ادیتور VS Code قابلیتهای ادیت بسیار جامعی دارد. در ادامه این راهنما بیشتر روی آن دسته خاصی از این قابلیتها متمرکز میشویم که به زبان برنامهنویسی جاوا مرتبط هستند.
ناوبری در کد
با استفاده از ویوی آوتلاین (Outline) میتوانید به روشی راحت و بیدردسر بین متدهای یک کلاس حرکت کنید. ویوی پراجکت (Project) نیز نمایی عالی از کل پروژه به دست میدهد. همچنین این ادیتور به عنوان یک ادیتور جاوا از CodeLens و هایلایتهای Javadoc نیز به طور پیشفرض پشتیبانی میکند.
زمانی که پروژه جاوا را با فایل سورسی در ویاسکد باز کنید، همه قابلیتهای ناوبری کد به همراه بررسی سینتکس و مستندات بیدرنگ در حالت Lightweight باز میشود.
جستجو به دنبال سمبلها
امکان جستجو به دنبال سمبلها در فایل یا فضای کاری جاری جهت حرکت سریعتر در کد نیز فراهم آمده است. برای این که یک سمبل را در فایل جاری بگردید، میتوانید با زدن کلیدهای Ctrl+P پنل سریع را باز کرده و سپس دستور @ را وارد کرده و در ادامه نام سمبلی که میخواهید جستجو شود را بیاورید. به این ترتیب فهرستی از موارد احتمالی باز میشود و با ادامه تایپ کردن به سرعت فیلتر میشود. با کلیک روی هر کدام از گزینههای لینک فهرست میتوانید به آن بخش بروید.
جستجوی سمبلها در فایل جاری
برای جستجو به دنبال یک سمبل در فضای کاری جاری میتوانید کلیدهای ترکیبی Ctrl+T را زده و سپس نام سمبل را وارد کنید. به این ترتیب فهرستی از موارد احتمالی مانند حالت قبل باز میشود. اگر سمبلی را از لیست انتخاب کنید که در فایلی باز نشده واقع شده باشد، ابتدا فایل باز میشود تا بتوانید به محل آن بروید. همچنین میتوانید با زدن کلیدهای Ctrl+P پنل سریع را باز کرده و دستور # را وارد کنید تا در فضای کاری کنونی جستجو شود. در واقع Ctrl+T یک میانبر برای دستورهای # است و از این رو فرایند کار مشابه است.
بررسی تعریف
با استفاده از قابلیت «بررسی تعریف» (Peek Definition) میتوانید نگاهی سریع به روش تعریف یک نماد داشته باشید. این قابلیت چند خط نزدیک به تعریف سمبل را نمایش میدهد، به این ترتیب میتوانید بدون جابجا شدن از محل کنونی، آن بخش را نیز مشاهده کنید.
برای استفاده از این قابلیت کرسر خود را روی محلی که سمبل در سورس کد استفاده شده ببرید و سپس کلیدهای ترکیبی Alt+F12 را بزنید. به طور جایگزین میتوانید راست-کلیک کرده و گزینه Peek Definition را انتخاب کنید.
رفتن به محل تعریف
با استفاده از قابلیت Go to Definition میتوانید به سرعت به محل تعریف شدن سمبل بروید. به این منظور باید کرسر را روی محل قرارگیری سمبل در کد برده و کلید F12 را بزنید. به طور جایگزین میتوانید راست-کلیک کرده و گزینه Go to Definition را از منوی مربوطه انتخاب کنید. زمانی که تنها یک تعریف از آن سمبل موجود باشد، مستقیماً به آن محل میروید، اما در غیر این موارد تعاریف دیگر در یک پنجره کوچک نمایش مییابند و میتوانید گزینه مطلوب خود را انتخاب کنید.
رفتن به پیادهسازی بالاتر
امکان ردگیری پیادهسازی کلاس و باطل کردن متدها از طریق کلیک روی لینک Go to Super Implementation وجود دارد.
سلسله مراتب فراخوانی
نمای سلسله مراتب فراخوانی همه فراخوانیها از/به یک تابع را نمایش میدهد و امکان بررسی فراخوانیکنندگان و فراخوانیِ فراخوانیها را فراهم میسازد. به این منظور باید روی یک تابع راست-کلیک کرده و گزینه Peek > Peek Call Hierarchy را انتخاب کنید.
همچنین میتوانید روی بدنه تابع راست- کلیک کرده Show Call Hierarchy را انتخاب کنید.
کوچکسازی بخشهای مختلف
با استفاده از قابلیت Folding regions میتوانید بخشهای مختلف کد را بسته یا باز کنید تا نمای بهتری از سورس کد به دست آورید.
انتخاب هوشمند
با استفاده از قابلیت Smart Selection میتوانید بخشهای مختلف کد را بر اساس اطلاعات معناشناختی محل قرارگیری کرسر در سورس کد بسته یا باز کنید.
- برای باز کردن منطقه انتخاب از کلیدهای Shift+Alt+Right استفاده کنید.
- برای بستن منطقه انتخاب از کلیدهای Shift+Alt+Left استفاده کنید.
هایلایت معناشناختی
هایلایت کردن کد یک قابلیت خیلی مهم است که امکان خواندن بسیار کارآمدتر کد را در اختیار ما قرار میدهد. به کمک قابلیت Semantic Highlighting در VS Code میتوانیم رنگبندی بسیار دقیقتری برای سورس کد داشته باشیم که بر اساس اطلاعات سمبل که از سرویس زبان جاوا اخذ شده انجام میپذیرد.
برای فعال کردن هایلایت معناشناختی باید تنظیمات java.semanticHighlighting.enabled را فعال کنید. در زمان آغاز به کار برنامه نیز از شما در مورد فعالسازی یا غیر فعالسازی این قابلیت سؤال میشود.
برای کسب اطلاعات بیشتر در مورد جزئیات هایلایت معناشناختی میتوانید به صفحه ویکی اکستنشن جاوا (+) سر بزنید.
حرکت در کد با Spring Boot
اکستنشن Spring Boot Tools پشتیبانی مناسبی از ناوبری کد و تکمیل کد برای پروژههای اسپرینگ بوت عرضه میکند.
- دستور /@ همه نگاشتهای تعریف شده درخواست را نمایش میدهد که شامل مسیر نگاشتشده، متد درخواست و محل منبع است.
- دستور +@ که بینهای تعریف شده را نمایش میدهد که شامل نام بین، نوع بین و محل منبع است.
- دستور همه تابعها را نمایش میدهد که شامل پیادهسازی پروتوتایپ میشود.
- دستور @ همه حاشیهنویسیهای اسپرینگ را در کد نمایش میدهد.
ادیت کد
ادیت کردن کد با بهرهگیری از قابلیت IntelliSense و تکمیل خودکار هوشمندانه کد و جزئیات امضای متدها بسیار آسان شده است. امکان استفاده از قطعه کدهای آماده و همچنین انجام کارهای مختلف روی کد مانند تولید Getters/Setters و ساماندهی ایمپورتها برای افزایش هر چه بیشتر بهرهوری نیز وجود دارد.
پشتیبانی جاوا در ویژوال استودیو کد مشکلات موجود در کد شما را به طور خودکار شناسایی کرده و پیشنهادهایی برای اصلاح سریع ارائه میکند.
برای کسب اطلاعات بیشتر در مورد ریفکتور کردن و اقدامات کد میتوانید ادامه این مقاله را مطالعه کنید.
قابلیت IntelliSense
تکمیل کد در ویژوال استودیو کد برای زبان جاوا با استفاده از اکستنشن Language Support for Java(TM) by Red Hat انجام مییابد. این اکستنشن از سوی Java development tools (JDT) عرضه شده که وظیفه توسعه Eclipse را نیز بر عهده داشته است.
علاوه بر این، یک قابلیت IntelliSense مبتنی بر هوش مصنوعی نیز وجود دارد که IntelliCode نامگذاری شده است. این قابلیت با بررسی سوابق رفتار شما و قرار دادن اقدامات با احتمال بالا در مراتب بالاتر لیست تکمیل کد، موجب صرفهجویی در زمانتان میشود. پیشنهادهای IntelliCode بر اساس هزاران پروژه اوپن سورس در گیتهاب انجام مییابد که هر کدام بیش از 100 ستاره کسب کردهاند و از این رو بر اساس پروژههای با کیفیت بالا آموزش یافته است. این مسئله وقتی با چارچوب کد شما ترکیب میشود، موجب میشود که شما نیز آن رویهها را در کد خود داشته باشید. طرز کار عملی آن مانند ویدئوی زیر است.
IntelliCode با کتابخانهها و فریمورکهای مشهور جاوا مانند Java SE و Spring به خوبی کار میکند. این قابلیت هم برای توسعه وباپلیکیشنهای مونولیتیک و هم میکروسرویسهای مدرن به کار میآید.
ایجاد فایل جدید
ویژوال استودیو کد از طریق ارائه تمپلیتهای مختلف در زمان ایجاد فایل جدید نیز میتواند به شما کمک کند. هنگامی که یک فایل با پسوند .java در فایل اکسپلورر ایجاد میکنید، سرور زبان به طور خودکار بدنه کلاس را ایجاد کرده و اطلاعات پکیج را برای شما تکمیل میسازد.
قطعه کدها
ویاسکد از طیف وسیعی از قطعه کدهای محبوب جاوا برای ارتقای بهرهوری کدنویسی شما پشتیبانی میکند که شامل کلاس/اینترفیس، syserr, sysout, if/else, try/catch و static main method میشود. اطلاعات زبان که از سرور زبان جاوا دریافت میشود نیز پیشنمایشی از قطعه کدها در طی زمان انتخاب کد عرضه میکند.
فیلم آموزش برنامه نویسی جاوا (Java)
در این دوره آموزشی زبان برنامه نویسی جاوا، مباحث مربوط به برنامه نویسی شی گرا در جاوا (به همراه مبانی نظری) و برنامه نویسی رابطهای گرافیکی (طراحی و برنامه نویسی GUI) مورد بحث و بررسی قرار گرفتهاند. برای یادگیری و آموزش این زبان برنامه نویسی، استفاده از دوره آموزش برنامه نویسی جاوا (Java) تم آف پیشنهاد میشود. طول مدت این دوره نزدیک به بیست ساعت و مدرس آن دکتر سید مصطفی کلامی هریس است.
این دوره ۲۳ درس را در بر میگیرد. برخی از سرفصلهای مهم این دوره، آشنایی با جاوا و مباحث مقدماتی، ساختارهای کنترل برنامه و انواع عملگرها در جاوا، مبانی برنامه نویسی شی گرا، وراثت یا Inheritance در برنامه نویسی شی گرا، چند ریختی یا Polymorphism در برنامه نویسی شی گرا، آشنایی با رفرنسهای تابعی در جاوا ۸ و پیادهسازی یک پروژه محاسباتی و سایر موارد را شامل میشوند.
- برای مشاهده فیلم آموزش برنامه نویسی جاوا (Java) + اینجا کلیک کنید.
اجرا و دیباگ کدهای جاوا
ویژوال استودیو کد امکان دیباگ کردن کدهای جاوا را از طریق اکستنشن Debugger for Java (+) فراهم ساخته است. این اکستنشن یک دیباگر سبک جاوا بر مبنای سرور دیباگ جاوا است که اکستنشن Language Support for Java by Red Hat (+) را بسط داده است.
فهرست قابلیتهای دیباگ این اکستنشن به شرح زیر است:
- Launch/Attach
- Breakpoints
- Exceptions
- Pause & Continue
- Step In/Out/Over
- Variables
- Call Stacks
- Threads
- Debug Console
- Evaluation
- Hot Code Replace
دیباگر جاوا یک پروژه اوپن سورس است که از طریق ریپازیتوریهای گیتهاب زیر همکاریهای افراد مختلف را میپذیرد:
- Debugger for Java Extension (+)
- Java Debugger Server for Visual Studio Code(+)
نصب دیباگر
برای این که بتوانید از امکانات دیباگر جاوا استفاده کنید باید اکستنشن Language Support for Java(TM) by Red Hat را روی ویاسکد نصب کنید. برای تسهیل انجام این کار میتوانید از اکستنشن Extension Pack for Java (+) استفاده کنید که تجمیعی از چند اکستنشن محبوب جاوا برای ویاسکد است.
امکان نصب دستی پک اکستنشن از طریق نمای اکستنشنها با زدن کلیدهای Ctrl+Shift+X یا تایپ کردن عبارت vscode-java-pack در کادر جستجو وجود دارد. همچنین زمانی که نخستین بار مشغول ادیت کد جاوا در ویاسکد باشید، از شما خواسته میشود که پک اکستنشن برای جاوا را نصب کنید.
پیکربندی دیباگر
دیباگر به طور پیشفرض با یافتن کلاس اصلی و تولید پیکربندی پیشفرض در زمان باز شدن اپلیکیشن به صورت کاملاً خودکار آماده استفاده خواهد بود.
اگر میخواهید یک پیکربندی خاص دیباگ خودتان بسازید، میتوانید روی لینک create a launch.json file در نمای Run کلیک کنید و در این نما کلیدهای Debug و Run دیده میشوند.
فایل launch.json در پوشه .vscode در فضای کاری (پوشه ریشه پروژه) یا در تنظیمات کاربر یا تنظیمات فضای کاری قرار دارد. امکان ایجاد چند پیکربندی دیباگ برای پروژه و انتخاب نوع مطلوب و اجرای آن نیز وجود دارد.
استفاده از دیباگر
برای اجرا و دیباگ اپلیکیشنهای جاوا چند نقطه ورود مختلف برای آغاز نشست دیباگ وجود دارد که در ادامه توضیح میدهیم.
CodeLens
شما میتوانید گزینه Run|Debug را در CodeLens تابع ()main خود پیدا کنید.
در صورتی که ترجیح میدهید، میتوانید Run|Debug را غیر فعال کنید. به این منظور از تنظیمات Enable Run Debug CodeLens بهره بگیرید زمانی که CodeLens غیر فعال باشد، همچنان میتوانید با بردن کرسر ماوس روی تابع ()main به اقدامات بخش Run|Debug دسترسی داشته باشید.
منوی ادیتور
روش دیگر برای آغاز نشست دیباگ این است که روی فایل جاوا در فایل اکسپلورر راست-کلیک کرده و گزینه Run یا Debug را در منوی ساختاری انتخاب کنید.
فشردن کلید F5
با فشردن کلید F5 دیباگر به طور خودکار نقطه ورود پروژه را تشخیص داده و دیباگ کردن را آغاز میکند. همچنین میتوانید یک نشست دیباگ را از نمای Run and Debug در نوار جانبی ویاسکد قرار دارد آغاز کنید.
دیباگ کردن فایل منفرد
ویاسکد میتواند فایلهای منفرد جاوا را بدون هیچ پروژهای نیز اجرا کرده یا دیباگ کند.
دیباگ کردن فایل اکسترنال
دیباگر جاوا از فایلهای سورس بیرونی نیز پشتیبانی میکند. به این ترتیب میتوانید کلاسهای شخص ثالث را زمانی که درون یک JAR یا ضمیمه سورس قرار دارد دیباگ کنید. کافی است نقاط توقف را پیش از آغاز دیباگ در این کلاسها تعیین کنید همچنین میتوانید سورس کد مفقود را با فایل zip/jar با استفاده از منوی ساختاری و با اقدام Attach Source الصاق کنید. جاوا 9 و نسخههای بالاتر از دیباگر جاوای ویاسکد پشتیبانی میکنند.
دیباگ ورودیهای نشست
کنسول پیشفرض دیباگ در ویاسکد از ورودیها پشتیبانی نمیکند. اگر برنامه شما نیاز به ورود مقداری از ترمینال داشته باشد، میتوانید از ترمینال یکپارچه درون ویاسکد با زدن کلیدهای Ctrl+’ استفاده کنید یا از یک ترمینال بیرونی برای اجرای آن بهره بگیرید.
نقاط توقف (Breakpoints)
افزونه دیباگر جاوا از انواع مختلفی از نقاط توقف مانند نقاط توقف خط، نقاط توقف شرطی، نقاط توقف داده و «لاگپوینت» (logpoint) پشتیبانی میکند.
نقاط توقف شرطی
به کمک قابلیت ارزیابی عبارت دیباگر میتواند نقاط توقف شرطی نیز داشته باشد. برای نمونه امکان تعیین نقطه توقف در زمانی که مقدار یک ارزیابی عبارت true باشد وجود دارد.
نقطه توقف داده
این امکان وجود دارد که دیباگر را ملزم کنیم وقتی مقدار یک متغیر تغییر مییابد متوقف شود. توجه کنید که نقاط توقف داده تنها میتوانند درون یک نشست دیباگ تنظیم شوند. این بدان معنی است که باید اپلیکیشن را ابتدا اجرا کرده و روی یک نقطه توقف معمولی متوقف سازید. در ادامه میتوانید در نمای «متغیرها» (VARIABLES) به بررسی مقدار یک متغیر پرداخته و یک نقطه توقف دادهای برای آن تنظیم کنید.
لاگ پوینت
دیباگر جاوا از لاگپوینتها نیز پشتیبانی میکند. به این ترتیب میتوانید بدون نیاز به ادیت کردن کد، خروجی را به کنسول دیباگ ارسال کنید. توجه کنید که لاگ پوینتها از بریکپوینتها متفاوت هستند، زیرا توقفی در روند اجرایی اپلیکیشن ایجاد نمیکنند.
ارزیابی عبارت
دیباگر امکان ارزیابی عبارتها را در پنجره WATCH و همچنین کنسول دیباگ فراهم ساخته است.
جایگزینی سریع کد
قابلیت پیشرفته دیگر دیباگر «جایگزینی سریع کد» (Hot Code Replace) نام دارد. این قابلیت که به اختصار HCR نامیده میشود، یک تکنیک دیباگ است که دیباگر جاوا به وسیله آن تغییرهای کلاس را روی کانال دیباگ به ماشین مجازی دیگری انتقال میدهد. قابلیت HCR موجب میشود که آزمون و خطا در زمان توسعه راحتتر صورت بپذیرد و کدنویسی تجربی به آسانی انجام یابد. با بهرهگیری این قابلیت جدید میتوانید یک نشست دیباگ را آغاز کنید و پس از این که یک فایل جاوا در محیط توسعه تغییر یافت، دیباگر کد را در JVM در حال اجرا، تغییر میدهد. به این ترتیب دیگر نیازی به راهاندازی مجدد نیست و به همین جهت «جایگزینی سریع کد» نام گرفته است. در تصویر زیر شیوه استفاده از HCR را در افزونه دیباگر حاوی VS Code مشاهده میکنید.
امکان استفاده از تنظیمات java.debug.settings.hotCodeReplace برای کنترل شیوه راهاندازی HCR وجود دارد. مقادیر رشتهای ممکن برای این پارامتر به شرح زیر هستند:
- manual: با کلیک روی نوار ابزار تغییرها اعمال میشوند (گزینه پیشفرض)
- auto: پس از کامپایل تغییرها به طور خودکار اعمال میشوند.
- never: قابلیت «جایگزینی سریع کد» غیر فعال میشود.
فیلترینگ گام
«فیلتر گام» (Step filter) به منظور فیلتر کردن نوعهایی که نمیخواهیم ببینیم یا رد شدن از روی آنها در زمان دیباگ کردن استفاده میشود. با بهرهگیری از این قابلیت میتوان پکیجها را طوری درون launch.json پیکربندی کرد که بتوان در مواقع نیاز از روی آنها رد شد.
گزینههای پیکربندی
گزینهها و تنظیمات زیادی برای پیکربندی دیباگر وجود دارند. برای نمونه پیکربندی آرگومانهای JVM و متغیرهای محیطی با استفاده از گزینههای launch به سهولت انجام مییابد.
برای اغلب تنظیمات پرکاربرد میتوانید نمونههایی را در صفحه «پیکربندیهای دیباگر جاوای VS Code» (+) مشاهده کنید. این سند شیوه تولید خودکار پیکربندیها را توضیح میدهد و اگر بخواهید آنها را ویرایش کنید، روش انجام این کار در کلاس Main، آرگومانهای مختلف، محیط، شیوه اتصال به پروسههای جاوا و کاربرد قابلیتهای پیشرفتهتر را توضیح داده است. در ادامه پیکربندیهای موجود برای Launch و Attach ارائه شده است.
پیکربندی Launch
- mainClass (الزامی) – نام کلاس کاملاً محرز (برای مثال: [java module name/]com.xyz.MainApp) یا مسیر فایل جاوای مدخل برنامه.
- args – آرگومانهای خط فرمان که به برنامه ارسال میشوند. میتوانید از “${command:SpecifyProgramArgs}” برای اعلان آرگومانهای برنامه استفاده کنید و یک رشته یا آرایهای از رشتههای میپذیرد.
- sourcePaths – دایرکتوریهای سورس اضافی برنامه را شامل میشود. دیباگر به طور پیشفرض از روی تنظیمات برنامه به دنبال سورس کد میگردد. این گزینه به دیباگر امکان میدهد که سورس کد را در دایرکتوریهای دیگر نیز بررسی کند.
- modulePaths – این گزینه شامل مسیرهای ماژول برای اجرای JVM است. اگر این گزینه مشخص نشده باشد، دیباگر به طور خودکار از روی پروژه جاری تصمیمگیری میکند.
- classPaths – مسیرهای کلاس برای اجرای JVM محسوب میشود. اگر مشخص نشده باشد، دیباگر به طور خودکار از روی پروژه جاری تصمیمگیری میکند.
- encoding – تنظیمات file.encoding برای JVM است. اگر مشخص نشده باشد، به طور پیشفرض از انکودینگ UTF-8 استفاده خواهد شد. مقادیر ممکن را میتوانید در این لینک (+) مشاهده کنید.
- vmArgs – گزینههای اضافی و مشخصههای سیستم برای JVM است که یک رشته یا آرایهای از رشتههای میپذیرد.
- projectName – پروژه ترجیحی است که دیباگر در آن به دنبال کلاسها میگردد. این مقدار میتواند نامهای کلاس تکراری در پروژههای مختلف باشد. این تنظیمات هنگامی که دیباگر به دنبال کلاس اصلی مشخص شده برای آغاز برنامه میگردد نیز به کار میآید. تعیین این تنظیمات زمانی الزامی است که چندین پروژه جاوا به طور همزمان در فضای کاری وجود دارند. در غیر این صورت، ارزیابی عبارت و نقاط توقف شرطی ممکن است کار نکنند.
- cwd – دایرکتوری کاری برنامه است. مقدار پیشفرض آن به صورت ${workspaceFolder} است.
- env – متغیرهای محیطی اضافی برای برنامه است.
- envFile – مسیر مطلق فایلی است که شامل تعاریف متغیرهای محیطی است.
- stopOnEntry – موجب میشود برنامه پس از آغاز به کار به طور خودکار وارد مکث شود.
- Console – کنسول مشخص شده برای اجرای برنامه است. اگر مشخص نشده باشد، از کنسول مشخص شده در تنظیمات کاربری به صورت java.debug.settings.console استفاده میشود.
- مقادیر ممکن آن چنین هستند:
- internalConsole – کنسول دیباگ VS Code (امکان ورودی استریمی ندارد)
- integratedTerminal – ترمینال یکپارچه VS Code است.
- externalTerminal – ترمینال بیرونی است که میتوان از طریق تنظیمات کاربری پیکربندی نمود.
- shortenCommandLine – هنگامی که پروژهای مسیر کلاس طولانی دارد یا آرگومانهای ماشین مجازی آن زیاد است. خط فرمان برای اجرای برنامه ممکن است از محدودیت بیشینه کاراکتر مجاز در سیستم عامل فراتر رود. این آیتمِ پیکربندی چندین رویکرد برای کوتاهسازی خط فرمان ارائه کرده است که مقدار پیشفرض آن auto است.
- none – برنامه را با خط فرمان استاندارد به صورت java [options] classname [args] اجرا میکند.
- Jarmanifest – پارامترهای classpath را در یک فایل موقت به نام classpath.jar ذخیره کرده و برنامه را با خط فرمان java -cp classpath.jar classname [args] باز میکند.
- argfile – پارامترهای classpath را در یک فایل موقت آرگومان ایجاد کرده و برنامه را با خط فرمان java @argfile [args] اجرا میکند. این مقدار تنها در جاوا نسخه 9 و بالاتر مجاز است.
- Auto – به طور خودکار طول خط فرمان را برسی کرده و تشخیص میدهد که به شیوه مناسبی آن را کوتاهسازی کند.
- stepFilters – در زمان step کردن اجرا، برخی کلاسها یا مدهای خاص را رد میکند.
- classNameFilters – [منسوخ شده و جایگزین آن skipClasses است] در زمان step کردن یک کلاس مشخص شده را رد میکند. نامهای کلاس باید «کاملاً محرز» (Fully Qualified) باشند. امکان استفاده از وایلدکارد نیز وجود دارد.
- skipClasses – کلاسهای مشخص شده را در زمان step کردن رد میکند. امکان استفاده از متغیرهای درونی مانند $JDK و $Libraries برای رد کردن گروهی از کلاسها یا افزودن عبارتهای اسمی خاص برای کلاسها مانند java.* یا *.Foo نیز وجود دارد.
- skipSynthetics – متدهای سنتتیک را در زمان step کردن رد میکند.
- skipStaticInitializers – متدهای مقداردهی استاتیک را در زمان step کردن رد میکند.
- skipConstructors – متدهای سازنده را دزمان step کردن رد میکند.
پیکربندی Attach
- hostName (الزامی) – نام میزبان یا نشانی IP دیباگ شونده ریموت است.
- Port (الزامی) – پورت دیباگ شونده ریموت است.
- processId – با استفاده از انتخابگر پردازش یک پردازش انتخاب شده و عملیات الصاق به آن اجرا میشود.
- Timeout – مقدار بیشینه زمانی، پیش از اتصال مجدد برحسب میلیثانیه است که مقدار پیشفرض آن 30000 میلیثانیه است.
- sourcePaths – دایرکتوریهای سورس بیرونی برنامه را شامل میشود. دیباگر به طور پیشفرض از روی تنظیمات پروژه به دنبال سورس کد میگردد. این گزینه به دیباگر امکان میدهد که در دایرکتوریهای بیرونی نیز به دنبال سورس کد بگردد.
- projectName – پروژه ترجیحی که دیباگر در آن به دنبال کلاسها میگردد. ممکن است در پروژههای مختلف نامهای کلاس تکراری وجود داشته باشند. این مقدار در مواردی الزامی است که چند پروژه مختلف جاوا وجود داشته باشد و در صورتی که تعیین نشود، ممکن است ارزیابی عبارتها و نقاط توقف شرطی به درستی کار نکنند.
- stepFilters – در زمان step کردن برخی کلاسها یا متدها را رد میکند.
- classNameFilters – [منسوخ شده و جایگزین آن skipClasses است] در هنگام step کردن، یک کلاس مشخص شده را رد میکند. نامهای کلاس باید کاملاً محرز باشند. امکان استفاده از وایلدکارد نیز وجود دارد.
- skipClasses – کلاسهای مشخص شده را در زمان step کردن رد میکند. امکان استفاده از متغیرهای درونی مانند $JDK و $Libraries برای رد کردن گروهی از کلاسها یا افزودن عبارتهای اسمی خاص برای کلاسها مانند java.* یا *.Foo نیز وجود دارد.
- skipSynthetics – متدهای سنتتیک را در زمان step کردن رد میکند.
- skipStaticInitializers – متدهای مقداردهی استاتیک را در زمان step کردن رد میکند.
- skipConstructors – متدهای سازنده را در موارد step کردن رد میکند.
تنظیمات کاربر
- java.debug.logLevel – کمینه سطح لاگهای دیباگر که به VS Code ارسال میشود و مقدار پیشفرض آن warn است.
- java.debug.settings.showHex – موجب میشود که عددها در Variables به صورت hex نمایش یابند و مقدار پیشفرض آن false است.
- java.debug.settings.showStaticVariables – متغیرهای استاتیک را در Variables نمایش میدهد و مقدار پیشفرض آن false است.
- java.debug.settings.showQualifiedNames – نامهای کلاس کاملاً محرز شده را در Variables نمایش میدهد و مقدار پیشفرض آن false است.
- java.debug.settings.showLogicalStructure – موجب میشود که ساختار منطقی کلاسهای Collection و Map در Variables نمایش یابند و مقدار پیشفرض آن true است.
- java.debug.settings.showToString – متغیرهای مقدار toString() را برای همه کلاسهایی که متد toString را در Variables اورراید کردهاند نمایش میدهد و مقدار پیشفرض آن true است.
- java.debug.settings.maxStringLength – طول بیشینه رشتههایی است که در Variables یا Debug Console میتوانند نمایش یابند. رشتههای طولانیتر از این حد کوتاه میشوند. مقدار پیشفرض آن 0 است که به معنای عدم اجرای عملیات کوتاه کردن است.
- java.debug.settings.hotCodeReplace – کلاسهای تغییر یافته جاوا را در زمان دیباگ کردن دوباره بارگذاری میکند و مقدار پیشفرض آن manual است. باید مطمئن شوید که java.autobuild.enabled در افزونه Java Language Support غیر فعال نشده است. پارامترهای مجاز به شرح زیر هستند:
- manual – باید نوار ابزار را کلیک کنید تا تغییرها اعمال شوند.
- Auto – تغییرها پس از کامپایل بهطور خودکار اعمال میشوند.
- Never – تغییرها هرگز اعمال نمیشوند.
- java.debug.settings.enableHotCodeReplace – قابلیت جایگزینی سریع کد را برای کدهای جاوا اجرا میکند. مطمئن شوید که امکان auto build برای VS Code Java غیر فعال نشده است.
- java.debug.settings.enableRunDebugCodeLens – امکان استفاده از CodeLens برای دکمههای اجرا و دیباگ را روی مدخل ورودی اصلی برنامه فراهم میسازد. مقدار پیشفرض آن true است.
- java.debug.settings.forceBuildBeforeLaunch – ملزم به بیلد مجدد فضای کاری پیش از اجرای برنامه جاوا میکند که مقدار پیشفرضش نیز true است.
- java.debug.settings.console – کنسول مشخص شده برای اجرای برنامه جاوا را شامل میشود که مقدار پیشفرض آن integratedTerminal است. اگر میخواهید کنسول را برای یک نشست خاص دیباگ سفارشیسازی کنید، باید پیکربندی console را در launch.json تغییر دهید.
- internalConsole – کنسول دیباگ VS Code (امکان ورودی استریمی ندارد)
- integratedTerminal – ترمینال یکپارچه VS Code است.
- externalTerminal – ترمینال بیرونی است که میتوان از طریق تنظیمات کاربری پیکربندی نمود.
- java.debug.settings.exceptionBreakpoint.skipClasses – کلاسهای مشخص شده را در زمان توقف روی استثنا رد میکند. امکان استفاده از متغیرهای درونی مانند $JDK و $Libraries برای رد کردن گروهی از کلاسها یا افزودن عبارتهای اسمی خاص برای کلاسها مانند java.* یا *.Foo نیز وجود دارد.
- java.debug.settings.stepping.skipClasses – کلاسهای مشخص شده را در زمان step کردن رد میکند. امکان استفاده از متغیرهای درونی مانند $JDK و $Libraries برای رد کردن گروهی از کلاسها یا افزودن عبارتهای اسمی خاص برای کلاسها مانند java.* یا *.Foo نیز وجود دارد.
- java.debug.settings.stepping.skipSynthetics – متدهای سنتتیک را در زمان step کردن رد میکند.
- java.debug.settings.stepping.skipStaticInitializers – متدهای مقداردهی استاتیک را در زمان step کردن رد میکند.
- java.debug.settings.stepping.skipConstructors – متدهای سازنده را در موارد step کردن رد میکند.
- java.debug.settings.jdwp.limitOfVariablesPerJdwpRequest – بیشینه تعداد متغیرها یا فیلدهایی است که در یک درخواست JDWP میتوان درخواست کرد. هر چه این مقدار بالاتر باشد، در زمان باز کردن درخواست JDWP درخواستهای کمتری به دیباگشونده ارسال میشود. تعیین مقدارهای بسیار بالا نیز ممکن است موجب ایجاد timeout برای درخواست JDWP شود. مقدار پیشفرض آن 100 است.
- java.debug.settings.jdwp.requestTimeout – مقدار timeout درخواست JDWP در زمان ارتباط دیباگشونده با ماشین مجازی مقصد است که مقدار پیشفرض آن 3000 میلیثانیه است.
- java.debug.settings.vmArgs – آرگومانهای پیشفرض ماشین مجازی برای اجرای برنامه جاوا است. برای نمونه میتوانید از -Xmx1G –ea برای افزایش اندازه Heap به یک گیگابایت و فعالسازی assertion بهره بگیرید. اگر میخواهید آرگومانهای ماشین مجازی را برای یک نشست خاص دیباگ سفارشیسازی کنید، میتوانید مقادیر vmArgs را درون launch.json تغییر دهید.
- java.silentNotification – در مورد زمان استفاده از نوتیفیکیشنها برای گزارش پیشرفت تصمیم میگیرد. اگر مقدار آن true باشد، از نوار وضعیت برای گزارش استفاده خواهد شد. مقدار پیشفرض آن false است.
تست برنامههای جاوا در VS Code
برای تست برنامههای جاوا در محیط ویژوال استودیو کد میتوانید از افزونه Test Runner for Java (+) بهره بگیرید. این افزونه سبک، تست کیسهای جاوا را اجرا و دیباگ میکند.
افزونه Test Runner for Java از فریمورکهای تست زیر پشتیبانی میکند:
- JUnit 4 (v4.8.0+)
- JUnit 5 (v5.1.0+)
- TestNG (v6.8.0+)
این افزونه با افزونههای e Language Support for Java™ by Red Hat و Debugger for Java کار میکند تا قابلیتهای زیر را تأمین کند:
- اجرا/دیباگ تست کیسها
- سفارشیسازی پیکربندیهای تست
- مشاهده گزارش تست
- مشاهده تستها در تست اکسپلورر
پیشنیازها
- JDK (version 11 or later)
- Visual Studio Code (version 1.59.0 or later)
- Extension Pack for Java
راهاندازی پروژه
توجه کنید که اگر قبلاً فریمورک تست جاوا را در پروژه خود تنظیم کرده باشید، میتوانید این بخش را رد کرده و به بخش «قابلیتها» در ادامهی مقاله بروید.
JUnit 4
در این بخش فرایند راهاندازی این افزونه را برای محیطهای بیلد اتومیشن مختلف بررسی میکنیم.
Maven
پیکربندی زیر را به فایل pom.xml پروژه اضافه کنید:
junit
junit
(YOUR_JUNIT_VERSION)
test
GRADLE
باید مطمئن شوید که خطوط زیر در فایل build.gradle اضافه شدهاند:
plugins {
java
}
dependencies {
testImplementation('junit:junit:(YOUR_JUNIT_VERSION)')
}
پوشه مدیریت نشده
اگر در پروژه خود از هیچ ابزار بیلدی استفاده نمیکنید، باید Jar-های زیر را دانلود کرده و به مسیر کلاس پروژه اضافه کنید:
- junit.jar (+)
- hamcrest-core.jar (+)
Junit 5
تیم Junit 5 مجموعهای از پروژهای نمونه با ابزارهای بیلد مختلف عرضه کردهاند. اگر در پروژه خود از Maven یا Gradle استفاده میکنید، میتوانید سری به ریپازیتوری (+) این پروژه بزنید.
پوشه مدیریت نشده
اگر در پروژه خود از هیچ ابزار مدیریت بیلدی استفاده نمیکنید، میتوانید فایل JAR مستقل (+) Junit را در مسیر کلاس پروژه اضافه کنید.
TestNG
در این خصوص برای ابزارهای بیلد مختلف به صورت زیر عمل میکنیم.
Maven
پیکربندی زیر را به فایل pom.xml پروژه اضافه کنید:
org.testng
testng
(YOUR_TESTNG_VERSION)
test
GRADLE
مطمئن شوید که خطوط زیر به فایل build.gradle اضافه شدهاند:
plugins {
java
}
dependencies {
testImplementation('org.testng:testng:(YOUR_TESTNG_VERSION)')
}
پوشه مدیریت نشده
اگر در پروژهتان از هیچ ابزار مدیریت بیلد استفاده نمیکنید، باید JAR-های زیر را دانلود کرده و به مسیر کلاس پروژه اضافه کنید:
- testng.jar (+)
- jcommander.jar (+)
قابلیتها
در این بخش با قابلیتهای مختلف افزونه تست کدهای جاوا برای VS Code آشنا خواهیم شد.
اجرا/دیباگ تست کیسها
افزونه Test Runner for Java میانبرهایی در سمت چپ تعاریف کلاس و متد اضافه میکند. برای اجرای تست کیسهای هدف روی دکمه سبز رنگ کلیک کنید. همچنین با راست-کلیک میتوانید گزینههای بیشتری را مشاهده کنید.
تست اکسپلورر
قابلیت «تست اکسپلورر» (Test Explorer) یک نمای درختی برای نمایش همه تست کیسها در فضای کاری است. با کلیک کردن روی دکمه بشر در ستون سمت چپ VS Code میتوانید این قابلیت را ببینید. در این بخش امکان اجرا/دیباگ تست کیسها و نمایش نتایج مربوطه نیز وجود دارد.
سفارشیسازی پیکربندیهای تست
گاهی اوقات ممکن است بخواهید پیکربندی اجرای تست کیسها را تغییر دهید. به این منظور میتوانید پیکربندیها را زیر بخش java.test.config به تنظیمات محیط کاری اضافه کنید.
در حال حاضر پیکربندیهای موجود به صورت زیر هستند.
- Args – آرگومانهای خط فرمان را مشخص میکند که به اجراکننده تست ارسال خواهند شد.
- classPaths – مسیر کلاس تعریف شده در این تنظیمات به مسیر کلاس تعیین شده الحاق خواهد شد.
- Env – متغیرهای محیطی اضافی در زمان اجرای تستها از طریق یک شیء کلید-مقدار مشخص میشود.
- envFile – مسیر مطلق فایلی که شامل تعاریف متغیرهای محیطی است را مشخص میکند.
- modulePaths – مسیرهای ماژول هستند که در تنظیمات تعریف شدهاند و به مسیرهای ماژول ریزالو شده الحاق میشوند.
- name – نام آیتم پیکربندی را شامل میشود. امکان تعیین نام پیشفرض از طریق تنظیم java.test.defaultConfig نیز وجود دارد.
- preLaunchTask – برچسب یک وظیفه که در tasks.json تعریف شده را مشخص میکند. این وظیفه پیش از آغاز تست اجرا خواهد شد.
- sourcePaths – مسیرهای سورس اضافی را در زمان دیباگ کردن تستها مشخص میسازد.
- vmArgs – گزینههای اضافی و مشخصههای سیستم را برای JVM تعیین میکند.
- workingDirectory – دایرکتوری کاری را در زمان اجرا کردن تستها مشخص میکند.
مشاهده نتایج تست
پس از اجرا/دیباگ کردن تست کیسها، وضعیت آیتمهای تست مرتبط هم در دکوریشنهای ادیتور و هم در تست اکسپلورر قابل بررسی است.
با اجرای دستور Test: Peek Output میتوانید نمای نتایج را بررسی کنید. همچنین با انتخاب لینکهای «رد پشته» (stack trace) میتوانید به محل سورس مورد نظر بروید.
تولید تست
افزونه مورد بحث امکانی برای تولید چارچوب تست کیسها فراهم ساخته است. به این منظور میتوانید سری به منوی راست-کلیک دستور بزنید. کافی است روی …Source Action کلیک کرده و سپس Generate Tests را انتخاب کنید.
اگر این کار را روی سورس کد اصلی خود انجام دهید، از شما نام کامل کلاس تست و متدهایی که میخواهید تست کنید را میپرسد. در ادامه افزونه، کد تست مورد نیاز را برای شما تولید خواهد کرد.
اگر سورس اکشن را روی کد سورس تست بزنید، نوع متدهای تستی که میخواهید اضافه کنید را از شما میپرسد. متدهای چرخه عمر و متد تست را تعیین کنید:
ناوبری تست
افزونه تست جاوا قابلیتهایی دارد که اجازه میدهد بین تستها و موضوعهای تست جابجا شوید. اگر سورس کد در مسیر src/main/java یا src/test/java باشد، میتوانید مدخلی به نام Go to Test یا Go to Test Subject را در منوی راست–کلیک مشاهده کنید.
همچنین با جستجو به دنبال عبارت Java: Go to Test در پالت فرمان (Ctrl+Shift+P) میتوانید این دستور را مشاهده کنید.
دستورهای تست در VS Code
دستورهای مختلفی برای تست کردن وجود دارند که با وارد کردن عبارت :Test در پالت فرمان میتوانید ببینید.
تنظیمات تست VS Code
برخی تنظیمات خاص تست در VS Code وجود دارند که با جستجوی عبارت testing در ادیتور تنظیمات (,+Ctrl) میتوانید مشاهده کنید.
مدیریت پروژهها در VS Code
افزونه Project Manager for Java (+) به مدیریت پروژههای جاوا و وابستگیهای آنها کمک میکند. همچنین با استفاده از این افزونه میتوانید پروژههای جدید جاوا، پکیجها و کلاسهای تازه بسازید. برای این که بتوانید از پشتیبانی کامل کدهای جاوا در VS Code بهرهمند شوید، باید افزونه Extension Pack for Java (+) را نصب کنید که این افزونه نیز بخشی از آن محسوب میشود.
نمای پروژه
نمای Java Projects امکان مشاهده پروژههای جاوا و وابستگیهای آنها را فراهم میسازد و نقاط ورودی وظایف مدیریت پروژه را نیز مشخص میسازد.
به طور پیشفرض نمای Java Projects زیر نمای Explorer نمایش مییابد. اگر آن را نمیبینید، روی دکمه … در نوار عنوان EXPLORER کلیک کرده و گزینه Java Projects را انتخاب کنید.
در دکمه overflow نوار ناوبری گزینههای بیشتری وجود دارند. برای نمونه میتوانید بین نمای سلسلهمراتبی و نمای مسطح سوئیچ کنید.
دکمههایی در کنار گرهها در اکسپلورر دیده میشوند که میانبرهای مفیدی برای برخی اقدامات فراهم میسازند.
همچنین برخی قابلیتهای مفید در منوی راست-کلیک هر گره وجود دارند که میتوانید مورد استفاده قرار دهید.
ایجاد پروژه جدید جاوا
با کلیک روی دکمه + در نوار ناوبری میتوانید یک پروژه جدید ایجاد کنید. همچنین میتوانید در پالت فرمان دستور Java: Create Java Project… را به این منظور انتخاب نمایید. VS Code در زمان ایجاد پروژه امکان نصب افزونههای لازم را بسته به نوع پروژه تسهیل میکند.
ایمپورت پروژههای جاوا
امکان ایمپورت کردن مستقیم پروژهها و ماژولهای جاوا در فضای کاری از طریق منوی …File > Open Folder وجود دارد. باید مطمئن شوید که پوشه باز شده شامل ابزارهای بیلد مانند pom.xml یا build.gradle میشود. افزونه VS Code for Java پروژه را تشخیص داده و این فایلها را به طور خودکار ایمپورت میکند.
زمانی که ماژول جدیدی را به پروژه اضافه میکنید، میتوانید دستور Java: Import Java projects in workspace را اجرا نمایید تا آنها را در فضای کاری ایمپورت کنید. این دستور به ایمپورت کردن پروژههای جدید در فضای کاری بدون نیاز به بارگذاری مجدد پنجره VS Code کمک میکند.
اکسپورت در JAR
امکان اکسپورت کردن بیلد به فایل JAR از طریق نمای پروژه و یا با اجرای دستور Java: Export Jar…وجود دارد.
پیکربندی Runtime برای پروژهها
با تکامل تدریجی جاوا امروزه شاهد هستیم که توسعهدهندگان با نسخههای مختلفی از JDK کار میکنند. امکان نگاشت این نسخههای مختلف به مسیرهای مختلف نصب لوکال از طریق رشته java.configuration.runtimes وجود دارد. این تنظیمات دارای قالببندی زیر است:
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/usr/local/jdk1.8.0_201"
},
{
"name": "JavaSE-11",
"path": "/usr/local/jdk-11.0.3",
"sources" : "/usr/local/jdk-11.0.3/lib/src.zip",
"javadoc" : "https://docs.oracle.com/en/java/javase/11/docs/api",
"default": true
},
{
"name": "JavaSE-12",
"path": "/usr/local/jdk-12.0.2"
},
{
"name": "JavaSE-13",
"path": "/usr/local/jdk-13"
}
]
توجه کنید که یکی از این موارد را با تعیین مقدار “default”: true برای مدخل به عنوان مقدار پیشفرض تنظیم نمایید. این JDK پیشفرض برای پوشههای مدیریتنشده یعنی فاقد ابزارهای بیلد استفاده میشود.
برای این که ببینید کدام نسخه JDK برای یک پروژه استفاده میشود، میتوانید دستور Java: Configure Java Runtime را در پالت فرمان بزنید. این دستور یک نمای جدید باز میکند که اطلاعات runtime پروژه شما را نشان میدهد.
تغییر JDK برای پروژههای Maven و Gradle
اگر میخواهید نسخه JDK را برای پروژههای Maven و Gradle خود تغییر دهید، باید این مقدار را در اسکریپتهای بیلد یعنی فایلهای pom.xml یا build.gradle عوض کنید. با کلیک روی آیکون i میتوانید روش انجام این تغییرها را ببینید. همچنین با کلیک روی آیکون قلم به فایل اسکریپت بیلد پروژه هدایت میشوید.
تغییر JDK برای پوشههای مدیریت نشده
برای تغییر دادن JDK در پوشههای مدیریتنشده یعنی پوشههای فاقد ابزارهای بیلد میتوانید روی دکمه قلم کلیک کنید تا فهرستی از JDK-ها را نمایش دهد و به این ترتیب نسخه مورد نظر خود را برای این پروژهها انتخاب نمایید.
دانلود JDK
اگر میخواهید یک JDK جدید دانلود کنید، کافی است روی لینک download کلیک کنید یا دستور Java: Install New JDK in Command Palette را در پالت فرمان بزنید. به این ترتیب نمای جدیدی باز میشود که شما را در زمینه دانلود کردن JDK-ها راهنمایی میکند.
پیکربندی classpath برای پوشههای مدیریتنشده
افزونه Project Management for Java یک رابط کاربری برای پیکربندی classpath در پوشههای مدیریتنشده ارائه کرده است. این مسیر کلاس را میتوان به صورت دستی در صفحه پیکربندی classpath تنظیم کرد. به این منظور دستور Java: Configure Classpath را در پالت فرمان انتخاب نمایید.
در برخی موارد نادر، ممکن است لازم باشد فضای کاری جاوا را با اجرای دستور Java: Clean Java Language Server Workspace در پالت فرمان پاک کنید تا سرور زبان بتواند وابستگیها را از نو بسازد.
مدیریت وابستگی
در این بخش با موارد مرتبط با مدیریت وابستگیها در زبان جاوا در محیط VS Code آشنا میشویم.
افزودن یک وابستگی Maven
در پروژههای مبتنی بر Maven امکان افزودن وابستگی از طریق کلیک کردن روی آیکون + کنار گره Maven Dependencies در نمای پروژه وجود دارد.
مدیریت وابستگیها برای پوشه مدیریتنشده
اگر پروژه شما از نوع پوشه مدیریتنشده است و هیچ ابزار بیلدی برای آن تعریف نشده است، میتوانید وابستگیهای پروژه را از طریق کلیک روی آیکون + یا آیکون – روی گره Referenced Libraries یا آیتمهای زیر آن مدیریت کنید.
همچنین امکان مدیریت وابستگیها در صفحه پیکربندی classpath نیز وجود دارد که در بخش قبلی توضیح دادیم.
در پشت صحنه یک تنظیمات به نام java.project.referencedLibraries در فایل settings.json وجود دارد که روش سفارشیسازی آن را در ادامه توضیح میدهیم.
گنجاندن کتابخانهها
کتابخانههایی که قرار است مورد ارجاع قرار گیرند با استفاده از مجموعهای از الگوهای glob مشخص میشوند. به مثال زیر توجه کنید.
"java.project.referencedLibraries": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
]
تنظیمات فوق همه فایلهای jar. را به پوشه کتابخانه فضای کاری همراه با فایل foo.jar از مسیر مطلق تعیین شده به وابستگیهای بیرونی پروژه اضافه میکند.
در ادامه کتابخانههای ارجاع داده شده از سوی VS Code بررسی میشوند و در صورتی که تغییری در هر یک از این فایلهای وابسته وجود داشته باشد، پروژه رفرش خواهد شد.
VS Code به طور پیشفرض همه فایلهای JAR را در دایرکتوری lib فضای کاری با استفاده از الگوی glob به شکل lib/**/*.jar مورد ارجاع قرار میدهد.
حذف برخی کتابخانهها
اگر میخواهید برخی از کتابخانهها را از پروژه حذف کنید، میتوانید java.project.referencedLibraries را باز کنید تا از فیلدهای include/exclude برای افزودن یک الگوی glob به صورت exclude بهره بگیریم.
"java.project.referencedLibraries": {
"include": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
],
"exclude": [
"library/sources/**"
]
}
در مثال فوق هر فایل باینری JAR در پوشه library/sources نادیده گرفته میشود، زیرا جزو وابستگیهای بیرونی پروژه نیست.
الصاق JAR-های سورس
به طور پیشفرض، یک فایل {binary}.jar مورد ارجاع تلاش میکند تا مسیر {binary}-sources.jar را در همان دایرکتوری جستجو کرده و در صورت یافتن مورد مطابقت، خود را به عنوان سورس الصاق کند.
اگر بخواهید به طور دستی یک فایل JAR را به عنوان الصاق سورس معرفی کنید، میتوانید نگاشت کلید-مقدار را در فیلد sources ارائه کنید:
"java.project.referencedLibraries": {
"include": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
],
"exclude": [
"library/sources/**"
],
"sources": {
"library/bar.jar": "library/sources/bar-src.jar"
}
}
به این ترتیب bar-src.jar به فایل bar.jar به عنوان سورس الصاق میشود.
حالت سبک
افزونه VS Code for Java دو حالت کاری دارد که یکی حالت سبک (Lightweight) و دیگری استاندارد است. در حالت سبک تنها فایلهای سورس و JDK از سوی سرور زبان ریزالو میشوند؛ اما در حالت استاندارد وابستگیهای ایمپورت شده نیز ریزالو میشوند و پروژه از سوی سرور زبان ساخته میشود. حالت سبک برای مواردی مناسب است که بخواهیم آغاز سریعی داشته باشیم و در محیط سبک با فایلهای سورس کار کنیم. برای نمونه فرض کنید میخواهیم سورس کد را بخوانیم، به جاهای مختلف آن برویم و یا JDK را بررسی کنیم. یا ممکن است بخواهیم شِمای کلی و Javadoc را بررسی کرده و خطاهای نحوی را تشخیص داده و اصطلاح کنیم. همچنین در این حالت امکان تکمیل کد در حیطه فایلهای سورس و JDK نیز وجود دارد.
در حالت سبک (Lightweight Mode) وابستگیهای ایمپورت شده ریزالو نمیشوند و پروژه نیز بیلد نخواهد شد، بنابراین امکان اجرا، دیباگ، ریفکتور کردن، لینت کردن یا تشخیص خطاهای معناشناختی وجود ندارد. برای استفاده از این قابلیتها باید فضای کاری را از حالت سبک به حالت استاندارد سوئیچ کنید.
با پیکربندی java.server.launchMode بر اساس مقادیر زیر میتوانید حالت اجرای برنامه را مشخص کنید.
- Hybrid (پیشفرض) – در ابتدا فضای کاری در حالت سبک باز میشود. در ادامه در صورتی که فضای کاری شامل پروژههای جاوای ریزالو نشده باشد، از شما سؤال میشود آیا میخواهید به حالت استاندارد سوئیچ کنید یا نه. اگر گزینه «بعداً» (Later) را انتخاب کنید، در حالت سبک باقی میماند. میتوانید آیکون حالت سرور را در نوار وضعیت کلیک کرده و به طور دستی به حالت استاندارد سوئیچ کنید.
- Standard – فضای کاری در حالت استاندارد باز میشود.
- LightWeight – فضای کاری در حالت سبک باز میشود. با کلیک روی آیکون سرور در نوار وضعیت میتوانید به طور دستی به حالت استاندارد سوئیچ کنید.
نوار وضعیت (Status bar) نشان میدهد که حالت کنونی فضای کاری چیست و به این منظور از آیکونهای مختلفی استفاده میکند.
- – فضای کاری در حالت سبک باز میشود.
- – فضای کاری در حال باز شدن با حالت استاندارد است.
- – فضای کاری در حالت استاندارد باز شده است.
کلیک کردن روی آیکون حالت سبک موجب میشود که به حالت استاندارد سوئیچ کنید.
حالت بیلد
هنگامی که به ادیت کدهای جاوا در VS Code میپردازید، سرور زبان جاوا فضای کاری شما را بیلد کرده و قابلیتهای لازم زبان را تأمین میکند. شما میتوانید جزئیات وضعیت وظیفه بیلد را بررسی کرده و با کلیک کردن روی نوار وضعیت سرور زبان در گوشه راست-پایین ببینید که در پشت پرده چه میگذرد.
توسعه وباپلیکیشنهای جاوا در VS Code
در بخش انتهایی این راهنما با روش ایجاد یک وباپلیکیشن جاوا در ویژوال استودیو کد آشنا میشویم. به این ترتیب با روش اجرا، دیباگ و ادیت وباپلیکیشنهای جاوا به طور لوکال و در نهایت روی کلاد آشنا خواهیم شد.
سناریو
در این بخش از راهنما میخواهیم یک وباپلیکیشن ساده Spring Boot ایجاد کنیم.
پیش از آغاز
پیش از اجرا و دیپلوی کردن این وباپلیکیشن نمونه باید «کیت توسعه Java Se» (JDK) و ابزارهای بیلد Apache Maven را روی محیط توسعه لوکال خود نصب کنید. اگر این موارد را ندارید، آنها را نصب کنید. به این منظور باید افزونه Extension Pack for Java (Extension Pack for Java) را دانلود و نصب کنید که حاوی JDK 11 است.
توجه کنید که متغیر محیطی Extension Pack for Java باید روی محل نصب JDK تنظیم شده باشد تا بتوانید ادامه مراحل این راهنما را انجام دهید.
برای دانلود و نصب Apache Maven نسخه 3 یا بالاتر از این لینک (+) استفاده کنید. برای نصب ماون روی محیط توسعه لوکال از این راهنما (+) کمک بگیرید.
دانلود و تست اپلیکیشن اسپرینگ بوت
ابتدا پروژه نمونه سرآغاز اسپرینگ بوت (+) را روی سیستم خود کلون کنید. برای کلون کردن یک ریپازیتوری گیت میتوانید پالت فرمان (Ctrl+Shift+P) را باز کرده و از دستور Git: Clone استفاده کنید.
نشانی زیر را به عنوان URL ریپازیتوری ریموت وارد کرده و پوشه والدی که ریپازیتوری لوکال زیر آن قرار خواهد گرفت را انتخاب کنید.
https://github.com/spring-guides/gs-spring-boot.git
در ادامه پوشه complete درون ریپازیتوری کلون شده را در VS Code باز کنید و به پوشه code بروید.
درون VS Code هر کدام از فایلهای جاوای درون پوشه complete برای نمونه فایل srcmainjavahelloApplication.java را باز کنید. اگر اکستنشن زبان جاوا برای VS Code نصب نباشد از شما خواسته میشود که اکستنشن پک جاوا را نصب کنید.
زمانی که این افزونه را نصب کردید، به طور خودکار پروژه را برای شما بیلد میکند که ممکن است چند دقیقه طول بکشد. امکان اجرای اپلیکیشن از درون VS Code با فشردن کلید F5 و انتخاب محیط Java وجود دارد. اکستنشن Debug Java فایل پیکربندی دیباگ به نام launch.json را زیر پوشه.vscode در پروژه ایجاد میکند. امکان مشاهده روند پیشروی فرایند بیلد در نوار وضعیت ویاسکد نیز وجود دارد و زمانی که همه چیز خاتمه یافت، پیکربندی دیباگ فعال نهایی نمایش مییابد.
با فشردن دوباره کلید F5 دیباگر باز میشود.
با رفتن به نشانی http://localhost:8080 در مرورگر وب، میتوانید وباپلیکیشن را تست کنید. در این زمان باید پیامی مانند زیر را روی صفحه نمایش خود ببینید.
ایجاد تغییر
اکنون میخواهیم فایل HelloController.java را طوری تغییر دهیم که عبارت Greetings from Spring Boot! فوق به چیز دیگری مانند Hello World تغییر یابد. VS Code تجربه ویرایشی عالی برای کدهای جاوا ارائه میکند و قابلیتهای زیادی دارد که در بخشهای قبلی این راهنما آنها را با هم مرور کردیم.
پس از تغییر دادن عبارت متنی، دکمه Restart را در بالای ادیتور بزنید تا اپلیکیشن مجدداً اجرا شود و با بارگذاری مجدد مرورگر نتیجه را مشاهده کنید.
دیباگ اپلیکیشن
با فشردن کلید F9 یک نقطه توقف در سورس کد ایجاد کنید و مرورگر را از نو بارگذاری کنید تا برنامه جاوا به نقطه توقف برسد.
دیپلوی وباپلیکیشن جاوا روی کلاد
به این ترتیب ما موفق شدیم نخستین وباپلیکیشن جاوا خود را به طور لوکال اجرا کنیم. اکنون نوبت آن رسیده که با روش دیپلوی برنامه از داخل VS Code به روی Azure آشنا شویم. Azure زیرساخت ابری مایکروسافت برای اجرای اپلیکیشنهای مختلف است که امکان ایجاد حساب رایگان را برای استارتاپها فراهم ساخته است. توجه کنید که در حال حاضر امکان ایجاد حساب در این پلتفرم به طور مستقیم برای ایرانیان میسر نیست.
نصب اکستنشن Azure App Service
افزونه Azure App Service برای ایجاد، مدیریت و دیپلوی برنامهها روی زیرساخت ابری آژور عرضه شده و قابلیتهای زیر را دارد.
- ایجاد اسلات جدید وباپلیکیشن/دیپلویمنت آژور
- دیپلوی روی اسلات جدید وباپلیکیشن/دیپلویمنت آژور
- آغاز، توقف و ریاستارت اسلات وباپلیکیشن/ دیپلویمنت آژور
- مشاهده لاگهای یک وباپلیکیشن
- جابجایی اسلاتهای دیپلویمنت
برای نصب افزونه Azure App Service باید نمای اکستنشن ویاسکد را باز دن کلیدهای ترکیبی Ctrl+Shift+X باز کرده و به دنبال عبارت Azure App Service بگردید تا نتایج فیلتر شوند. گزینه اکستنشن Azure App Service مایکروسافت را انتخاب کنید. اگر خواستار تجربهای با محوریت بیشتر خط فرمان ماون هستید، میتوانید از پلاگین ماون برای Azure App Service نیز استفاده کنید.
ساخت وباپلیکیشن جدید روی آژور
زمانی که اکستنشن فوق نصب شد، میتوانید با طی مراحل زیر نخستین وباپلیکیشن خود را روی آژور ایجاد کنید.
- روی دکمه Create New Project در نمای اکسپلورر APP SERVICE کلیک کنید.
- یک نوع اشتراک را انتخاب کنید.
- یک نام یکتا برای وباپلیکیشن جدید انتخاب کنید.
- مکانی برای وباپلیکیشن جدید انتخاب کنید.
- گزینه سیستم عامل (OS) را روی لینوکس تنظیم کنید.
- یک رانتایم مانند Tomcat 8.5 (JRE8) برای وباپلیکیشن انتخاب کنید.
ساخت و دیپلوی وباپلیکیشن
فرایند دیپلوی برنامه از اکستنشن Azure Account بهره میگیرد که همزمان با افزونه Azure App Service روی سیستم نصب شده است. در ادامه باید وارد حساب آژور خود شوید. اگر هیچ اشتراکی در آژور ندارید، ابتدا باید در آن ثبت نام کنید.
برای ورود به آژور باید دستور Azure: Sign In را از پالت فرمان اجرا کنید. امکان لاگین کردن با استفاده از گردش کار Device Login نیز وجود دارد. گزینه Copy & Open را بزنید تا مرورگر پیشفرض باز شود.
کد دسترسی را چسبانده و مراحل ورود را ادامه دهید.
زمانی که وارد حساب خود شدید، میتوانید اعلان فرمان یا پنجره ترمینال را باز کرده و پروژه را با استفاده از دستورهای Maven بیلد کنید. به این ترتیب فایلهای جدید war و jar در دایرکتوری target ایجاد میشوند.
mvn clean package
پس از بیلد کردن پروژه، دایرکتوری target را در اکسپلورر VS Code باز کرده و روی فایل راست-کلیک کنید و گزینه Deploy to Web App را بزنید و با پیروی از دستورات روی صفحه اپلیکیشن خود را دیپلوی کنید.
پنجره output را در VS Code باز کنید تا لاگهای دیپلویمنت را ببینید. زمانی که دیپلویمنت کامل شد، URL وباپلیکیشن را نمایش میدهد. روی لینک کلیک کنید تا در مرورگر باز شود و به این ترتیب میتوانید شاهد اجرای وباپلیکیشن خود روی محیط آژور باشید.
اتصال به سرویس داده
Azure Cosmos DB یک سرویس پایگاه داده توزیع شده جهانی است که به توسعهدهندگان امکان میدهد تا با استفاده از طیف متنوعی از API-های استاندارد مانند SQL، MongoDB، کاساندارا، گراف و Table با دادهها کار کنند.
ما در پروژه نمونه خود به سادگی با استفاده از API مربوط به SQ با اتصال به Azure Cosmos DB به کار با دادهها خواهیم پرداخت.
- ساخت یک موجودیت Azure Cosmos DB روی آژور
- به پورتال آژور (+) بروید و روی دکمه + کلیک کنید تا یک منبع ایجاد شود.
- روی Databases کلیک کرده و سپس Azure Cosmos DB را بزنید تا یک پایگاه داده ساخته شود.
- SQL (Document DB) API را انتخاب کرد و اطلاعات دیتابیس خود را وارد کنید.
به پایگاه دادهای که ساختید بروید و روی keys کلیک کنید و URI و PRIMARY KEY مربوط به دیتابیستان را کپی کنید.
پیکربندی پروژه
- کار خود را با کلون کردن پروژه نمونه دیتابیس کاسموس آژور (+) آغاز میکنیم.
- به مسیر src/main/resources بروید و فایل application.properties را باز کنید. مشخصههای موجود در این فایل را با اطلاعاتی که از پورتال آژور در مورد دیتابیس کپی کردید، جایگزین کنید.
azure.documentdb.uri=your-documentdb-uri azure.documentdb.key=your-documentdb-key azure.documentdb.database=your-documentdb-databasename
اجرا و دیباگ اپلیکیشن
با فشردن کلید F5 اپلیکیشن خود را اجرا کنید. برای برسی نتیجه پورتال آژور را باز کرده و به سراغ دیتابیس کاسموس خود بروید. روی Data Explorer کلیک کرده و سپس Documnets را انتخاب کنید. به این ترتیب در صورتی که دادهها با موفقیت در این پایگاه داده نوشته شده باشند، میتوانید آنها را مشاهده کنید. همچنین میتوانید با استفاده از اکستنشن Azure Databases (+) به بررسی مدخلهای پایگاههای داده خود روی آژور بپردازید.
بک بریکپوینت روی سورس کد پروژه تعیین کنید، مرورگر را رفرش کنید تا به نقطه توقف برسد. همچنین میتوانید از Maven برای اجرای پروژه به صورت مراحل زیر استفاده کنید.
به دایرکتوری azure-spring-boot رفته و دستور زیر را اجرا کنید:
mvn install
به دایرکتوری azure-documentdb-spring-boot-sample رفته و دستور زیر را اجرا کنید:
mvn package
java -jar target/azure-documentdb-spring-boot-sample-0.0.1-SNAPSHOT.jar
فیلم آموزش پروژه محور جاوا Java – طراحی و ساخت شبکه اجتماعی
در این دوره آموزشی مواردی از قبیل نحوه ثبت نام در شبکه اجتماعی، نحوه اشتراک گذاری متن و عکس، نحوه دنبال کردن یک کاربر، نحوه لایک یک پست و سایر موارد پایهای مورد بررسی قرار میگیرد که در یک شبکه اجتماعی وجود دارند. در این تم آف، نحوه ساخت برنامه گرافیکی با استفاده از GUI Swing در محیط NetBeans در قالب پروژه شبکه اجتماعی توضیح داده میشود که قابلیت اجرا در سیستم عامل ویندوز را دارد.
طول مدت این دوره نزدیک به هفت ساعت و مدرس آن محمد جباری است. این دوره سه درس را شامل میشود. از سرفصلهای مهم این دوره میتوان ایجاد پایگاه داده برای شبکه اجتماعی، ساخت نرم افزار شبکه اجتماعی، ایجاد فایل خروجی پروژه و سایر موارد را نام برد.
- برای مشاهده فیلم آموزش پروژه محور جاوا Java – طراحی و ساخت شبکه اجتماعی + اینجا کلیک کنید.
سخن پایانی: برنامه نویسی جاوا در ویژوال استودیو
به این ترتیب به پایان این راهنما با موضوع برنامه نویسی جاوا در ویژوال استودیو میرسیم. امیدواریم این مطلب مورد توجه شما قرار گرفته باشد. در انتها برخی از آموزشهای ویدئویی مرتبط با این مطلب معرفی شدهاند.