Lecture22. Жава Програмчлалын Хэлний
Vндсэн Зорилт
Ерөнхий
зориулалтын програм хангамж
Console-based хэрэглээний програм
Ширээний компьютерийн
Сервэр програм хангамж
Вэб програм (Үйлчлэгч талын- Үйлчлүүлэгч
талын)
Тархалттай / 2-tier, 3-tier, N-tier програмууд
Сүлжээний програм
Гэр ахуйн цахилгаан төхөөрөмж / Суулгагдсан
системүүд
Зөөврийн төхөөрөмжийн програм
Чипийн, Картын програм
Үйлдлийн систем (JavaOS)
3. Жава Програмчлалын Хэлний
Vндсэн Зорилт
Бүрэн ОХ
Хэрэглээний энгийн байдалтай
Тархалттай сүлжээний технологитой
Нууцлалт, хамгаалалт
Зөөврийн, архитектурын хамааралгүй
(ямар ч төхөөрөмжийн хувьд)
Өндөр боломжтой
Олон бодлогын горимыг дэмждэг
Уян хатан
4. Java хэлний чадвар
C++ хэлний дутагдалтай талуудыг засан
уламжилсан
ОХ-ыг улам сайжруулан объект хандлагат
биш боломжуудыг устгасан (жишээ нь, C++
хэлний макро ба глобаль хувьсагч).
Алдаа гарах магадлалыг өндөрсгөдөг санах
ойн заагчийн үйлдлүүдийг устгаж заалт болон
заагч гэх мэтийн зарим зөрчлийг арилгасан.
Динамик санах ойн зохион байгуулалттай.
Өгөгдлийн төрлийн хувьд төрлийн аюулгүй.
5. Java хэлний чадвар
Нийтлэг тохиолддог буруу төрлийн
хувиргалт, массивын индекс, санах ойн
заагчийн алдааны хувьд ажиллах үеийн
шалгалттай.
Олон бодлогын ба сүлжээний програм
зохиохыг илүү дэмждэг.
Онцгой тохиолдол боловсруулалтын сайн
ажиллагаатай.
Хөгжүүлэлтийн үр ашигтай байдал.
“Элстэй савны” нууцлал.
7. Java хэлний сул тал
Java кодыг ажиллуулдаг нэмэлт програм
хангамж шаардлагатай. Үүнийг
Java Virtual Machine (JVM) гэдэг.
гэдэг
Java код нь төхөөрөмжийн ойлгодог машины
код руу шууд хөрвүүлэгддэггүй.
Харин өөр нэгэн доод түвшний хэл болох
байт-код руу хөрвүүлэгддэг.
Байт-код (bytecode) нь JVM-д ойлгогддог ба
JVM түүнийг тухайн машины хэл рүү
хөрвүүлдэг.
Үүнээс болоод Java програм эхлэхдээ удаан
(JVM-г эхлүүлэх хугацаа ордог) байдаг ба
ажиллахын тулд илүү нөөц шаарддаг.
8. Java хэлний сул тал
Хэлний онцлог боломжууд
Санах ойтой шууд ажилладаггүй
Хурд
Өмнөх хувилбарын Java програм нь үнэхээр бусад хэл
дээр бичигдсэн програмаас (C++) харьцангуй удаан
байсан.
JVM-д ажиллах хурдыг өндөрсгөх тооцоологч нэмсэн.
Шинэ хувилбарын Java хурдыг сайжруулах хэд хэдэн
боломжийг агуулсан.
Яг тухайн үед нь хөрвүүлэгч(Just-in-time compiler),
– HotSpot кодын ажиллагааны сайжруулалт.
– Динамик хог цуглуулагч.
– гэх мэт
–
9. Java програм хэрхэн
ажилладаг тухай
Эх код ажиллахын өмнө объект код руу хөрвөсөн байх
ёстой тухай бид мэдсэн.
Хөрвүүлэгчийн үүсгэсэн объект код нь тодорхой
компьютерт байдаг (төхөөрөмж болон үйлдлийн
систем).
Java нь ялгаатай аргачлал ашигладаг ба энэ нь зөөврийн
хэмээх сайн талыг бий болгодог.
Java эх код хөрвүүлэгдэж үр дүнд bytecode хэмээх
машины стандарт хэл дээрх програм бий болдог ба энэ
нь бүх компьютерт ижилхэн байдаг.
Тиймээс хөрвүүлэгдсэн Java програм дахин хөрвүүлэх
шаардлагагүйгээр бүх компьютерт ажилладаг.
Энэ авсаар байдал нь олон төрлийн компьютерүүд
холбогдсон World Wide Web-д чухал ач холбогдолтой.
10. Java програм хэрхэн
ажилладаг тухай
Гэвч
ямар ч компьютер байт кодыг
машины хэл шиг шууд ашигладаггүй.
“Машин” үүрэг гүйцэтгэх тусгай програм
хангамж ажиллан байт код програмыг
ажиллуулдаг.
Java Virtual Machine (JVM) нь хөрвүүлэгдсэн
Java програмыг интерпретатор маягаар
ажиллуулдаг.
JVM нь байт код програмын заавруудыг нэг
нэгээр унших ба нэг заавраа машины хэлний
заавар руу хөрвүүлэнгүүт тухайн компьютер
түүнийг ажиллуулдаг. Энэ ажиллагааг
Interpretation буюу интерпретаци гэдэг.
гэдэг
12. Програмыг ажиллуулах болон
интерпретаци хийхийн ялгаа
Интерпретаци нь програм ажиллах явцад нэг
нэг заавруудад хийгддэг.
Энэ нь хөрвүүлэхээс ялгаатай. Хөрвүүлэх үед
програм ажиллахаас өмнө түүний бүх зааврыг
хөрвүүлдэг.
Компьютер машины хэл рүү хөрвөсөн програмыг
шууд ажиллуулж чаддаг
Компьютер bytecode-г шууд ажиллуулж чадахгүй.
Хөрвөсөн Java байт кодыг ажиллуулахын тулд
JVM байт кодын эхний зааврын машины хэлний
зааврыг олж үйлдлийг гүйцэтгэх командыг
машинд өгдөг. Үүний дараа дараагийн байт код
зааврыг машины заавар руу гэх мэтчилэн бүгдийг
нэг нэгээр хөрвүүлэн ажиллуулна.
13. Програмыг ажиллуулах болон
интерпретаци хийхийн ялгаа
JVM нь яг хөрвүүлэгч шиг машины кодыг
үүсгэдэггүй боловч байт кодын зааврын яг ижил
үйлдэл хийх машины заавруудыг нь компьютерт
өгдөг.
Java байт код програм нь арай удаан байдаг нь
компьютер түүнийг машины хэл дээрх програм шиг
шууд ажиллуулахгүйгээс болдог. Авсаар байх нь
удаан ажиллагаа бүхий сул талтай байх нээ.
Сүүлийн үеийн Java нь Just-in-Time (JIT)
хөрвүүлэлттэй болсон. Энэ нь байт код програм
болсон
тухайн компьютер дээр эхний удаа ажилангуут
машины кодыг нь үүсгээд дараагийн
ажиллуулалтан дээр үүсгэсэн машины кодоо
ажиллуулдаг аргачлал юм
14. Програмыг ажиллуулах болон
интерпретаци хийхийн ялгаа
Шууд
ажиллуулах Компьютер
тодорхойлогдсон үйлдлүүдийг биелүүлэх
Интерпретаци
хийх
Програм ажиллах явцад машины биш
хэлнээс (bytecode шиг) ажиллах үйлдэл
рүү хөрвүүлэх
15. Хөрвүүлэлт нь интепретаци болон
биелүүлэлттэй ямар хамаатай вэ?
Хөрвүүлэлт
биелүүлэлт нь ялгаатай 2
процесс.
Хөрвүүлэлтийн үед компьютер хөрвүүлэгч
програмыг ажиллуулан эх кодыг машины код
руу хөрвүүлдэг.
Энэ машины код дахин дахин ажиллах
болно.
Биелүүлэлтийн үед машины код(объект
код) компьютерийн санах ой руу ачаалагдан
шууд биелэгддэг.
16. Хөрвүүлэлт нь интепретаци болон
биелүүлэлттэй ямар хамаатай вэ?
JVM нь C++ бичигдэн машины хэл рүү хөрвүүлэгдсэн програм
юм.
Энэ машины код санах ой руу ачаалагдаж JVM ажиллана.
Үүний оролт нь хөрвүүлэгдсэн Java програм(bytecode).
Үүний үр дүн нь орсон програмын үйлдлүүдийн харгалзаадэс дараалсан машины үйлдлүүдийн ажилласан үр дүн
юм.
JVM болон Java програм хөрвүүлэгдсэний дараа тэднийг
дахин хөрвүүлэхгүйгээр ашигласаар байх болно.
Нэг компьютерийг өөр компьютер шиг болгон хиймэл
компьютерийн үүрэг гүйцэтгэдэг програмыг virtual machine
буюу бараг л машин гэдэг.
гэдэг
Хэрэв компьютер “Java програмыг ажиллуулж байвал” энэ
нь үнэндээ “Компьютер Java програмыг ажиллуулж байгаа
JVM –г ажиллуулж байна” гэсэн үг юм.
20. Жава Програмчлалын Хэлний Vндсэн
Зорилт
Дараахь
онцлогууд дээр дурьдсан
бүх зүйлсийг хангах юм:
Жава Виртуаль Машин (JVM)
Garbage Collection
Кодын нууцлал
21. Жава Виртуаль Машин (JVM)
Хатуумжийн платформ тодорхойлолтуудыг
хангана
Платформоос үл хамаарах хөрвөсөн байт
кодуудыг уншина
Уямж эсхүл хатуумж байдлаар хэрэглэгдэнэ
Жава хөгжүүлэлтийн багаж эсхүл веб
браузер байдлаар хэрэглэгдэнэ
22. Жава Виртуаль Машин (JVM)
JVM нь дараахь тодорхойлолтуудыг барина:
Instrcution set (CPU)
Register set
Class file format
Stack
Garbage collected-heap
Memory area
23. Жава Виртуаль Машин (JVM)
Байткод
нь кодоос бий болсон
хамгийн эвтэйхэн хэлбэр
Кодыг хөрвүүлэх явцад ихэнхи
төрөл шалгалтууд явагддаг
SUN-аас хүлээн зөвшөөрөгдсөн
JVM-ууд бүх класс файлыг
ажиллах чадвартай
24. Garbage Collection
Байршсан санамж хэрэгцээгүй болсон бол
цэвэрлэгдэж байх хэрэгтэй
Зарим хэлнүүдэд цэвэрлэх үйлдэл нь програмчын
хийх ёстой үйлдэл байдаг
Жава хэлэнд санах ойг цэвэрлэх системийн
трийдүүд(зүтгүүр) байдаг
Garbage Collection:
- Хэрэгцээгүй санамж байгаа эсэхийг шалгаж, тийм
бол цэвэрлэдэг
-Автоматаар
-JVM-ийн онцлогоос шалтгаалан олон янзын
хэлбэрээр хэрэгжих бололцоотой.
26. Жава Runtime Орчин
Гурван
–
–
–
үндсэн үйлдлийг гүйцэтгэнэ:
Кодыг ачаална
Кодыг нягтлана
Кодыг гүйцэтгэнэ
28. БайтКод Хянагч
Дараахь
нөхцлүүдийг нягтлана:
JVM-ы шаардлагад нийцэж байгаа эсэх
Системийн нэгдэлд харшлахгүй байгааг
Код нь стектэй холбоотой ямар нэгэн хэтрэлт,
дуталт үүсгээгүйг
Ажиллах кодны параметр төрлүүд зөв эсэх
Дүрмийн бус өгөгдөл хувиргалт хийгдээгүйг
29. Соорс Файлын Хэлбэр
“Дээд түвшний” гурван элементийг
агуулна:
Багцийн тодорхойлолт (заавал биш)
Тодорхой тооны импорт мэдэгдлүүд
Класс болон интерфэйсийн зарлалтууд
30. Класс болон Багцууд - Танилцуулга
Классууд
болон багцууд:
Жава класс сангийн чухал багцууд:
java.lang
java.awt
java.applet
java.net
java.io
java.util