Fara_Java | فرا جاوا: آموزش برنامه‌نویسی جاوا
541 subscribers
52 photos
5 videos
226 links
🧑‍💻 فرا جاوا — آموزش برنامه‌نویسی جاوا

🔸 آموزش زبان Java
🔸 کار با IntelliJ IDEA
🔸 کار با فریمورک Spring
🔸 ساخت رابط گرافیکی با JavaFX
🔸 و صدها ساعت آموزش جذاب

🚀 برای مشاهده تمام آموزش‌های ویدیویی، روی لینک زیر بزنید:👇
fdrs.ir/tc/java
Download Telegram
✳️ مفاهیم برنامه نویسی شیئ گرا در جاوا — به زبان ساده

‏در این مقاله به بررسی مفاهیم برنامه نویسی شیئ گرا در جاوا می‌پردازیم. در این زمینه مفاهیم کلاس، شیئ، تجرید، کپسوله‌سازی، وراثت و چندریختی مورد بررسی قرار خواهند گرفت.

══ فهرست مطالب ══

‏ ○ کلاس
‏ ○ شیئ
‏ ○ تجرید
‏ ○ کپسوله‌سازی
‏ ○ وراثت
‏ ○ چندریختی
‏ ○ سخن پایانی


🔸 کلاس

‏کلاس نقطه شروع همه اشیا محسوب می‌شود. کلاس را می‌توان به عنوان یک قالب برای ایجاد شیئ تصور کرد. هر کلاس به طور معمول شامل فیلدهای عضو، متدهای عضو، و یک متد خاص به نام «سازنده» (constructor) است. ما از این متد سازنده برای ساخت اشیایی از روی کلاس استفاده می‌کنیم:

‏توجه کنید که کلاس می‌تواند بیش از یک سازنده داشته باشد.


🔸 شیئ

‏شیءها از کلاس‌ها ساخته می‌شوند و به صورت نمونه‌هایی (Instanse) از کلاس نامیده می‌شوند. بدین ترتیب اشیا با استفاده از سازنده‌ها از کلاس‌ها ساخته می‌شوند:

‏در کد فوق دو وهله از کلاس Car ایجاد کرده‌ایم.



مطالعه ادامه مطلب 👇👇

🔗 مفاهیم برنامه نویسی شیئ گرا در جاوا — به زبان ساده — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس


❇️ ۱۹ سوال رایج در مصاحبه‌های شغلی جاوا

وقتی صحبت از مصاحبه‌ شغلی برای برنامه‌نویسی جاوا می‌شود، چند سوال وجود دارد که در بسیاری از موارد تکرار می‌شوند. اکثر این سوال‌ها راجع به «Multi-threading»، «collection»، «serialization»، کدنویسی و اصول برنامه‌نویسی شیء گرا است. در هر مصاحبه حداقل یک یا دو سوال مربوط به کدنویسی می‌آید. در این مقاله 19 مورد از مهمترین سوالات به همراه پاسخ‌های آن‌ها آمده‌ است تا شما را برای مصاحبه‌های کاری آماده کند.


🔸 سوال ۱: چرا نباید از HashMap در محیط‌های multi-thread شده استفاده کنیم؟ چه هنگام متد ()get به یک حلقه‌ بینهایت منجر می‌شود؟

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


🔸 سوال ۲: آیا انجام عمل Override برروی متد ()hashcode می‌تواند منجر به تغییری در عملکرد شود؟

این سوال خوب و مناسبی برای همه است. داشتن یک تابع مربوط به «hash code» که خطایی در کارش وجود داشته باشد، می‌تواند منجر به پیش آمدن مقدارهای تکراری در HashMap شود که به مرور زمان باعث می‌شود زمان مورد نیاز برای اضافه کردن شیء به HashMap افزایش پیدا کند.


🔸 سوال ۳: آیا تمام مقادیر یک «شیء تغییر ناپذیر» (Immutable Object) باید از نوع «final» تعریف شده باشد؟

اجباری به این کار نیست؛ همانطور که بالاتر اشاره کردیم، شما می‌توانید مقادیر را «private» تعریف کنید و تنها از طریق خود سازنده آن‌ها را تغییر دهید. متدی برای تغییر مقادیر آن‌ها نسازید و اگر هم شیء قابل تغییر است، هیچ اشاره‌ای به اعضای آن در سایر بخش‌های نرم‌افزار نکنید.


🔸 سوال ۴: متد ()substring که درون رشته‌ها قرار دارد، چگونه کار می‌کند؟

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


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

🔗 ۱۹ سوال رایج در مصاحبه‌های شغلی جاوا — کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ زبان برنامه نویسی جاوا (Java)

زبان برنامه نویسی جاوا (JAVA) در 23 مه 1995 (برابر با 2 خرداد 1374) از سوی جیمز گاسلینگ (James Gosling) طراحی شده است. جاوا به گواهی سایت معتبر Tiobe از سال 2001 همواره به عنوان اولین یا دومین زبان برنامه‌نویسی دنیا مطرح بوده است.


🔹 فهرست مطالب این نوشته

▫️ جاوا چیست؟

▫️ریشه‌های پیداش جاوا

▫️ مروری بر پلتفرم جاوا

▫️ چه زبان‌هایی از جاوا مشتق شده‌اند؟


🔸 جاوا چیست؟

جاوا یک زبان برنامه‌نویسی چندمنظوره و شی‌گرا است که تا حدودی زیادی به C و ++C شباهت دارد؛ اما استفاده از آن آسان‌تر است و امکان ساخت برنامه‌هایی قدرتمند با آن وجود دارد.


🔸 ریشه‌های پیداش جاوا

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


🔸 مروری بر پلتفرم جاوا

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


