Loading...

Android uchun mobil dasturlashga kirish: qaysi tillarni o'rganishdan boshlash zarur?



Mobil dasturlash sohasi juda tez rivojlanmoqda, shu bilan birga smartfonlar dunyodagi texnologik tovarlar bozorida peshqadamlikni ushlab turib, ularning barcha maishiy texnika va elektronika o’rtasidagi ulushi 44 foizni tashkil qiladi. Gartner analitik kompaniyasi ma’lumotlariga ko’ra, 2018 da 1,56 milliard smartfon iste’molchilar tomonidan sotib olingan.

Shu bilan birga, Android operatsion tizimi yildan-yilga mashxurligi oshib borib, o’tgan 2018 yilda dunyodagi barcha smartfonlarning 80% dan ortig’i Android operatsion tizimida ishlab chiqarildi. Agarda siz smartfonlardan tashqari — soatlar, planshetlar, televizorlar, terminallar va hatto muzlatgichlarni ham mavjudligini hisobga olsangiz, Android ulushi yanada yuqori bo’ladi.

Biroq, operatsion tizimning bunday ortib borayotgan mashhurligini hisobga olgan holda, foydalanuvchi talablari ham doimiy ravishda o’zgarib, ortib boradi. Hozirgi kun insonlari har qanday vazifani bajarishi kerak — bankdagi xizmatlarni to’lash, oziq-ovqat buyurtma qilish, do’stlar bilan suhbatlashish, o’yin o’ynab vaqtini o’tkazish va hokazo. Bunday ilovalar doimo Google Play do’konida joylab kelinyapti.

Aynan shuning uchun Androidda mobil ilovalar ishlab chiquvchi dasturchi kasbining rivojlanishi ulkan salohiyatga ega, siz eng yirik kompaniyalarda ishlashingiz va minglab odamlar foydalanadigan foydali ilovalarni yaratishingiz mumkin. Indeed ma’lumotlariga ko’ra, Androidda dasturchilarning Amerika Qo’shma Shtatlaridagi o’rtacha ish haqi yiliga - $115,779$, Rossiyaning Headhunter tizimida esa har oyda 500 dan ortiq android dasturchilari bo’sh ish o’rinlarini nashr etadi. O’z sohasini yaxshi biladigan Android mutaxassis, albatta, ishsiz qolmaydi.

Ushbu maqolada, agar siz Android dasturchi bo’lishga qaror qilsangiz, mobil dasturlashni qayerdan boshlashni tushuntirib o’taman. Birinchi navbatda qaysi tillarni o’rganish kerak? Ta’limni qanday bosqichlarga ajratish kerak? Shuningdek, zamonaviy mutaxassis bir vaqtning o’zida bir nechta dasturlash tillarini bilishi kerakmi degan savolga javob berib o’taman.


Nimadan boshlash kerak?

Mobil dasturlashning ko’plab tillari mavjud, ammo men eng asosiy va an’anaviy Java — dan boshlab o’rganishni maslahat beraman. Ushbu til 2002 yildan boshlab dasturchilar orasida barqaror 1-chi yoki 2-chi mashhurlikni saqlab keladi(TIOBE dasturlash tillari indeksiga asoslangan holda).

Undagi dasturlash asoslarini o’rganganib bo’lganingizdan so’ng, qolgan ixtiyoriy tillarga o’tishingiz ancha oson kechadi. Biroq, men birdaniga bir nechta tilni o’rganmaslikni maslahat bergan bo’lar edim. Avvaliga bitta narsa bilan shug’ullanish yaxshi va shundan keyingina boshqasiga o’tish eng to’g’ri yo’ldir.

Nima uchun Java?

Java-da ko’plab loyihalar va ilovalar, shuningdek, yirik korporativ dasturlar, masalan, onlayn banklar yozilgan. Java klassik, qat’iy tiplarga ajratilgan tildir va shuning uchun boshlang’ich darajadagi o’rganuvchilarga mos keladi.

