Information about programming
2 subscribers
1 photo
1 file
1 link
.....
Download Telegram
"Muvaffaqiyatga erishish uchun har qanday o'ylangan g'oya qurbonlik talab kiladi"
Qurbonlik-bu intizom, sabr-toqat, mag'lubiyat, o'z ustida soatlab ishlash, o'zi uchun qulay muhitdan chiqish....... sizningcha bu ?
Andriod da #Intent va #IntentFilter haqida!

#Intent - bu boshqa ilova komponentidan so'rov jo'natish (request) uchun foydalanishingiz mumkin boʻlgan xabar almashish obyektidir. Intent-lar komponentlar o'rtasidagi aloqani bir necha usul bilan osonlashtirsa-da, 3 ta asosiy foydalanish holatlari mavjud :

1. Activity-ni ishga tushirish.
Activity bu ilovadagi yagona ekranni ifodalaydi, Intent orqali biz Activity-ni ishga tushirishimiz mumkin.

Misol :

var intent = Intent(this, SecondActivity::class.java)
startActivity(intent)


putExtra()

funksiya yordamida qo'shimcha ma'lumot qo'shish mumkin.



2. Service-ni ishga tushirish.
#Service - foydalanuvchi interfeysisiz background-da operatsiyalarni bajaradigan komponent bo'lib, u background jarayon (process) deb ham ataladi.

qoshimch malumot - 👉 Android-da Service-lar haqida qisqacha.

3. Broadcast-ni yetkazish.
#Broadcast - bu har qanday ilova qabul qilishi mumkin bo'lgan xabar. Android-da tizim turli xil broadcast tizim hodisalarini yetkazib beradi, masalan, qurilma zaryadlashni boshlagani, samolyot (Pilot) rejimi o'chgani yoki yoqilgani va hokazo.

qoshimch malumot - 👉 Broadcast-lar haqida qisqacha.

Intent #turlari.
Androidda intent-lar 2 turi mavjud:

1. Explicit intent. (Aniq intent).
2. Implicit intent. (yashirin intent).


#Explicit intent-lar odatda bitta ilova ichida yangi Activity, Service yoki Broadcast receiver-ni ishga tushirish uchun ilova ichida qo'llaniladi.

Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent);


#Implicit intent-lar odatda boshqa ilovada Activity, Service yoki Broadcast receiver-ni ishga tushirish uchun ishlatiladi.


Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "Hello, this is some text to share.");
startActivity(Intent.createChooser(intent, "Share via"));


Batafsil malumot, misollar bilan - 👉 link

#IntentFilter - ilovaning Manifest faylidagi ifoda (expression) boʻlib, komponent qabul qilmoqchi boʻlgan intent-lar turini belgilaydi.

Implicit intent-ni yaratganingizda, Android tizimi intent mazmunini qurilmadagi boshqa ilovalarning manifest faylida e'lon qilingan intent filtrlari bilan solishtirish orqali ishga tushirish uchun tegishli komponentni topadi. Agar intent, intent filtriga mos kelsa, tizim ushbu komponentni ishga tushiradi va unga Intent obyektini yetkazib beradi.

Intent filter ichida <action>, <category> va <data> elementlari orqali bir qancha konfiguratsiyalarni belgilash mumkin. Intent filter ichida eng kamida 1 ta action bo'lishi shart. Aks holda filter hech qanday Intent obyektini qabul qilmaydi.
jvm1.png
5.6 KB
#Java #JDK #JVM #JRE

JVM (Java Virtual Machine) - bu Java dasturlarini boshqaradigan, ularni bayt-koddan operatsion tizim tushunadigan mashina kodiga aylantiruvchi virtual mashina.


JVM (Java Virtual Machine) - bu kompyuterga Java tilida dasturlarni, shuningdek Java bayt-kodiga kompilyatsiya qilingan boshqa tillarda yozilgan dasturlarni ishga tushirish imkonini beruvchi virtual mashina.
Java-da dastur yozishda dasturning dastlabki kodi kompyuterda bevosita bajarilmaydigan bayt-kodga kompilyatsiya qilinadi. Buning o'rniga, bayt kod JVM o'rnatilgan har qanday mashinada talqin qilinishi va bajarilishi mumkin bo'lgan oraliq tildir. Shunday qilib, baytkod - bu platformadan mustaqil til bo'lib, Java dasturlarini har biri uchun kodni qayta kompilyatsiya qilmasdan turli xil operatsion tizimlar va apparat platformalarida ishlashga imkon beradi.

Agar siz Java dasturlarini ishga tushirishni istasangiz, sizga JRE kerak

