loading...

لذت برنامه نویسی

بازدید : 28
چهارشنبه 1 شهريور 1402 زمان : 14:42

DHCP Spoofing حمله ای است که عملکرد سرویس DHCP (اختصاص IP به صورت اتومات) را مختل می کند.

این حمله به دو صورت می تواند به وجود اید:

  1. DHCP Server Spoofing : در حالت اول مهاجم به بسته های DHCP Request گوش می کند و بلافاصله به آنها جواب می دهد و IP Address و مشخصات مورد نظر خود را برای قربانی ارسال می کند به این نوع حملات man in the middle گفته می شود. به طور مثال IP خود را به عنوان Gateway به قربانی اعلام می کند در نتیجه قربانی بسته هایی که مقصد آنها خارج از شبکه هستند را به مهاجم تحویل می دهد و مهاجم اطلاعات مورد نظر خود را از این بسته استخراج می کند و سپس بسته را به سوی مقصد واقعی ارسال می کند و قربانی از این اتفاق بی خبر است.
  2. DHCP Starvation : حالت دوم جهت از کار انداختن سرویس DHCP مورد استفاده قرار می گیرد به این صورت که مهاجم تعداد زیادی DHCP Request جعلی ایجاد می کند و باعث می شود که کل محدود IP تعیین شده برای DHCP سرور پر شود یا تعداد این DHCP Request انقدر زیاد می شود که سرور توان پاسخگویی به ان را نداشته باشد.
  • نکته : در صورتی که DHCP سرور روی سوئیچ فعال باشد حمله حالت اول رخ نخواهد داد.

برای جلوگیری از این حملات از DHCP Snooping استفاده می کنیم و به صورت زیر عمل می کند :
برای جلوگیری از حالت اول پورتی که متصل به DHCP سرور ماست را به عنوان Trust معرفی می کنیم در نتیجه تنها این پورت اجازه دارد به بسته های DHCP Request پاسخ دهد. برای جلوگیری از حالت دوم برای پورت ها مشخص می کنیم که در هر ثانیه اجازه دارد چندتا DHCP Request دریافت کند و یا استفاده از قابلیت Port Security .

نحوی تنظیم DHCP Snooping در سوئیچ های سیسکو :

در ابتدا DHCP Snooping را فعال می کنیم.

Switch(config)#ip dhcp snooping

سپس VLAN مربوطه را مشخص می کنیم.

Switch(config)#ip dhcp snooping vlan 1

وارد اینترفیس متصل به DHCP سرور می شویم و آنرا به عنوان trust معرفی می کنیم.

Switch(config)#interface fasthernet 0/24
Switch(config-if)# ip dhcp snooping trust

حالا باید مشخص کنیم که باقی پورت ها در هر ثانیه اجازه ارسال چند DHCP Request را دارند.

Switch(config)#interface range fastethernet 0/1-23
Switch(config-if)#ip dhcp snooping limit rate 3

برای درک بیشتر مفاهیم بعد از گذراندن دوره آموزش CCNA سیسکو میتوانید با شرکت در دوره CCNA Security بصورت گام به گام ، کارگاهی ، در قالب آموزش CCNA Security با کد آزمون 210-260 به شما تضمین می دهد که امنیت زیرساخت شبکه را فرا گیرید و بتوانید امنیت تجهیزات سیسکویی خودتان را ارتقاء دهید . با تهیه این دوره آموزش CCNA Security شما دیگر نیازی به منبع آموزشی دیگری برای یادگیری CCNA سکیوریتی نخواهید داشت.

دوره آموزش CCNA Security چیست؟

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

بازدید : 27
چهارشنبه 1 شهريور 1402 زمان : 15:02

زمانی که طراحی شبکه مورد بحث قرار می گیرد دسته بندی شبکه براساس تعداد دستگاه های سرویس گیرنده به ما در طراحی کمک زیادی می کند.طراحی شبکه به اندازه و نیاز سازمان وابستگی زیادی دارد. به طور مثال بستر مورد نیاز برای یک شبکه کوچک با تعداد محدودی دستگاه نسبت به یک شبکه بزرگ با تعداد قابل توجهی دستگاه بسیار متفاوتر می باشد.متغییرهای زیادی در زمان طراحی شبکه باید در نظر گرفته شود.شبکه را براساس تعداد دستگاه های سرویس گیرنده به سه دسته تقسیم می کنند:

  • Small Network : شبکه هایی با حداکثر 200 سرویس گیرنده
  • Medium-Size Network : شبکه هایی با 200 تا 1000 سرویس گیرنده در این دسته قرار می گیرند.
  • Large Netwok : شبکه هایی با بیش از 1000 سرویس گیرنده

اصول مهندسی در زیرساخت سیسکو به چه شکل است؟

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

  • Hierarchy : این طراحی سلسله مراتبی به طراح کمک می کند که یک شبکه مطمئن را طراحی کند و مشکلات پیچیده طراحی را راحت تر و قابل مدیریت تر کند.
  • Modularity : طراحی ماژولار که باعث می شود عملکرد بخش های مختلف موجود در شبکه به صورت یک ماژول عمل کند و به این صورت طراحی ساده تر می شود. سیسکو جندین ماژول را معرفی کرده که شامل دیتاسنتر ، لبه اینترنت ، بلوک سرویس دهی و بخش Campus می باشد.
  • Resiliency : شبکه باید بتواند در شرایط عادی و غیرعادی به کار خود ادامه دهد. در شرایط عادی ترافیک براساس انتظار ما جریان دارد ولی شرایط غیر عادی زمانی است که یک سخت افزار یا نرم افزار ما دچار مشکل شود یا ترافیک زیادی وارد شبکه شود یا حمله هایی مانند DoS ایجاد شود.
  • Flexibility : شبکه طراحی شده باید توانایی تغییرات را داشته باشد به طور مثال یک سرویس به این شبکه اضافه شود یا توان شبکه را افزایش دهیم این تغییرات باید بودن ایجاد وقفه در عملکرد و اختلال در سرویس دهی صورت پذیرد.

در طراحی مدل سه لایه ای سیسکو ، تجهیزات در سه لایه زیر گروه بندی می شوند:

  1. Access
  2. Distribution
  3. Core

مدل سه لایه ای سیسکو به لحاظ مفهومی مشابه مدل هفت لایه OSI است. به طور کلی طراحی لایه ای بسیار مفید است چون هر دستگاه در هر لایه وظیفه و عملکرد مشخصی دارد که این ویژگی باعث میشود که حذف ، اضافه ، جایگزینی بخشی از شبکه به راحتی قابل انجام باشد. این انعطاف پذیری و سازگاری باعث می شود این مدل بسیار مقایس پذیر و قابل گسترش شود.

لایه Access در طراحی سه لایه سیسکو به چه معناست؟

در محیط LAN ، از طریق لایه Access اجازه دسترسی End Deviceها به شبکه ، داده می شود و در محیط WAN ، دسترسی به شبکه از راه دور داده می شود.معمولا در لایه Access از سوئیچ های لایه دوم و Access Pointها برای ایجاد دسترسی بین کلاینت ها و سرور استفاده می شود.

برخی از وظایف لایه Distribution در طراحی سلسله مراتبی سیسکو

  • تجمیع لینک ها ارتباطی مربوط به LAN و WAN
  • فیلترینگ و ACL
  • مسیریابی
  • جایگزینی و تقسیم بار (Redundancy and load balancing)
  • خلاصه سازی روت ها (Route Summarization)
  • کنترل Broadcast Domain با استفاده از روتر یا سوئیچ Multilayer

لایه Distribution در طراحی سه لایه سیسکو به چه معناست؟

این لایه بین لایه Access و Core قرار دارد و دیتا ارسالی توسط کاربر را از لایه Access به سمت لایه Core هدایت می کند. نوع ارتباطات در این لایه از نوع کابلی می باشد. برای جلوگیری از سرایت مشکلات احتمالی در شبکه LAN با استفاده از روتر یا سوئیچ Multilayer ، بین لایه Access و Core یک مرز ایجاد می کند.

برای درک بهتر مفاهیم سیسکو به دوره آموزش CCNA سیسکو جامع ( CCNA Routing and Switching ) مهندس قنبری یکی از کاملترین دوره های آموزشی سیسکو ( CCNA ) می باشد که با ده ها کارگاه عملی و توضیحات جامع به زبانی ساده و روان تدریس شده است.