Java-ning afzalliklarini quyidagicha qayd etgan bo’lar edim:

  • Java kodi ko’p so’zlik va uzun. Bir tomondan, bu sizni qo’rqitishi mumkin, ammo bunda ham o’ziga yarasha plyus tomoni bor. Kodni yozish jarayonida hamma narsa juda aniq va ravshan bo’ladi, sizning xato qilish yoki kutilmagan xatti-harakatlarga qo’l urishingiz ehtimoli juda kam.
  • Java-da til tuzilmalari juda kam va ularning aksariyati bir xilda talqin etiladi (ya’ni, bir xil shablonda yoziladi).
  • Java-da eski versiyalar qo’llab quvvatlanishi mavjud, ya’ni tilning yangi versiyasi chiqarilganda, eski kodda hech narsa buzilmaydi. Masalan, bunaqa ko’ngilbuzarlik ko’proq Swift dasturlash tilida uchrab turadi.
  • Yangi boshlanuvchilar uchun Java mashhurligining ko’plab afzalliklari mavjud. Eng kamida, u katta jamoaga (community) ega. Bu shuni anglatadiki, tafsilotlarni tushunadigan va o’rganishga yordam beradigan odamlarni topish juda oson. Misol uchun, do’stlar orasida, stackoverflowda, githubda yoki ijtimoiy tarmoqlarda.
  • Bundan tashqari, doimiy ravishda yangilanib turadigan ko’plab maqolalar, videolar va kitoblar ham mavjud, bu shuni anglatadiki, ekzotik tillardan ko’ra ushbu tilda yordam topish osonroq bo’ladi.

Shuning uchun, Java — siz dasturlash o’rganish boshlash kerak bo’lgan tildir. Ushbu til yordamida mobil dasturlashni o’rganishingizni, o’zingizning birinchi mobil ilovangizni yozib tugatishingizni, so’ngra boshqa dasturlash tillarini o’rganishingizni tavsiya qilgan bo’lar edim.

Qanday qilib Java da kod yozishni boshlash kerak?

Agar siz Java-ni noldan o’rganmoqchi bo’lsangiz, darhol o’zingizga savol bering, amaliyotga qancha vaqt berishga tayyorsiz. Chunki har qanday dasturlash tili ingliz tiliga o’xshaydi: faqat kitoblar va nazariyalar o’rganilmaydi.

Birinchidan, asosiy dasturiy tushunchalarni tushunishingiz kerak. Ular barcha tillarda o’xshash, o’zgaruvchilar va ularning turlari (tiplari) bilan tanishishdan boshlang, keyinchalik shartli operatorlar, sikllar, funksiyalar va massivlar bilan tanishib chiqing. Bu siz kod yozishingiz uchun foydalanadigan tilning sintaktik konstruktorlaridir.

OYD - obyektga yo’naltirilgan dasturlashga (OOP - Object Oriented Programming) e’tibor berish muhimdir. Bu xususiyat va metodlarni birlashtirib, kodda haqiqiy dunyodagi narsalarni ta’riflashning paradigmasidir (yondashuv, g’oya). Misol uchun, har bir avtomobil o’ziga xos xususiyatlarga ega: tovar, yoqilg’i turi, quvvat, ishlab chiqarish yili — bu avtomobilning xususiyatlari. O’z navbatida, har bir mashina bir qator funksiyalarga ham ega: yurish, tormozlash, faralar nurini boshqarish va boshqalar.

Ushbu ma’lumotlarni o’rganish bosqichida oddiy kalkulyator yoki o’yin kabi birinchi dasturni yaratish uchun yetarli bo’ladi deb o’ylayman.

Keling, yangi boshlanuvchilar o’rganish boshlanishida tahlil qilishi uchun bitta kodning oddiy misolini keltiraylik. Bizning vazifamiz ijtimoiy tarmoqdan xabarni ko’rsatish uchun bitta karta yaratib, uni ekranga chiqarish bo’lsin. Java kodi quyidagicha ko’rinishda bo’ladi:

// dto/Post.java fayli
public class Post {
    private long id;
    private String author;
    private String content;
    private boolean likedByMe;

