Sunday, November 8, 2015

8.10 лекц

Лекц – 8 Байгуулагч функц
Анхдагч болон параметртэй байгуулагч функцууд:
         Байгуулагч функц нь классын private өгөгдөлд обьектын дамжуулсан утгыг өгөх үүрэгтэй. Байгуулагч функцийг constructor функц гэдэг. Энэхүү функц нь классын нэртэй ижил нэртэй байдаг ба хэзээ ч илэрхий дуудагддаггүй. Классын обьект үүсэх үед байгуулагч функц автоматаар дуудагдана.
Мөн класст нэгээс олон байгуулагч функц тодорхойлж өгч болно. Энэ нь дахин тодорхойлогдож байна гэсэн үгболно.
         Байгуулагч функцийн буцаах утга нь обьект байна. Иймээс буцаах утгын төрлийг тодорхойлж өгдөггүй. Хэд хэдэн байгуулагч функцтай класс зарлах үед тэдгээр байгуулагч функцууд нь хоорондоо параметрийнхээ төрлөөр ялгагдаж байх ёстой. Ингээгүй тохиолдолд компилятор байгуулагч функцуудын алийг нь дуудахаа тодорхойлж чадахгүй байдалд хүрнэ. Энэ үед "Ambiguity between constructor1 gnd constructor2 " гэсэн алдааг бидэнд өгдөг. Класс дахин тодорхойлогдсон байгуулагч функцтай бол түүний обьектыг зарлах үед параметрийнхээ төрлөөрөө аль тохирох тодорхойлогдсон байгуулагч функц нь дуудагддаг.

Устгагч функц
         Устгагч функц нь обьектын динамик өгөгдлийн санах ойг чөлөөлөхөд хэрэглэгдэнэ. Устгагч функцийг destructor гэнэ. Класс ганц устгагч функцтэй эсвэл устгагч функц байхгүй байдаг. Хэрэв класст устгагч функц байхгүй бол компилятор обьектийн өгөгдлийн нөөцөлсөн санах ойг автоматаар чөлөөлнө. Энэ үед класс динамик гишүүн өгөгдөлтэй бол түүнийг санах ойгоос бүрэн чөлөөлж чаддаггүй. Иймээс динамик гишүүн өгөгдөлтэй класс заавал устгагч функц хэрэглэх ёстой. Устгагч функц 3 шаардлага хангасан байх ёстой.
1. Устгагч функц нь классын нэртэй ижил нэртэй байх ба урдаа ~ тэмдэгтэй
2. Устгагч функц утга буцаахгүй
3. Устгагч функц параметргүй
         Устгаг ч функц хэзээ ч илэрхий дуудагдахгүй, зөвхөн тухайн обьектийн мужаас гарах үед компилятор устгагч функцийг автоматаар дууддаг. Жишээ нь:
1: class Person{
2: private:
3: char * name;
4: int age;
5: public:
6: Person(char * a, int b=19)
7: {
8. name=new char [strlen(a)+1];
9: strcpy(name, a);
10: age=b;
11: cout<<"Ok";
12: }
13: ~Person(){cout<<"Destructor called"; delete [] name; }
14: };











Батлав. МХМБСТэнхмийн эрхлэгч ........................................................../ О.Мөнхбаяр/
ОБЬЕКТ ХАНДАЛТАД ПРОГРАМЧЛАЛ
Лекц – 10 Дахин тодорхойлох функц
   Дүрэм ба анги, дахин тодорхойлогдсон дүрэм, үүсгэгч дүрмийн дахин тодорхойлох объектийг параметрт хэрэглэх, ангийн staticөгөгдөл, унар болон бинар оператор тодорхойлох