JRE (Java Runtime Environment) - bu JVM, Java sinf kutubxonalari va Java ilovalarini ishga tushirish (ishlash) uchun zarur bo'lgan boshqa komponentlarni o'z ichiga olgan dasturiy ta'minot to'plami. Bu Java dasturchilariga o'z dasturlarini istalgan platformada ishga tushirish uchun ish vaqti muhitini ta'minlaydi.


JDK (Java Development Kit) - bu JRE, Java kompilyatori (javac), tuzatuvchi (jdb) va Java ilovalarini ishlab chiqish uchun boshqa vositalarni o'z ichiga olgan dasturiy ta'minot ishlab chiqish to'plami. JDK Java dasturlarini yozadigan va kompilyatsiya, debug va loyihalarni boshqarish vositalaridan foydalanadigan ishlab chiquvchilar uchun mo'ljallangan.


Shunday qilib, JVM JRE ning bir qismi, JRE esa JDK ning bir qismidir. JDK Java dasturlarini ishlab chiqish va ishga tushirish uchun barcha kerakli komponentlarni, jumladan JRE va boshqa ishlab chiqish vositalarini o'z ichiga oladi.
JDK, JRE va JVM o'rtasidagi farq
Keling, JDK, JVM va JRE hududlari o'rtasidagi asosiy farqni ko'rib chiqaylik.

1. JDK ishlab chiqish uchun, JRE esa java dasturlarini bajarish uchun.
2. JDK va JREda JVM mavjud, shuning uchun biz java dasturimizni ishga tushiramiz.
3. JVM Java dasturlash tilining yuragi bo'lib, platforma mustaqilligini ta'minlaydi.
4. JDK JREni o'z ichiga oladi, shuning uchun agar sizda JDK bo'lsa, java dasturlarini bajarish va yangilarini ishlab chiqish uchun ham foydalanishingiz mumkin.
5. JRE JDK da mavjud kompilyator va tuzatuvchi kabi ishlab chiqish vositalarini o'z ichiga olmaydi.
6. Agar siz shunchaki java dasturini ishga tushirmoqchi bo'lsangiz, sizga JRE kerak. Agar java dasturini ishlab chiqmoqchi bo'lsangiz, sizga JDK kerak.
7. JVM barcha platformalar uchun umumiy, JRE va JDK esa har bir platforma uchun xosdir.
8. JDK va JRE JVM ning turli versiyalariga ega bo'lishi mumkin, ular ishlashi va funksionalligi jihatidan farq qilishi mumkin.

Umuman olganda, JDK, JRE va JVM java ilovalarini ishlab chiqish va ishga tushirish uchun muhim komponentlardir. Ular platforma mustaqilligini va kuchli va samarali Java ilovalarini yaratish qobiliyatini ta'minlash uchun birgalikda ishlaydi.

#Savol: Agar men JDK ni ustanovka qilsam, har doim u bilan birga JRE ham ustanovka bo'ladimi?
#Javob: Ha, JRE Java virtual mashinasi JVM va Java dasturlarini ishga tushirish uchun zarur bo'lgan boshqa komponentlarni o'z ichiga olgan alohida paket bo'lib, JDK ni o'rnatganda -> JRE va qo'shimcha ishlab chiqish vositalarini o'z ichiga oladi.

#Savol: JVM qanday qilib bytecode .class fileni yaratadi?
#Javob: Java kompilyatori (javac) yordamida .java faylini kompilyatsiya qilganingizda, kompilyator .java faylidagi ko'rsatmalarni ifodalovchi bayt-kodni o'z ichiga olgan .class faylini hosil qiladi.

Men JRE ni alohida ustanovka qila olamanmi?
Javob: Ha, JRE bu alohida paket bo'lib, JDK ni ustanovka qilmasdan ham o'rnatish mumkin.
#Java #Primitive_types
Java’da primitive data types turli qiymatlarni saqlaydi va har bir turi o'zining aniq hajmiga ega. Bu turlar xotirada qat'iy joy egallaydi, ya'ni ular platformaga bog'liq emas. Quyida har bir primitiv turi va ularning xotirada qancha joy egallashi ko'rsatilgan:
boolean turi haqida Java xotirada aniq joy ajratmaydi, u kompilyator optimizatsiyasiga bog‘liq bo‘lishi mumkin. Ko‘pincha bu uchun 1 bitdan kamida 1 baytgacha bo‘lgan joy ajratiladi.
#TypeCasting #Upcasting va #Downcasting

Type casting — bu bir turdagi qiymatni boshqa turga o'zgartirish jarayoni. Java’da primitiv turlar uchun ikkita casting mavjud: upcasting va downcasting.

1.Upcasting (Katta turga aylantirish):
Upcasting — kichikroq primitiv turdagi qiymatni kattaroq primitiv turga o'zgartirish jarayoni.
Masalan, byte turidagi qiymatni int turiga o'tkazish.
Upcasting avtomatik ravishda amalga oshiriladi va bu widening casting deb ataladi.
Misollar:

