استارت‌آپ و کارآفرینی

آموزش قدم به قدم جاوا – قسمت اول

به نام خدا

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

معرفی

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

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

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

java1

۱- شما به عنوان برنامه‌نویس کدهای خود را درون فایلی با پسوند .java می‌نویسید.

۲- وقتی که می‌خواهید برنامه خود را اجرا کنید کدهای شما توسط کامپایلر جاوا به bytecode تبدیل می‌شوند و درون فایلی با همان نام قبلی اما این بار با پسوند .class ذخیره می‌شوند.

۳- ماشین مجازی جاوا (Java Virtual Machine) فایل .class را که همان برنامه شماست و به bytecode تبدیل شده را اجرا می‌کند.

ماشین مجازی جاوا یا JVM بر روی تمام سیستم‌عامل‌های مطرح (ویندوز، مکینتاش و لینوکس) قابل نصب است. به همین دلیل فایل .class برنامه شما در تمام این سیستم عامل‌ها می‌تواند اجرا شود و به همین دلیل است که به جاوا زبان مستقل از سیستم عامل گفته می‌شود. شعار جاوا این است: «یک بار بنویس، همه جا اجرا کن!»

نصب ابزارهای لازم

برای برنامه‌نویسی به زبان جاوا باید JDK یا Java Development Kit را نصب کنید. این بسته نرم‌افزاری شامل قسمت‌های زیادی است اما مهمترین قسمت آن کامپایلر جاواست که کدهای نوشته شده به زبان جاوا را کامپایل و تبدیل به bytecode می‌کند.

بسته نرم‌افزاری دیگری به نام JRE یا Java Runtime Environment هم وجود دارد که برای اجرای برنامه‌های جاوا به کار می‌رود. ماشین مجازی جاوا یا همان JVM یکی از اجزای این بسته است.

توجه: با نصب JDK دیگر نیازی به نصب JRE وجود ندارد و JDK خود شامل ابزارهای JRE می‌باشد. البته وقتی JDK را دانلود و نصب کنید، بعد از اتمام نصب به شما می‌گوید که می‌توانید JRE را هم نصب کنید. با وجود JDK نصب JRE اختیاری است.

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

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

بعد از نصب JDK باید یک محیط برنامه‌نویسی (IDE) برای نوشتن برنامه‌های خود انتخاب کنیم. البته می‌توان کدهای جاوا را در «نوت پد» هم نوشت. اما ما از همین ابتدا خود را به استفاده از IDEهای مدرن موجود عادت می‌دهیم.

IDEهای زیادی برای جاوا وجود دارد که معروف‌ترین آن ها Eclipse و NetBeans و IntelliJ هستند. من در این آموزش‌ها از ایکلیپس استفاده خواهم کرد. برای دانلود ایکلیپس به این لینک مراجعه کنید و Eclipse IDE For Java Developers را با توجه به نوع سیستم‌عامل خود دانلود کنید:

بعد از دانلود محتویات فایل زیپ را در مکان دلخواه Extract کنید و برنامه را اجرا کنید. (نیاز به نصب ندارد)

نوشتن اولین برنامه

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

java2

در این پنجره از شما خواسته شده تا مسیر فضای کاری خود را مشخص کنید. فضای کاری محلی است که پروژه‌هایی که در ایکلیپس ایجاد می‌کنید در آنجا ذخیره می‌شود. من پوشه‌ای در دسکتاپ خود با نام Java Learning انتخاب کردم. همچنین برای اینکه در اجراهای بعدی این پنجره نمایش داده نشود و به صورت پیش‌فرض از مسیری که ابتدا به آن دادید استفاده کند تیکی که در تصویر مشخص شده را فعال کنید و روی دکمه Ok کلیک کنید.

حالا برنامه باز خواهد شد. از منوی File گزینه New Project را انتخاب کنید تا پنجره زیر باز شود:

java3

حالا یک نام برای پروژه خود انتخاب کنید. همانطور که در تصویر می بینید من نام JavaLearning را انتخاب کردم سپس روی دکمه Finish کلیک کنید تا پروژه ایجاد شود.

حالا در سمت چپ صفحه Package Explorer را مشاهده می‌کنید که این پنجره فایل‌های پروژه شما را نشان می‌دهد و می‌توانید آن‌ها را مدیریت کنید. همانطور که در تصویر مشخص است روی پوشه src راست کلیک کنید و از منوی New گزینه Class را مشخص کنید تا پنجره New Java Class باز شود:

java4

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

تیکی که در تصویر مشخص شده را فعال کنید. (در ادامه متوجه می‌شوید که چرا این کار را انجام دادید.) و روی دکمه Finish کلیک کنید.

