Java-г анх хийж эхлэхээс 5 үндсэн дүрмийг баримталж ирсэн байна. Үүнд:
- Жава обьект хандалтад программчлалын арга зүйтэй.
- Жава ижил программыг хэд хэдэн үйлдлийн систем дээр ажиллуулахыг зөвшөөрнө.
- Жава компьютерын сүлжээг дээд зэргээр ашиглахаас гадна бүхий л боломжуудыг хангаж өгнө.
- Жава алс зайд байгаа кодыг нууцлал хамгаалалттайгаар ажиллуулах боломжтой байна.
- Жава бусад объект хандалтат программчлалын хэлүүдийн бүхий л сайн талуудыг өөртөө агуулна.
Үйлдлийн системээс хамаарахгүй ажиллах нь
Зөвхөн энэ чанараас болж өдөр тутам олон зуун мянган программ хөгжүүлэгчид Жава руу урваж байгаа нь нэгэнтээ ил болжээ. Өөрөөр хэлбэл таны бичсэн програм бүхий л үйлдлийн систем, платформ, тоног төхөөрөмж дээр ажиллах боломжтой гэдэг бол үнэхээр гайхамшиг.
Жава дээр бичсэн код нь ихэнх Жаватай нийцтэй үйлдлийн систем, тоног төхөөрөмж дээр ажиллах боломжтой юм. Программаа нэг удаа бичээд хөрвүүлээд л авсан бол түүнийгээ хаа сайгүй ажиллуул гэсэн үг шүү дээ.
Энэхүү гайхамшигт боломжийг хэрхэн хангадаг вэ?
Java compiler буюу Жава хөрвүүлэгч нь Жава дээр бичигдсан кодыг бүтэн машины хэл болох битэд хөрвүүлдэггүй юм байна. Харин хагас боловсруулсан бүтээгдэхүүн гэдэг шиг хагас хөрвүүлж Java Bytecode гаргаж авдаг ажээ. Энэ кодыг зөвхөн Java Virtual Machine ажиллуулж дөнгөдөг юм. Тэгэхээр JVM нь ихээхэн чухал үүрэгтэй юм байна. JVM - ийг тухайн үйлдлийн системд зориулан тусгайлан бичсэн байдаг. Тэгэхээр энэхүү VM маань эцсийн бүтээгдэхүүн болох машин дээр ажиллах боломжтой бит кодыг үүсгэдэг байна. Бас VM нь тоног төхөөрөмжийн график хэсэг, санах ой, сүлжээ гэх мэт амин чухал зүйлсийг удирдана. Ихэнх тохиолдолд Java Bytecode нь саадгүй ажилладаг боловч зарим хэт онцгой машин дээр JIT хэмээх хөрвүүлэгч шаардлагатай болдог. Тэгэхээр таны бичсэн код тань JVM хэмээх системээр дамжиж байж хэрэгждэгийг ойлгож авсан байх. Тэгэхээр программын ажиллагаа яалт ч үгүй удаан байхаас аргагүй болж байгаа юм. Яагаад гэвэл C/C++ дээр бичсэн код нь шууд машины бит кодонд хөрвүүлэгдсэн байдаг тул ажиллагааны хувьд маш хурдан байдаг бол Жавагийн эх код нь заавал ЖаваВиртуалМашинаар дамжина. Энэ үүднээс удаан ажилладаг гэсэн шүүмжлэлийг байнга сонсдог байсан бөгөөд энэ нь түүний гол сул тал байлаа. Гэхдээ сүүлийн үеийн JVM нь төрөл бүрийн технологи, аргуудыг хэрэглэснээр дутахгүй хурдан ажилладаг болоод байна. Гэхдээ орчин үеийн тоног төхөөрөмжүүд тооцоолох чадвар нэмэгдсэнээр энэхүү дутагдал онцын мэдэгдэхээ болиод байгаа юм.
Жишээ нь хурдыг нэмэгдүүлэх нэг арга бол Just-in-Time (JIT) буюу Яг цагт гэсэн хөрвүүлэлтийн арга юм. Энэ бол програм яг ажиллах үед нь ЖаваБайткодыг машины код руу хөрвүүлнэ гэсэн үг. Ингэснээр программ илүү хурдан ажиллах бололцоотой болдог. Гэвч энэ арга нь Overhead буюу хэт ачаалалд орох эрсдэлтэй. Иймээс сүүлийн үеийн VM-ууд динамик маягийн холимог аргыг хэрэглэдэг болоод байна. Энэхүү динамик арга нь програмын амин чухал хэсгүүдийг хэрхэн хөрвүүлэхээ сайтар тооцоолж чаддаг юм. Ингэснээр эцсийн дүндээ таны бичсэн код C/C++ дээр бичсэнээс дутахгүй хурдан ажиллаж чадах билээ.
Хурдыг нэмэгдүүлэх өөр нэг арга бол статик хөрвүүлэгч ашиглах явдал юм. Энэ хөрвүүлэгч нь шулуухан машины эх код руу хөрвүүлчихдэг. Өөрөөр хэлбэл Жавагийн сонгодог байткод үүсгэхгүй гэсэн үг юм. Ийм статик хөрвүүлэгчийн жишээ гэвэл GCJ юм. Гэвч ингэх юм бол өвөрмөц онцлог огтхон ч үр дүнгүй болчихож байгаа юм. Ийм арга хэрэглэх нь заавал Жава дээр бичих огтхон ч шаардлагагүй болж байгаа бөгөөд C/C++ дээр бичиж байгаагаас огтхон ч ялгаагүй болж байна.
Хөгжүүлэлт
SunMicroSystems нь JavaStandardEdition хэмээх платформын лицензийг албан ёсоор эзэмшдэг юм байна. Энэ платформ нь MicrosoftWindows, Linux, Solaris гэсэн үйлдлийн системүүд дээр ажиллана. Бусад платформуудад зориулсан Жавагийн орчныг бүрдүүлэгч системүүд бас бий.
Жава брэнд нь шулуун дардан замаар явсангүй. Мэдээж Microsoft-той зүйл бүрээр тэрсэлдэж байсан нь ойлгомжтой. Тухайлбал Java нь Microsoft-ийн үйлдлийн систем дээр ажилладаг болохын тулд ихээхэн саадыг давсан юм. Учир нь Microsoft нь Жава ажиллахад шаардлагатай RMI болон JNI интерфэйсүүдийг хаачихсан юм. Мэдээж Sun-ыхан шүүхэд зарга мэдүүлсэн бөгөөд 1997 онд 20 сая долларыг төлүүлж чаджээ. Гэсэн ч Windows нь анх ирэхдээ Жавагүй ирдгийг бид бүгд мэднэ. Бас сүүлийн үеийн Internet Explorer нь JavaApplet-ийг дэмждэггүй шүү дээ. Заавал 3дагч нэмэлт Plug-In суулгах шаардлагатай болдог. Гэхдээ та дуртай үедээ интернэтээс RunTime орчныг бий болгогч дэд системүүдийг татан авч болно.
Платформ хамаарахгүй ажилладаг чанар нь Enterprise маягийн томоохон программ хөгжүүлэгчдэд онцгой таалагдсан юм. Яагаад гэвэл ийм чиглэлийн лицензтэй програм хангамжууд асар өндөр үнэтэй байдаг шүү дээ. Түүнчлэн Enterprise чиглэлийн системүүд нь олон платформ болоод янз бүрийн орчинд ажиллах дэд системүүдээс бүрдэх шаардлагатай байдаг юм. Тэгвэл Жавад энэ бүхэн бүгд бий. Сервэр талдаа гэвэл Жишээ нь: servlet хэмээх вэб серверийг нэрлэж болох юм. Enterprise орчинд JavaBeans байж болно. Жава нь нээлттэй эхтэй болохоор дэлхийн шилдэг систем хөгжүүлэгчид өөр өөрсдийн тусгай системүүдийг бүтээж байгаа билээ. Хамгийн сүүлд GlassFish хэмээх төсөл нэн амжилттай хэрэгжиж байгаа бөгөөд энэ нь JavaEE орчинд үнэхээр тансаг зүйл хийж болохоор хэмжээнд ирээд байна.
Санах ойг автоматаар удирдах нь
Жавагийн үнэхээр өвөрмөц онцлогийн нэг бол санах ойг автоматаар удирдах аргачлал юм. Энэ боломжийн хүчээр программист хүн гар аргаар санах ойг удирдах нүсэр ажлаас чөлөөлөгдөж байгаа билээ. Бусад хэлнүүд дээр объектийг үүсгэхийн тулд юуны өмнө хэрэгцээт санах ойг бий болгож авах, обьектоо хэрэглэж дууссаны дараа суллах гэх мэтийн ажиллагааг хийдэг шүү дээ. Хэрэв программист хүн объектоо суллаж, устгахаа мартсан бол санах ойн тэр хэсгийг ашигласан тэр чигээрээ үлдчихдэг. Программ гацах, алдаа гарах мэтэд санах ойг иймэрхүү байдлаар эзлээд үлдчих тохиолдол зөндөө гардаг. Бас санах ойг суллах гэж оролдох үедээ алдаа гаргах, дахин дахин оролдох гэх мэтэд гацаах ноцтой алдаанууд гарах нь түгээмэл байдаг.
Харин Жава дээр бол үүнийг сайхан шийдэж өгчээ. Автомат хог цэвэрлэгч гэсэн систем байдаг бий. Программист хүн объект үүсгэлээ гэхэд түүнийг зааж байдаг ямар нэгэн хувьсагч, эзэмшигч заавал үүсдэг. Энэ нь уг объектыг удирдах, ашиглах үүрэгтэй. Тэгвэл объектыг устгалаа гэхэд зөвхөн энэ объектын заагч хувьсагчийг устгачихдаг. Энэ үед заагчгүй объект санах ойд үлдчихнэ гэсэн үг. Харин JavaGarbageCollection(Жавагийн хог цэвэрлэгч) нь иймэрхүү эзэнгүй санах объект санах ойд байгаа эсэхийг автоматаар шалгаж байдаг. Эзэнгүй объект тааралдвал түүнийг санах ойгоос бүрэн чөлөөлж бүрмөсөн устгана.
Syntax буюу бичиглэл
Java-гийн хувьд бичиглэл нь бараг тэр чигээр C++ юм. C++ -ээс ялгаатай зүйл нь бүрэн объект хандлагат юм. Бүх код нь класс дотор бичигдэх бөгөөд бүгд объект байна. Зөвхөн бодит өгөгдлийн төрлүүд (тоон утгууд, boolean утга, тэмдэгт) л класс дотор бичигдэхгүй байж болдог.
Мөн Жава нь оператор дахин тодорхойлох, олон классын удамшил зэргийг дэмждэггүйгээрээ С++ хэлээс ялгаатай.
No comments:
Post a Comment