#java

int myInt = 100;
long myLong = myInt; // Upcasting avtomatik ravishda

Qoidalar:

byte → short → int → long → float → double
No data loss: Ya'ni hech qanday ma'lumot yo'qolmaydi.
2. Downcasting (Kichik turga aylantirish):
Downcasting — kattaroq primitiv turdagi qiymatni kichikroq primitiv turga o'zgartirish jarayoni.
Masalan, int turidagi qiymatni byte turiga o'tkazish kerak bo'lganda foydalaniladi.
Downcasting avtomatik emas, va bu jarayonni qo'lda (explicit) bajarish kerak. Buning sababi — qiymat hajmi kattaroq bo'lgani uchun ma'lumot yo'qolishi mumkin.
Misollar:


long myLong = 1000L;
int myInt = (int) myLong; // Downcasting explicit (qo'lda) tarzda amalga oshiriladi

Qoidalar:

double → float → long → int → short → byte
Data loss risk: Kichikroq turga aylantirishda qiymatni yo'qotish ehtimoli bor.
#java #String #StringPool
Java tilidagi String klassi haqida gapirganda, bu eng ko‘p ishlatiladigan va maxsus ob'ektlardan biridir. Stringlar o‘zgarmas (immutable), ya'ni ular bir marta yaratilgandan keyin o‘zgartirilmaydi. Stringlarni yaratishda ikkita asosiy usul mavjud: new kalit so'zi orqali va literal ko'rinishda. Ularning o‘zaro farqi va String pool haqida tushuncha beraman.

1. String yaratish usullari:
a) Literal ko‘rinishda String yaratish
Agar string literal ko‘rinishda yaratilsa, u avtomatik ravishda String Pool deb ataladigan maxsus xotira maydoniga qo‘yiladi.

Misol:

String s1 = "Hello";
String s2 = "Hello";

Yuqoridagi misolda s1 va s2 bir xil stringni ("Hello") literal orqali yaratmoqda. Literal bilan yaratilgan stringlar String Pool ga joylashtiriladi, va bir xil qiymatli string bo‘lsa, yangi string yaratmaydi, balki mavjud stringni qaytaradi. Ya'ni, s1 va s2 bir xil xotira manzilini ko‘rsatadi.

b) new kalit so‘zi orqali String yaratish
Agar new kalit so‘zi orqali string yaratilsa, har safar yangi string ob'ekti Heap xotira maydonida yaratiladi, va u String Pool’da mavjud bo‘lsa ham yangi ob'ekt hosil qiladi.

Misol:

java
String s3 = new String("Hello");
String s4 = new String("Hello");

Yuqoridagi misolda s3 va s4 qiymati bir xil bo‘lsa ham, ularning har biri alohida ob'ekt hisoblanadi. Ya'ni, s3 va s4 har xil xotira manziliga ega bo‘ladi.

2. String Pool nima?
String Pool — bu Java'dagi maxsus xotira maydoni bo‘lib, unda string literal orqali yaratilgan barcha stringlar saqlanadi. Poolning asosiy maqsadi xotira tejamkorligini ta’minlashdir, ya'ni bir xil qiymatli stringlar bir marta yaratiladi va keyingi safar o‘sha qiymatli stringga murojaat qilinganda yangi ob'ekt yaratmasdan, mavjud ob'ekt qaytariladi.


String Pool qanday ishlaydi:
Literal ko‘rinishdagi stringlar String Pool’da saqlanadi.
Agar string literal bilan yaratilgan bo‘lsa va xuddi shunday string Pool’da mavjud bo‘lsa, yangi ob'ekt yaratmaydi, balki mavjud stringdan foydalanadi.
new kalit so‘zi bilan string yaratilganda, u String Pool’da mavjud bo‘lishidan qat'i nazar, yangi ob'ektni Heap xotirasida yaratadi.
3. Misollar bilan String Pool tushunchasi:
java

public class Main {
public static void main(String[] args) {
// Literal orqali yaratilgan string
String s1 = "Hello";
String s2 = "Hello";

// new orqali yaratilgan string
String s3 = new String("Hello");
String s4 = new String("Hello");

// Tekshirish
System.out.println(s1 == s2); // true - bir xil ob'ekt String Pooldan
System.out.println(s1 == s3); // false - s3 yangi ob'ekt
System.out.println(s3 == s4); // false - har biri yangi ob'ekt
}
}


Xulosa:
String literal String Pool’da saqlanadi va xotiradan tejamli foydalanadi.
new orqali yaratilgan stringlar har safar yangi ob'ekt hosil qiladi.
String Pool bir xil qiymatli stringlarni bir marta yaratib, xotira tejamkorligini ta'minlaydi.