مقدمه:
احتمالا تا حالا به گوشتان خورده است که سیتم عامل بیشتر گوشی های موبایل در جهان برای اندروید و IOS هست. شرکت گوگل صاحب اندروید هست و مسئولیت به روز رسانی و ارتقاء آن را دارد. از طرفی IOS برای شرکت اپل هست و روی گوشی های آی فون و آیپد اجرا می شود. سیستم عامل اندروید بیشترین کاربر را نسبت به رقبا در دنیا دارد. عددی در حدود 2.5 میلیارد کاربر در جهان دارای گوشی اندرویدی هستند. خب پس متوجه می شویم که اندروید کاربران زیادی دارد و این باعث شده که اپلیکیشن های ما به درآمد خوبی دست پیدا کنند. فروشگاه اپلیکیشن اندروید گوگل پلی هست و معادل ایرانی آن کافه بازار و مایکت هستند که اپلیکیشن های خودمان را می توانیم در آنجا انتشار بدهیم.
زبان برنامه نویسی:
در ابتدا سیستم عامل اندروید از زبان جاوا استفاده می کرد. اما در سال 2019 گوگل اعلام کرد که زبان برنامه نویسی کاتلین به جاوا ترجیح داده می شود. اینکه تفاوت و مزایای کاتلین چه چیزی هست، در بخش خودش توضیح می دهیم. اما بهتر است بدانید که کاتلین مولتی پلتفرم هست و با نوشتن یک کد می توانید هم برای گوشی اندرویدی و هم IOS خروجی بگیرید. اما خبر بد این است که بخش مولتی پلتفرم آن هنوز به حالت پایدار نرسیده و دارای باگ هست. فعلا فقط برای اندروید ما از این زبان مورد حمایت گوگل استفاده می کنیم. اگر علاقه مند هستید که اپلیکیشن های مولتی پلتفرم بنویسید می توانید از زبان برنامه نویسی فلاتر که برای هر دو سیستم عامل خروجی می گیرد استفاده کنید.
چرا نیاز داریم که جاوا یاد بگیریم؟
آموزش اندروید با جاوا برای کسی که می خواهد اپ اندرویدی بنویسد، سریعتر است. دلیلش هم کدهای زیادی است که در وبسایتهایی مثل گیتهاب است که دید خوبی به فرد می دهد. ضمنا بسیاری از خطاها هم درسایت استک اورفلو جواب داده شده اند. پس اول جاوا یاد می گیریم و سپس می رویم سراغ کاتلین.
شروع برنامه نویسی جاوا:
1- ازکدام IDE استفاده کنیم؟
فعلا برای اجرای کدهای خودمان از کامپیلر یا IDE شرکت جت برینز به نام intelliJ IDEA استفاده می کنیم. این نرم افزار رو تمام سیستم عامل ها مثل مک، ویندوز و لینوکس اجرا می شود. این نرم افزار در دو نسخه پولی و رایگان قابل دانلود هست. شما می توانید از سایت خودش و یا سایت های ایرانی آن را دانلود کنید. ما برای برنامه نویسی اندروید از اندروید استودیو استفاده می کنیم که کاملا رایگان است و شما می توانید با وصل شدن به اپلیکیشن های دور زدن تحریم آن را دانلود کنید.
نرم افزارهای رایگان دیگری مانند Net Beansو Eclipse وجود دارند که می توان از آن ها استفاده کرد.
سپس ما نیاز داریم که JDK را روی سیستم خود نصب کنیم. این کیت توسعه جاوا شامل ابزارهایی است برای توسعه و تست کدهای جاوا. JDK را از سایت اوراکل میتوانید دانلود ونصب کنید.
- شی گرایی (Object Oriented Programming) چیست؟
برای نوشتن یک کد ما دو روش داریم. اول برنامه نویسی رویه ای (Procedural Programming) و دوم برنامه نویسی شی گرا هست. برنامه نویسی رویه ای روشی است که کد ما شامل توابع مورد نیاز برای اجرا می باشند. کد ها درون هم و پشت سر هم نوشته می شوند. مشکل کدنویسی رویه ای این است که اگر برنامه ی ما بزرگ شد، کدها در هم و پیچیده شده و عیب یابی و گسترش کد مشکل می شود. ضمنا پیچیدگی کدها را کم کرده و از کدهای تکراری جلوگیری می کند. اینجا بود که شی گرایی وارد میدان شد تا یک نظم و ترتیبی به کدهای ما بدهد.
شی گرایی از دنیای واقعی الهام گرفته شده است. برای درک مفهوم آن یک انسان را درنظر بگیرید. انسان میتواند غذا بخورد، راه برود و غیره. این ها رفتارهای اوهستند. رفتارها در زبان جاوا با متد(method) معرفی می شوند. مثلا اپلیکیشن ما متد جمع اعداد زوج را دارد. مثال دیگر می تواند، متد کلیک روی دکمه باشد که بسیار از آن در برنامه نویسی اندروید استفاده می کنیم. از طرفی انسان صفات مختلفی دارد. مثلا قد، وزن و جنسیت. در زبان جاوا به این ها attribute می گویند. به مجموعه رفتارها و ویژگی ها، کلاس(class) می گویند. این اتریبیوت ها باعث تمایز یک کلاس با کلاس دیگر می شوند. مثلا کلاس انسان رفتارهایش مثل هم هستند. یعنی همه غذا می خورند. اما ویژگی های آن ها متفاوت است. مثلا هوش یکی بیشتر است یا رنگ پوست دیگری فرق دارد. در زبان کاتلین ما به method، function می گوییم و به attribute، property گفته میشود.
خب حالا به مفهوم شی (object) یا نمونه (instance) می رسیم. گفتیم که انسان یک کلاس است. پس نمونه ها یا شی های آن من و شما می شویم. مثلا شی سینا که قدش 180 سانتی متر است. شی فرهاد که قدش 170 سانتی متر است. مثال دیگر کلاس ماشین است. یک نمونه از آن BMW است. نمونه دیگر پیکان است. واضح است که با شی گرایی کدهای خود را خواناتر کرده و از تکرار و بی مورد آن جلوگیری می کنیم.
در شی گرایی ما با 4 تا مفهوم اصلی رو به رو هستیم. 1-وراثت (Inheritance) 2-کپسوله سازی (Encapsulation) 3- انتزاع(Abstraction) 4-چندریختی(Polymorphism)
وراثت: فرض کنید ما یک کلاس داریم. اصلا این کلاس در کتابخانه جاوا وجود دارد و یا خودمان قبلا آن را ساخته ایم. مثلا کلاس ماشین. ماشین، چرخ و پنجره و... دارد. منظور ما همه چیزهایی است که بین ماشین ها مشترک است. اما ما میاییم یه کلاسی می سازیم که ویژگی های خاص خودش را دارد. مثلا جنس بدنه آن از یک ماده خاص است. در این حالت می گوییم که کلاس ما از کلاس والد یا سوپر کلاس ارث بری کرده است. پس ارث بری یعنی به ارث بردن خصوصیات یک کلاس دیگر.
چندریختی: یعنی یک شی می تواند، حالت های مختلفی به خود بگیرد. مثلا من یک شی از کلاس انسان هستم. من می توانم، نقش پسر، همسر، کارمند و غیره به خود بگیرم.
انتزاع: ما بعضی زمان ها می خواهیم که بعضی اطلاعات خاص را کاربر ببیند و اطلاعاتی که نیاز نیست، مخفی بماند. مثلا در گوش موبایل ما از دوربین فیلم برداری استفاده می کنیم. آیا لازم است که بدانیم دوربین فیلم برداری در اندروید چه طوری کدنویسی شده است؟ خیر. ما فقط از آن استفاده می کنیم.
کپسوله سازی: مربوط به مخفی سازی داده ها هست. این کار امنیت برنامه ما را بالا می برد. کپسوله سازی همانند یک پوسته کپسول است که اگر باز شود مواد داخل آن خراب می شود. معناست که داده ها و همه عملیاتی که روی آن ها انجام می شود، در یک واحد مجزا به نام کلاس نگه داری می کنیم.
3-جاوا چگونه کار می کند؟
ماشین ما فقط صفر و یک را می فهمد. ما از یک زبان سطح بالا استفاده می کنیم که کد جاوای ما را به زبان ماشین ترجمه کند. ما دو نوع مترجم داریم. کامپایلر(Compiler) و مفسر(Interpreter).
زبان هایی مانند C که از کامپایلر استفاده می کندد، ابتدا کل کد خوانده می شود و سپس خروجی می دهد. ولی زبان هایی مثل PHP خط به خط کد ها خوانده و اجرا می شود.
زبان جاوا هم به صورت مفسری و هم کامپایلری اجرا می شود. یک کامپیلر، جاوا سورس کد را به فایل هایی به نام java byte code با پسوند .class تبدیل می کند سپس یک مفسر به نام JVM آن را به خروجی تبدیل می کند. برای هر سیستم عاملی JVM متفاوتی وجود دارد.
JVM= java virtual machine