مدرک CCNA روتینگ و سویچینگ سیسکو اولین گواهینامه دوره های آموزشی سیسکو به حساب می آید که شما را با تجهیزات زیرساختی سیسکو مثل روترها و سویچ ها و نحوه کار با آنها به خوبی آشنا می کند. شما با گذران این دوره CCNA Routing and Switching سیسکو دیگر نیازی به هیچ منبع آموزشی سیسکو نخواهید داشت.پیشنیاز دوره آموزشی CCNA سیسکو ، دوره آموزش نتورک پلاس است

برخی از وظایف لایه Core در ساختار سلسله مراتبی سیسکو

  • سوئیچنگ با سرعت بالا
  • قابلیت اطمینان و تحمل خطا
  • پرهیز از هرگونه پردازش اضافه روی بسته ها که باعث درگیر کردن CPU شود مانند مسائل امنیتی مثل inspection یا مواردی مثل QoS

بازدید : 36
چهارشنبه 1 شهريور 1402 زمان : 15:09

فایروال (Firewall) چیست و به زبان ساده چگونه کار می کند؟ چرا به آن دیواره آتش می گویند؟ فایروال چگونه کار می کند و چند نوع دارد؟ اگر بخواهیم به زبان ساده صحبت کنیم باید بگوییم بعد از سویچ در انواع تجهیزات شبکه ، واژه فایروال را می توانیم یکی از پرکاربردترین واژه ها در حوزه کامپیوتر و شبکه معرفی کنیم. خیلی اوقات از اینور و آنور این جملات آشنا را می شنویم که فایروالت رو عوض کن ، برای شبکه فایروال بگیر ، توی فایروال فلان رول رو اضافه کنید ، فایروالتون رو خاموش کنید و ... امروز در این مقاله می خواهیم به ساده ترین شکل ممکن و البته با بیان تجربیات خودم در مورد فایروال و سیر تا پیاز این نرم افزار یا سخت افزار با هم صحبت کنیم. با ما تا انتهای مقاله باشید.

معنی لغوی فایروال چیست؟ بررسی مفهوم و تئوری دیواره آتش

فایروال که به انگلیسی از ترکیب دو کلمه Fire به معنی آتش و Wall به معنی دیوار تشکیل شده است ، به زبان فارسی به عنوان دیواره آتش ترجمه شده است. با توجه به اینکه ماهیت دیواره آتش جلوگیری از تهدیدات و به نوعی پاکسازی ترافیک شبکه است ، می توان چنین تفسیر کرد که این نامگذاری با توجه به ماهیت پاکسازی و ضدعفونی کننده آتش در تاریخ ، برگرفته ای از همین مفهوم باشد .

به زبان ساده تر آتش پاکسازی می کند و ضدعفونی می کند و دیواره آتش در شبکه هم ترافیک آلوده و خطرناک را پاکسازی می کند. بد نیست بدانید که آتش نماد پاکی در ایران باستان هم بوده است. در ادامه این مقاله ما فرض را بر این می گذاریم که شما تعریف شبکه چیست را به خوبی می دانید و با مفاهیم شبکه آشنایی دارید.

کمی راجع به تاریخچه فایروال و نسل های فایروال

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

Access Rule ها تعریف می کردند که چه آدرسهایی از کجا به کجا بتوانند بروند و یا نروند. مکانیزم کاری فایروال های اولیه هم بر همین اساس بود و فیلترینگی که بر روی ترافیک ها انجام می شد با عنوان فیلترینگ بسته یا Packet Filtering می توانست مسیر بسته های اطلاعاتی شبکه را تعیین کند.

اولین نسل از فایروال های شبکه در اواخر دهه 1980 میلادی به دنیا معرفی شدند. با توسعه و پیشرفته تکنولوژی های فایروال نسل های مختلفی از فایروال به دنیا معرفی شدند که در ادامه نسل های فایروال ها را با هم مرور می کنیم :

نسل اول از فایروال چیست؟ اضافه شدن ضد ویروس

این نسل از فایروال ها به عنوان Generation 1 Virus هم شناخته می شوند. فایروال هایی که قبل از نسل یک فایروال ها کار می کردند صرفا بصورت فیلترینگ بسته های اطلاعاتی یا Packet Filtering کار می کردند.

بازدید : 13
چهارشنبه 1 شهريور 1402 زمان : 15:12

قبل از اینکه به بحث مراحل انجام حملات هکری و انگیزه هکرها بپردازیم به این پاراگراف خوب دقت کنید : این مایه تاسف است ؛ اما بایستی بگویم که بیشتر سازمان ها و شرکت هایی که در حال حاضر در دنیا مشغول به فعالیت هستند هدف حملات هکری قرار می گیرند . یک تحقیق در سال 2003 میلادی نشان داد که منبع بیش از 75 درصد حملات هکری که به سازمانها و شرکت ها انجام می شود از داخل و توسط کارکنان همان سازمان یا شرکت انجام می شود . در همان تحقیق آمار جالبی نیز بدست آمد که بر طبق آن بیش از 240 میلیارد تومان ( در سال 2003 نه با قیمت دلار امروزی ) برای بازگردانی و بازیابی از حمله و برگردادن سازمان یا شرکت به حالت عادی فعالیت هزینه شده است .