    public Post(long id, String author, String content) {
        this(id, author, content, false);
    }

    public Post(long id, String author, String content, boolean likedByMe) {
        this.id = id;
        this.author = author;
        this.content = content;
        this.likedByMe = likedByMe;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public boolean isLikedByMe() {
        return likedByMe;
    }

    public void setLikedByMe(boolean likedByMe) {
        this.likedByMe = likedByMe;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Post post = (Post) o;
        return id == post.id &&
                likedByMe == post.likedByMe &&
                Objects.equals(author, post.author) &&
                Objects.equals(content, post.content);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, author, content, likedByMe);
    }

    @Override
    public String toString() {
        return "Post{" +
                "id=" + id +
                ", author='" + author + '\'' +
                ", content='" + content + '\'' +
                ", likedByMe=" + likedByMe +
                '}';
    }
}


// activity/MainActivity.java fayli
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Post post = new Post(1, "Vasya", "First Post in our network!");

        final TextView authorTv = findViewById(R.id.authorTv);
        authorTv.setText(post.getAuthor());

        final TextView contentTv = findViewById(R.id.contentTv);
        contentTv.setText(post.getContent());

        final ImageButton likeBtn = findViewById(R.id.likeBtn);
        if (post.isLikedByMe()) {
            likeBtn.setImageResource(R.drawable.ic_favorite_active_24dp);
        }

        likeBtn.setOnClickListener(view -> {
            // Qisqartirish uchun yozilmadi
        });

        final ImageButton shareBtn = findViewById(R.id.shareBtn);
        shareBtn.setOnClickListener(view -> {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_TEXT, post.getAuthor() + "\n\n" + post.getContent());
            intent.setType("text/plain");
            startActivity(intent);
        });
    }
}

Agar siz allaqachon dasturlash asoslarini bilsangiz, unda 2 hafta davomida Java-da yozishni boshlashingiz mumkin. Tilning har bir jihati aniq va bir xil qilib belgilab qo’yganligi sababli, o’rganish muammosiz o’tadi. Agar siz Java-ni noldan o’rganmoqchi bo’lsangiz, kamida 1 oy vaqtni dasturlash asoslari va amaliyotga qo’yishni tavsiya bergan bo’lardim.

Endi, Java o’rganishning eng qulay usulini tanlash masalasiga to’xtalamiz. Men o’z faoliyatimdan kelib chiqqan holda bir nechta variantni taklif qilaman. Birinchisi: universitetda dasturchi mutaxassisligi olish. Bir tomondan, bu nafaqat Java, balki boshqa tillar va dasturlash turlarini ham bilib olish imkonini beradi, siz asosiy dasturiy bilimlarga ega bo’lasiz. Ammo universitetda o’qish-Androidda tezda dasturlashni boshlashni istaganlar uchun juda uzoq va murakkab yo’ldir.

Ikkinchi variant: kitoblarni, videolarni va maqolalarni mustaqil ravishda o’rganish. Yuqorida aytib o’tganimdek, internetda mobil dasturlash va ayniqsa Java uchun juda ko’p materiallar mavjud. Ushbu ta’lim usuli sabr-toqat va qat’iyatlilikka ega bo’lganlar uchungina o’z natijasini beradi. Hamma narsani qunt bilan o’rganish va tushunish talab etiladi. Agar sizning bilim darajangiz nol bo’lsa, unda asosiy tushunchalar va konstruksiyalar birinchi navbatda juda murakkab va tushunarsiz ko’rinishi mumkin. Bundan tashqari, amaliyotsiz nazariya to’liq kartinani bera olmaydi.