🔸 چه زبان‌هایی از جاوا مشتق شده‌اند؟

برخی زبان‌ها مانند اسکالا (Scala) و گرووی (Groovy) وجود دارند که برای اجرا روی JVM طراحی شده‌اند و یا زبان‌هایی هستند که برای اجرا روی محیط جاوا توسعه یافته‌اند.


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

🔗 زبان برنامه نویسی جاوا (Java) — از صفر تا صد— کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ تبدیل آرایه به رشته در جاوا

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


🔹 فهرست مطالب این نوشته

▫️ تبدیل آرایه به رشته در جاوا

▫️ تبدیل رشته به آرایه‌ای از رشته‌ها

▫️ سخن پایانی


🔸 تبدیل آرایه به رشته در جاوا

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

🔸 تبدیل رشته به آرایه‌ای از رشته‌ها

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


🔸 سخن پایانی

در این مقاله شیوه تبدیل یک آرایه به رشته و تبدیل رشته به آرایه با استفاده از core Java و همچنین کتابخانه‌های کاربردی رایج جاوا را مورد بررسی قرار دادیم.


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

🔗 تبدیل آرایه به رشته در جاوا — راهنمای جامع — کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ مفاهیم برنامه‌نویسی شیئ گرا در جاوا

در این مقاله به بررسی مفاهیم برنامه نویسی شیئ گرا در جاوا می‌پردازیم. در این زمینه مفاهیم کلاس، شیئ، تجرید، کپسوله‌سازی، وراثت و چندریختی مورد بررسی قرار خواهند گرفت.


🔹 فهرست مطالب این نوشته

▫️ کلاس

▫️ شیئ

▫️ تجرید

▫️ کپسوله‌سازی


🔸 کلاس

کلاس نقطه شروع همه اشیا محسوب می‌شود. کلاس را می‌توان به عنوان یک قالب برای ایجاد شیئ تصور کرد.


🔸 شیئ

شیءها از کلاس‌ها ساخته می‌شوند و به صورت نمونه‌هایی (Instanse) از کلاس نامیده می‌شوند.


🔸 تجرید

وظیفه «تجرید» (Abstraction) پنهان‌سازی پیچیدگی‌های پیاده‌سازی و عرضه اینترفیس‌های ساده‌تر است.


🔸 کپسوله‌سازی

وظیفه مفهوم «کپسوله‌سازی» (Encapsulation) پنهان‌سازی حالت بازنمایی داخلی یک شیئ از مصرف‌کننده API است.


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

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



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ فرصت‌های شغلی برنامه‌نویسان جاوا


🔹 فهرست مطالب این نوشته

▫️سطح تحصیلات

▫️ مسیر شغلی

▫️ کاربردهای برنامه‌نویسی جاوا


🔸 سطح تحصیلات

برای رسیدن به یک جایگاه ارزشمند در این حوزه، برنامه‌نویسان جاوا باید حداقل در مقطع کارشناسی رشته‌های علوم کامپیوتر، IT، ریاضیات یا رشته‌های مرتبط دیگر تحصیل کرده باشند.


🔸 مسیر شغلی

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

● برنامه‌نویس تازه‌کار

● برنامه‌نویس ارشد

● معمار سیستم

● مدیر


🔸 کاربردهای برنامه‌نویسی جاوا

برنامه‌نویسی جاوا شامل زمینه‌های شغلی متنوعی است و کاربردهای گسترده‌ای دارد. اکثر زمینه‌های شغلی مربوط به برنامه‌نویسی جاوا را می‌توان به قسمت‌های اصلی زیر تقسیم کرد.


● توسعه‌دهنده «back-end»

● توسعه‌دهنده «کلان داده‌ها» (Big Data)

● توسعه‌دهنده اندروید

● توسعه‌دهنده «Embedded Devices»


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

🔗 فرصت‌های شغلی برنامه‌نویسان جاوا — کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ ساخت برنامه حل سودوکو در جاوا

در این مقاله قصد داریم به بررسی یک برنامه حل سودوکو و الگوریتم‌های مورد استفاده از سوی آن بپردازیم. سپس این راه‌حل‌ها را در جاوا پیاده‌سازی می‌کنیم. نخستین راه‌حل یک حمله «تهاجم کور» (brute-force) است. راه‌حل دوم استفاده از تکنیک «لینک‌های رقصان» (Dancing Links) است. توجه داشته باشید که در این مقاله، نقطه توجه ما روی الگوریتم‌ها است و طراحی برنامه‌نویسی شیءگرا چندان موضوع توجه نیست.


🔹 فهرست مطالب این نوشته

▫️ معمای سودوکو

▫️ الگوریتم پس‌گرد

▫️ لینک‌های رقصنده

▫️ مقایسه راه‌ حل‌ها


🔸 معمای سودوکو

سودوکو به بیان ساده یک معمای ترکیبی جایگشت اعداد با شبکه‌ای از سلول‌های 9 × 9 است که بخشی از آن با اعدادی از 1 تا 9 پر شده است.

● تخته تست

● تخته حل‌ شده


🔸 الگوریتم پس‌گرد

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


🔸 لینک‌های رقصنده

در این بخش به بررسی روش لینک‌های رقصنده برای حل معمای سودوکو و پیاده‌سازی آن در جاوا می‌پردازیم.

● پوشش دقیق

● الگوریتم X

● مسئله پوشش دقیق

● گره رقصان

● گره ستون

● حل‌ کننده


🔸 مقایسه راه‌ حل‌ها