این آمار ها نشان دهنده این است که ما بایستی به اهمیت امنیت محیط عملیاتی ( موثر ) و همچنین کنترل های درست امنیتی بیشتر توجه کنیم .قانون همیشگی پیشگیری بهتر از درمان است همیشه و در همه موارد صادق است ، شما به جای اینکه منتظر باشید تا فعالیت سازمان دچار مشکل شود و بعد به فکر درست کردن آن بیافتید ، بهتر است از قبل تمهیدات امنیتی خود را با هزینه ای بسیار پاینتر پیاده سازی کنید تا مشکلات بالقوه آینده کمتر بوجود بیایند . خوب بیاید در خصوص این موضوع صحبت کنیم که ما بایستی از چه افرادی بترسیم ؟ منظور من افرادی است که ممکن است باعث ایجاد اختلال در شبکه سازمان شما بشوند است نه همه افراد ، این افراد مضر و مخرب را می توان به صورت کلی به دو دسته تقسیم کرد :

  1. کارمندهای داخلی ( خودی ها ) : اینگونه افراد همان کارکنانی هستند که در حال حاضر مشغول به فعالیت در شرکت یا سازمان شما هستند و یا اینکه از آنجا اخراج شده اند . کارمند های داخلی ممکن است افراد ناراضی شرکت شما را نیز تشکیل بدهند ، افرادی که از کار و وضعیت درآمد خود ناراضی هستند .
  2. افراد خارجی یا بیگانه : اینگونه از افراد هرگز برای سازمان یا شرکت شما فعالیت نکرده اند و شاید بتوانیم بگوییم که شما خوش شانس هم بوده اید که این افراد برای شما کار نکرده اند . اما همین دسته از افراد نیز خود به یک سری گروه های دیگر تقسیم بندی می شوند که به شرح ذیل می باشند :
  3. اینگونه از افراد که بعضا نام خود را هکر هم می گذارند ( عمرا ) ، در حقیقت افرادی هستند که با استفاده کردن از ابزارها ، اسکریپت ها و روتکیت هایی که توسط افرادی با دانش بالاتر نسبت به آنها نوشته شده است فعالیت می کنند . اصلا آنها نمی دانند که این اسکریپتی که در حال اجرای آن هستند ممکن است چه نوع تخریبی انجام دهد و اصلا چگونه کار می کند . به نظر من و بسیاری دیگر از کارشناسان امنیت اینگونه افراد بیشترین صدمه را می توانند به سازمان ها و شرکت ها بزنند زیرا از عواقب کار خود اطلاعی ندارند .

    جاسوس های شرکتی

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

    جاسوس های دولتی

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

    هکرهای ممتاز

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

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

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

    متدولوژی های معمول حملات هکری

    حملات هکری معمولا یک یا چندین قسمت از مثلث امنیت اطلاعات یا بهتر بگوییم CIA امنیت اطلاعات را هدف قرار می دهند ، همانطور که می دانید مثلث امنیت اطلاعات شامل محرمانگی ، یکپارچگی و تمامیت و دسترسی پذیری اطلاعات می باشد . حملاتی که بر روی محرمانگی و صحت اطلاعات تمرکز می کنند معمولا منجر به دسترسی پیدا کردن به اطلاعات می شوند حال آنکه حملاتی که به دسترسی پذیری اطلاعات انجام می شود لزوما نبایستی باعث دسترسی پیدا کردن به اطلاعات شود . حملاتی که به دسترسی پذیری یا Availability اطلاعات می شود معمولا از نوع حملات از سرویس خارج کردن یا Denial Of Service هستند .

    نمونه ای از حملات خارج از سرویس کردن ( DOS ) در محیط واقعی

    در فوریه سال 2000 وب سایت های شرکت های یاهو و Ebay به وسیله یک حمله DOS کاملا از سرویس خارج شدند . حمله انجام شده هیچگونه دسترسی را به مهاجمان به شبکه داخلی آنها نداده بود اما باعث شده بود که این کمپانی ها نتوانند به سرویس دهی ادامه دهند . در سال 2001 هکر به نام مستعار Mafiaboy در یک دادگاه در کانادا به دلیل انجام این حملات به 8 ماه زندان محکوم شد .هکرها اهداف متنوعی را برای هک کردن انتخاب می کنند ، اما روش و معماری که هر هکر برای انجام عملیات خود استفاده می کند تقریبا ثابت است . معمولا این متدولوژی هک و حملات هکری به شکل زیر است ، در شکل ب متدولوژی حمله به وضوح قابل مشاهده است :

    شکل ب : متدولوژی انجام حملات هکری

    1. Foot printing یا شناسایی : در این مرحله یک هکر تا جایی که امکان دارد در خصوص هدف مورد حمله اطلاعات بدست می آورد ، این اطلاعات می تواند از طریق وب سایت اینترنتی سازمان ، پایگاه های داده عمومی ، گروه های یاهو و گوگل و یا حتی از پرنسل سازمان بدست بیاید . به این مرحله Passive Reconnaissance یا شناسایی غیرفعالی هم گفته می شود .
    2. Scanning یا اسکن کردن : این مرحله تا حدی به مرحله قبلی مرتبط است زیرا باز هم برای بدست آوردن اطلاعات استفاده می شوند . به این مرحله که بعد از شناسایی اولیه انجام می شود Active Reconnaissance یا شناسایی فعال هم گفته می شود . در این مرحله یک هکر با استفاده از ابزارهای و تکنیک های مختلف پورت ها و سرویس های فعال بر روی هدف را تحلیل می کند و در این خصوص اطلاعات لازم را جمع آوری می کند .
    3. مرحله سوم : Enumeration یا جمع آوری اطلاعات : این مرحله به مرحله قبلی که Scanning است بسیار نزدیک است با این تفاوت که در این نوع جمع آوری اطلاعات ، اطلاعات بسیار دقیقتی از اهداف مورد حمله جمع آوری می شود ، برای مثال پوشه های به اشتراک گذاشته شده با سطح دسترسی ضعیف ، نام های کاربری موجود در شبکه ، رمز های عبور ضعیف و بسیاری موارد دیگر در این مرحله از حمله انجام می شود .
    4. Penetrate یا نفوذ : تفاوت این مرحله با مراحل قبلی این است که در این مرحله مهاجم حمله خود را انجام داده است و رسما کاری از دست شما بر نیامده است . در این مرحبه مهاجم با استفاده از اطلاعاتی که در مراجل قبلی جمع آوری کرده است ، حمله خود را برنامه ریزی کرده است و شبکه شما مورد هجوم وی قرار گرفته است . در این مرحله شما هک شده اید.
    5. Escalate یا بالا بردن دسترسی :فکر نکنید که زمانی که یک هکر وارد یک سیستم شده است قطعا دسترسی های یک مدیر سیستم را دارد . معمولا دسترسی هایی که بصورت غیر مجاز توسط هکرها انجام می شود دسترسی های سطح پایین است ، هکر ها با استفاده از تکنیک های خاص به نام Privilege Escalation یا بالا بردن سطح دسترسی از طریق همان دسترسی کم به دسترسی های بیشتر دست خواهند یافت .
    6. Covering Tracks یا پاک کردن آثار جرم : زمانی که هکر به دسترسی مورد نظر خود و اهداف تعیین شده دست پیدا کرد ، شروع به پاک کردن آثار جرم خود می کند و سعی می کند که فعالیت هایی را که انجام داده است از دید دیگران مخفی نگاه دارد . معمولا یک هکر حرفه ای بعد از اینکه حمله موفقیت آمیزی را ترتیب داد در سیستم هک شده ابزاهای خاص خود مانند روتکیت ها ( Root kit ) و Backdoor ها را برای دسترسی های بعدی ایجاد می کند .

    دوره آموزش جامع سکیوریتی پلاس Security Plus یکی از بهترین و کاملترین دوره های آموزش امنیت اطلاعات و امنیت شبکه در دنیا به حساب می آید. در پایان این دوره آموزشی شما آماده ورود به دنیای هک و امنیت اطلاعات می شوید و به خوبی بر روی مباحث تئوری و مفاهیم امنیتی مسلط خواهید شد. در واقع سکیوریتی پلاس نقطه ورود شما به دنیای امنیت سایبری و از پیشنیازهای دوره های آموزشی هک و نفوذ می باشد.داشتن دانش لازم در حد دوره آموزش نتورک پلاس برای ورود به دوره سکیوریتی پلاس الزامی است

بازدید : 7
چهارشنبه 1 شهريور 1402 زمان : 15:24

کامپیوترها در شبکه با استفاده از دو نوع آدرس شناسایی می شوند که به یکی از آنها آدرس IP و به دیگری آدرس MAC می گویند. MAC مخفف کلمه Media Access Control و IP مخفف کلمه Internet Protocol است و هر دو مکانیزمی برای شناسایی کامپیوترها در شبکه هستند. هر دوی این مکانیزمهای آدرس دهی به این منظور استفاده می شوند تا مطمئن شویم که بسته های اطلاعاتی ما از مبدا به مقصد می رسند و در این میان هویت مبدا و مقصد توسط این مکانیزم های آدرس دهی تعیین می شود.

امروز در انجمن تخصصی فناوری اطلاعات ایران می خواهیم در خصوص این بحث کنیم که چرا ما از هر دو نوع آدرس استفاده می کنیم و این دو نوع آدرس با هم چه تفاوت هایی دارند ، یک آدرس IP معمولا توسط مدیر شبکه یا سرویس دهنده اینترنتی شما ( ISP ) به شما ارائه داده می شود و ممکن است هم بصورت دستی و هم بصورت خودکار و هر بار که به اینترنت متصل می شوید به کامپیوتر شما اختصاص داده شود. بنابراین آدرس IP یک آدرس ثابت و همیشگی نیست و ممکن است حتی در طی یک روز بارها آدرس IP شما عوض شود.

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

آدرس IP برای شناسایی شبکه ای که کامپیوتر در آن قرار گرفته است استفاده می شود و می توان از روی آدرس IP موقعیت حدودی محل قرار گیری کامپیوتر را پیدا کرد. آدرس های IP از طریق سازمان به نام IANA برای هر کشور و هر منطقه جغرافیایی بصورت جداگانه تعریف شده اند و از این طریق شما می توانید محدوده جغرافیایی آدرس IP را به سادگی پیدا کنید که برای کدام کشور و چه بسا برای کدام شهر است. اما این امکان برای ادرس MAC وجود ندارد و در واقع درون این آدرس MAC چیزی برای شناسایی محل جغرافیایی تعریف نشده است و شما نمی توانید محل قرار گیری یک کارت شبکه با آدرس MAC را پیدا کنید ، به همین دلیل می توانیم آدرس MAC را به نوعی اسم یک کارت شبکه در نظر بگیریم تا آدرس آن ، بصورت کلی فراموش نکنید که زمانیکه صحبت از شبکه های LAN و ساختار Switching می شود شما آدرس دهی MAC را استفاده می کنید و زمانیکه صحبت از مسیریابی بین شبکه ها و استفاده از مسیریاب ها و روترها می شود ما از آدرس IP استفاده می کنیم.

یکی از مهمترین قابلیت هایی که آدرس های MAC در اختیار ما قرار می دهند امکان استفاده از مکانیزم امنیتی به نام MAC filtering در شبکه های داخلی است . شما می توانید با اسفاده از MAC Filtering و همچنین قابلیت Port Security بر روی سویچ ها و دستگاه های بیسیم شبکه فقط به آدرس های MAC خاصی امکان استفاده از شبکه و یا حتی اتصال به شبکه را بدهید. این مکانیزم هم می تواند در سطوح کوچک خانگی و هم در سطوح کلان سازمانی پیاده سازی شود و درجه امنیتی سازمان شما را بسیار بالا ببرد. توجه کنید که از آدرس MAC می توان به عنوان یک پیشنیاز برای دریافت آدرس IP هم نام برد. زمانیکه شما در شبکه می خواهید از سرویسی به نام DHCP استفاده کنید که آدرس دهی خودکار انجام می دهد ، ابتدا این سرویس آدرس MAC سیستم شما را دریافت می کند و بر اساس آن یک آدرس IP در اختیار کارت شبکه شما قرار می دهد.