حالا کدی که ایکلیپس برای شما ایجاد کرده را می‌بینید (البته ایکلیپس یک خط اضافی هم درون این کد قرار داده بود که آن را پاک کردم. شما هم همین کار را انجام دهید تا کد زیر را داشته باشید.):

java5

احتمالا الان این سوال برای شما پیش آمده که معنی کلمات public و static و void و … چیست. ما فعلا با این ها کاری نداریم اما چیزی که مشخص است class Main یعنی کلاسی با نام Main در این فایل تعریف شده است. اگر دقت کنید می‌بینید که نام فایل همان نام کلاس است با پسوند .java و محتویات کلاس Main بین دو آکولاد باز و بسته قرار می‌گیرند:

public class Main {
	محتویات کلاس
}

نکته مورد توجه دیگر این قطعه کد است:

public static void main(String[] args) {

}

به این قطعه کد “متد main” گفته می‌شود. همانطور که گفتیم برنامه‌های جاوا حداقل از یک کلاس تشکیل می‌شوند. حالا به طور مثال اگر ۳ کلاس داشته باشیم JVM از کجا می‌فهمد که نقطه شروع برنامه کجاست؟ متد main همان نقطه شروع برنامه است که توسط JVM فراخوانی می‌شود (با مفهوم متد بعدا آشنا خواهید شد) توجه داشته باشید که این متد حتما باید در تمام برنامه‌هایی که می‌نویسید وجود داشته باشد و باید دقیقا به همین شکل نوشته شود. (ایکلیپس این کد را به صورت خودکار برای ما تولید کرد.)

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

public static void main(String[] args) {
	کدهای ما
}

حالا برای اولین برنامه، طبق یک سنت در برنامه‌نویسی می‌خواهیم عبارت Hello World! را روی صفحه چاپ کنیم. دستور چاپ در جاوا به صورت زیر است:

System.out.println("عبارت مورد نظر");

همانطور که می‌بینید عبارتی که می‌خواهیم چاپ کنیم را باید داخل پرانتز بین دو علامت ” قرار دهیم. به این علامت دبل کوتیشن (Double Quotation) گفته می‌شود.

با مفهوم عبارت System.out.println در فصل‌های پایانی آشنا خواهید شد. فعلا در همین اندازه به خاطر داشته باشید که از این به بعد برای چاپ هر عبارت از این دستور استفاده خواهیم کرد.

در آخر دستور علامت ; آورده شده است که سمی کالن (semi-colon) نام دارد. این علامت باید در انتهای دستورات جاوا قرار بگیرد. به این شکل کامپایلر متوجه می‌شود که کد دستور تمام شده و کدی که بعد از آن می آید دستور بعدی است.

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

system.out.println("Hello World!");

چون حرف اول کلمه System با حروف کوچک نوشته شده است.

بنابر مطالبی که گفته شد برای چاپ عبارت Hello World! باید به صورت زیر عمل کنیم:

java6

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

java7

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

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

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

java8

در این تصویر می‌توانید فاصله های اضافی را ببینید. متد main درون کلاس Main قرار دارد و نسبت به خط آن یک فاصله دارد (این فاصله برابر با یک بار فشردن کلید Tab می باشد.)

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

به این فاصله گذاری ها Indentation گفته می‌شود.

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

در قسمت بعدی به معرفی متغیرها و انواع داده می‌پردازیم.

آموزش قدم به قدم جاوا – قسمت دوم