می‌توانیم دو الگوریتم مختلف را با اجرا روی رایانه یکسان با هم مقایسه کنیم. بدین ترتیب از تأثیرگذاری تفاوت اجزای محاسباتی رایانه مانند CPU یا RAM جلوگیری می‌کنیم، چون زمان‌های واقعی روی رایانه‌های مختلف متفاوت خواهد بود. با این حال، اینک می‌توانیم نتایج نسبی را ببینیم و بدین ترتیب می‌توان گفت که کدام الگوریتم سریع‌تر بود است.


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

🔗 ساخت برنامه حل سودوکو در جاوا — از صفر تا صد — کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ عملیات رایج روی رشته در جاوا — راهنمای کاربردی

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


🔹 فهرست مطالب این نوشته

▫️ تبدیل یک char به رشته

▫️ الحاق رشته‌ها

▫️ دریافت کاراکتر بر اساس اندیس

▫️ مدیریت مقادیر ASCII


🔸 تبدیل یک char به رشته

یک Char نشان‌دهنده یک کاراکتر در جاوا است، اما در اغلب موارد ما به رشته نیاز داریم.


🔸 الحاق رشته‌ها

عملیات رایج دیگر که اغلب مورد نیاز است، الحاق رشته‌ها با مقادیر دیگر مانند char است.


🔸 دریافت کاراکتر بر اساس اندیس

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


🔸
مدیریت مقادیر ASCII

می‌توانیم به سادگی بین یک char و بازنمایی عددی آن (ASCII) از طریق تبدیل نوع سوئیچ کنیم.


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

🔗 عملیات رایج روی رشته در جاوا — راهنمای کاربردی — کلیک کنید.



📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس


❇️ برنامه‌نویسی ناهمگام در جاوا

با توجه به رشد روزافزون تقاضا برای نوشتن کدهای غیر مسدودکننده، باید روش‌هایی برای اجرای ناهمگام کد پیدا کنیم.


🔹 فهرست مطالب این نوشته

1. برنامه نویسی ناهمگام در جاوا
1.1. Thread
1.2. FutureTask
1.3. CompletableFuture
2. Guava
3. EA Async
4. Cactoos
5. Jcabi-Aspects
6. سخن پایانی




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

🔗 برنامه‌نویسی ناهمگام در جاوا — به زبان ساده — کلیک کنید.