دوره آموزش نتورک پلاس (Network+) بعد از گذراندن دوره آموزش شبکه نتورک پلاس ، شما قادر خواهید بود براحتی در آزمون دریافت گواهینامه بین المللی نتورک پلاس شرکت کنید. تمامی توضیحات مربوط به دوره آموزش نتورک پلاس در ادامه برای شما ارائه شده است. این دوره آموزشی مبانی شبکه های کامپیوتری پیشنیازی مهم برای شروع آموزش لینوکس و آموزش MCSA مایکروسافت است.

بازدید : 16
چهارشنبه 1 شهريور 1402 زمان : 15:33

تجهیزات شبکه متنوعی در شبکه وجود دارد که ما آنها را به عنوان انواع سخت افزار شبکه هم می شناسیم. انواع سخت افزارهای شبکه یا انواع تجهیزات شبکه ، هر دو کلمه تعریفی از وسایلی است که ما در شبکه های کامپیوتری برای ارتباط و اتصال کامپیوترها با هم استفاده می کنیم .اگر بخواهیم به زبان ساده انواع تجهیزات شبکه را دسته بندی کنیم ، تجهیزات شبکه را به دو دسته بندی تجهیزات شبکه اکتیو (Active) یا فعال و تجهیزات شبکه پسیو (Passive) یا غیرفعال طبقه بندی می کنیم.

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

تفاوت تجهیزات شبکه اکتیو و تجهیزات شبکه پسیو

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

کارت شبکه چیست؟ معرفی Network Interface Card یا NIC

کارت شبکه جزو تجهیزات شبکه فعال یا Active است. ما معرفی تجهیزات شبکه را از اولین قسمتی که کامپیوتر شما وارد دنیای شبکه می شود شروع می کنیم . کارت شبکه وسیله ای است که مثل هر کارت دیگری بر روی کامپیوتر ما نصب می شود و ما از طریق آن چه بصورت وایرلس یا بیسیم و چه با استفاده از کابل و سوکت شبکه ، به وسیله دیگری به نام سویچ ( یا اکسس پوینت شبکه ) متصل می شویم.

کارت های شبکه هم بصورت داخلی ( Internal ) هستند که بر روی مادربورد کامپیوتر شما نصب می شوند و هم بصورت خارجی یا External هستند و به وسیله پورت USB به کامپیوتر شما متصل می شوند. توجه کنید که در بحث شبکه های کامپیوتری کارت شبکه الزاما یک وسیله مجزا نیست و شما بر روی موبایل خود ، تبلت خود ، لپتاپ خود و هر وسیله ای که به شبکه اینترنت متصل می شود ، یک کارت شبکه دارید. نمونه از ای کارت شبکه های مختلف را در ادامه برای شما قرار می دهم :

سویچ شبکه چیست؟ معرفی Network Switch به زبان ساده

سویچ شبکه جزو تجهیزات شبکه فعال یا Active است. سویچ یک متمرکز کننده و ارتباط دهنده بین کامپیوترهاست. کارت های شبکه شما با استفاده از کابل و سوکت به پورت های سویچ متصل می شوند و می توانند با هم ارتباط برقرار کنند. سویچ ها انواع و اقسام متنوعی دارند و این روزها نه تنها در شبکه های شرکتی و سازمانی ، بلکه در خانه های شما نیز سویچ ها را می توانیم ببینیم .

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

سویچ ها بر اساس لایه های OSI در لایه های مختلف کار می کنند اما معمولترین نوع سویچ ها ، سویچ لایه دو است که با استفاده از آدرس MAC ارتباطات را برقرار می کند و سویچ لایه سه نیز از طریق آدرس IP اینکار را انجام می دهد.

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

بازدید : 12
سه شنبه 24 مرداد 1402 زمان : 22:59

فایروال شرکت سیسکو با نام Adaptive Security Appliance) ASA) تولید می شود که علاوه بر امکانات فایروال ، قابلیت های فراوانی را برای ما مهیا می سازد.فایروال ها وظیفه محافظت از شبکه داخلی را در برابر دسترسی غیر مجاز از بیرون شبکه دارند. علاوه بر این فایروال ها می توانند محافظت بخش های مختلف شبکه را نسبت به هم تامین کنند به طور مثال منابع شبکه را از کاربر شبکه جدا کنیم. همچنین فایروال امکان دسترسی به برخی از سرویس ها مانند وب که نیاز به ایجاد دسترسی برای کاربران خارج شبکه است را فراهم می کند.

به این صورت که سرورهای مربوطه را در یک شبکه جداگانه تحت عنوان Demilitarized Zone) DMZ) قرار می دهیم و توسط فایروال امکان دسترسی محدود از طریق محیط خارج از شبکه را به DMZ می دهیم. با اینکار یک محیط ایزوله ایجاد کرده ایم و در صورتی که حمله به این سرورها صورت گیرد فقط این سرورها تحت تاثیر قرار می گیرد و سرورهای داخلی از این حمله در امان هستند. علاوه بر این می توانید دسترسی کاربران به شبکه خارجی (مانند اینترنت) را نیز کنترل کنید مثلا به چه آدرس ها و سایت هایی دسترسی داشته باشند.

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

در دو Mode یا حالت Transparent و Routed کار می کند. در مقاله قبلی با عملکرد فایروال در حالت Transparent آشنا شدیم و در این مقاله می خواهیم مفاهیم ، نحوی عملکرد و ویژگی های Routed Mode را بررسی کنیم.

Routed Mode چیست؟

به صورت پیش فرض فایروال ASA در لایه سوم عمل می کند و بر پایه Packet و IP Address عمل می کند و کلیه عملیات بازرسی و انتقال ترافیک ، براساس پارامترهای لایه سوم انجام می گیرد هرچند که ASA می تواند در لایه های بالاتر نیز کنترل را انجام دهد. ASA با در نظر گرفتن IP Address برای اینترفیس ها ، خود را به عنوان یک روتر یا Gateway در شبکه ای که به آن متصل است معرفی کند. به این حالت Routed Mode گفته می شود.استفاده از این حالت نیاز به تغییرات در سیستم آدرس دهی IP دارد.در این حالت هر اینترفیس ASA باید به یک Subnet متصل و یک IP از آن Subnet به آن اینترفیس اختصاص داده شود در تصویر زیر حالت Routed Mode را می بینید که اینترفیس 0 به نام outside به شبکه 192.168.100.0/24 ، اینترفیس 1 به نام inside به شبکه 192.168.200.0/24 و اینترفیس 2 به نام DMZ به شبکه 192.168.1.1/24 متصل است.

پیاده سازی ASA در حالت Routed

زمانی که فایروال ASA را برای اولین بار در شبکه قرار می دهیم باید توپولوژی شبکه را نسبت به آن تغییر دهیم به این صورت که در هر سمت اینترفیس های ASA باید یک Subnet متفاوت داشته باشیم همانند یک روتر. به طور مثال ما یک شبکه با یک subnet داریم برای اینکه از ASA استفاده کنیم حداقل این شبکه را به دو Subnet باید تقسیم کنیم مثلا در یک سمت کلاینت ها و در سمت دیگر سرور ها را قرار می دهیم.

این تغییر توپولوژی با عث می شود که نصب ASA در حالت Routed را با مشکل مواجه کند چون نیاز به تغییرات در سیستم آدرس دهی شبکه دارد. ساده ترین حالت این است که IP کلاینت ها و دستگاه هایی که از اهمیت زیادی برخوردار نیست را تغییر ندهیم و آنها را به عنوان یک Subnet در نظر بگیریم و IP دستگاه هایی که نیاز به محافظت دارند را تغییر و در یک Subnet قرار دهیم زیرا معمولا تعداد این دستگاه ها کمتر است و IP دستگاه های کمتری را تغییر می دهیم.