Uchinchi variant ham bor: qo’shimcha kurslarda kerakli bilim va ko’nikmalarni olish, masalan, onlayn. Hozirda Java kurslari har xil maktablarni taklif qilmoqda va siz o’zingiz uchun dasturning murakkabligi va davomiyligini tanlashingiz mumkin. Ushbu yondashuvning afzalligi shundaki, siz Mentor bilan birga o’qiysiz. U uy vazifasini tekshiradi va siz hali ham yopishingiz kerak bo’lgan bilimlardagi bo’shliqlarni ko’rsatadi. Bunday dasturning standart davomiyligi 4-5 oy davom etadi. Lekin kurslarga e’tiborliroq bo’lishni tavsiya qilardim, sababi ko’pchilik o’rganuvchilar o’z mentorining qolipiga tushib qoladi va u qolipdan tashqaridagi hayotni manqurtlarcha xato deb o’ylashni boshlaydi.

Lekin Java o’rganishda to’xtamaslik kerak. Siz boshlang’ich asoslarni mustahkamlaganingizdan so’ng, birinchi dasturni yozdingiz ham deylik. Keyinchalik, men bugungi kunda mashhurlik kasb etadigan va bozorning yirik o’yinchilaridan tan olinadigan boshqa tilni o’rganishni maslahat beraman.

Keyingi bosqich — Kotlin

Kotlin Java bilan maksimal darajada mos keladi va shuning uchun uni o’rganish jarayoni siz uchun juda oson va tez bo’ladi.

Kotlin tili yosh til hisoblanadi. 2011 yildan buyon mavjud bo’lsa-da, faqat 2019 may oyida Google uni Android platformasi uchun ustuvor dasturlash tili deb e’lon qildi va Google Android-ni ishlab chiqayotganini hisobga olsak, ushbu tadbirdan so’ng Kotlinning dasturchilar orasida mashhurligi tez o’sib bormoqda. Tendentsiyalardan so’ng, ko’plab ish beruvchilar Kotlin bilimlarini talab qilishni boshlab yuborganlar.

Google tomonidan tan olinishidan tashqari, Kotlinning mobil rivojlanishdagi mashhurligi qulaylik bilan bog’liq.

  • Tilning Java bilan to’liq muvofiqligi bor. Asosan, loyihaning yarmini bir xil tilda yozishingiz va keyin boshqasiga o’tishingiz mumkin. O’tish tufayli mavjud kod, kutubxonalar va Android SDK-ga bo’lgan bog’liqliklar yo’qolmaydi.
  • Kotlin kodi Java-ga qaraganda ancha qisqa va mazmunli. 4-5 satrda Java-da yozishingiz mumkin bo’lgan hamma narsa Kotlin-da bitta satrga mos keladi. Ba’zan dasturchilar tezlashishni istaydilar va Java-dagi kabi dardini birovga aytgandek kod yozib o’tirmaydilar.
  • Java-ning yangi versiyalari doimo paydo bo’lishiga qaramasdan, bu Android-ning rivojlanish dunyosiga ta’sir qilmaydi, bu yerda hamma narsa Java 6 darajasida saqlanadi. Va yangi imkoniyatlarni ishlatish uchun vaqtinchalik yechimlar mavjud bo’lsa-da, Kotlin-da, yangi xususiyatlar tez-tez paydo bo’ladi.
  • Kotlin — Android Studio-ning asosiy qismida joylashgan Intellij Idea IDE-ning dasturchilari, ya’ni JetBrains kompaniyasining ish mahsulidir. Buning natijasida Kotlin IDE tomondan juda yaxshi qo’llab-quvvatlanadi: aqlli maslahatlar, kodni qayta ishlash, fayllarni navigatsiya qilish va h.k.

Kotlin-ni o’rganish oson

Kotlin-ni Java-ga “shiringina qo’shimcha” deb nomlash mumkin, ular juda o’xshash. Shuning uchun, asosiy til bilan tanish bo’lganlar, Kotlinni o’rganish uchun maksimal 1-2 haftani sarflasa yetarli bo’ladi. Shu bilan birga, tilning barcha xususiyatlarini darhol ishlatishingiz shart emas, siz “Java uslubida” yozishni boshlashingiz va asta-sekin yangisini o’rganishingiz, uni kodingizga kiritishingiz mumkin.