С++ -ийн С-ээс ялгагдах нэг онцлог нь хэд хэдэн ижил нэртэй функц  байхыг зөвшөөрдөг. Ижил нэрээр дахин тодорхойлогдсон  функцуудыг хэт ачаалалтай функц гэж нэрэлдэг. С++ дахин тодорхойлогдсон функц бүрийг аргументын жагсаалтаараа ялгаатай байхыг шаарддаг. Дахин тодорхойлогдсон  оператор гэдэг энгийн операторын обьектын илэрхийлэлд  ашиглахаар  тодорхойлогдсоныг хэлнэ. Жишээ нь  архиметкийн +,- үйлдлийг обьектын илэрхийлэлд зориулан тодорхойлох боломж  C++ -т байдаг. (+)  оператор 2 обьектийн хооронд хийгдэнэ. Үүнийг бинар оператор гэнэ. Мөн (-) тэмдэг нь сөрөг тоог илэрхийлхэд хэрэглэдэг. Иймд хасах тэмдэг зарим үед унар , зарим үед бинар үйлдэл болдог. Дахин тодорхойлогдсон оператор нь ердийн найз функц байдлаар эсвэл классын гишүүн байдлаар тодорхойлогддог. Дахин тодорхойлогдсон  гишүүн функц - Классын гишүүн функцүүд  анхны утгатай тодорхойлогдож болохоос гадна дахин тодорхойлогдсон байж болно. Дахин тодорхойлогдсон гишүүн функцууд нь ижил нэртэй байх боловч буцаах утгын   төрөл болон  параметрийн тоо эсвэл төрлүүдээрээ ялгаатай байх ёстой.
Үүсгэгч функцийг дахин тодорхойлох - Классын обьект үүсэх үед байгуулагч функц  автоматаар дуудагдна. Мөн класст нэгээс олон байгуулагч функц тодорхойлж  өгч болно. Энэ нь нэг класс тухайн классын обьектууд хоорондоо ялгаатай байж болохтой холбоотай бөгөөд нөгөө талаас байгуулагч функц нь гишүүн функц учраас дахин тодорхойлогдож байгаа хэрэг юм. Хэд хэдэн байгуулагч функцтэй класс зарлах үед тэдгээр хоорондоо праметрийнхээ төрлөөр ялгагдаж байх ёстой. Обьектийг параметрт хэрэглэх - Функцийг параметрт классын обьект, заалт обьект, обектийн заагчийг хэрэглэж болно. Жишээ нь:
            Void objfunction 1 (PrWord p)
                        {p.display();}
objFunction ()  функц нь обьект параметртэй тодорхойлогдсон байна. Энэ функцийг дуудахдаа функцийн параметрт классын обьектийг өгч дуудна. Тухайлбал :
Prword q;
            Objfunction 1 (q);
Ангийн статик өгөгдөл - Классын обьектуудын хувьд цор ганц хувь үүсдэг классын гишүүнийг классын статик гишүүн гэдэг. Статик гишүүн нь статик гишүүүн  өгөгдөл,статик гишүүн функц гэсэн 2 хэлбэртэй байна. Статик гишүүн  функц глобал үйлдэл гүйцэтгэх эсвэл классын бүх глобал өгөгдөлд ипициализаци хийхэд хэрэглэдэг. Өөрөөр хэлбэл классын статик гишүүн функц нь  классын бусад статик биш гишүүдэд хандаж чадахгүй зөвхөн уг классын бусад  статик гишүүн өгөгдөл болон гишүүн функцэд л хандаж  чаддаг. Харин классын бусад гишүүн функцууд классын статик гишүүдэд хандаж чадна. Статик гишүүн өгөгдөл нь private, protected, public байж болно. Статик гишүүн өгөгдлийг дараах байдлаар зарлан ипициализаци хийнэ.
            char  Tanyclass :: c=’q’;



Sunday, October 11, 2015

Лекц - 7