حالت دیگر این است که می خواهیم فایروال را بین شبکه داخلی و اینترنت قرار دهیم. در این حالت تنها کافیست IP فعلی مودم (Gateway) را به ASA اختصاص دهیم و برای مودم یک IP در یک Subnet جدید در نظر بگیریم.علاوه بر اختصاص IP برای هر اینترفیس از یک Subnet باید یک نام و یک عدد تحت عنوان Security Level برای آن در نظر بگیریم این عدد که می تواند بین صفر تا صد باشد و مشخص کننده نحوی ارتباطات بین اینترفیس ها می باشد. به طور مثال یک اینترفیس Security Level صفر و دیگری Security Level صد دارد ترافیک از Security Level بالاتر اجازه ورود به Security Level پایین تر را دارد ولی برعکس آن امکان پذیر نیست مگر اینکه ما آنرا مجاز کنیم.

  • نکته : در صورتی که نام Inside را برای یک اینترفیس در نظر بگیرد به صورت پیش فرض مقدار Security Level برابر 100 خواهد شد و اگر نام Outside را برای آن در نظر بگیرید مقدار Security Level برابر 0 خواهد شد.
  • نکته : اگر دو اینترفیس دارای Security Level برابر باشند به صورت پیش فرض بین آنها ترافیک اجازه عبور ندارد.
  • نکته : به صورت پیش فرض ASA در حالت Routed کار می کند.
  • برای عمل Routing با توجه به اینکه در Routed Mode انتقال ترافیک براساس IP مقصد بسته ها صورت می گیرد می توان از Static Route یا Dynamic Route استفاده کرد.

    • نکته مهم : در حالت Routed Mode می توانیم از تمام امکانات فایروال استفاده کنیم

    برخی از قابلیت های ASA

    • Advanced Stateful Firewall
    • قابلیت استفاده از ماژول IPS) Intrusion Prevention System)
    • قابلیت استفاده از ماژول CSC) Content Security and Control)
    • Advanced inspection engines
    • transparent (Layer 2) firewall or routed (Layer 3) firewall
    • IPsec VPN
    • SSL VPN
    • clientless SSL VPN

بازدید : 28
جمعه 13 مرداد 1402 زمان : 2:27

ددر این پست با یکی از حملات لایه دوم ، تحت عنوان MAC Address Spoofing یا جعل MAC Address آشنا شده و روش مقابله با آن را یاد خواهیم گرفت. در این حمله مهاجم با تغییر MAC آدرس خود سعی می کند عملیات مورد نظرش را انجام دهد.به طور مثال به عکس زیر توجه کنید:

همانطور که در تصویر می بینید سوئیچ براساس جدول MAC خود می داند که از طریق پورت 1 خود به سرور متصل است. در این زمان مهاجم ، MAC آدرس خود را برابر سرور موجود در شبکه قرار می دهد و به سمت سوئیچ ترافیک ارسال می کند. سوئیچ با دریافت این ترافیک و بررسی MAC آدرس مبدا بسته ، فکر می کند که پورت متصل به سرور تغییر کرده در نتیجه جدول MAC خود را تغییر می دهد و از این پس ترافیکی که مقصد آن سرور است را روی پورت 2 ارسال می کند و این ترافیک تحویل مهاجم می شود و به این صورت مهاجم به اطلاعات ارسالی دیگر سیستم ها دسترسی پیدا می کند.جهت جلوگیری از این حمله می توانیم از Port Security استفاده کنیم.

.بدون شک دوره آموزشی Security+ یکی از بهترین و کاملترین دوره های آموزش امنیت اطلاعات و امنیت شبکه در دنیا به حساب می آید. در پایان این دوره آموزشی شما آماده ورود به دنیای هک و امنیت اطلاعات می شوید و به خوبی بر روی مباحث تئوری و مفاهیم امنیتی مسلط خواهید شد. در واقع سکیوریتی پلاس نقطه ورود شما به دنیای امنیت سایبری و از پیشنیازهای دوره های آموزشی هک و نفوذ می باشد.داشتن دانش لازم در حد دوره آموزش نتورک پلاس برای ورود به دوره سکیوریتی پلاس الزامی است

بازدید : 44
جمعه 13 مرداد 1402 زمان : 2:23

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

برنامه کامپیوتری چیست؟

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

برنامه‌های کامپیوتری که نرم‌افزار هم نامیده می‌شوند انواع مختلفی دارند که در سطوح مختلف کار با سخت‌افزار عمل می‌کنند مانند سیستم عامل ها که مسئول مدیریت سخت‌افزار هستند (مثل ویندوز و اندروید و iOS) و برنامه‌های کامپیوتری کاربردی که یکی از نیاز های کاربران را برطرف می کنند. مانند ماشین حساب و برنامه پیام رسان و مرورگر و …. شما هر روز برای کار های مختلف از برنامه‌های کامپیوتری در گوشی و تبلت و کامپیوتر خود برای هدف‌های مختلف استفاده می کنید.

برنامه نویسی چیست و برنامه نویس کیست؟

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

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

زبان جاوا چیست؟

اما زبان جاوا یا Java چیست؟ بعد از اینکه تا حدودی با کلمه برنامه و برنامه نویس آشنا شدیم حال سؤال اصلی این است که زبان برنامه نویسی جاوا چیست؟ برنامه نویس برای تولید نرم‌افزار نیازمند این است که دستورات را در قالب یک زبان به سخت‌افزار دیکته کند. حال این زبان باید به گونه‌ای باشد که به صورت دقیق منظور برنامه نویس را به سخت‌افزار اعلام کند. اینجاست که نیاز به زبان برنامه نویسی پیش می‌آید.

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

نوشتار جاوا مانند زبان C و C++ (سی پلاس پلاس) است با این تفاوت که زبان جاوا به صورت کامل شی گرا است و تمایزاتی نسبت به زبان‌های قبلی گفته شده دارد. از مزایای جاوا نسبت به سی و سی پلاس پلاس مدیریت حافظه و مکانیزم جمع آوری زباله (garbage collection) و حذف اشاره گرها می‌توان اشاره کرد.

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

تاریخچه جاوا چیست؟

در اوایل دهه 1990 میلادی در شرکت سان میکروسیستمز (Sun Micro-systems) یک تیم به رهبری شخصی به نام جیمز گاسلینگ بر روی پروژه ای کار می‌کردند که زبان برنامه نویسی را تولید کنند تا به کمک آن بتوانند برای دستگاه‌های الکترونیکی برنامه بنویسند. نام این پروژه Green بود.

نتیجه کار این تیم ساخته شدن یک زبان برنامه نویسی به نام Oak بود که طوری طراحی شده بود که وابسته به پلتفرم خاصی نباشد و برای سیستم‌های تعبیه شده (embedded system) مناسب باشد. در سال 1995 نام این زبان از Oak به java تغییر داده شد و عرضه عمومی شد و اولین نسخه‌ای بود که همه می توانستند از آن استفاده کنند.
زبان جاوا به دلیل امکاناتی مانند قابلیت حمل (portability) که با کمک آن کاربر می‌توانست یک برنامه بنویسد و در پلتفرم ها و دستگاه‌های مختلف اجرا کند بسیار محبوب شد. در طی سال‌ها شرکت سان قابلیت‌های بیشتری به جاوا اضافه کرد و آن را گسترش داد و نسخه های جدید تر و کامل‌تر این زبان را در اختیار برنامه نویسان قرار داد.
در سال 2009 شرکت اوراکل شرکت سان را خریداری کرد و از آن به بعد اوراکل جاوا را توسعه و نگهداری می‌کند و قابلیت‌های بسیاری را به آن اضافه کرده است. امروزه جاوا به یکی از محبوب‌ترین زبان‌های برناهم نویسی تبدیل شده است و به همین خاطر کتابخانه‌ها و فریمورک ها و ابزارهای بسیاری برای این زبان تولید شده است که می‌تواند در بسیاری از برنامه‌ها و پروژه های نرم افزاری استفاده شود.

علت محبوبیت جاوا چیست؟

جاوا قابلیت‌های بسیاری دارد که باعث شده است به این محبوبیت برسد اما چند تا از ویژگی‌های کلیدی این زبان عبارتند از:

۱. زبان جاوا یک زبان شی گراست

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

۲. زبان جاوا وابستگی به پلتفرم خاصی ندارد

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

۳.زبان جاوا مدیریت حافظه را بصورت خودکار انجام می دهد

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

4.زبان جاوا یک زبان بسیار پایدار است

جاوا نوع داده‌هایی را که برنامه نویس استفاده می‌کند را به صورت دقیق بررسی می‌کند که این کار باعث کاهش قابل توجهی از خطاهای برنامه نویسی می‌شود و همچنین قابلیت پردازش استثناء (exception handling) باعث می‌شود که بسیاری از خطاهای زمان اجرا را مدیریت کنیم و این دو مکانیزم باعث می‌شود که خطای برنامه‌ها تا حد زیاد گرفته شود و برنامه‌ها هنگام اجرا پایدار تر باشند.

5. زبان جاوا دارای امنیت بسیار خوبی است

جاوا یک مدل امنیتی دارد که اجازه نمی‌دهد که ویروس ها و برنامه‌های خرابکار خود را در داخل برنامه و کدهای اصلی جاسازی کنند. همچنین یک مکانیزم امنیتی دیگری به نام sandbox دارد که اجازه نمی‌دهد سیستم و برنامه‌های دیگر به منبع برنامه‌های جاوا دسترسی داشته باشند و آن‌ها را تغییر دهند.