37 نظرات
  1. روح می گوید

    عجب حوصله ای دارینا 🙂
    RxJava رو هم آموزش بدین لدفن.

    1. مصطفی نصیری می گوید

      فقط برای برنامه نویسی حوصله دارم 🙂
      فعلا اجازه بدید همین دوره رو با موفقیت تکمیل کنم تا بعدا ببینیم که چیکار باید کرد 🙂
      موفق باشید

  2. علی ذوقی می گوید

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

    1. مصطفی نصیری می گوید

      سلام
      خوشحالم از اینکه مورد توجهتون قرار گرفته
      برنامه ای برای آموزش GUI در جاوا نداشتم چون خیلی دوره طولانی میشه و قصد داشتم بعد از این اندروید رو شروع کنم اما اگرقرار بر آموزش GUI شد ابتدا یکم از Swing میگم بعد میریم سراغ JavaFX
      موفق باشید

  3. طه می گوید

    خیلی خوبه
    امیدوارم این دوره اموزشی با موعقیت به اتمام برسه
    من برنامه نویس اندرویدم و شب و روزم با جاواست
    اما قول میدم تمام مقاله هات رو بخونم و نظر بدم

    1. مصطفی نصیری می گوید

      خیلی ممنونم دوست عزیز
      نظرات و انتقادات شما عزیزان باعث پیشرفت دوره و پیشرفت من هست
      موفق باشید

  4. Ali می گوید

    مرسی از اموزش
    میشه در مورد Indentation بیشتر توضیح بدی؟

    1. مصطفی نصیری می گوید

      خواهش می کنم
      Indentation یعنی همون فاصله گذاری که گفتم برای خوانایی کد به کار میره و معنی دیگه ای نداره (البته معنی تحت اللفظی این کلمه “دندانه گذاری” هستش)
      یکی از اصول کدنویسی تمیز در هر زبانی رعایت این فاصله گذاری هاست اگرچه شاید در ۴ خط کد خیلی اهمیت این موضوع مشخص نشه اما به محض اینکه حجم کد بالا بره می بینید که چقدر کد رو زیبا و مرتب و قابل فهم میکنه
      موفق باشید

  5. علی می گوید

    مطلب خوبی رو شروع کردین
    منتظر بخش های بعدی اش هستم.

    1. مصطفی نصیری می گوید

      خیلی ممنون
      امیدوارم بتونم در کنار شما این دوره رو با موفقیت به پایان برسونم
      موفق باشید

  6. مسعود می گوید

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

    1. مصطفی نصیری می گوید

      مرسی. امیدوارم این دوره هم بتونه نظر شما رو جلب کنه.
      موفق باشید

  7. […] آموزش قدم به قدم جاوا – قسمت اول […]

  8. ladan می گوید

    سلام.جاداره واقعا خسته نباشیدبگم.واسه من کهمبتدیم خیلی خوب و واضح.ممنون

    1. مصطفی نصیری می گوید

      خیلی ممنون از شما. موفق باشید.

  9. تلاش می گوید

    من تو فکر هستم این آقایون برنامه نویس چطور این همه کد رو حفظ میکنند و جاهای مختلف باهاشون کدهای بلندتر مینویسند.

    1. علی می گوید

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

    2. Anonymous می گوید

      به صورت کلی و از نظر عقلی کسی کدی رو حفظ نمیکنه!
      برنامه نویسی یه شیوه تفکر منطقی هست و اصول و قواعد خودش رو داره که باید اول اون اصول رو یاد گرفت و بعد برای بیان اون اصول همونجوری که ما به فارسی حرف میزنیم باید از یک زبان کامپیوتری (تو این آموزش جاوا) استفاده بشه 🙂

  10. matin می گوید

    سلام من وقتی برنامه IDE دان کردم چد تا بخش اومد و اونی که باید انتخواب میکردمو انتخواب کردم اما موقع نصب وسط لود گیر میکنه و اخطار اهسته بودن سرعت میده چیکار باید بکنم ؟؟؟

    1. مصطفی نصیری می گوید

      سلام. ایکلیپس اصلا نیازی به نصب نداره و با extract کردن محتویات فایلی که دانلود کردید می تونید بدون نیاز به نصب ازش استفاده کنید. لطفا پیغام خطا رو اینجا بنویسید

  11. kawan می گوید

    سلام

    ایا در ایکلیپس مشه برنامه برای ویندوز یعنی ویژوال نوشت در ضمن من تازه دارم برنامه نویسی یاد میگیرم توصیه ت چیه به من تازه کار

    1. مصطفی نصیری می گوید

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

      1. حمید می گوید

        اتفاقا راحت‌تر از ویژوال استدیو می شه. با javafx خیلی راحت می‌شه. تازه امکان تغییر با css هم داری…

      2. حمید می گوید

        با javafx می‌شه

  12. لهام می گوید

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

    1. مصطفی نصیری می گوید

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

  13. وحید می گوید

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

  14. غزل می گوید

    سلام . خیلی ممنون بابت آموزش هاتون
    پس مابقی چی شد؟

  15. Mohamad می گوید

    سلام
    واقعا ایول داری دمت گرم عالی بود
    موفق باشی

  16. امین می گوید

    خیلی خوبه که خروجی این مطالب رو در قالب pdf هم بذارین که دوستانی که علاقه دارن و یا وقتشو ندارن به صورت آفلاین مطالعه کنن

  17. کمیل فرتاش می گوید

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

  18. محمد می گوید

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

  19. Memol می گوید

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

  20. علی می گوید

    سلام داداش
    من تمام مراحل رو ک گفتین رفتم و در اخر ک گزینه ی Run رو میزنم در قسمت کنسول ای خطا رو میده:
    Error: Could not find or load main class Firstprogram
    ممنون میشم بگین مشکل کجاس

  21. رابین تک می گوید

    ممنون از سایت خوب و مطالب مفیدتون

  22. reza می گوید

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

  23. eternal می گوید

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

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.