Java baytkodi. Java baytkodi — javada yozilgan kodni kompilyatsiya qilgandan keyin kompilyator tomonidan yaratilgan oraliq kod hisoblanadi. Ushbu oraliq kod Javani platformadan mustaqil(platform independent) tilga aylantiradi. Va bu kod javac kompayleri yordamida hosil qilinadi. „.java“ faylidagi kodlar baytkodga aylantirilganda, ushbu fayl ichida nechta klass eʼlon qilingan boʻlsa shuncha oʻzida baytkodlarni saqlovchi klass fayllar kompayler tomonidan generatsiya qilinadi. Baytkodi qanday yaratiladi? Kompilyator manba kodini yoki Java dasturini bayt kodiga aylantiradi va keyin interpreyter tizimdagi bayt kodini ishga tushiradi. Interpreyter JVM (Java Virtual Machine) deb ham atash mumkin. Bayt kodi kompilyator (uni yaratuvchi) va interpreyter oʻrtasidagi umumiy qismdir. Quyida keltirilgan misolda jarayonni batafsil koʻrishimiz mumkin: class Main{ public static void main (String[] args) { System.out.println("Main method!"); Yuqoridagi keltirilgan kodni ishga tushirsak konsolda „Main method“ degan yozuv chiqadi. Har qanday dastur yozganimizda, u mashina kodida yozilmaydi. Biz uni Java, C++, Python va boshqalar kabi yuqori darajadagi tilda yozamiz. Lekin kompyuter faqat mashina kodini tushunadi. Shunday qilib, biz dasturimizni ishga tushirganimizda, u kompilyator tomonidan dastlab mashina kodiga yoki bayt kodiga aylantiriladi va keyin Interpreter tomonidan kod amalga oshiriladi. Javaga oid maqoladan. Java dasturchisi umuman Java baytkodini bilishi yoki tushunishi shart emas. Biroq, IBM developerWorks jurnalida taklif qilinganidek, „Java kompilyatori tomonidan baytkod va qaysi baytkod yaratilishi mumkinligini tushunish Java dasturchisiga assembly haqidagi bilim C yoki C++ dasturchisiga yordam berganidek yordam beradi.“ Java baytkodi afzalliklari. James Gosling javani yaratishni boshlaganining asosiy sabablaridan biri platformaning mustaqilligiga erishish edi. Yaʼni yozilgan kodlar har qanday dasturda ishlay olishi kerak edi. Va bu baytkod orqali amalga oshirildi. Demak, baytkod har qanday java dasturining juda muhim komponentidir. JVM uchun koʻrsatmalar toʻplami tizimdan tizimga farq qilishi mumkin, ammo hamma jvm bayt kodini tushuna oladi. Shuni yodda tutish kerakki, baytkodlar toʻgʻridan-toʻgʻri komputer tomonidan ishga tushirilmaydigan kodlar boʻlib, ularni ishga tushirish uchun interpreyterlarga tayanadi va u JVM hisoblanadi. Baytkod aslida Java virtual mashinasida ishlaydigan mashina darajasidagi tildir. Har safar klass yuklanganda, u klassning har bir metodi uchun baytkod oqimini oladi. Dasturni bajarish jarayonida ushbu metod har safar chaqirilganda, bu metod uchun baytkod chaqiriladi. Javac nafaqat dasturni kompilyatsiya qiladi, balki dastur uchun bayt kodini ham yaratadi. Shunday qilib, biz baytkodni amalga oshirish Javani platformadan mustaqil tilga aylantirishini angladik. Bu Javaga C yoki C++ kabi tillarda yetishmayotgan portativlikni qoʻshishga yordam beradi. Portativlik Javani ish stollari, mobil qurilmalar, serverlar va boshqa koʻplab platformalarda amalga oshirishni taʼminlaydi. Buni qoʻllab-quvvatlagan Sun Microsystems Javani baytkod talqiniga mos ravishda „bir marta yozing, istalgan joyda oʻqing“ yoki „WORA“ deb izohladi. Java baytkodiga misol. Quyidagi java kodiga eʼtiboringizni qarating: outer: for (int i = 2; i < 1000; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) continue outer; System.out.println (i); Java kompilyatori yuqoridagi Java kodini baytkodga quyidagi tarzda tarjima qilishi mumkin, agar yuqoridagi usulda qoʻyilgan boʻlsa: 0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 11: iload_2 12: iload_1 13: if_icmpge 31 16: iload_1 17: iload_2 18: irem 19: ifne 25 22: goto 38 25: iinc 2, 1 28: goto 11 31: getstatic #84; // Field java/lang/System.out:Ljava/io/PrintStream; 34: iload_1 35: invokevirtual #85; // Method java/io/PrintStream.println:(I)V 38: iinc 1, 1 41: goto 2 44: return Java baytkodi va mashina kodi oʻrtasidagi asosiy farq. Mashina kodi va baytkod oʻrtasidagi asosiy farq shundaki, mashina kodi protsessor tomonidan bevosita bajarilishi mumkin boʻlgan mashina tilida yoki ikkilik koʻrsatmalar toʻplamidir. Baytkod esa toʻgʻridan-toʻgʻri ishga protsessor tushirib boʻlmaydigan kompilyator tomonidan yaratiladigan va ishga tushirish uchun interpreyter kerak boʻlgan kod.