مطالعه بیشتر در مورد 4 مفهوم اصلی امنیت جاوا

6.زبان جاوا یک زبان چند Thread ای است

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

7.زبان جاوا یک زبان Cross Platform است ( پرتابل )

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

ماشین مجازی جاوا (Jvm) چیست؟

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

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

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

بایت کد چیست؟

قبلاً گفتیم که برنامه‌هایی که به زبان جاوا نوشته می‌شوند به زبان ماشین تبدیل یا کامپایل نمی‌شوند. ولی برنامه نوشته شده به زبان جاوا به زبان(انگلیسی) انسان بسیار نزدیک است و قابل فهم برای کامپیوتر و jvm نیست. برای حل این مشکل کدهای جاوا به زبانی تبدیل می‌شوند که ماشین مجازی آن‌ها را می فهمد.

به کدهایی که توسط ماشین مجازی جاوا (jvm) قابل فهم است بایت کد گفته می‌شود. به طور کلی برنامه‌های جاوا برای اجرا به بایت کد ها تبدیل (کامپایل) می‌شوند که نتیجه این عمل ساخته شدن فایل‌هایی با پسوند .class است و این فایل‌های با پسوند class حاوی بایت کدهای جاوا هستند. ماشین مجازی جاوا هم بایت کد ها را خط به خط خوانده و به زبان ماشین تفسیر می کند. هنگامی که کدهای زبان جاوا به بایت کد تبدیل می‌شوند بهینه سازی هایی در دستورات نوشته شده انجام می‌شود که سرعت و کارایی کد ها بالا تر برود.

تفاوت جاوا با جاوا اسکریپت چیست؟

از نظر اسمی جاوا و جاوا اسکریپت بسیار شبیه به هم هستند ولی باید بدانید که این دو زبان کاملاً با هم تفاوت دارند. جاوا اسکریپت در دهه 90 میلادی توسط شرکت Netscape توسعه داده شد و در ابتدا نام LiveScript را بر روی آن قرار داده بودند. زمانی که شرکت نت اسکیپ متوجه شد که کسی از زبان LiveScript استفاده نمی‌کند ولی محبوبیت زبان جاوا هر روز بیشتر می‌شود نام آن را به JavaScript تغییر داد تا بتواند از موج محبوبیت جاوا برای زبان خودش نفعی برده باشد و موفق هم شد.

از نظر فنی جاوا یک زبان برنامه نویسی قدرتمند است که بر روی jvm اجرا می‌شود ولی جاوا اسکریپت یک زبان اسکریپت نویسی است که بر روی مرورگرها اجرا می‌شود و بیشتر برای کار با front-end(بخش مربوط به مرورگر و تعامل با کاربر) مناسب می‌باشد.

البته می‌توان با استفاده از موتور هایی مانند nodejs برای سیستم هم با زبان جاوا اسکریپت برنامه ساخت. از نظر نوع زبان جاوا اسکریپت یک زبان مفسری (کامپایل نمی شود) است و گرامر آن با جاوا کاملاً متفاوت است. تنها شباهتی که بین جاوا و جاوا اسکریپت وجود دارد این است که کدهای هر دو شبیه به کدهای زبان سی هستند و دستورات از زبان سی گرفته شده اند. ولی هم از نظر فنی و هم از نظر کاربردی با هم کاملاً متفاوت هستند.

مطالعه بیشتر در مورد تفاوت جاوا و جاوااسکریپت

شی گرایی در جاوا چیست؟

وقتی می‌گوییم جاوا یک زبان شی گرا است یعنی برای نوشتن برنامه باید از قواعد برنامه نویسی شی گرا در برنامه‌های جاوا استفاده کنید. جاوا یک زبان کاملاً شی گرا است یعنی به شما اجازه نمی‌دهد که به غیر از رویکرد شی گرایی رویکرد دیگری داشته باشید. حال شی گرایی چیست؟ شی گرایی یا Object-Oriented Programming (OOP) یک الگوی برنامه‌نویسی است که برای توسعه نرم‌افزارهای پیچیده و قابل توسعه استفاده می‌شود.

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

زبان جاوا در کجا کاربرد دارد؟

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

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

توسعه وب : جاوا به عنوان یک زبان برنامه‌نویسی سمت سرور برای توسعه برنامه‌های وب مورد استفاده قرار می‌گیرد. ساختارهایی مانند Servlets، JSP و JSF برای توسعه برنامه‌های وب با استفاده از جاوا استفاده می‌شوند.

توسعه بازی : جاوا به عنوان یکی از زبان‌های پرکاربرد در توسعه بازی‌های کامپیوتری استفاده می‌شود. بازی‌های بسیاری مانند Minecraft، Runescape و Game of Thrones: Conquest با استفاده از جاوا توسعه داده شده‌اند.

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

  1. راهکارهای صنعتی و embedded system ها : با توجه به امکانات قابلیت حمل و مدیریت حافظه جاوا از آن در سیستم‌های اینترنت اشیاء(IOT) و سیستم‌های embedded نیز استفاده می‌شود مانند مودم ها و ماشین لباسشویی و کنترل ترافیک و ابزارهای شبکه و …

ابزارهای تولید برنامه با جاوا چیست؟

برای تولید برنامه با جاوا نیاز است که در درجه اول jvm بر روی دستگاه نصب باشد و علاوه بر آن نیاز به کامپایلر جاوا هم می‌باشد که کدهای نوشته شده را به بایت کد کامپایل کند. همچنین کتابخانه‌های اصلی جاوا نیز لازم است تا بتوان از آن‌کتابخانه ها که از قبل آماده شده‌اند بسیاری ازمشکلات برنامه را حل کرد. همه این ابزارها در یک بسته به نام Java Development Kit (jdk) به معنی کیت توسعه جاوا قرار داده شده است که می‌توانید از اینترنت به صورت یک‌جا دانلود و نصب کنید.


از دیگر ابزار های لازم برای توسعه جاوا یک محیط کد نویسی است که به دو بخش تقسیم می‌شود: ویرایشگر و IDE. برای توسعه جاوا می‌توان از ویرایشگر های ساده مانند notepad ویندوز استفاده کرد و با استفاده از jdk آن را کامپایل و اجرا کرد. به غیر از notepad ویندوز می‌توان از هر ویرایشگر متنی دیگر هم استفاده کرد مانند Atom , Visual Studio code , bracket , ….
ولی مسأله ای که وجود دارد این است که این‌ها فقط یک ویرایشگر ساده هستند (البته فرض می‌کنیم از حالت خام ویرایشگر استفاده می کنیم) و کمک زیادی در نوشتن و خطایابی و اجرای کد به ما نمی کنند. فرایند برنامه نویسی فرایندی زمان بر و حساس است و اگر ماشین نتواند کمک کند بسیار سخت خواهد شد.

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

1. Eclipse یکی از محبوب‌ترین ابزارهای توسعه جاوا که قابلیت‌های متنوعی مانند کدنویسی، اشکال‌زدایی و تجزیه و تحلیل کد را ارائه می‌دهد.

2. NetBeans یک ابزار توسعه کامل برای توسعه برنامه‌های جاوا است. این ابزار از زبان‌های دیگری مانند C، C ++ و HTML / CSS نیز پشتیبانی می‌کند.

3. IntelliJ IDEA ابزاری کارآمد برای توسعه برنامه‌های جاوا است که قابلیت‌هایی مانند اشکال‌زدایی، تحلیل کد و کدنویسی پیشرفته را فراهم می‌کند. من به طور شخصی از این IDE استفاده می کنم.

علاوه بر IDE ها نیاز به ابزاری برای تست برنامه نوشته شده داریم تا ببینیم برنامه نوشته شده کیفیت و کارایی لازم را دارد که برای این کار Junit ابزار بسیار مفیدی خواهد بود. در پروژه های امروزی به دلیل وجود کتابخانه‌های آماده زیاد در پروژه این نیاز حس می‌شود که ابزاری وجود داشته باشد که کتابخانه‌های آماده‌ای را که در پروژه استفاده شده است را مدیریت کند که از بین آن‌ها می‌توان به maven, gradle اشاره کرد.

تفاوت jdk, jre در جاوا چیست؟

