آموزش برنامه نویسی اندروید با جاوا – از صفر تا صد
وجود فرصتهای شغلی فراوان در حوزه توسعه اپلیکیشن موبایل از یک سو و گستردگی بالای استفاده از سیستم عامل اندروید در بین کاربران موجب شده است تا افراد بسیاری به حوزه برنامه نویسی اندروید وارد شوند یا قصد ورود به این حوزه را داشته باشند. در این بین، انتخاب حوزه برنامه نویسی اندروید با جاوا میتواند یکی از بهترین گزینهها برای شروع نقشه راه یادگیری برنامه نویسی اندروید باشد، زیرا جاوا اولین زبان رسمی معرفی شده برای توسعه اندروید به حساب میآید و زبان کاتلین هم بر اساس آن ساخته شده است. لذا در این مطلب به ارائه آموزش مقدماتی برنامه نویسی اندروید با جاوا پرداختهایم.
این نوشتار با مباحثی همچون معرفی ویژگیهای اصلی زبان جاوا نظیر شی گرایی، مستقل از پلتفرم بودن، وراثت و سایر موارد آغاز میشود. در ادامه، نیز ضمن بررسی مزایا و معایب زبان جاوا به آموزش برنامه نویسی اندروید با جاوا در قالب ساخت اپلیکیشن اندروید در محیط اندروید استودیو پرداخته میشود. علاوه بر این، به بسیاری از سوالات متداول پیرامون برنامه نویسی اندروید با جاوا نیز پاسخ داده شده است.
معرفی سیستم عامل اندروید
سیستم عامل اندروید برای اولین بار توسط شرکت Android Inc واقع در «Silicon Valley» توسعه یافت. سپس، در سال ۲۰۰۵ میلادی (۱۳۸۴ شمسی) توسط شرکت گوگل خریداری شد.
بعد از خریداری شرکت Android Inc، تلاشهای گوگل برای ورود به بازار موبایل کلید خورد و در سال ۲۰۰۸ میلادی (۱۳۸۷ شمسی) گوگل اولین دستگاه اندرویدی خود را روانه بازار کرد. گوگل در گام نخست از سیستم عامل اندروید برای دستگاههای لمسی، تلفنهای همراه و تبلتها استفاده کرد. امروزه از سیستم عامل اندروید در دستگاههای مختلفی از جمله تلویزیونها، اتومبیلها و ساعتهای مچی استفاده میشود که هر کدام از این دستگاهها «رابط کاربری» (User Interfacr | UI) منحصر به فردی دارند.
سیستم عامل اندروید به صورت «اُپن سورس» (منبع آزاد) ارائه شده است و این مورد یکی از دلایل محبوبیت و رشد روزافزون این سیستم عامل در مقایسه با سایر رقبای آن به حساب میآید. با توجه به مخاطبین گسترده سیستم عامل اندروید، توسعهدهندگان بسیاری به حوزه برنامه نویسی اندروید وارد شدهاند یا میخواهند وارد شوند و نیاز به آموزش برنامه نویسی اندروید به خصوص با جاوا برای این افراد وجود دارد. توسعهدهندگان از سیستم عامل اندروید برای توسعه اپلیکیشنهای موبایلی استفاده میکنند و آنها را از طریق فروشگاههای اندرویدی نظیر «گوگل پلی» (Google Play) در اختیار کاربران قرار میدهند.
معرفی زبان برنامه نویسی جاوا
زبان برنامه نویسی جاوا به دلیل داشتن نام مشابه، اغلب با جاوا اسکریپت اشتباه گرفته میشود. جاوا اسکریپت زبان برنامه نویسی است که عمدتاً در وبسایتها برای افزودن تعامل به عناصر رابط کاربری مورد استفاده قرار میگیرد.
به عنوان مثال، زمانی که در یک وبسایت بر روی دکمهای برای ارسال اطلاعات کلیک میشود یا تغییراتی در رابط کاربری رخ میدهد، به احتمال زیاد جاوا اسکریپت مسئول اجرای آن است. در مقابل، جاوا زبانی است که چندان در وبسایتها مورد استفاده قرار نمیگیرد، البته گاهی ممکن است در Back end از آن استفاده شود.
با ظهور سیستم عامل اندروید و معرفی زبان جاوا به عنوان زبان بومی و رسمی برای توسعه آن، به میزان زیادی به محبوبیت این زبان افزوده شد. امروزه برنامه نویسی اندروید با جاوا به یکی از حوزههای پرطرفدار و در عین حال پردرآمد برنامه نویسی تبدیل شده است. البته اخیراً زبان کاتلین جای جاوا را در برنامه نویسی اندروید گرفته است، اما همچنان ضرورت دارد برنامه نویسی اندروید با جاوا را یاد بگیریم، چرا که پایه و اساس کاتلین جاوا است و پیشنیازی برای یادگیری کاتلین و توسعه اندروید با آن به حساب میآید.
ویژگی های زبان برنامه نویسی جاوا
زبان برنامه نویسی جاوا عمدتاً در ساخت برنامههای اندروید و دسکتاپ کاربرد دارد. زبان محبوب جاوا که مدتها بعد از C و ++C توسعه یافته، بسیاری از ویژگیهای قدرتمند این زبانها را در خود جای داده و در عین حال برخی از معایب آنها را برطرف کرده است.
یکی از معیارهای سنجش قدرت انواع زبانهای برنامه نویسی، تعداد کتابخانههای آنها است. کتابخانهها به توسعهدهندگان کمک میکنند تا بدون نیاز به نوشتن کدهای زیاد، قابلیتهای کاربردی را در برنامههای خود پیادهسازی کنند.
زبان برنامه نویسی جاوا یکی از بزرگترین مجموعه کتابخانهها را در بین تمام زبانهای موجود دارد. در ادامه، برخی از اصلیترین ویژگیهای زبان برنامه نویسی جاوا ارائه شده است.
- یادگیری و درک آسان
- مستقل از پلتفرم بودن
- ایمنی بالا
- پشتیبانی از برنامه نویسی شیگرا
جاوا یکی از پایههای اساسی اندروید را تشکیل میدهد. «کیت توسعه نرمافزار اندروید» (Android SDK) بسیاری از کتابخانههای استاندارد جاوا نظیر کتابخانههای ساختار داده، ریاضی، گرافیکی، شبکه و سایر کتابخانههای کاربردی که در توسعه برنامه اندروید مورد نیاز هستند را در اختیار توسعهدهندگان قرار میدهد. در ادامه، مهمترین ويژگیهای زبان جاوا مورد بررسی قرار گرفته است.
چرا یادگیری جاوا آسان است؟
دلایل بسیاری برای آسان بودن یادگیری برنامه نویسی اندروید با جاوا وجود دارد. بدون شک با وجود کتابهای آموزش برنامه نویسی اندروید، فیلمهای آموزشی و مقالات مختلف، کمبودی در زمینه منابع یادگیری زبان جاوا وجود ندارد.
جاوا یکی از بزرگترین جامعههای توسعهدهندگی را در بین زبانهای برنامه نویسی مختلف دارا است. این زبان برنامه نویسی محبوب برای پروژههای برنامه نویسی مختلف، صرف نظر از مقیاس آنها، از برنامههای موبایل گرفته تا برنامههای دسکتاپ کاربرد دارد.
«سینتکس» (Syntax) زبان جاوا بسیار مشابه زبانهای C و ++C است. با داشتن سابقه برنامه نویسی در یکی از این دو زبان، یادگیری جاوا و ساختارهای آن بسیار ساده خواهد بود. زبان برنامه نویسی جاوا یکی از خواناترین زبانها برای انسان به حساب میآید، یعنی شخصی که هیچ اطلاعاتی در خصوص برنامه نویسی ندارد نیز میتواند با خواندن کدهای جاوا منظور آن را درک کند. به عنوان مثال، نمونه کد زیر را در نظر بگیرید.
1char character = 'a';
2if(character=='a')
3{
4 doSomething();
5} else {
6 doSomethingElse();
7}
با خواندن نمونه کد بالا، به آسانی میتوان نحوه عملکرد آن را درک کرد. در این کدها متغیری با نامcharacter وجود دارد. اگر مقدار این متغیر برابر باa باشد، آنگاه برنامه، تابعِdoSomething() را فراخوانی خواهد کرد. در غیر این صورت نیز، تابعِdoSomethingElse() فراخوانی خواهد شد.
چرا مستقل از پلتفرم بودن جاوا مهم است؟
در بیشتر زبانهای برنامه نویسیِ رایج، برای اجرا شدن کدهای مورد نظر بر روی دستگاه، باید از کامپایلر استفاده کرد. کامپایلرها کدهای نوشته شده را به زبان ماشین تبدیل میکنند و در نتیجه، دستگاه قادر به اجرا کدها خواهد بود. تنها ایرادی که در این قضیه وجود دارد و برنامه نویس را با مشکل مواجه میکند، این است که دستگاههای مختلف از زبانهای ماشین متفاوتی استفاده میکنند.
در نتیجه، باید کدهای نوشته شده را به زبانهای ماشین مختلف کامپایل کرد. به عبارت دیگر، کد نوشته شده در این حالت قابل جابجایی یا به اصطلاح پرتابل نیست.
در مورد زبان برنامه نویسی جاوا اما قضیه فرق دارد. کامپایلرهای جاوا کدهای نوشته شده را به «بایتکد» (Bytecode) تبدیل میکنند. تمام این موارد توسط «ماشین مجازی جاوا» (Java Virtual Machine) مدیریت میشوند که همانند پردازندهای فیزیکی یا همان CPU عمل میکند تا در نهایت کدهای کامپایل شده به مرحله اجرا برسند. در نتیجه، وجود چنین فرایندی در زبان جاوا موجب شده است تا توسعهدهندگان نگرانی در خصوص پلتفرم نداشته باشند، زیرا جاوا زبانی مستقل از پلتفرم به حساب میآید.
چرا جاوا زبانی ایمن است؟
تمام برنامههای نوشته شده به زبان جاوا قبل از اجرا بر روی دستگاه هدف در ماشین مجازی مستقل اجرا میشوند. در نتیجه، فرایند اجرای برنامه از سخت افزار دستگاه تفکیک میشود. بنابراین، «ماشین مجازی» (Virtual Machine | VM) میتواند در مقایسه با زبانهایی که مستقیماً با کد ماشین کار میکنند، اجرای کدها را به شکلی ایمن و کپسوله شده مدیریت کند.
ترکیب ویژگیهای زبان جاوا با سیستم عامل اندروید، موجبِ افزایش امنیت، کارایی و پایداری برنامههای اندرویدی شده است. در نتیجه، برنامه نویسی اندروید با جاوا انتخابی مطمئن برای ساخت اپلیکیشن اندروید محسوب میشود. تمام برنامههای اندرویدی بر روی ماشین مجازی مخصوصی به نام Dalvik VM اجرا میشوند.
علاوه بر این، برنامههای اندرویدی توسط سیستم عامل با دقت مورد بررسی قرار میگیرند و در صورت استفاده بیش از حد از پردازنده، عدم پاسخگویی صحیح و اتلاف منابع، متوقف میشوند. بنابراین، توسعه برنامههای پایدار و پاسخگو در پلتفرم اندروید از اهمیت بالایی برخوردار است.
کامپایل کد های جاوا
با وجود این که کدهای جاوا به طور مستقیم به کدهای زبان ماشین تبدیل نمیشوند، اما همچنان جاوا در زمره زبانهای برنامه نویسی کامپایل شده قرار میگیرد. بنابراین، توسعهدهنده باید پروژههای اندرویدی را کامپایل کرده و برای استقرار در دستگاههای اندرویدی، آنها را بستهبندی کند.
توسعهدهندگان برای برنامه نویسی اندروید عموماً از محیط «اندروید استودیو» (Android Studio) برای توسعه استفاده میکنند. در اندروید استودیو «کامپایل خودکار» (Automatic Compilation) به صورت پیشفرض فعال است. منظور از کامپایل خودکار این است که در هر مرتبه از ذخیره پروژه، اندروید استودیو با توجه به تغییرات، بسته یا همان پکیج برنامه را مجدداً کامپایل میکند. در نتیجه، میتوان بلافاصله خطاهای کامپایل را مشاهده کرد.
اندروید استودیو نیز برای آسانتر کردن برنامه نویسی اندروید با جاوا ، «کد ادیتور» (ویرایشگر کد) قدرتمندی تحت عنوان IntelliJ IDEA را ارائه کرده است. این ادیتور، کدهای جاوا را در زمان تایپ تفسیر میکند و با متمایز کردن عناصر و بخشهای موجود در کدها، کار کد نویسی را آسانتر میکند. علاوه بر این، بسیاری از خطاهای موجود را در حین تایپ مشخص میکند و امکان تصحیح خودکار این خطاها را نیز تنها با یک مرتبه کلیک کردن فراهم میکند.
فرایند ساخت در پروژههای معمولی جاوا منجر به ایجاد فایلی با پسوندJAR میشود. برنامههای اندرویدی فایلهایJAR را دریافت کرده و آنها را تحت عنوان فایلهایAndroid Package با پسوند.apk بستهبندی میکنند. این فایلها علاوه بر کدهای کامپایل شده جاوا، شامل منابع برنامه نظیر رشتهها، تصاویر، فایلهای صوتی و فایلAndroidManifest.xml برنامه نیز میشوند. در نهایت، این فایلهای بستهبندی شده بر روی دستگاههای هدف نصب میشوند.
منظور از شی گرایی در جاوا چیست؟
مفهوم شیگرایی اساس و پایه بسیاری از زبانهای برنامه نویسی از جمله جاوا است. در این بخش از آموزش برنامه نویسی اندروید با جاوا ، این اصل کلیدی مورد بررسی قرار خواهد گرفت.
برنامه نویسی شیگرا سبک یا تکنیکی در برنامه نویسی محسوب میشود که بر تعریف ساختارهای داده تحت عنوان اشیا استوار است. در واقع، شی را میتوان به عنوان نوع داده سفارشی در نظر گرفت. به عنوان مثال، شیDog که بیانگر طرح اولیه یک سگ با ویژگیهای نام، نژاد و جنسیت است را در نظر بگیرید.
سپس، میتوان نمونههای مختلفی از شیDog را برای نمایش سگهای خاص ایجاد کرد. هر شی با فراخوانی تابع سازنده ایجاد میشود. در نمونه کد زیر، اشیا کلاسDog از سازندهای با ۳ پارامتر (نام، نژاد و جنسیت) استفاده میکنند.
1Dog dog1 = new Dog("Lassie", collie, female);
2Dog dog2 = new Dog("Fifi", poodle, female);
3Dog dog3 = new Dog("Asta", foxterrier, male);
برای تعریف هر شی باید از کلاس استفاده شود. امکان تعریف کلاس به صورت داخلی یا مجزا وجود دارد. علاوه بر این، میتوان یک کلاس را در کلاس دیگری نیز اعلان کرد.
منظور از Property در برنامه نویسی شی گرا چیست؟
به طور کلی در بحث شیگرایی برای تعریف ویژگیها و رفتار شی از کلاس استفاده میشود. مشخصهها (Property) یا «متغیرها» (Variables) به عنوان ویژگیهای شی در نظر گرفته میشوند.
در زمان ایجاد شی جدید میتوان اطلاعات آن را با استفاده از مشخصهها ذخیره کرد. در مثال قبلی، کلاسDog دارای ویژگیهای نام، نژاد و جنسیت است.
منظور از متد در برنامه نویسی شی گرا چیست؟
«متدها» (Methods) برای تعریف رفتار یا عملی در قالب توابع درون کلاس شی تعریف میشوند. متدهای کلاس تنها برای اشیا همان کلاس در دسترس هستند.
با استفاده از متدها میتوان اطلاعات شی را تغییر داد یا تنها اطلاعاتی را در خروجی چاپ کرد. به عنوان مثال، در کلاسDog میتوان متدهای مختلفی نظیر حرکت کردن، پارس کردن و دویدن را پیادهسازی کرد که با عملکرد شی در ارتباط است.
مفهوم وراثت در زبان جاوا
درک مفهوم «وراثت» (Inheritance) در زبان جاوا به کسب نتیجه بهتر در نقشه راه یادگیری برنامه نویسی اندروید با جاوا کمک میکند. وراثت یکی از ویژگیهای اصلی زبانهای برنامه نویسی شیگرا است.
وراثت در برنامه نویسی بسیار نزدیک به مفهوم مشابه آن در دنیای واقعی است. همان طور که در دنیای واقعی فرزندان، صفات و ویژگیهایی را از والدین خود به ارث میبرند، در دنیای برنامه نویسی نیز کلاسها با استفاده از مفهوم وراثت میتوانند رفتار و صفات کلاسهای والد را ارثبری کنند. برای درک بهتر مفهوم وراثت موارد زیر را در نظر بگیرید.
- گاو یک نوع حیوان است.
- گربه یک نوع حیوان است.
- سگ یک نوع حیوان است.
در تصویر زیر، کلاس حیوان دارای ۳ کلاس زیر مجموعه است که از آن ارثبری میکنند.
در مثال بالا، سگ، گاو و گربه از کلاس حیوان ارثبری میکنند و ویژگیها، رفتار و خصوصیاتهای این کلاس را نیز همراه خود دارند. علاوه بر این، هر کدام از موجودیتهای سگ، گاو و گربه را میتوان زیر مجموعه کلاس پستانداران نیز در نظر گرفت، زیرا سگ، گاو و گربه یک نوع پستاندار هستند و تمام ویژگیهای پستانداران را دارند. در نتیجه، جملات بالا را به صورت زیر میتوان بیان کرد.
- گاو حیوانی از دسته پستانداران است.
- گربه حیوانی از دسته پستانداران به حساب میآید.
- سگ حیوانی از دسته پستانداران است.
در نهایت، وضعیت کلاسها به صورت زیر خواهد بود. البته امکان گسترش این دستهبندی نیز وجود دارد.
در دنیای برنامه نویسی هر کدام از دستههای حیوان و پستانداران را میتوان به عنوان کلاسی جداگانه در نظر گرفت که در آن کلاس پستانداران از کلاس حیوان ارثبری میکند. در این مثال کلاس پستانداران علاوه بر ویژگیهای خود، تمام خصوصیات و رفتارهای کلاس حیوان را نیز در بردارد.
مثالی از وراثت در برنامه نویسی اندروید با جاوا
در این بخش مفهوم وراثت در برنامه نویسی اندروید با جاوا مورد بررسی قرار خواهد گرفت. برای این منظور، ابتدا کلاسی با نامFish باید تعریف کرد که دارای خصوصیاتی نظیرmSpecies ،mColor وmSize برای تعیین گونه، رنگ و اندازه باشد.
علاوه بر این، برای تعیین رفتارهای موجودیت مورد نظر باید توابعsleep() ،eat() وmakeBabyFish() را نیز برای این کلاس تعریف کرد. در نتیجه، هر موجودیت تعریف شده از کلاسFish علاوه بر داشتن خصوصیات فوق، رفتارهای تعریف شده را نیز خواهد داشت. در ادامه، نمونه کد مورد نظر برای کلاسFish ارائه شده است.
1public class Fish {
2 private String mSpecies;
3 private String mColor;
4 private int mSize;
5 Fish() {
6 // generic fish
7 mSpecies = "unknown";
8 mColor = "unknown";
9 mSize = 0;
10 }
11 Fish(String species, String color, int size) {
12 mSpecies = species;
13 mColor = color;
14 mSize = size;
15 }
16 public void eat() {
17 // eat some algae
18 };
19
20 public void eat(Fish fishToEat) {
21 // eat another fish!
22 };
23
24 public void sleep() {
25 // sleep
26 };
27
28 public void makeBabyFish(Fish fishSpouse, int numBabies) {
29 // Make numBabies worth of baby fish with Fish spouse
30 };
31}
همان طور که پیشتر نیز بیان شد، کلاسها را میتوان به صورت سلسه مراتبی سازماندهی کرد. در این حالت، کلاسهای زیر مجموعه علاوه بر داشتن ویژگیهای منحصربهفرد خود، توانایی ارثبری ویژگیها و خصوصیتهای کلاس والد را خواهند داشت. برای این منظور کلاس جدیدی با نامSaltwaterFish که معرف ماهیهای آب شور است را با استفاده از کلمه کلیدیextends میتوان از کلاسFish مشتق کرد. نمونه کد مربوط به این بخش در پایین آورده شده است.
1public class SaltwaterFish extends Fish
2{
3 @Override
4 public void makeBabyFish(Fish fishSpouse, int numBabies) {
5 // call parent method
6 super.makeBabyFish(fishSpouse, numBabies);
7 // eat mate
8 eat(fishSpouse);
9 }
10}
در نمونه کد بالا، کلاسSaltwaterFish از کلاس Fish ارثبری میکند. در نتیجه، موجودیتهای ایجاد شده از کلاسSaltwaterFishتمام ویژگیها و خصوصیتهای کلاس Fish را نیز دارا هستند.
کاربرد اینترفیس در برنامه نویسی اندروید با جاوا چیست؟
زبان برنامه نویسی جاوا از «وراثت چندگانه» (Multiple Inheritance) پشتیبانی نمیکند.
برای درک بهتر وراثت چندگانه به تصویر زیر توجه کنید.
در نمونه کد بالا کلاسهایA وB از کلاس والد مشتق شدهاند. در صورتی که نیاز باشد کلاسC نیز از کلاسهایA وB ارثبری کند، به دلیل عدم پشتیبانی زبان جاوا از ارثبری چندگانه برنامه دچار خطا خواهد شد.
کلاسها در جاوا امکان بسط دادن بیش از یک کلاس را در یک «نمونه» (Instance) ندارند. برای رفع این مشکل در جاوا قابلیت اینترفیس ارائه شده است. از اینترفیسها در جاوا برای پیادهسازی رفتار شی استفاده میشود، در حالی که کلاسها شی را تعریف میکنند. در نمونه کد زیر، اینترفیسSwimmer برای تعریف چند رفتار ارائه شده است.
1public interface Swimmer
2{
3 public void startSwimming();
4 public void stopSwimming();
5 public void dive();
6 public void surface();
7}
برای پیادهسازی اینترفیس در کلاس باید از کلمه کلیدیimplements استفاده کرد.
1public class Fish implements Swimmer {
2 // In this implement class, we then provide implementations of the four methods within the Swimmer interface
3
4 public void startSwimming() {
5 System.out.println("I am now swimming");
6 }
7
8 public void stopSwimming() {
9 System.out.println("I have now stopped swimming");
10 }
11
12 public void dive() {
13 System.out.println("I just dove into the water");
14 }
15
16 public void surface() {
17 System.out.println("I am now at the surface");
18 }
19}
در نمونه کد بالا، کلاسFish اینترفیسSwimmer را پیادهسازی میکند.
مزایا و معایب زبان برنامه نویسی جاوا
پس از آن که زبان برنامه نویسی جاوا معرفی شد و ویژگیها و قابلیتهای آن نیز مورد بررسی قرار گرفتند.
در ادامه، به صورت مختصر مزایا و معایب این زبان برنامه نویسی شرح شده است.
مزایای زبان جاوا چیست؟
مهمترین مزایای جاوا در ادامه فهرست شدهاند.
- مستقل از پلتفرم
- پشتیبانی از شیگرایی
- ابزارهای توسعه قدرتمند
- زبان برنامه نویسی «متنباز» (Open-Source)
- یادگیری آسان
- جامعه گسترده برنامهنویسان
- امنیت بالا
- سایر موارد
معایب زبان جاوا چیست؟
با وجود تمام امکانات و قابلیتهای زبان جاوا، نقاط منفی نیز در این زبان وجود دارد. مهمترین ایرادها و معایب زبان جاوا در ادامه فهرست شدهاند.
- رابط کاربری ضعیف
- ایجاد مشکلات در زمینه مدیریت حافظه
- پیچیدگی کدها
- عملکرد نسبتاً ضعیف در برخی موارد
آموزش برنامه نویسی اندروید با جاوا
در این بخش آموزش برنامه نویسی اندروید با جاوا در قالب ساخت برنامه اندرویدی ساده دنبال خواهد شد که تنها عبارت"Hello World!" را چاپ میکند. قبل از شروع آموزش برنامه نویسی اندروید با جاوا باید از فراهم بودن تمام تجهیزات و ابزارهای لازم برای توسعه اپلیکیشن اندرویدی اطمینان حاصل کرد.
ابزارهای لازم برای شروع برنامه نویسی اندروید شامل SDK اندروید، «بسته توسعه نرمافزاری جاوا» (Java Development Kit | JDK) و «محیط یکپارچه توسعه» ( IDE) هستند.
در این بخش برای آموزش برنامه نویسی اندروید با جاوا از محیط توسعه محبوب «اندروید استودیو» (Android Studio) استفاده خواهد شد.
ایجاد پروژه در اندروید استودیو اولین گام آموزش برنامه نویسی اندروید با جاوا
ایجاد پروژه اولین گام در ساخت اپلیکیشن اندروید ساده با اندروید استودیو است. بعد از اجرای اندروید استودیو با صفحه زیر روبرو خواهید شد.
در این صفحه با انتخاب گزینهstart a new android studio project میتوان فرایند توسعه اپلیکیشن اندروید را آغاز کرد. صفحه زیر در ادامه نمایش داده خواهد شد.
سپس، باید اطلاعات اصلی پروژه اندرویدی نظیر نام، نام بسته و محل ذخیره آن وارد شود. بعد از تعیین اطلاعات خواسته شده و تایید آنها به صفحه زیر هدایت خواهید شد.
با توجه به این که سیستم عامل اندروید بر روی دستگاههای مختلفی اعم از تلفنهای هوشمند، تبلتها، ساعتهای هوشمند، تلویزیونهای اندرویدی و سایر موارد قابل اجرا است، باید در این بخش دستگاههای هدفی را انتخاب کرد که اپلیکیشن اندروید برای آنها توسعه داده میشود. علاوه بر این، در این بخشMinimum SDK یعنی حداقل نسخه اندروید مورد نیاز برای اجرای اپلیکیشن را نیز باید مشخص کرد. در ادامه، مراحل ایجاد پروژه در اندروید استودیو صفحه زیر نمایش داده خواهد شد.
در این بخش باید الگوی مورد نظر برای شروع ساخت پروژه را انتخاب کرد. برای این منظور، الگویBlank Activity را انتخاب کنید. در نهایت، پروژه مورد نظر ایجاد خواهد شد.
بررسی ساختار اپلیکیشن گام دوم آموزش برنامه نویسی اندروید با جاوا
در این بخش از آموزش برنامه نویسی اندروید با جاوا ساختار اپلیکیشن اندروید مورد بررسی قرار گرفته است.
قبل از اجرای پروژه باید اطلاعات کافی در خصوص فایلها و پوشههای تشکیل دهنده اپلیکیشن اندروید وجود داشته باشد. در نتیجه، با توجه به تصویر زیر، فایلهای پروژه مورد بررسی قرار خواهند گرفت.
- پوشه Java: در این بخش تمام کدهای جاوای برنامه قرار میگیرند که با پسوند.java مشخص شدهاند. علاوه بر این، کلاسهای برنامه نیز در این پوشه قرار دارند.
- مسیر res/drawable: تمام فایلهای گرافیکی پروژه در این مسیر قرار میگیرند. به عنوان مثال، تمام دکمههای برنامه، تصاویر پسزمینه و آیکونهای برنامه در این بخش نگهداری میشوند.
- مسیر res/layout: فایلهای «طرحبندی» (Layout) برنامه در این پوشه قرار میگیرند.
- مسیر res/values: در پروژههای اندرویدی امکان تعریف متغیرهایی با مقادیر ثابت از نوعهای مختلف وجود دارد. این پوشه شامل ۳ فایل مهمcolors.xml برای ذخیرهسازی رنگهای پرکاربرد در برنامه، strings.xml برای نگهداری رشتهها وstyles.xml برای مشخص کردن «سبکهای» (Styles) برنامه است.
- فایل AndroidManifest.xml: فایلAndroidManifest.xml شامل ویژگیهای اساسی هر برنامه اندرویدی است. این فایل حکم شناسامه اپلیکیشن اندروید را دارد و ساختار کلی برنامه را مشخص میکند. علاوه بر این، در این فایل تنظیمات مربوط به «مجوزهای» (Permissions) برنامه نیز تعیین میشود.
- فایل Build.gradle: «سیستم ساخت» (Build System) در اندروید استودیو بر اساس فایلهای Gradle است. فایلBuild.gradle به طور خودکار بعد از ایجاد پروژه تولید میشود. در این فایل اطلاعات مهمی در خصوص حداقل نسخه Android SDK برای اجرای برنامه، شماره نسخه و سایر موارد مرتبط ارائه شده است.
سومین گام در آموزش برنامه نویسی اندروید با جاوا با بررسی فایل اکتیویتی اصلی برنامه
در این بخش از آموزش برنامه نویسی اندروید با جاوا فایل اکتیویتی اصلی برنامه مورد بررسی قرار خواهد گرفت. فایل اکتیویتی اصلی برنامه یا همانMainActivity.java شامل کدهای جاوای برنامه است.
این فایل در نهایت به فایل اجرایی Dalvik تبدیل میشود و برنامه را اجرا میکند. در ادامه، کدهای پیشفرض نوشته شده برای اجرای برنامهHello World آورده شده است.
1package com.example.helloworld;
2
3import android.support.v7.app.AppCompatActivity;
4import android.os.Bundle;
5
6public class MainActivity extends AppCompatActivity {
7 @Override
8 protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.activity_main);
11 }
12}
در نمونه کد بالا، به فایل رابط کاربریactivity_main.xml اشاره شده است.
بررسی فایل مانیفست گام بعدی در آموزش برنامه نویسی اندروید با جاوا
فایل «مانیفست» (Manifest) یکی از مهمترین فایلهای هر برنامه اندرویدی به حساب میآید. این فایل همانطور که پیشتر نیز بیان شد، حکم شناسنامه اپلیکیشن را دارد. فایلAndroidManifest.xml به عنوان رابط بین سیستم عامل اندروید و برنامه عمل میکند.
بنابراین، در صورت ایجاد بخش جدیدی در برنامه، باید حتماً آن را در این فایل معرفی کرد تا بخش جدید توسط سیستم عامل اندروید در نظر گرفته شود. در ادامه، نمونهای از فایلAndroidManifest.xml ارائه شده است.
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.tutorialspoint7.myapplication">
4
5 <application
6 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name"
9 android:supportsRtl="true"
10 android:theme="@style/AppTheme">
11
12 <activity android:name=".MainActivity">
13 <intent-filter>
14 <action android:name="android.intent.action.MAIN" />
15 <category android:name="android.intent.category.LAUNCHER" />
16 </intent-filter>
17 </activity>
18 </application>
19</manifest>
در فایل بالا، اجزای اصلی برنامه درون تگapplication مشخص شدهاند. خصوصیتandroid:icon در این بخش به آیکون برنامه اشاره دارد. تگactivity در این بخش، اکتیویتی برنامه و ویژگیهای آن را مشخص میکند. در این تگ میتوان با استفاده از تگintent-filter ویژگیهای اکتیویتی را تعیین کرد. در ادامه، فهرستی از تگهای قابل استفاده در فایلAndroidManifest.xml ارائه شده است.
تگ یا برچسب | کاربرد |
<activity> | برای اکتیویتیهای برنامه |
<service> | برای سرویسهای مختلف |
<receiver> | گیرندهها در اندروید |
<provider> | برای ارائهدهندگان محتوا |
<permission> | برای اعطای دسترسیهای مختلف به برنامه |
ادامه آموزش برنامه نویسی اندروید با جاوا با بررسی فایل رشته های برنامه
در این بخش از آموزش برنامه نویسی اندروید با جاوا فایلstring.xml مورد بررسی قرار خواهد گرفت. در هر پروژه اندرویدی، فارغ از نوع پروژه، مطمئناً متنهای زیادی برای بخشهای مختلف استفاده میشود. برای این منظور در اکثر زبانهای برنامه نویسی دادههای متنی یا رشتهای تحت عنوان متغیر از نوع String شناخته میشوند.
با استفاده از فایلstring.xml میتوان تمام دادههای رشتهای برنامه را مدیریت کرد. این فایل در مسیرres/values قرار دارد. استفاده از فایلstring.xml علاوه بر مدیریت بهتر برنامه باعث میشود تا در صورت نیاز به ایجاد تغییرات، زمان بسیار کمتری صرف شود. در ادامه، نمونهای از فایلstrings.xml در یک پروژه اندرویدی ارائه شده است.
1<resources>
2 <string name="app_name">HelloWorld</string>
3 <string name="hello_world">Hello world!</string>
4 <string name="menu_settings">Settings</string>
5 <string name="title_activity_main">MainActivity</string>
6</resources>
در این فایل، امکان تعریف مقادیر برای رشتههای مورد استفاده در بخشهای گوناگون برنامه وجود دارد. به عنوان مثال در نظر بگیرید که از متغیر"app_name" برای چندین بخش در برنامه استفاده شده است. در صورت نیاز به تغییر، تنها نیاز است یک مرتبه مقدار متغیر"app_name" را تغییر داد که در اینجا برابرHelloWorld است. در نتیجه، تمام بخشهای استفاده کننده از متغیر"app_name" نیز تغییر خواهند کرد.
بررسی رابط کاربری برنامه گام بعدی در آموزش برنامه نویسی اندروید با جاوا
رابط کاربری برنامه از طریق فایلهای طرحبندی مشخص میشود که در مسیرres/layout قرار دارد. با استفاده از عناصر موجود در رابط کاربری میتوان امکان تعامل کاربر با برنامه را فراهم کرد.
در ادامه، کدهایXML مربوط به رابط کاربری برنامه ارائه شده است.
1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5
6 <TextView
7 android:layout_width="wrap_content"
8 android:layout_height="wrap_content"
9 android:layout_centerHorizontal="true"
10 android:layout_centerVertical="true"
11 android:padding="@dimen/padding_medium"
12 android:text="@string/hello_world"
13 tools:context=".MainActivity" />
14
15</RelativeLayout>
در نمونه کد بالا، ساختار کلی رابط کاربری برنامه توسطRelativeLayout مشخص شده است. برای نمایش متن در صفحه نمایش از عنصرTextView استفاده میشود. این عنصر رابط کاربری دارای ویژگیهای زیادی نظیرandroid:layout_width برای تنظیم عرض ویو،android:layout_height برای تنظیم ارتفاع و سایر موارد است. متن نمایشی درونTextView نیز از طریق اطلاعات موجود در فایل strings.xml مشخص میشود.
اجرای اپلیکیشن اندروید گام آخر در آموزش برنامه نویسی اندروید با جاوا
گام آخر در برنامه نویسی اندروید با جاوا اجرای اپلیکیشن بر روی «شبیهساز اندرویدی» (Android Emulator) است. در این مرحله، قبل از اجرای اپلیکیشن باید شبیهساز اندروید نصب شده باشد.
بعد از اجرای شبیهساز باید بر روی دکمهRun موجود در نوار بالای اندروید استودیو کلیک کرد تا خروجی مورد نظر اجرا شود. در نهایت، خروجی اپلیکیشن به صورت زیر خواهد بود.
سوالات متداول پیرامون برنامه نویسی اندروید با جاوا
تا این قسمت از نوشته، بعد از معرفی زبان برنامه نویسی جاوا و مهمترین ویژگیهای آن سعی شد تا آموزش برنامه نویسی اندروید با جاوا در قالب ساخت اپلیکیشن ارائه شود. در ادامه، به بررسی برخی از رایجترین سوالات در حوزه برنامه نویسی اندروید با جاوا پرداخته شده است.
چرا جاوا بهترین زبان برای برنامه نویسی اندروید است؟
انتخاب بهترین زبان برنامه نویسی اندروید نیازمند در نظر گرفتن شرایط مختلفی است، اما برنامه نویسی اندروید با جاوا یکی از بهترین انتخابها در این حوزه به حساب میآید. البته به تازگی کاتلین جایگزین جاوا شده است، اما کاتلین هم با استفاده از جاوا ساخته شده است و شباهت بسیار زیادی به جاوا دارد، به گونهای که برای یادگیری کاتلین معمولاً توصیه میشود افراد ابتدا برنامه نویسی جاوا و توسعه اندروید با آن را یاد بگیرند.
همچنین جاوا به دلیل مستقل از پلتفرم بودن، انتخاب مناسبی برای توسعه اپلیکیشن اندروید محسوب میشود، زیرا برنامههای جاوا بر روی هر پلتفرمی کار میکنند. جاوا دارای «محیط زمان اجرای» (Run-Time Environment) مخصوص به خود است. علاوه بر این، بخش عمدهای از برنامههای اندرویدی مبتنی بر جاوا هستند.
کدهای جاوا در اندروید چگونه اجرا میشوند؟
بعد از این که برنامه اندروید به زبان جاوا نوشته میشود، کدهای جاوا در مرحله اول به بایتکد (ByteCode) تبدیل و سپس، به فرمت دیگری به نام Dalvik Executable یا اصطلاحاً کد DEX تبدیل میشوند. در نهایت، این کدها بر روی دستگاه اندرویدی قابل اجرا خواهند بود.
کاتلین یا جاوا، کدامیک بهتر است؟
بعد از مدتها یکهتازی جاوا در حوزه برنامه نویسی اندروید با معرفی زبان «کاتلین» (Kotlin) به عنوان دومین زبان رسمی برنامه نویسی اندروید به پایان رسید. رقیب جدید جاوا با داشتن ویژگیهای جذابی همچون «کلاسهای داده» (Data Classes)، «تابع اکستنشن» (Extension Functions)، «استنتاج نوع» (Type Inference)، «برنامه نویسی تابعی» (Functional Programming) و بسیاری از قابلیتهای دیگر توانسته نظر بسیاری از برنامهنویسان اندروید را به خود جلب کند.
البته هنوز برنامه نویسی اندروید با جاوا طرفداران خود را دارد.
بهترین کتاب برای آموزش برنامه نویسی اندروید با جاوا چیست؟
امروزه با توجه به وجود منابع متعدد برای یادگیری در هر زمینهای، علاقهمندان به آسانی میتوانند حوزه مورد علاقه خود را دنبال کنند. البته تنوع بالا منابع یادگیری از آموزشهای ویدیویی گرفته تا مقالات و کتابهای چاپی موجب سردرگمی بسیاری از افراد شده است. در نوشته زیر بهترین کتاب برای آموزش برنامه نویسی اندروید با جاوا ارائه شده است.
علاوه بر این، کتابها و منابع دیگری برای یادگیری سایر حوزههای موجود در برنامه نویسی اندروید از برنامه نویسی بازی اندروید گرفته تا برنامه نویسی اندروید با کاتلین و سایر زبانهای رایج آورده شده است.
جمعبندی
زبان برنامه نویسی جاوا نامی آشنا در دنیای برنامه نویسی است. این زبان محبوب و پرطرفدار اولین زبان رسمی معرفی شده برای توسعه اندروید بود. انتخاب حوزه برنامه نویسی اندروید با جاوا میتواند یکی از بهترین گزینهها برای شروع نقشه راه برنامه نویسی اندروید باشد. وجود منابع فراوان، ویژگیهای جذاب، جامعه توسعهدهندگی گسترده و یادگیری آسان دلایل محکمی برای انتخاب برنامه نویسی اندروید با جاوا است.
در این نوشته زبان برنامه نویسی جاوا به طور کامل معرفی شد و ویژگیهای بارز آن نظیر وراثت، شیگرایی، مستقل از پلتفرم بودن و ایمنی مورد بررسی قرار گرفت. علاوه بر این، به فرایند برنامه نویسی اندروید با جاوا و مزایا و معایب آن پرداخته شد. در ادامه نیز آموزش برنامه نویسی اندروید با جاوا به صورت پروژه محور و در قالب ساخت اپلیکیشن اندروید در محیط اندروید استودیو ارائه شد.