📌 کانال اختصاصی آموزش‌های رایگان جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی جاوا فرادرس [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های جاوا فرادرس

✳️ آموزش مقدماتی جاوا (بخش دوم) — از صفر تا صد

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

══ فهرست مطالب ══

‏ ○ Immutable
‏ ○ String ،StringBuffer و StringBuilder
‏ ○ سریال‌سازی
‏ ○ Comparator و Comparable
‏ ○ Collection
‏ ○ Guava
‏ ○ نسخه‌های جاوا


🔸 Immutable

‏هر کلاسی که حالت شیء آن پس از ایجاد وهله نتواند تغییر یابد به نام Immutable شناخته می‌شود.

‏– رشته و همه کلاس‌های پوششی آن و همچنین کلاس enum نمونه‌هایی از کلاس Immutable محسوب می‌شوند.

‏– کلاس‌های Immutable از نظر ارث‌بری، thread-safe هستند.

‏روش thread-safe ساختن یک کلاس به صورت زیر است:

‏– ابتدا مطمئن شوید که کلاس نمی‌تواند override شود. به این منظور کلاس را به صورت final دربیاورید.

‏– همه فیلدهای آن خصوصی باشند.

‏– هیچ متدی وجود نداشته باشد که بتواند حالت شیء را تغییر دهد. از این رو نباید از متدهای setter استفاده کرد.

‏– از یک کپی defensive یا کلون استفاده کنید.

‏BigDecimal نیز از نظر فنی Immutable محسوب نمی‌شود، زیرا یک کلاس final نیست.


🔸 String ،StringBuffer و StringBuilder

‏«رشته» (String) به صورت Immutable است، چون ما نمی‌توانیم یک شیء رشته را تغییر دهیم. هر بار که مقدار جدیدی به یک رشته انتساب می‌دهید، در واقع یک شیء جدید رشته در پشته ایجاد می‌شود و اشاره‌گر به آن شیء جدید اشاره می‌کند.

‏Pool رشته یک ناحیه حافظه خاص در هیپ جاوا است. هنگامی که یک رشته ایجاد می‌شود، در صورتی که رشته از قبل در pool موجود باشد، به جای ایجاد یک شیء جدید و بازگشت دادن ارجاع آن، ارجاعی به رشته موجود بازگشت می‌یابد.

‏دلایل مختلفی برای این حالت وجود دارد که در ادامه به برخی از آن‌ها اشاره می‌کنیم.



مطالعه ادامه مطلب 👇👇

🔗 آموزش مقدماتی جاوا (بخش دوم) — از صفر تا صد — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ فرصت‌های شغلی برنامه‌نویسان جاوا

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

══ فهرست مطالب ══

‏ ○ سطح تحصیلات
‏ ○ مسیر شغلی
‏ ○ کاربردهای برنامه‌نویسی جاوا


🔸 سطح تحصیلات

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


🔸 مسیر شغلی

‏بسته به تجربه، حرفه شما به‌ طور معمول در یکی از مسیرهای زیر ادامه خواهد یافت:

‏۱. برنامه‌نویس تازه‌کار: شما کارتان را به‌عنوان برنامه‌نویس تازه‌کار شروع می‌کنید و حدود ۳ تا ۴ سال در این سطح باقی می‌مانید. وظایف شما شامل برنامه‌نویسی، اشکال‌زدایی، مشارکت در بررسی کدها و مستندسازی فنی است. در این مرحله، شما همچنین باید انرژی خود را برای به دست آوردن دانش بیشتر در محیط جاوا و تسلط در یک یا چند زمینه‌ی دیگر متمرکز کنید.

‏۲. برنامه‌نویس ارشد: با افزایش تجربه، دانش و تخصص خود به سطح برنامه‌نویس ارشد ارتقا پیدا می‌کنید. در این سطح مسئولیت‌های شما بیشتر می‌شود. باید بر کار برنامه‌نویسان تازه‌کار نظارت کنید و در طراحی و پیاده‌سازی نرم‌افزار مشارکت نمایید. در حین مشارکت در برنامه‌نویسی، ارتباط شما با مشتریان نیز افزایش پیدا می‌کند؛ زیرا ممکن است وظیفه آموزش نرم‌افزار به کاربران نیز بر عهده شما گذاشته شود. در این مرحله با تمرکز برافزایش سطح دانش، تحصیلات و تخصص‌ می‌توانید در مسیر رسیدن به سطوح مدیریتی قدم بردارید.



مطالعه ادامه مطلب 👇👇

🔗 فرصت‌های شغلی برنامه‌نویسان جاوا — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ نمونه کد جاوا — نمونه کدهای کاربردی برای برنامه نویسان جاوا

‏جاوا یکی از محبوب‌ترین زبان‌های برنامه‌نویسی است و در حوزه وب‌اپلیکیشن، اپلیکیشن‌های ویندوزی، موبایل، شبکه، کالاهای مصرفی الکترونیک، دستگاه‌های گیرنده دیجیتال و تقریباً همه جا حضور دارد. جاوا اینک روی بیش از ۳ میلیارد دستگاه اجرا می‌شود. بر اساس گزارش اوراکل هم اینک بیش از ۵ میلیارد جاوا کارت در حال استفاده هستند. بیش از ۹ میلیون توسعه‌دهنده به زبان جاوا کدنویسی می‌کنند و محبوبیت زیادی میان توسعه‌دهندگان دارد و به یکی از رایج‌ترین پلتفرم‌های توسعه تبدیل شده است. در این مطلب به بررسی انواع مختلفی از نمونه کد جاوا و الگوریتم‌های کاربردی این زبان برنامه‌نویسی می‌پردازیم.

══ فهرست مطالب ══

‏ ○ تاریخچه جاوا
‏ ○ اصطلاحات جاوا
‏ ○ ویژگی‌های اصلی زبان جاوا
‏ ○ نکات، ترفندها و نمونه کد جاوا
‏ ○ الگوریتم‌ها و برنامه‌های کاربردی جاوا
‏ ○ سخن پایانی


🔸 تاریخچه جاوا

‏جاوا از سوی شرکت «سان مایکروسیستمز» (Sun Microsystems) در سال ۱۹۹۱ توسعه یافت و متعاقباً از سوی شرکت «اوراکل» (Oracle) خریداری شد. این پلتفرم توسط «جیمز گاسلنیگ» (James Gosling) و «پاتریک ناتون» (Patrick Naughton) توسعه یافته است. جاوا یک زبان ساده برنامه‌نویسی است که موجب شده نوشتن، کامپایل کردن و دیباگ برنامه‌ها آسان شود. با استفاده از جاوا می‌توان کد‌های با قابلیت استفاده مجدد و برنامه‌های ماژولار ساخت.

‏جاوا مبتنی بر کلاس و در واقع یک زبان شیء‌گرا است و طوری طراحی شده که تا حد امکان وابستگی‌های پیاده‌سازی کمی داشته باشد. جاوا زبان برنامه‌نویسی چندمنظوره است و توسعه‌دهندگان با بهره‌گیری از آن می‌توانند یک بار کد بنویسند و آن را هر کجا اجرا کند. برنامه‌های جاوا کامپایل شده و روی همه پلتفرم‌هایی که از جاوا پشتیبانی کنند، اجرا می‌شوند. اپلیکیشن‌های جاوا به «بایت کد» (Byte Code) کامپایل می‌شوند که می‌تواند روی هر ماشین مجازی جاوا اجرا شود. ساختار جاوا شبیه زبان‌های ++c/c است.

‏در ۱۳ نوامبر سال ۲۰۰۶ شرکت سان اغلب کدهای ماشین مجازی جاوا را به صورت متن-باز و رایگان عرضه کرد. در ۹ می ۲۰۰۷ این شرکت این فرایند را تکمیل کرده و همه کد JVM را تحت شرایط توزیع متن-باز عرضه کرد.


🔸 اصطلاحات جاوا

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

‏– ماشین مجازی جاوا (Java Virtual Machine | JVM): هر برنامه جاوا سه فاز دارد. این برنامه ابتدا نوشته می‌شود، سپس کامپایل می‌شود و در نهایت اجرا خواهد شد. مرحله نوشتن برنامه از سوی توسعه‌دهندگان جاوا انجام می‌یابد. فرایند کامپایل کد از سوی کامپایلر JAVAC اجرا می‌شود که کامپایلر اصلی جاوا است و شامل کیت توسعه جاوا (JDK) است. این کامپایلر برنامه جاوا را دریافت کرده و بایت کد را به عنوان خروجی تولید می‌کند.None
در مرحله اجرای یک برنامه جاوا، JVM بایت کد تولید شده از سوی کامپایلر را اجرا می‌کند. بدین ترتیب متوجه می‌شویم که وظیفه ماشین مجازی جاوا، اجرای بایت کد تولید شده از سوی کامپایلر است. هر سیستم عامل یک JVM متفاوت دارد، اما خروجی تولید شده پس از اجرای بایت کد روی همه سیستم‌های عامل مختلف، یکسان است. به همین دلیل است که جاوا یک زبان مستقل از پلتفرم محسوب می‌شود.

‏– بایت کد (Bytecode): چنان که توضیح دادیم کامپایلر JAVAC سورس کد جاوا را به بایت کد کامپایل می‌کند، به طوری که JVM بتواند آن را اجرا کند. این بایت کد به صورت فایل class. ذخیره می‌شوند. برای مشاهده بایت کد باید از دی‌اسمبلرهایی مانند ‌javap استفاده کنید.

‏– کیت توسعه جاوا (Java Development Kit | JDK): کیت توسعه جاوا چنان که از نامش برمی‌آید یک کیت توسعه کامل است که همه چیز از کامپایلر تا «محیط زمان اجرای جاوا» (JRE)، دیباگرهای جاوا، مستندات جاوا و غیره را شامل می‌شود. برای این که یک برنامه جاوا اجرا شود باید JDK را رویی رایانه نصب کنیم تا امکان نوشتن، کامپایل و اجرای برنامه‌های جاوا را بیابیم.



مطالعه ادامه مطلب 👇👇

🔗 نمونه کد جاوا — نمونه کدهای کاربردی برای برنامه نویسان جاوا — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ سازنده Copy در جاوا — از صفر تا صد

‏منظور از سازنده Copy در جاوا یک کلاس «سازنده» (Constructor) است که شیئی را با استفاده از شیء دیگری از همان کلاس جاوا می‌سازد. این سازنده در مواردی مفید است که بخواهیم یک شیئ پیچیده را که چندین فیلد دارد، کپی کنیم یا این که بخواهیم یک «کپی عمیق» (Deep Copy) از یک شیئ موجود ایجاد کنیم.

══ فهرست مطالب ══

‏ ○ ایجاد یک سازنده Copy در جاوا
‏ ○ سازنده Copy یا Clone
‏ ○ مشکلات وراثتی
‏ ○ سخن پایانی


🔸 ایجاد یک سازنده Copy در جاوا

‏برای ایجاد یک سازنده Copy ابتدا باید یک سازنده اعلان کنیم که شیئی از همان نوع به صورت یک پارامتر می‌گیرد:
public class Employee {
private int id;
private String name;

public Employee(Employee employee) {
}
}

‏سپس هر فیلد از شیء ورودی را به وهله جدیدی کپی می‌کنیم:
public class Employee {
private int id;
private String name;

public Employee(Employee employee) {
this.id = employee.id;
this.name = employee.name;
}
}

‏تا به اینجا یک «کپی سطحی» (Shallow Copy) داریم که مناسب است، زیرا همه فیلدهای ما (در این مثال یک int و یک String) یا از نوع ابتدایی (Premitive) یا نوع «تغییرناپذیر» (Immutable) هستند. اگر کلاس جاوا دارای فیلدهای تغییرپذیر باشد، در این صورت می‌توانیم به جای این کار یک کپی عمیق درون سازنده copy آن ایجاد کنیم. با بهره‌گیری از یک کپی عمیق، شیء جدیداً ایجادشده، مستقل از شیء اصلی خواهد بود، زیرا یک کپی متمایز از هر شیء تغییرپذیر ایجاد می‌کنیم:
public class Employee {
private int id;
private String name;
private Date startDate;

public Employee(Employee employee) {
this.id = employee.id;
this.name = employee.name;
this.startDate = new Date(employee.startDate.getTime());
}
}





مطالعه ادامه مطلب 👇👇

🔗 سازنده Copy در جاوا — از صفر تا صد — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ نوع Void در جاوا — به زبان ساده

‏اگر با زبان جاوا آشنا باشید، حتماً تاکنون با نوع Void یا Void Type در بخشی از کدهای جاوا مواجه شده‌اید و شاید کنجکاو بوده‌اید که منظور از این نوع Void در جاوا چیست؟ در این راهنما با این کلاس خاص آشنا می‌شویم و موارد استفاده و چگونگی استفاده از آن را خواهیم دید. همچنین توضیح می‌دهیم که چرا باید تا حد امکان از این نوع استفاده نکنیم.

══ فهرست مطالب ══

‏ ○ نوع Void در جاوا چیست؟
‏ ○ کاربردها
‏ ○ چگونه از Void استفاده نکنیم؟
‏ ○ سخن پایانی


🔸 نوع Void در جاوا چیست؟

‏نوع Void از JDK نسخه ۱.۱ به بعد عرضه شده است. هدف از این نوع این است که مقدار بازگشتی void را به صورت یک کلاس نمایندگی کند و شامل یک مقدار عمومی Class<Void>‎ است. این کلاس قابل وهله‌سازی نیست، زیرا تنها سازنده آن خصوصی است.

‏بنابراین تنها مقداری که می‌توان به یک متغیر Void انتساب داد، مقدار تهی (null) است. در واقع ممکن است این کار کمی بیهوده به نظر برسد، اما در ادامه خواهید دید که چگونه می‌توان از این نوع استفاده کرد.


🔸 کاربردها

‏برخی راه‌حل‌ها وجود دارند که استفاده نوع Void می‌تواند در آن‌ها جالب باشد.

‏ابتدا می‌توانیم از نوع void در زمان بازتاب استفاده کنیم. در واقع نوع بازگشتی هر متد void با متغیر Void.TYPE که مقدار Class<Void>‎ پیش‌گفته را نگهداری می‌کند، مطابقت خواهد داشت. یک کلاس ماشین حساب ساده مانند زیر را در نظر بگیرید:
public class Calculator {
private int result = 0;

public int add(int number) {
return result += number;
}

public int sub(int number) {
return result -= number;
}

public void clear() {
result = 0;
}

public void print() {
System.out.println(result);
}
}





مطالعه ادامه مطلب 👇👇

🔗 نوع Void در جاوا — به زبان ساده — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ حذف یک عنصر از آرایه جاوا — به زبان ساده

‏در این راهنمای کوتاه با روش‌های مختلف حذف یک عنصر از آرایه جاوا آشنا می‌شویم. به این منظور از کتابخانه Apache Commons Lang استفاده می‌کنیم.

══ فهرست مطالب ══

‏ ○ Maven
‏ ○ حذف یک عنصر از آرایه جاوا
‏ ○ استفاده از اندیس به عنوان ورودی
‏ ○ استفاده از عنصر به عنوان ورودی
‏ ○ سخن پایانی


🔸 Maven

‏در این مرحله وابستگی commons-lang۳ را به فایل pom.xml پروژه اضافه می‌کنیم:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>


🔸 حذف یک عنصر از آرایه جاوا

‏پیش از آغاز کار ابتدا بررسی می‌کنیم که وقتی یک عنصر از آرایه‌ای بدون کلاس ArrayUtils از کتابخانه Apache Commons Lang حذف می‌شود، چه اتفاق رخ می‌دهد.

‏با فرض وجود آرایه زیر، عنصر در اندیس ۲ را حذف می‌کنیم.

‏یک روش ساده برای انجام این کار می‌تواند جایگزینی مقدار ذخیره شده در اندیس ۲ با مقدار ذخیره شده در اندیس ۳ باشد تا این که به انتهای آرایه برسیم:



مطالعه ادامه مطلب 👇👇

🔗 حذف یک عنصر از آرایه جاوا — به زبان ساده — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ پیکربندی استخر نخ برای وب سرورهای جاوا — راهنمای پیشرفته

‏در این راهنما به بررسی روش پیکربندی استخر نخ برای وب سرورهای جاوا مانند Apache Tomcat، Glassfish Server و Oracle Weblogic می‌پردازیم.

══ فهرست مطالب ══

‏ ○ استخرهای نخ سرور
‏ ○ آپاچی تامکت
‏ ○ Glassfish
‏ ○ سخن پایانی


🔸 استخرهای نخ سرور

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

‏برخلاف نخ‌های اپلیکیشن، نخ‌های سرور حتی پس از توقف اپلیکیشن توزیع‌یافته نیز به حضور خود ادامه می‌دهند.


🔸 آپاچی تامکت

‏ابتدا می‌توانیم استخر نخ سرور تامکت را از طریق کلاس پیکربندی Executor در فایل server.xml به صورت زیر پیکربندی کنیم:

‏minSpareThreads برابر با کوچک‌ترین استخری است که در زمان آغاز به کار وجود خواهد داشت. maxThreads بزرگ‌ترین استخری است که پیش از آغاز صف‌بندی درخواست‌ها از سوی سرور وجود خواهد داشت.

‏مقادیر پیش‌فرض تامکت برای این دو گزینه به ترتیب برابر با ۲۵ و ۲۰۰ است. در این پیکربندی ما استخر نخ را به طور پیش‌فرض کمی کوچک‌تر کردیم.



مطالعه ادامه مطلب 👇👇

🔗 پیکربندی استخر نخ برای وب سرورهای جاوا — راهنمای پیشرفته — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ چگونه از ArrayList در جاوا استفاده کنیم؟



══ فهرست مطالب ══

‏ ○ ایجاد یک ArrayList
‏ ○ اضافه کردن آیتم در انتهای ArrayList
‏ ○ اضافه کردن آیتم در خانه مشخص


🔸 ایجاد یک ArrayList

‏ایجاد این آرایه کار ساده‌ای است و با یک دستور ساده امکان‌پذیر است که در ادامه خواهید دید:
ArrayList alist = new ArrayList();


‏اگر در ابتدا بدانید که لیست آرایه شما چند آیتم را در بر خواهد گرفت می‌توانید ظرفیت اولیه را مشخص کنید. این ظرفیت اولیه تنها نشانه‌ای برای تخصیص حافظه است وگرنه لیست آرایه محدودیتی در استفاده از آیتم ندارد. اگر شما ظرفیت اولیه را بدانید و آن را مشخص کنید ممکن است کمی در کارایی و سرعت پیشرفت کنید.
ArrayList alist = new ArrayList(20);



🔸 اضافه کردن آیتم در انتهای ArrayList

‏پرکردن لیست آرایه تقریبا کار ساده‌ای است. تنها کافی است از ()add استفاده کنید تا یک آیتم را به انتهای لیست اضافه نمایید. به مثال زیر توجه نمایید:
ArrayList alist = new ArrayList();
alist.add("apple");
alist.add("banana");
alist.add("cantaloupe");
alist.add("orange");
System.out.println(alist);
# prints
[apple, banana, cantaloupe, orange]

‏برای یافتن اینکه چه تعداد آیتم در لیست دارید می‌توانید از دستور ()size استفاده کنید.
System.out.println("Number of elements in the arraylist: " + alist.size());
# prints
Number of elements in the arraylist: 4



مطالعه ادامه مطلب 👇👇

🔗 چگونه از ArrayList در جاوا استفاده کنیم؟ — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

Forwarded from FaraDars_Course

📣 معرفی «کانال‌های موضوعی فرادرس» در رشته‌های مختلف تحصیلی و تخصصی

🌟 برای دسترسی به مطالب و مقالات آموزشی رایگان فرادرس، عضو کانال مورد نظر خود شوید👇👇👇


📌کانال آموزش برنامه‌نویسی:
@FaraProg

📌کانال آموزش برنامه‌نویسی پایتون:
@FaraPython

📌کانال آموزش برنامه‌نویسی اندروید:
@FaraAnd

📌کانال آموزش برنامه‌نویسی جاوا:
@Fara_Java

📌کانال آموزش طراحی و توسعه وب:
@FaraWebDev

📌کانال آموزش متلب و سیمولینک:
@FaraMatlabSim

📌کانال آموزش رباتیک:
@FaraRobotics

📌کانال آموزش هوش مصنوعی:
@FaraAI

📌کانال آموزش علم داده:
@Fara_DS

📌کانال آموزش علوم مهندسی:
@FaraEng

📌کانال آموزش مهندسی مکانیک:
@FaraMechanical

📌کانال آموزش مهندسی برق:
@FaraElectrical

📌کانال آموزش مهندسی عمران:
@FaraCivil

📌کانال آموزش معماری:
@FaraArch

📌کانال آموزش شیمی:
@FaraChem

📌کانال آموزش مهندسی و علوم کامپیوتر:
@FaraCompEng

📌کانال آموزش طراحی گرافیک:
@FaraGraphDesign

📌کانال آموزش زبان‌های خارجی:
@FaraLang

📌کانال آموزش زیست‌شناسی:
@FaraBio

📌کانال آموزش فیزیک:
@FaraPhys

📌کانال آموزش ریاضیات:
@FaraMathematic

📌کانال آموزش آمار و احتمالات:
@FaraStatistics

📌کانال آموزش نرم افزارهای آفیس:
@FaraOffice

📌کانال آموزش بورس و بازار سهام:
@FaraVest

📌کانال آموزش بازاریابی دیجیتال:
@Kaprila


@FaraDars — کانال اصلی فرادرس
✳️ آشنایی مقدماتی با Java Phaser — به زبان ساده

‏در این مقاله به بررسی سازنده Phaser از پکیج java.util.concurrent خواهیم پرداخت. این سازنده شباهت زیادی به سازنده CountDownLatch دارد که به ما امکان می‌دهد اجرای نخ‌ها را هماهنگ کنیم. با این حال Java Phaser در قیاس با CountDownLatch کارکردهای بیشتری دارد.

══ فهرست مطالب ══

‏ ○ Phaser API
‏ ○ پیاده‌سازی منطق با استفاده از Phaser API
‏ ○ سخن پایانی


🔸 Phaser API

‏Phaser به ما امکان می‌دهد که یک منطق بسازیم که در آن نخ‌ها باید در مانع منتظر بمانند تا بتوانند وارد گام بعدی اجرا شوند.

‏به این ترتیب می‌توانیم چند فاز اجرا را مدیریت کنیم و از وهله Phaser مجدداً برای هر فاز برنامه استفاده کنیم. هر فاز می‌تواند چند عدد نخ داشته باشد که منتظر پیشروی به فاز بعدی هستند. در ادامه یک مثال در مورد استفاده از فازها را برسی خواهیم کرد.

‏نخ برای مشارکت در هماهنگی باید خود را در وهله Phaser با استفاده از متد ()register ثبت کند. توجه کنید که این کار تنها تعداد طرف‌های ثبت شده را افزایش می‌دهد و نمی‌توانیم بررسی کنیم آیا نخ کنونی ثبت شده است یا نه. برای پشتیبانی از این امکان باید یک زیرکلاس از پیاده‌سازی تهیه کنیم.


🔸 پیاده‌سازی منطق با استفاده از Phaser API

‏فرض کنید که می‌خواهیم چند فاز اکشن‌ها را با یکدیگر هماهنگ کنیم. سه نخ فاز نخست را پردازش می‌کند و دو نخ دیگر نیز به پردازش فاز دوم می‌پردازند. در ادامه کلاس LongRunningAction را ایجاد می‌کنیم که اینترفیس Runnable را پیاده‌سازی می‌کند:
class LongRunningAction implements Runnable {
private String threadName;
private Phaser ph;

LongRunningAction(String threadName, Phaser ph) {
this.threadName = threadName;
this.ph = ph;
ph.register();
}

@Override
public void run() {
ph.arriveAndAwaitAdvance();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
ph.arriveAndDeregister();
}
}

‏زمانی که کلاس اکشن ما وهله‌سازی شد، با استفاده از متد ()register در اینترفیس Phaser ثبت نام می‌کنیم. به این ترتیب تعداد نخ‌هایی که از آن Phaser خاص استفاده می‌کنند، افزایش می‌یابد.

‏فراخوانی به ()arriveAndAwaitAdvance موجب خواهد شد که نخ کنونی منتظر مانع بماند. همان طور که قبلاً اشاره کردیم، زمانی که تعداد طرف‌های رسیده به مانع برابر با تعداد طرف‌های ثبت نام کرده شود، اجرا تداوم خواهد یافت. پس از این که کار پردازش پایان یافت، نخ کنونی از طریق فراخوانی متد ()arriveAndDeregister خود را از ثبت نام خارج می‌کند.



مطالعه ادامه مطلب 👇👇

🔗 آشنایی مقدماتی با Java Phaser — به زبان ساده — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ کاردزدی (Work Stealing) در جاوا — از صفر تا صد

‏در این مقاله به بررسی مفهوم کاردزدی در جاوا خواهیم پرداخت. منظور از کاردزدی (Work Stealing) نوعی راهبرد زمان‌بندی برای برنامه‌های رایانه‌ای چندنخی در محاسبات موازی است. به این ترتیب مشکل اجرای محاسبات چندنخی به روش دینامیکی حل می‌شود. در این روش محاسبات، فرد می‌تواند نخ‌های اجرایی جدیدی را روی یک رایانه چندنخی به روش استاتیک با تعداد ثابتی پردازنده یا هسته ایجاد کند. این راهبرد از نظر زمان اجرا، مصرف حافظه و ارتباط بین پردازنده‌ای عملکرد بسیار بهینه‌ای دارد.

══ فهرست مطالب ══

‏ ○ کار دزدی در جاوا
‏ ○ پیاده‌سازی فریمورک Fork/Join
‏ ○ استخر‌های نخ همگام و ناهمگام
‏ ○ مثال عملی: یافتن اعداد اول
‏ ○ سخن پایانی


🔸 کار دزدی در جاوا

‏مفهوم کاردزدی با هدف کاهش تنازع در اپلیکیشن‌های چندنخی در جاوا معرفی شده است. این کار با استفاده از فریمورک fork/join انجام می‌یابد.

‏در فریمورک fork/join، مسائل یا وظایف به طور بازگشتی به وظایف فرعی تجزیه می‌شوند. این در ادامه وظایف فرعی به صورت منفرد حل شده و نتایج هر یک با هم ترکیب می‌شوند تا نتیجه نهایی را تشکیل دهند:
Result solve(Problem problem) {
if (problem is small)
directly solve problem
else {
split problem into independent parts
fork new subtasks to solve each part
join all subtasks
compose result from subresults
}
}

‏وظیفه‌ای که تجزیه شده است به کمک «نخ‌های کارگر» (worker threads) حل می‌شود که از سوی «استخر نخ» (thread pool) تأمین می‌شوند. هر نخ کارگر دارای برخی وظایف فرعی است که مسئولیتشان را بر عهده گرفته است. این موارد در «صف‌های دوطرفه» (deques) ذخیره می‌شوند.


🔸 پیاده‌سازی فریمورک Fork/Join

‏ما می‌توانیم یک استخر نخ کاردزدی با استفاده از یکی از کلاس‌های ForkJoinPool یا Executors بسازیم:
ForkJoinPool commonPool = ForkJoinPool.commonPool();
ExecutorService workStealingPool = Executors.newWorkStealingPool();

‏کلاس Executors یک متد OVERLOAD-شده به نام newWorkStealingPool دارد که یک آرگومان عدد صحیح می‌گیرد که نماینده سطح «موازی‌سازی» (parallelism) است.

‏همچنین Executors.newWorkStealingPool یک تجرید از ForkJoinPool.commonPool است. تنها تفاوت در این است که Executors.newWorkStealingPool یک استخر در حالت ناهمگام می‌سازد که ForkJoinPool.commonPool این کار را انجام نمی‌دهد.



مطالعه ادامه مطلب 👇👇

🔗 کاردزدی (Work Stealing) در جاوا — از صفر تا صد — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس

✳️ قابلیت های پیش نمایشی جاوا — به زبان ساده

‏در این مقاله قصد داریم به بررسی انگیزه ارائه قابلیت های پیش نمایشی جاوا بپردازیم و تفاوت آن‌ها را با قابلیت‌های آزمایشی بدانیم. همچنین شیوه فعال‌سازی «قابلیت‌های پیش‌نمایشی» (Preview Features) را با ابزارهای مختلف مورد بررسی قرار می‌دهیم.

══ فهرست مطالب ══

‏ ○ علت ارائه قابلیت های پیش نمایشی جاوا چیست؟
‏ ○ قابلیت‌های پیش‌نمایشی در برابر قابلیت های آزمایشی جاوا
‏ ○ استفاده از قابلیت‌های پیش‌نمایشی جاوا
‏ ○ سخن پایانی


🔸 علت ارائه قابلیت های پیش نمایشی جاوا چیست؟

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

‏به لطف JEP-۱۲ (+) امکان درج مرور قابلیت‌های زبان و VM در نسخه‌های انتشار فراهم شده است. بدین ترتیب جامعه توسعه‌دهندگان می‌تواند قابلیت‌های جدید را در سناریوهای واقعی ولی مطمئناً در محیط‌های غیر پروداکشن بررسی کند. بر اساس این بازخورد جامعه، یک قابلیت پیش‌نمایشی می‌تواند مورد بازنگری و اصلاح قرار گیرد و این اصلاح حتی ممکن است چند بار در چند انتشار رخ دهد. در نهایت قابلیت‌ها به صورت دائمی درمی‌آیند. اما در برخی موارد مرورهای ارائه شده ممکن است منجر به حذف کلی یک قابلیت پیش‌نمایشی شوند.


🔸 قابلیت‌های پیش‌نمایشی در برابر قابلیت های آزمایشی جاوا

‏قابلیت‌های پیش‌نمایشی جاوا کاملاً تخصصی هستند و در معرض ارزیابی قرار می‌گیرند. از این رو هنوز به حالت نهایی خود نرسیده‌اند. به دلیل کیفیت بالا، همه پیاده‌سازی‌های متفاوت JDK باید شامل همه قابلیت‌های پیش‌نمایشی هر نسخه عرضه شده جاوا باشند. با این حال یک نسخه جاوا همچنان نمی‌تواند قابلیت‌های پیش‌نمایشی نسخه‌های قبلی را داشته باشد. قابلیت‌های پیش‌نمایشی اساساً روشی برای تشویق جامعه به بررسی و ارائه بازخورد هستند. به علاوه همه قابلیت‌های جاوا برای این که نهایی شوند، وارد مرحله پیش‌نمایش نمی‌شوند.

‏JEP-۱۲ در مورد قابلیت‌های نمایشی چنین توضیح می‌دهد:

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



مطالعه ادامه مطلب 👇👇

🔗 قابلیت های پیش نمایشی جاوا — به زبان ساده — کلیک کنید (+)


📌 کانال اختصاصی آموزشی برنامه‌نویسی جاوا

آخرین مطالب علمی، مقالات رایگان و ویدئوهای آموزشی برنامه‌نویسی جاوا را در کانال اختصاصی [@Fara_Java] دنبال کنید. 👇

@Fara_Java — مطالب و آموزش‌های برنامه‌نویسی جاوا فرادرس