Jdk را در بخش ابزار ها توضیح دادیم و گفتیم که بسته ای است که شامل ماشین مجازی جاوا و کتابخانه‌های آماده همراه جاوا و کامپایلر جاوا (javac) و به طور کلی مواردی است که برای برنامه نویسی جاوا لازم است. اما jre شامل کتابخانه‌ها و برنامه‌هایی است که فقط در زمان اجرای برنامه‌های جاوا لازم است یعنی ماشین مجازی جاوا و یک سری موارد که هنگام اجرای برنامه‌های جاوا مورد نیاز هستند. پس jre نسبت به jdk بسته کوچک‌تری است که فقط برای اجرا شدن برنامه آماده جاوا استفاده می‌شود ولی jdk شامل موارد بیشتری است که برای برنامه نویسی زبان جاوا استفاده می شود.

مطالعه بیشتر برای نصب jdk

تا کنون چه ویرایش هایی از جاوا منتشر شده است؟

تا کنون ۳ ویرایش از جاوا منتشر شده است که هرکدام برای منظور خاصی ارائه شده‌اند که این ویرایش ها عبارتند از J2SE , J2EE, J2ME که هرکدام را به صورت خلاصه توضیح داده ایم.

J2SE (Java 2 Standard Edition): این ویرایش از جاوا برای تولید برنامه‌های تحت دسکتاپ و برنامه‌های سروری مورد استفاده قرار می گرفت. این ویرایش شامل کتابخانه‌های اصلی جاوا (Core) و ابزارها و ابزارهای اجرایی آن‌ها می‌باشد. اگر می‌خواهید برنامه دسکتاپ به همراه رابط کاربری (UI) و یا برنامه سروری بنویسید این ویرایش مناسب شما است.

J2EE (Java 2 Enterprise Edition): این ویرایش برای تولید برنامه‌های تجاری مناسب است. در این ویرایش همه امکانات J2SE قرار دارد به علاوه اینکه امکاناتی برای تولید برنامه‌های تحت وب و برنامه‌های توزیع شده و سایر برنامه‌های با اندازه های بزرگ در آن گنجانده شده است. J2EE به شما این امکان را می‌دهد که بتوانید برنامه‌های بسیار بزرگ با امنیت بالا و کارایی بالا تولید کنید.

J2ME (Java 2 Micro Edition) : این ویرایش زمانی مورد استفاده قرار می‌گرفت که گوشی های موبایل نسل قبل از گوشی های هوشمند وجود داشت و شما برنامه‌هایی با پسوند jar بر روی گوشی خود نصب می‌کردید. این ویرایش یک زیرمجموعه از J2SE بود که برخی کتابخانه‌های جاوا را همراه خود داشت و در دستگاه‌هایی که دارای محدودیت منابع سخت افزاری بودند استفاده می‌شد.


ویرایش هایی که گفته شد در حال حاضر به شکل گفته شده وجود ندارند و با نسخه های جدید جاوا جایگزین شده‌اند و نام J2EE به Java EE تغییر داده شده است و در حال حاضر J2SE به نام Core Java شناخته می‌شود.

امکانات جاوا برای برنامه دسکتاپ چیست؟

می‌دهند مانند ویرایشگر Microsoft word. حال با استفاده از جاوا می‌توانیم برنامه‌های دسکتاپی تولید کنیم که هم بر روی ویندوز و هم بر روی مک و هم بر روی لینوکس اجرا شوند. برنامه‌های دسکتاپ نیازمند طراحی رابط کاربری یا UI هستند. که در جاوا کتابخانه‌ها و فریمورک های مختلفی برای تولید رابط کاربری وجود دارد که محبوب‌ترین آن‌ها : JavaFX, Swing, SWT, AWT, Jgoodies, می‌باشد.

فریمورک های جاوا برای وب چیست؟

قبل از اینکه بگوییم فریمورک های وب جاوا چیست بهتر است بدانیم که فریمورک چیست؟ فریمورک (framework) یا چهارچوب کاری مجموعه‌ای از ابزارها و کتابخانه‌ها وقالب های برنامه است که امکان تولید برنامه را به ما می دهد. فریمورک های وب ساختاری را در اختیار ما قرار می‌دهد که تا اپلیکیشن هایی را برای وب بسازیم بدون اینکه درگیر کارهای تکراری و عمومی بشویم.
امروزه استفاده از وب بسیار بیشتر از گذشته شده است و زبان‌های برنامه نویسی برای اینکه از بقیه عقب نباشند فریمورک هایی برای تولید برنامه‌های تحت وب ارائه کرده‌اند که جاوا نیز از قافله عقب نمانده و فریمورک های قدرتمندی را برای طراحی و توسعه وب اپلیکیشن های ارائه داده است که تعداد آن‌ها بسیار زیاد است ولی از بین آن‌ها معروف ترین آن‌ها عبارتند از: Spring, Struts, Java Server Faces (JSF) , Play, Vaadin

مطالعه بیشتر در مورد spring

مطالعه بیشتر در مورد spring boot

فریمورک های جاوا برای موبایل چیست؟

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

از بین فریمورک هایی که از جاوا برای طراحی برنامه‌های موبایل استفاده می‌شود می‌توان بهAndroid SDK اشاره کرد که اصلی‌ترین بسته برای تولید برنامه‌های اندرویدی است اشاره کرد تا بتوان برنامه‌های قدرتمند اندرویدی را با آن تولید کرد. همچنین JavaFX Mobile که با استفاده از امکانات JavaFX می‌توان برنامه‌های مختلفی برای موبایل ساخت. همچنین فریمورک هایی وجود دارد که منطق برنامه نویس را در قالب کدهای javascript, html , css پیاده‌سازی می‌کنند ولی در پس زمینه از زبان جاوا استفاده می‌کنند مانند React Native, PhoneGap, Ionic

برنامه نویسی بازی در جاوا چگونه است؟

با استفاده از جاوا به روش‌های مختلفی می‌توان بازی‌های جذاب طراحی کرد. شما می‌توانید از قابلیت‌های انیمیشن و صدا و گرافیک های دو بعدی و سه بعدی در کتابخانه‌های UI استفاده کنید و بازی بسازید و یا از جاوا در موتورهای بازی مانند Unity استفاده کنید و بازی‌های با گرافیک بالا طراحی کنید و یا از فریمورک های طراحی بازی جاوا استفاده کنید. تعدادی از این فریمورک ها عبارتند از: LibGDX و jMonkeyEngine و PlayN و LWJGL.

برنامه نویسی هوش مصنوعی در جاوا چیست؟

برای اینکه بتوانیم برنامه‌هایی با قابلیت‌های هوش مصنوعی با جاوا نوشت اول باید با مفاهیم هوش مصنوعی آشنا باشیم و به نوعی با مدل ها و قواعد هوش مصنوعی و شاخه‌های متعدد آن‌ها آشنا باشیم. از شاخه‌های هوش مصنوعی می‌توان به یادگیری ماشین و یادگیری عمیق و پردازش زبان طبیعی و بینایی ماشین اشاره کرد. بعد از اینکه با مفاهیم هوش مصنوعی آشنا شدید می‌توانید از فریمورک های جاوا برای توسعه برنامه‌های هوش مصنوعی استفاده کنید. تعدادی از این فریمورک ها عبارتند از: TensorFlowو Keras و Deeplearning4j و Mahout و Java-ML

منظور از برنامه نویسی Big Data در جاوا چیست؟

با توجه به حجم زیاد داده‌ها که امروزه در صنایع مختلف نیاز به ساز و کاری برای پردازش داده‌ها با حجم بسیار زیاد است. برای پردازش و ذخیره سازی و آنالیز داده‌های حجیم در جاوا فریمورک های متنوعی وجود دارد که عبارتند از: Apache Hadoop و Apache Spark و Apache Flink و Apache Storm و Apache Cassandra و Apache Kafka

آیا یادگیری بانک های اطلاعاتی در کنار برنامه نویسی جاوا لازم است؟

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

بنابراین بانک های اطلاعاتی را به صورت حیاتی لازم دارند. اگر می‌خواهید یک برنامه نویس قوی جاوا باشید باید حتماً کار کردن و ارتباط با بانک های اطلاعاتی را یاد بگیرید. امروزه بانک های اطلاعاتی مختلفی وجود دارند که در هر پروژه ممکن است از یک یا چند عدد از این بانک های اطلاعاتی استفاده شود. در جاوا می‌توان از انواع بانک های اطلاعاتی رابطه‌ای و غیر رابطه‌ای استفاده کرد. از جمله این بانک های اطلاعاتی می‌توان به MySQL , Oracle, Sql Server, Postgres, Mongodb اشاره کرد.

بازار کار و حقوق برنامه نویسی جاوا چگونه است؟

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

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

آیا یادگیری جاوا برای مهاجرت مناسب است؟