7 Класс зохион байгуулах
Класс гэдэг нь хоорондоо логикийн хувьд уялдаа холбоотой хувьсагчид болон тэдгээр дээр үйлдэл хийх функцуудыг агуулсан хэрэглэгчийн тодорхойлсон төрөл юм. Класс төрөлтэйгээр зарлагдсан хувьсагчыг тухайн классын обьект гэж нэрлэдэг.
  Классын объект бүр бусад объектуудаас ялгагдах дахин давтагдашгүй шинж чанартай байх бөгөөд өөр өөрийн гэсэн санах ойн мужтай байдаг. Классын гишүүн өгөгдөл ба гишүүн функцэд хандахдаа тухайн классын объектын нэрийг цэгтэй хамт бичдэг. Тухайлбал: Энд b1.setName(“English grammar”); мөр нь b1 объектод зориулан түүний setName() гишүүн функыг дуудаж байна. Нэг ёсондоо b1 бол бэхлэгдсэн объект юм. Классын гишүүдийг мөн статикаар тодорхойлж болно. Статик гишүүдийн хэрэглээг дараа тодорхой жишээн дээр авч үзэх болно. Классын гишүүд ба объект
   Класс хүчирхэг ӨХТ болох нь. Учир нь тэрээр бусад ӨХТ-үүдийг бодвол дараах 2 гол давуу талаар хангагдсан. Үүнд: Гишүүн функцээр хангагдсан Өгөгдлийн далдлалтыг хэрэгжүүлдэг. Өгөгдлийн далдлалт Объектын дотоод дүрслэл болох шинж чанар болон төлөв байдал нь програмын бусад хэсгээс далдлагдсан байдаг. ӨХТ-ийн гишүүдийг далдалж өгсөнөөр програмд гарч болох санаатай болон санамсаргүй гаргах алдаанаас сэргийлдэг. Ингэснээр хувьсагч буруу утга авах зэрэг алдаа гарах магадлал багасна. Өгөгдлийн далдлалтыг private хандалтаар хэрэгжүүлдэг. ӨХ: Далдлах гишүүн өгөгдөл болон функцын өмнө private түлхүүр үг бичих бөгөөд гол нь классын далдлах шаардлагатай хэсгийг оновчтой тодорхойлох нь чухал юм. Өгөгдлийн далдлалт нь классыг хар хайрцагны шинж чанартай болгож өгдөг. Өгөгдлийн далдлалт (Data hiding)
   Энд “Оюутан” классыг авч үзэв. Энэ жишээнд оюутны үнэлгээний голч дүн ( GPA ) болон төлбөр төлсөн байдал ( isPaid ) гэсэн гишүүн өгөгдл үүдийг далдлах шаардлагатай гэж үзье.. Жич: Нэгэнт “Оюутан” класс нь Өгөгдлийн Хийсвэр Төрөл ( ӨХТ ) буюу Хэрэглэгчийн Тодорхойлсон Төрөл ( ХТТ ) учраас түүнд ямар ямар гишүүн өгөгдөл, ямар ямар гишүүн функц байхыг програм зохиогч өөрөө хийсвэрлэж тогтоохоос гадна ямар гишүүдээ далдлахаа мөн л өөрөө бодит амьдралын шаардлага дээр үндэслэн шийднэ. Жишээ: Өгөгдлийн далдлалт STUDENT Student_code Student_name GPA isPaid Choose_lesson() Pay_payment()
   Гишүүдийн хандалтууд Өгөгдлийн хандалтыг тодорхойлох дараах тодорхойлогч (access modifiers)- ууд байдаг.Үүнд: private ( хувийн хандалтыг тодорхойлогч ) public ( нийтийн хандалтыг тодорхойлогч ) protected ( хамгаалагдсан хандалтыг тодорхойлогч ) default ( Багцын хандалтыг тодорхойлогч ) static тухайн классын объектыг үүсгэхгүйгээр ашиглаж болно final утгыг нь уншиж болох боловч өөрчилж болохгүй trancient стандарт сериалчлалаар хадгалах сэргээх боломжгүй votalite олон процессуудын зэрэг ажиллагааны үед бүгд нэг зэрэг өөрчилж болно private хандалттай гишүүд нь програмын бусад хэсгээс ( үндсэн функц болон бусад классаас ) далдлагдсан байна. Түүнд хандахдаа тухайн классын нийтийн хандалттай гишүүн функцээр дамжуулж хандана. public хандалттай гишүүдэд програмын дурын хэсгээс хандах боломжтой. protected хандалттай гишүүд нь өөрийн хүү классдаа харагддаг, харин програмын бусад хэсгээс далдлагдан байдаг. default хандалт нь тухайн багцынхаа классуудад харагддаг, програмын бусад хэсгээс далдлагдсан хандалт юм.
   Хандалт тодорхойлогчид ба тэдгээрийн зохицол yes no abstract yes yes non-static yes yes static non-final final   yes yes, but private yes yes default yes yes, but protected yes yes public non-final final   yes yes non-abstract yes no abstract non-final final   no yes yes yes abstract yes yes yes default private protected public yes yes yes yes yes yes yes yes yes non-abstract non-static   static
  Далдлагдсан гишүүд нь үндсэн функцэд харагдахгүй Алдаа !!! Далдлагдсан гишүүдэд хандаж болохгүй Далдлагдсан гишүүд
   Далдлагдсан функцыг үндсэн функцэд ашиглах боломжгүй Алдаа !!! Далдлагдсан функц үндсэн програмд харагдахгүй Далдлагдсан функц
   Жишээ: Нийтийн хандалттай гишүүд үндсэн функцэд харагдана. Энэ энгийн жишээ програмд ямар нэг асуудал үүсэхгүй. Учир нь нийтийн хандалттай гишүүн өгөгдөл болон гишүүн функц нь үндсэн функцэд харагдана.
   Room ба ExampleTest4 классууд нь нэг багцад байрлаж байна. Эндээс нийтийн хандалттай гишүүн өгөгдөлд түүнтэй ижил багц ад байрлах классаас хандах боломжтой болох нь харагдаж байна. Мөн өөр багцад орших классуудад ч харагдах тул нийтийн хандалттай гишүүдийг хаанаас ч ашиглаж болно. Жишээ: Нийтийн хандалттай гишүүд бусад классуудад харагдана Нийтийн хандалттай гишүүн өгөгдөл
 Классын гишүүдийн хандалт Багцын хандалт: Хэрэв классын гишүүнийг тодорхойлохдоо өмнө нь ямар нэг хандалт тодорхойлоогүй байвал түүнийг default буюу багц ын хандалттай гэж үзнэ. Java хэлэнд хоорондоо харилцан хамаарал бүхий классуудыг нэг пакетад хадгалж заншсан бөгөөд багц ын хандалтын тусламжтай тэдгээр классууд хоорондоо хамтран ажиллахад хялбар болдог. Ийм хандалттай гишүүд нь түүнтэй ижил багцад орших бусад классуудад харагддаг харин өөр багцад орших классуудаас далдлагдсан байдаг.
   Room ба ExampleTest4 классууд нь нэг багцад байрлаж байна. Багцын хандалттай гишүүд нь үндсэн функцэдээ харагдахаас гадна нэг багцад орших бусад классуудад л харагдана Пакетын хандалттай гишүүн өгөгдөл Эндээс багцын хандалттай гишүүн өгөгдөлд түүнтэй ижил багцад байрлах класаас хандах боломжтой болох нь харагдаж байна.
  Room ба ExampleTest4 классууд нь өөр өөр багцад байрладаг бол дараах алдаа заана. Учир нь багцын хандалттай гишүүд нь бусад багц дахь классуудаас далдлагдсан байдаг. Багцын хандалттай гишүүд нь өөр багцанд орших классуудаас далдлагдсан байна Багцын хандалттай гишүүн өгөгдөл
   Классын хандалт Классын гишүүдэд хандалт тогтоохоос гадна классын өмнө бас хандалт тодорхойлогч түлхүүр үгийг бичдэг болохыг та бүхэн анзаарсан бизээ. Классын хандалт нь нийтийн (public) эсвэл пакетын (default) хандалттай байж болно. Хувийн болон хамгаалагдсан хандалттай класс байдаггүй. ( Харин Inner класс хэмээх ойлголтын үед хувийн болон хамгаалагдсан хандалттай классын тухай яригддаг ) Хэрэв классын нэрний өмнө ямар нэг хандалт тодорхойлох түлхүүр үг бичээгүй бол түүнийг багцын хандалттай класс гэж үзнэ. Классын хандалтыг тодорхойлох үед дараах дүрмийг баримтална. Үүнд : Анхдагч эх файлд хэдэн ч класс тодорхойлж болох боловч тэдгээрийн нэг нь л нийтийн хандалттай байна. Хэрэв хэд хэдэн нийтийн хандалттай класс тодорхойлвол алдаа заана. Анхдагч эх файл нь main() функцыг заавал агуулах албагүй. Хэрэв түүнд main() функц тодорхойлогдсон бол main() функцыг агуулах тэрхүү классыг нийтийн хандалттай тодорхойлж өгнө. Анхдагч эх файлыг нэрлэхдээ түүн дэх нийтийн хандалттай классын нэрээр нэрлэнэ. Анхдагч эх файлд ямар нэг нийтийн хандалттай класс тодорхойлогдоогүй бол түүнийг дуртай нэрээрээ нэрлэж болно.
   Классын хандалт ба гишүүдийн хандалтын хүснэгт public класс “ default” класс класс Багц public класс “ default” класс класс Багц Өөр б агц Нийтийн болон багцын хандалттай классын гишүүд рүү өөр багцын классаас хандах нь Нийтийн болон багцын хандалттай классын гишүүд рүү ижил багцын классаас хандах нь no no &quot;default&quot; гишүүн no no private гишүүн no yes / no protected гишүүн no Yes public гишүүн &quot;default&quot; class public class   yes yes &quot;default&quot; гишүүн no No private гишүүн yes Yes protected гишүүн yes yes public гишүүн &quot;default&quot; класс public класс  
   Үгийн санд Нарийвчлалт Specialization Ерөнхийлөлт Generalization Мутатор, өөрчлөгч арга Mutator method Гүйцэтгэл Performance Үзэл санаа Paradigm Багцын зарлалт Package declaration Багцын хандалт Package access Багц Package Шигтгэсэн систем Embeded system Энгийн удамшил Single Inheritance Нийлмэл удамшил Multiple Inheritance Хандах арга Accessor method Хандалтыг тодорхойлогч Access modifier Хийсвэрлэлт Abstraction Хийсвэр эх класс Abstract superclass Хийсвэр арга Abstract method Өгөгдлийн хийсвэр төрөл (ӨХТ) Abstract data type (ADT) Хийсвэр класс Abstract class