Shunday qilib, dasturlashni boshlovchilar uchun JetBrains dasturchilari Kotlin haqida rasmiy resurslarga murojaat qilishni maslahat berishadi. Ular yangi boshlanuvchilar uchun materiallar kutubxonalariga, shuningdek, til tarixining batafsil tavsiflariga va konstruksiyalarning o’ziga xos xususiyatlariga ega. Faqat qiyinchiligi shundaki - resurs ingliz tilidadir. Biroq, bu texnik til va ko’pgina atamalar, asosan, rus va o’zbek tillariga tarjima qilinmaganligi sababli, bu bilan hech qanday muammo bo’lmasligi kerak.

Bundan tashqari, Google-dan gaydni o’qishni taklif qilaman, bu yerda Java-da yozilgan dasturni Kotlin-ga qanday tarjima qilishni batafsil bayon qilingan. Maqolada fayllarni kengaytma bilan qanday aylantirish haqida gap boradi. Java fayllar .java kengaytmasida va Kotlin fayllar uchun .kt kengaytmalar qo’llaniladi. Bundan tashqari Android SDK bilan ishlashda Java va Kotlindagi kod qismlarini taqqoslashlar ham gaydda keltirib o’tilgan.

Men ham yuqorida Java-da yozilgan kodni Kotlin-da ham yozib ko’rsatmoqchiman, bitta solishtirib ko’ring:

// dto/Post.kt fayli
data class Post(
    val id: Long,
    val author: String,
    val content: String,
    val likedByMe: Boolean = false
)


// activity/MainActivity.kt fayli
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Ma'lumotlar internetdan olinishi lozim, lekin men misolni kichraytirdim
        val post = Post(1, "Netology", "First post in our network!")
        // Kotlin Android Extensions yordami tufayli hech qanday findViewById ishlatilmaydi
        authorTv.text = post.author
        contentTv.text = post.content

        if (post.likedByMe) {
            likeBtn.setImageResource(R.drawable.ic_favorite_active_24dp)
        }

        // lambda
        likeBtn.setOnClickListener {
            // Qisqartirish uchun hech narsa yozilmadi
        }

        shareBtn.setOnClickListener {
            val intent = Intent().apply {
                // lambda with receiver
                action = Intent.ACTION_SEND
                putExtra(Intent.EXTRA_TEXT, """
                    ${post.author}

                    ${post.content}
                """.trimIndent())
                type = "text/plain"
            }
            startActivity(intent)
        }
    }
} 

Shuni esda tutingki, agarda siz Java asoslarini bilsangiz va unga eng oddiy ilovalar yozsangiz, Kotlinni o’rganish uchun bir xil yo’lni bosib o’tishingiz shart emas. Siz umumiy qabul qilingan konstruktorlarni, o’zgaruvchilarni va ma’lumotlar turlarini (tiplarini) bilsangiz bas. Java-ga juda o’xshash kodni yozishni boshlashingiz mumkin, keyin Kotlinni o’rganish jarayonida undan ko’proq ishlar qilishni boshlashingiz mumkin.

Ushbu maqolada Android mobil dasturlash sohasiga kirishning aniq va universal usulini taklif qilindi. Birinchi bosqich Java-ni uzoq, ammo an’anaviy va tushunarli sintaktik konstruktsiyalar bilan o’rganishdir. Ularni o’zlashtirganingizdan keyin siz “shakar” Kotlinga o’tishingiz mumkin. Bunday tartib siz uchun qulay bo’ladi deb o’ylayman.

Mobil dasturlashning eng mashhur ikki tilini bilish — Java va Kotlin-boshqa Android dasturchilari orasida sizga foyda keltiradi. Yuqorida aytib o’tilganidek, ish beruvchilar Kotlin dasturlash tilida bilimi bor dasturchilarni izlaydi, va Kotlin bilimlari Java-siz o’zlashtirilishi mumkin emas. Har qanday holatda, siz va sizning kelajakdagi jamoangizni qiziqtiradigan narsalarni tanlash uchun turli tillarda mobil ilovalarni yozishni o’rganishingiz kerak.