زبان جاوا هنوز به صورت گسترده در بسیاری از کشورهای دنیا استفاده می‌شود و در بسیاری از صنایع از جمله صنایع بانکی و مالی و در اپلیکیشن های زیادی مورد استفاده قرار می گیرد. اگر به آگهی های استخدام در سایت‌های مانند LinkedIn سر بزنید تعداد زیادی از آگهی های برنامه نویس جاوا را خواهید یافت. پس می‌توانید با یادگیری جاوا شرایط را برای مهاجرت ساده‌تر کنید. از شرکت های بزرگی که از جاوا استفاده می‌کنند عبارتند از: Amazon و eBay و LinkedIn و Uber و Airbnb و Twitter و Netflix و Google و Spotify و Dropbox

آیا با وجود زبان‌های مانند کاتلین باز هم از جاوا استفاده می شود؟

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

آیا جاوا زبان خوبی برای شروع یادگیری برنامه نویسی است؟

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

مطالعه بیشتر : 15 نکته در مورد یادگیری جاوا

پیش نیاز یادگیری جاوا چیست؟

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

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

چگونه یادگیری جاوا را شروع کنم؟

حال که با زبان جاوا آشنا شده‌اید و اگر تصمیم دارید که جاوا را یاد بگیرید سؤال پیش می‌آید که از کجا باید شروع کرد. برای شروع جاوا ابتدا باید یک سیستم کامپیوتری داشته باشید (رومیزی یا لپتاپ) و از منابع و آموزش‌های موجود یکی را انتخاب کنید و ابزارهای مورد نیاز را که توضیح دادیم نصب کنید و یادگیری را شروع کنید.

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

یادگیری جاوا چقدر زمان می خواهد؟

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

بازدید : 40
جمعه 13 مرداد 1402 زمان : 2:22

فرگمنت امکان بسیار جالبی برای استفاده ازکد و رابط کاربری به صورت چندباره در اندروید است. فرایند افزودن و یا حذف کردن یک فرگمنت از یک activity در قالب یک تراکنش انجام می‌شود که درانتهای تراکنش باید تراکنش را commit کنیم. در اندروید ۷ به بعد متدهای مختلفی برای commit کردن معرفی شده است که در این مطلب هر کدام را توضیح می‌دهیم و تفاوت آن را با دیگری بررسی می کنیم.

- Commit

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

2- CommitAllowingStateLoss

این متد همان کار متد commit را انجام می‌دهد با این تفاوت که زمان در فراخوانی این متد مؤثر است. اگر شما با فرگمنت ها سروکار دارید ممکن است که بعضی اوقات به خطای زیر برخورد کرده باشید.

این اتفاق زمانی می‌افتد که شما دستور commit را بعد از ذخیره کردن state مربوط به فرگمنت صدا کرده باشید. این خطا اعلام می‌کند که چون state مربوط به فرگمنت ذخیره شده است عمل commit امکان‌پذیر نیست. حال برای حل این مشکل می‌توانید از متدCommitAllowingStateLoss استفاده کنید. البته این کار ممکن است مشکلاتی را به دنبال داشته باشد. فرایند commit کردن به این شکل است که وقتی که شما متد commit را فراخوانی می‌کنید FragmentManager بررسی می‌کند که آیا state ذخیره شده است یا خیر. اگر ذخیره شده بود خطا می‌دهد. حال اگر متد CommitAllowingStateLoss صدا بزنیم دیگر بررسی ذخیره شدن state انجام نمی‌شود.

یک مثال برای درک مطلب

  1. اکتیویتی شما در حال حاضر فرگمنت A را نمایش می‌دهد.
  2. شما اکتیویتی را به پس زمینه می‌فرستید (یا برنامه دیگری اجرا می‌کنید و یا اتفاقی می‌افتد که onStop برای اکتیویتی شما اجرا می شود).
  3. رویدادی رخ می‌دهد و در پاسخ به رویداد مورد نظر برنامه شما فرگمنت A را با فرگمنت B جایگزین می‌کند و متد CommitAllowingStateLoss را صدا می زند.

در این حالت ممکن است که دو حالت پیش بیاید.

  • اگر سیستم حافظه(RAM) کافی برای برنامه شما نداشته باشد برنامه شما را از حافظه بیرون می‌برد تا یک برنام دیگری حافظه مورد نیازش را به دست بیاورد. حال در این صورت اگر به برنامه خودتان برگردید به خاطر اینکه کامیت بعد از ذخیره حالت برنامه اتفاق افتاده بود فرگمنت B نمایش داده نمی‌شود.
  • سیستم برنامه شما را خارج از حافظه نبرده است پس وقتی به برنامه برگردید خواهید دید که فرگمنت B نمایش داده می‌شود.

پس دیدیم که تفاوت این دو متد در زمان فراخوانی است. اگر فراخوانی متد commit بعد از فراخوانی onSaveInstanceState مربوط به اکتیویتی باشد خطا می‌دهد. ولی در همین حالت به جای فراخوانی commit متد CommitAllowingStateLoss را صدا بزنیم خطا نمی‌دهد ولی ممکن است که تغییرات مورد نظر اتفاق نیفتاده باشد. همچنین اگر شما در گوشی خود در بخش تنظیمات گزینه Dont Keep Activities را( که در بخش developer options است و به صورت پیش‌فرض غیر فعال است) فعال کرده باشید حالت اول پیش می‌آید. دقت داشته باشید که استفاده از هر دو متد با توجه به محل استفاده ممکن است مفید باشد ولی باید دقت کنیم که به صورت نادرست استفاده نکنیم.

3- CommitNow

شما وقتی که تغییرات یک فرگمنت را commit می‌کنید در همان لحظه و به سرعت ممکن است تغییرات شما انجام نشود. این مسأله به thread اصلی برنامه مربوط می‌شود. وقتی عمل commit انجام می‌شود. دستورات لازم برای thread اصلی برنامه در قالب یک صف اجرا ارسال می‌شود. حال هر بار thread اصلی هر وقت که بیکار شد دستورات را از صف برداشته و اجرا می‌کند. حال اگر به جای commit از commitNow استفاده شود عمل کامیت کردن فرگمنت بلافاصله و به صورت realtime انجام می‌شود. مشکلی که متد commitNow دارد این است که نمی‌توان با آن از backstack استفاده کرد. دلیل آن هم این است که کامیت هایی که در صف اجرا هستند ممکن است هنوز در پشته backstack درج نشده باشند و در صورت اجرای commitNow و اعمال آن بر روی پشته یک ناسازگاری در ترتیب درج در پشته صورت بگیرد. به همین خاطر نباید از backstack با این متد استفاده نمود. برای اینکه یک یا چند کامیت را در یک زمان مشخص به برنامه اعمال کنیم می‌توانیم از متد executePendingTransactions استفاده کنیم این باعث می‌شود که برنامه همه کامیت هایی را که در صف هستند را اجرا کند. در این صورت می‌توان بدون مشکل از پشته backstack نیز استفاده کرد.

این دوره آموزش برنامه نویسی اندروید | Android Programming در دو سطح آموزش برنامه نویسی اندروید | Android مقدماتی و آموزش برنامه نویسی اندروید | Android پیشرفته ارائه شده است. شما تا ویدیوی آموزشی شماره 39 در واقع دوره آموزش Android Programming مقدماتی را آموزش می بینید و در ادامه از ویدیوی شماره 40 تا ویدیوی آموزشی شماره 66 دوره آموزش برنامه نویسی اندروید پیشرفته یا Advanced Android Programming را آموزش خواهید دید. شما بدون داشتن دانش خاصی می توانید این دوره آموزش برنامه نویسی موبایل در سیستم عامل اندروید را یاد بگیرید.

بدون شک برای یادگیری زبان برنامه نویسی جاوا و آموزش برنامه نویسی Java ، این دوره آموزشی شما را از هر نوع آموزش دیگری در خصوص یادگیری زبان Java بی نیاز می کند. بیش از 100 دانشجو با استفاده از یادگیری این دوره آموزش جاوا وارد بازار کار برنامه نویسی شده اند و تبدیل به یک برنامه نویس حرفه ای جاوا شده اند.

تعداد صفحات : 12

درباره ما
موضوعات
لینک دوستان
آمار سایت
  • کل مطالب : 129
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • بازدید امروز : 47
  • بازدید کننده امروز : 1
  • باردید دیروز : 1
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 58
  • بازدید ماه : 71
  • بازدید سال : 730
  • بازدید کلی : 2184
  • <
    پیوندهای روزانه
    آرشیو
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    کدهای اختصاصی