<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fazliddin Xamdamov</title>
    <description>The latest articles on DEV Community by Fazliddin Xamdamov (@fazliddinxamdamov).</description>
    <link>https://dev.to/fazliddinxamdamov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F795694%2F6c8909dc-213b-47df-a3e2-f41ecc09f251.jpg</url>
      <title>DEV Community: Fazliddin Xamdamov</title>
      <link>https://dev.to/fazliddinxamdamov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fazliddinxamdamov"/>
    <language>en</language>
    <item>
      <title>Dasturlashda Mutable, Immutable obyektlar</title>
      <dc:creator>Fazliddin Xamdamov</dc:creator>
      <pubDate>Thu, 17 Mar 2022 08:25:21 +0000</pubDate>
      <link>https://dev.to/fazliddinxamdamov/dasturlashda-mutable-immutable-obyektlar-pk6</link>
      <guid>https://dev.to/fazliddinxamdamov/dasturlashda-mutable-immutable-obyektlar-pk6</guid>
      <description>&lt;p&gt;&lt;em&gt;Mutable obyektlar yaratilganidan keyin uni o'zgartirish mumkin, immutable obyektlarda esa aksincha o'zgartirib bo'lmaydi.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Javada (Strindan tashqari) hamma obyektlar default holatda mutable hisoblanadi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public class IntegerPair {
    int x;
    int y;

     IntegerPair(int x, int y) {
        this.x = x;
        this.y = y;
     }
 }

 IntegerPair p = new IntegerPair(5, 10);
 // p.x = 5, p.y = 10

 p.x = 50;
 // p.x = 50, p.y = 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Mavjud ob'ektlarni o'zgarmas qilishning hech qanday usuli yo'q. Agar ob'ekt yakuniy deb e'lon qilingan bo'lsa ham, uning field(atribut)larini o'zgartirish mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class IntegerPair {
    int x;
    int y;

    IntegerPair(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

final IntegerPair p = new IntegerPair(5, 10);
// p.x = 5, p.y = 10

p.x = 50;
// p.x = 50, p.y = 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Ya'ni, agar siz o'z classingizmi chaqirib, barcha fieldlarini yakuniy(final) va shaxsiy(private) qilish orqali uning ob'ektlarini o'zgarmas qilishingiz mumkin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class IntegerPair {
    private final int x;
    private final int y;

    IntegerPair(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

IntegerPair p = new IntegerPair(5, 10);

p.x = 50;
// Compilation error: cannot assign a value to a final variable
// kompiler xatosi final o'zgaruvchinga qiymat berolmaydi 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;br&gt;
String tilga qarab oʻzgaruvchan(mutable) yoki oʻzgarmas(immutable) boʻlishi mumkin.&lt;/p&gt;

&lt;p&gt;Java-da satrlar o'zgarmasdir.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
Har qanday stringni o'zgartirganingizda (masalan: qo'shimcha belgini qo'shganizda, uni kichik harflarga aylantirganizda, ikkita belgini almashtirganizda), siz aslida yangi va alohida nusxani yaratgan bo'lasi,ishoning :)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  String first = "first";

System.out.println(first.hashCode());
// prints something

first = first + "!";

System.out.println(first.hashCode());
// different string, different hash code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ammo ba'zi boshqa tillarda, masalan, C++, stringlar o'zgaruvchan bo'lishi mumkin va biz ularni to'g'ridan-to'g'ri o'zgartirishimiz mumkin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  string testString("mutable?");

testString[7] = '!';
// testString is now "mutable!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;br&gt;
Agar siz mutable ya'ni o'zgartirsa bo'ladigan stringdan foydalanmoqchi bo'lsangiz , sizga StringBuilder/StringBuffer yordamga keladi.StringBuilder dan foydalanganingiz maqul chunki u buffer-ga qaraganda samaraliroq.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  StringBuilder mutableString = new StringBuilder("mutable?");

mutableString.setCharAt(7, '!');
// still the same object!
// mutableString is now "mutable!"

// convert to an immutable string
String immutableString = mutableString.toString();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ammo siz stringni o'zgaruvchan char-lar qatoriga aylantirishingiz ham mumkin.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;O'zgaruvchan ob'ektlar(mutable) yaxshi, chunki siz yangi ob'ektni ajratmasdan o'z joyida o'zgartirishlar kiritishingiz mumkin. Ammo ehtiyot bo'ling - ob'ektga o'z joyida o'zgartirish kiritganingizda, ushbu ob'ektga qilingan barcha havolalar endi o'zgarishlarga uchraydi.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mutable</category>
      <category>immutable</category>
      <category>object</category>
    </item>
    <item>
      <title>JDK vs JRE vs JVM: Asosiy Farqlari</title>
      <dc:creator>Fazliddin Xamdamov</dc:creator>
      <pubDate>Tue, 15 Mar 2022 06:44:34 +0000</pubDate>
      <link>https://dev.to/fazliddinxamdamov/jdk-vs-jre-vs-jvm-asosiy-farqlari-1noa</link>
      <guid>https://dev.to/fazliddinxamdamov/jdk-vs-jre-vs-jvm-asosiy-farqlari-1noa</guid>
      <description>&lt;p&gt;&lt;strong&gt;JDK o'zi nima?&lt;/strong&gt;&lt;br&gt;
JDK - bu appletalar va Java ilovalarini yaratish uchun foydalaniladigan dasturiy ta'minot, ishlab chiqish muhiti. JDK ning to'liq shakli Java Development Kit hisoblanadi. Java dasturchilari undan Windows, macOS, Solaris va Linuxda foydalanishlari mumkin. JDK ularga Java dasturlarini kodlash va ishga tushirishda yordam beradi. Bitta kompyuterda bir nechta JDK versiyasini o'rnatish mumkin.&lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JRE&lt;/strong&gt;&lt;br&gt;
JRE - bu boshqa dasturlarni ishga tushirish uchun mo'ljallangan dasturiy ta'minotning bir qismi. Unda class kutubxonalari, yuklovchi classlar va JVM mavjud. Oddiy qilib aytganda, agar siz Java dasturini ishga tushirishni istasangiz, sizga JRE kerak. Agar siz dasturchi bo'lmasangiz, JDK-ni o'rnatishingiz shart emas, Java dasturlarini ishga tushirish uchun faqat JRE. Biroq, barcha JDK versiyalari Java Runtime Environment bilan birga keladi, shuning uchun JREni shaxsiy kompyuteringizga alohida yuklab olishingiz va o'rnatishingiz shart emas. JRE ning to'liq shakli Java Runtime Environment hisoblanadi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JVM&lt;/strong&gt;&lt;br&gt;
JVM Java kodini yoki ilovalarini boshqarish uchun ish vaqti muhitini ta'minlovchi vositadir. U Java bayt kodini mashina tiliga aylantiradi. JVM Java Run Environment (JRE) ning bir qismidir. Uni alohida yuklab olish va o'rnatish mumkin emas. JVM-ni o'rnatish uchun siz JRE-ni o'rnatishingiz kerak. JVM ning to'liq shakli Java virtual mashinasidir.&lt;/p&gt;

&lt;p&gt;Ko'pgina boshqa dasturlash tillarida kompilyator ma'lum bir tizim uchun mashina kodini ishlab chiqaradi. Biroq, Java kompilyatori JVM deb ataladigan virtual mashina uchun kod ishlab chiqaradi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asosiy farqlari
&lt;/h2&gt;

&lt;p&gt;JDK dasturiy ta'minot ishlab chiqish to'plami, JRE esa Java dasturini ishga tushirishga imkon beruvchi dasturiy ta'minot to'plami, JVM esa bayt kodini bajarish uchun muhitdir.&lt;br&gt;
JDK ning to'liq shakli Java Development Kit, JRE ning to'liq shakli Java Runtime Environment, JVM ning to'liq shakli esa Java Virtual Machine.&lt;br&gt;
JDK platformaga bog'liq, JRE ham platformaga bog'liq, ammo JVM platformadan mustaqil emas.&lt;br&gt;
JDK ishlab chiqish, disk raskadrovka va boshqalar uchun asboblarni o'z ichiga oladi. JRE sinf kutubxonalari va boshqa yordamchi fayllarni o'z ichiga oladi, dasturiy ta'minotni ishlab chiqish vositalari esa JVMga kiritilmagan.&lt;br&gt;
JDK o'rnatuvchi bilan birga keladi, boshqa tomondan, JRE faqat manba kodini bajarish uchun muhitni o'z ichiga oladi, JVM esa JDK va JRE dasturlarida to'plangan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xususiyatlari
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JDK xususiyatlari&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bu sizga bitta blokda bir nechta kengaytmalarni boshqarish imkonini beradi.&lt;/li&gt;
&lt;li&gt;JDK JRE ega bo'lgan barcha xususiyatlarni o'z ichiga oladi.&lt;/li&gt;
&lt;li&gt;Unda kompilyator, tuzatuvchi va boshqalar kabi ishlab chiqish vositalari mavjud.&lt;/li&gt;
&lt;li&gt;JDK Java manba kodini ishlab chiqish va bajarish uchun muhitni ta'minlaydi.&lt;/li&gt;
&lt;li&gt;U Windows, Unix va Mac operatsion tizimlariga o'rnatilishi mumkin.&lt;/li&gt;
&lt;li&gt;Diamond operatori aniq interfeysni yozish o'rniga umumiy turdagi interfeysni belgilashda ishlatilishi mumkin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JRE xususiyatlari&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java Runtime Environment - bu JVM aslida ishlaydigan vositalar to'plami.&lt;/li&gt;
&lt;li&gt;JRE Java Web Start va Java Plug-inni o'z ichiga olgan joylashtirish texnologiyasini o'z ichiga oladi.&lt;/li&gt;
&lt;li&gt;Ishlab chiquvchilar JRE-da manba kodini osongina ishga tushirishlari mumkin, ammo u Java dasturini yoza olmaydi va kompilyatsiya qila olmaydi.&lt;/li&gt;
&lt;li&gt;U Java Database Connectivity (JDBC), Remote Method Invocation (RMI), Java Nameming and Directory Interface (JNDI) va boshqalar kabi integratsiya kutubxonalarini oʻz ichiga oladi.&lt;/li&gt;
&lt;li&gt;JREda JVM va Java HotSpot virtual mashinasi mijozi mavjud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JVM xususiyatlari&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bu cloud muhitda yoki qurilmangizda ilovalarni ishga tushirish imkonini beradi.&lt;/li&gt;
&lt;li&gt;Java virtual mashinasi bayt kodini mashinaga xos kodga aylantiradi.&lt;/li&gt;
&lt;li&gt;U xotirani boshqarish, xavfsizlik, axlat yig'ish va boshqalar kabi asosiy java funksiyalarini taqdim etadi.&lt;/li&gt;
&lt;li&gt;JVM Java Runtime Environment tomonidan berilgan kutubxonalar va fayllar yordamida dasturni ishga tushiradi.&lt;/li&gt;
&lt;li&gt;JDK va JRE ikkalasida Java virtual mashinasi mavjud.&lt;/li&gt;
&lt;li&gt;U java dasturini satr bo'yicha bajarishi mumkin, shuning uchun u tarjimon deb ham ataladi.&lt;/li&gt;
&lt;li&gt;JVMni osongina sozlash mumkin, masalan, siz unga minimal va maksimal xotira ajratishingiz mumkin.&lt;/li&gt;
&lt;li&gt;U apparat va operatsion tizimdan mustaqil. Shunday qilib, java dasturini bir marta yozib, istalgan joyda ishga tushirishingiz mumkin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Farqlari keltirilgan rasm&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--itgI1SoA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5kk9x7n7ex6kv14boha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--itgI1SoA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5kk9x7n7ex6kv14boha.png" alt="Image description" width="880" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jvm</category>
      <category>jre</category>
      <category>jdk</category>
      <category>java</category>
    </item>
    <item>
      <title>Agile metodologiyasi</title>
      <dc:creator>Fazliddin Xamdamov</dc:creator>
      <pubDate>Wed, 19 Jan 2022 09:56:54 +0000</pubDate>
      <link>https://dev.to/fazliddinxamdamov/agile-metodologiyasi-3m8i</link>
      <guid>https://dev.to/fazliddinxamdamov/agile-metodologiyasi-3m8i</guid>
      <description>&lt;p&gt;Ushbu maqolada biz Agile metodologiyasi haqida qisqacha tanishib chiqamiz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--agL4tyAl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ipapigjf5fh9qhro3aj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--agL4tyAl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ipapigjf5fh9qhro3aj7.png" alt="Image description" width="470" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile metodologiyasi
&lt;/h2&gt;

&lt;p&gt;— bu loyihani bir necha bosqichlarga bo’lish orqali boshqarish usuli. Bunga manfaatdor tomonlar bilan doimiy hamkorlik va har bir bosqichda doimiy takomillashtirish kiradi. Ish boshlangandan so’ng, jamoalar rejalashtirish, amalga oshirish va baholash jarayonidan o’tadilar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile metodologiyasini umumiy ko’rinishi
&lt;/h2&gt;

&lt;p&gt;Dasturiy ta’minotni ishlab chiqish bo’yicha “ The Manufesto of Software Development ”2001 yilda yaratilganidan so’ng, mijozlar bilan hamkorlik qilish va mijozlar bilan hamkorlik qilish bo’yicha ilg’or fikrlashni o’z ichiga oladi. Agilening to’rtta asosiy qadriyati:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Individuallar va jarayonlar va vositalar bo’yicha o’zaro ta’sirlar&lt;/li&gt;
&lt;li&gt;Keng qamrovli hujjatlar ustida ishlaydigan dasturiy ta’minot&lt;/li&gt;
&lt;li&gt;Shartnoma bo’yicha mijozlarning hamkorligi yoki muzokaralari&lt;/li&gt;
&lt;li&gt;Reja bo’yicha o’zgarishlarga javob berish&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Agile metodologiyasining frameworklari
&lt;/h2&gt;

&lt;p&gt;Xo’sh, loyihani boshqarishda Agile metodologiyasi nima? Bu doimiy hamkorlik va iteratsiyalarda ishlashni o’z ichiga olgan loyihani boshqarish jarayoni. Bugungi kunda Agile so’zi ushbu qadriyatlarga va ularni amalga oshirish uchun asoslarga, jumladan Scrum, Kanban, Extreme Programming (XP) va Adaptive Project Framework (APF) ga murojaat qilishi mumkin.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>app</category>
      <category>tutorial</category>
      <category>uzbek</category>
    </item>
  </channel>
</rss>