Обьект гэдэг нь физик биет, түүний хийсвэрлэл юм. Амьдрал дээрхи обьект буюу физик биет буюу үзэгдэл нь өөрийгөө тодорхойлох шинж чанарууд болон оршин байх төлөв байдлуудтай байдаг. Тэрхүү шинж чанар, төлөв байдлууд нь ижил байдаг обьектуудыг нэг бүлэг буюу класс болгоод, шинж чанаруудыг нь стандарт өгөгдлийн төрлүүдтэй хувьсагчид, төлөв байдлыг нь функцууд болгож бичиж өгдөг. Өөрөөр хэлбэл: класс гэдэг нь ямар нэгэн обьектийг тодорхойлж чадах гишүүн хувьсагчид, төлөв байдлыг нь тодорхойлох (тэдгээр хувьсагчид дээр үйлдэл хийх) гишүүн функцуудаас бүтдэг.
Програмд Class-г тодорхойлох формат:
class Классын нэр{
Хандалт:
гишүүн өгөгдлийн төрөл1 гишүүн өгөгдлийн нэр1;
гишүүн өгөгдлийн төрөл2 гишүүн өгөгдлийн нэр2;
...
гишүүн өгөгдлийн төрөл2 гишүүн өгөгдлийн нэр2;
Хандалт:
Гишүүн функцуудын тодорхойлолтууд; ...}
Жишээ нь: Компьютер гэсэн класс байвал гишүүн өгөгдлүүд болон функцууд нь дараах байдалтай байна.
class PC{
private:
int RAM;
float Speed;
char *manufacturer[30];
int Hard;
public:
void get_values(void)
{
cout<<”manufacturer name:”; cin>>manufacturer;
cout<<”CPU Speed:”; cin>>Speed;
cout<<”Hard disk size:”; cin>>Hard;
cout<<”RAM size:”; cin>>RAM;
}
Public хэсэг гэж юу вэ?
Класс дотор зарлагдаж буй гишүүн өгөгдлүүд болон функцуудын өмнө public: буюу private: гэсэн хандалтуудыг бичиж өгдөг. Аль нэгийг нь бичээгүй бол private хандалттай болдог. Энэхүү хандалт нь нэг удаа бичигдсэн бол дараагын хандалт тодорхойлогдох хүртэл, бичигдсэн бүх хувьсагчид, функцуудад хэрэгждэг. Дээрх 2 хандалтын үүрэг нь:
Ямар нэг функц буюу хувьсагч нь <public> түлхүүр үгийн араас зарлагдсан бол <public> хандалттай болох бөгөөд тухайн обьектын хүрээн дэх аливаа дуудах програмын хувьд хэрэглэгдэх боломжтой. Private хандалттай хувьсагчид руу програмын дурын хэсгээс хандах боломжгүй. Иймээс зөвхөн классын <public> хэсэгт тодорхойлсон функцийг дуудах замаар private хэсэг дэхь функц, хувьсагчдийг хэрэглэж чадна.
Тухайн нэг классын гишүүн функцийг классын мужаас гадна зарлахад функц бүрийн нэрний өмнө давхар хос цэгээр классынх нь нэрийг тусгаарлан бичиж өгдөг. Ингэснээр ижил нэртэй функцүүдийг өөр өөр классын хувьд тодорхойлж өгч байгаа юм. Өөрөөр хэлбэл компилятор тэдгээрийг аль нь аль классынх болохыг ялгаж танина.
Класс дотор private гишүүн агуулагдсан байхын нэг гол учир нь уг классын гишүүн функцүүдээр тэдгээрийг өөрчлөх болон унших боломжтой байдаг.
Ихэвчилэн тухайн классын үндсэн хувьсагчид ба функцүүдийг private хэсэгт харин public хэсэгт нэмэлт хувьсагчид ба функцүүдийг зарладаг. Практикт ихэвчлэн хувьсагчдийг зөвхөн private хэсэгт харин функцүүдийг public хэсэгт зарладаг .Гэвч хувьсагчид эсвэл функц нөгөө хэсэгтээ зарлагдсан байдаг. Мэдээж энэ нь ямар бодлогын даалгавар тавигдсан, мөн програмын онцлогоос болох нь ойлгомжтой.


Sunday, September 27, 2015

5 JVM

Лекц – 5 JVM
Java virtual machine (товчоор JVM) буюу Жава виртуал машин нь Java Virtual Machine Specification-ы хэрэгжүүлэлт бөгөөд хөрвүүлэгдсэн жава бинар код буюу байткодыг компьютерын процессорт (техник платформ) танигдахаар дамжуулагч юм. Ингэснээр Жава дээр бичигдсэн програм нь өөр платформ дээр бичигдсэн ч дахин бичих, дахин хөрвүүлэлт шаардахгүйгээр бусад платформ дээр ажилладаг. Жава виртуал машин нь платформуудын тодорхой заавруудын урт болон бусад нөхцлийг мэддэг. Java Virtual Machine Specification нь бодит машин юм уу процессор гэхээсээ илүү абстракт ойлголт бөгөөд зааварчилгаа регистрүүдийн бүрдэл, стак, аргуудыг агуулдаг. Java програм нь бит биш байт кодуудад хөрвөн ажилладаг бөгөөд энэхүү байт кодуудыг зөвхөн Java Virtual Machine (JVM) хэмээх систем ажиллуулдаг юм. Харин JVM нь платформ болгонд зориулагдан тусдаа хийгдсэн байдаг тул таны бичсэн програм, код аль ч үйлдлийн систем, платформ дээр ажиллах болж байгаа нь түүний хамгийн өвөрмөц онцлог юм. Java-гийн байт кодууд нь JVM агуулах ямар ч платформ дээр биелэгддэг тул Java хэлийг авсаархан (portable) хэлэнд тооцдог. Java виртуаль машин (Virtual Machine) нь байт кодыг машины хэлрүү хөрвүүлдэг. Тэгэхлээр Java Virtual Machine нь байт кодын интерпретатор (interpreter) юм. Java Virtual Machine-ын үзүүлэлт нь (abstract computer)-т зориулагдсан. Class нь аль ч Java програмаас файлыг цуглуулдаг ба Java хөрвүүлэгч нь Java API-ийг гүйцэтгэдэг. Class-ийг ачаалсаны дараа шалгагч class нь file-ийн ажиллагаатай үгүйг Java байткодоор шалгадаг ба системд илүү ч үгүй дутуу ч үгүй оруулдаг. Үүгээр дамжуулан byte-code-ийн pointer, arithmetic үзүүлэлтийг баталгаажуулна. Энэ arithmetic үзүүлэлт нь хууль бусаар санах ойд нэвтрэхийг олгодог. Хэрэв class нь хяналтыг давбал энэ Java хөрвүүлэгч дээр ажиллана. Бас Java нь Garbage Collection үзүүлэлтээр санах ойг автоматаар зохицуулна. Обьектоос санах ойг засах үйл ажиллагаа нь дахин хэрэглэгдэхгүй бөгөөд системрүү буцах боломжгүй. Олон хайгуул нь garbage collection алгоритм дээр төвлөрөх бөгөөд энэ нь Java програмын үзүүлэлтийг програмын хэл дээр нэмэгдүүлнэ. Java Virtual Machine нь программ хангамжийг үйлдлийн системд гүйцэтгэнэ. Үүнд Windows, Linux, Mac OSX, зарим вэб хөтөчид хамаарна. Java Virtual Machine нь техник хангамжийг гүйцэтгэхдээ онцгой тусдаа бэлтгэсэн Chip дээр Java програмыг суулгана. Хэрэв Java Virtual Machine нь программ хангамж дээр суурилагдсан бол Java хөрвүүлэгч нь byte-code-ийн үйлдлийг нэг нэгээр нь хийнэ. Хурдан програм хангамжийн техникийг just-in-time зохиогчоор хэрэглэх юм. Ийнхүү анх удаагаа Java хэлний хэрэглээний арга барил нээгдсэн. Byte-code нь үүний хэлбэрийг энгийн техникийн хэл болгон системд нэвтрүүлсэн.
Java VM гэж юу болох тухай дурдсан. Энэ нь Java платформын үндсэн суурь бөгөөд төрөл бүрийн тоноглолд тулгуурласан платформруу шилжүүлж болдог.
Java API
нь хэрэглэгчийн график интерфейс (GUI) элементүүд мэтийн ашиглахад бэлэн програмын компонентын цуглуулга юм. Java API нь багц хэмээн нэрлэгдэх анги болон интерфейсүүдийн сангуудад хуваагддаг.
Java API
доторх зарим багцуудын үйл ажиллагааны талаар дараагын Java технологи юу хийж чадах вэ? гэсэн хэсэгт тайлбарлана.
Java
платформ дээр гүйж буй програмыг дараах зураг дээр дүрслэн харууллаа.
Энд харуулснаар Java API, Java VM хоёр нь Java програмыг тоноглолоос нь тусгаарлаж байна.
Програмыг эмхэтгэсний дараа үүсэх кодыг төрөлх код гэдэг. Эмхэтгэсэн код нь ямар нэг тодорхой тоноглол платформ дээр ажиллана. Платформ хамаардаггүй орчин гэдэг үүднээсээ Java платформ нь төрөлх кодоос арай удаан байдаг тал бий. Гэвч ухаалаг эмхэтгүүр, сайн тохиргоо хийгдсэн интерпрец дотор Just-In-Time?ByteCode? ын эмхэтгүүрүүд нь програмын хүчин чадлыг төрөлх кодоос дутахгүй сайжруулах чадвартай байдаг.

Програмчлалын хэл гэж юу вэ?

Орчин үеийн зарим автомат төхөөрөмж урьдчилан бэлдэж өгсөн зааврын дагуу уг төхөөрөмж дээр биелэгдэх боломжтой олон тооны эгэл үйлдлүүдийг дараалан биелүүлэх замаар илүү нарийн төвөгтэй үйлдлийг гүйцэлдүүлдэг. Ерөнхийд нь, ийм заавар бэлдэж өгөх үйл ажиллагааг програмчлал, уг төхөөрөмжид ойлгогдохоор заавар бэлдэх аргыг програмчлалын хэл гэнэ. Жишээлбэл, зарим тооны машин дээр дараах мөрийг шууд бичиж өгч бодуулж болно: 5*(2+3)“. Энд бид тооны машинд 2 дээр 3-ыг нэмээд үр дүнг нь 5-аар үржүүл гэсэн заавар өгсөн хэрэг. Энэ жишээнд програмчлалын хэл маань тоонууд, арифметикийн үйлдлүүд ба хаалтуудыг ашиглаж зөв илэрхийлэл бичих дүрмүүдээс тогтоно гэсэн үг. Бидний бичсэн дээрх програмыг ажиллуулахын тулд = товчийг дарах шаардлагатай боловч хялбарчлах үүднээс энд үүнийг манай програмын хэсэг биш гэж үзэж байна.
Хамгийн анхны програмчлалын хэл Чарльз Баббажийн аналитик машинтай хамт үүссэн гэж үзэж болно. Аналитик машины үндэс нь механикийн араанууд байсан ба араануудыг том эсвэл жижиг араануудаар солих замаар програмчлах зарчимтай байжээ. 1942 онд бүтээгдсэн анхны электрон компьютер ENIAC үндсэндээ аналитик машины цахилгаан хувилбар нь байсан бөгөөд түүнийг програмчлах арга нь (програмчлалын хэл нь) одоогийн гэр ахуйн цахилгаан халаагуурын тохируулгыг санагдуулам олон тооны утаснуудын холболтыг өөрчлөх явдал байсан байна.
Жон фон Нейман 1945 онд Жон Маухли, Преспер Эккерт нартай хамтаар EDVAC компьютерийн дизайн дээр ажиллаж эхлэх үедээ компьютерийг програмчлахын тулд утаснуудыг сольж холбох нь бүдүүлэг хэрэг бөгөөд програм нь компьютерийн санах ойд хадгалагдаж, компьютер түүнийг уншиж зохих үйлдлүүдийг гүйцэтгэдэг байх боломжтой гэдгийг анх тоймлож үзүүлсэн. Түүнээс өмнө компьютерүүд оролтын ба гаралтын өгөгдөл болон тооцооны үед бий болсон завсрын үр дүнгүүдийг хадгалах санах ойтой байсан ба энэ санах ойд програмыг хадгалах, өөрөөр хэлбэл компьютер ямар ямар үйлдлийг гүйцэтгэх вэ гэсэн зааврыг оролтын өгөгдлийн нэг хэсэг мэтээр үзэх нь цоо шинэ санаа байжээ. Энэ арга нь юуны түрүүнд програмыг соронзон хальсан дээр хадгалах, дахин ачаалах боломжийг өгнө. Үүнтэй холбоотой өөр нэг боломж бол програм ажиллах явцад буй болсон завсрын үр дүнгээс хамаарч санах ойн хаана байрлаж буй зааврыг гүйцэтгэх вэ гэдгийг шийдэж болох боломж юм.