WebAssembly: მნიშვნელობა, უპირატესობები, გამოყენების შემთხვევები და სხვა

ჩაეგდო WebAssembly აჟიოტაჟს, მაგრამ ზუსტად არ იცით რა არის? აქ არის დაბალი ქვემოთ.

WebAssembly ან Wasm არის ორობითი კოდის ფორმატი პროგრამების შესაქმნელად, რომლებიც შეიძლება შესრულდეს ნებისმიერ კომპიუტერულ არქიტექტურაზე.

სისტემა მოიცავს ვირტუალურ მანქანას და კომპილატორს, რომელიც თარგმნის კომპიუტერულ კოდს პროგრამირების ენებიდან, როგორიცაა C ან C++ ადამიანისთვის წასაკითხად .wat და ბინარულ .wasm ფორმატებში.

WebAssembly-ის თავდაპირველი მიზანი იყო პროგრამისტებს საშუალება მიეცა შეექმნათ მაღალი ხარისხის აპლიკაციები ვებ გვერდებისთვის, ბრაუზერის შიგნით შესრულების თითქმის მშობლიური სიჩქარის ჩართვით. მაგრამ ტექნოლოგია ახლა, როგორც ჩანს, ვითარდება ბრაუზერების მიღმა და ღრუბელში.

ეს გზამკვლევი გაჩვენებთ ყველაფერს, რაც უნდა იცოდეთ ამ განვითარებადი ტექნოლოგიის, მისი ძლიერი და სუსტი მხარეების, ასევე მისი სამომავლო პოტენციალის შესახებ.

რა არის WebAssembly?

WebAssembly არის ორობითი კოდის ფორმატი, რომელიც მუშაობს ვირტუალურ მანქანაზე და რომელზედაც სხვადასხვა ენას შეუძლია კომპილირება. იგი შექმნილია პორტატული და შეიძლება იმუშაოს ვებ ბრაუზერზე ან სერვერის აპლიკაციის სახით.

პირველად გამოშვებული 2017 წელს, WebAssembly არის W3C რეკომენდაცია 2019 წლიდან და მას აქვს მრავალი კონტრიბუტორი, მათ შორის Mozilla, Google, Microsoft, Red Hat და მრავალი სხვა.

თავდაპირველი მიზანი იყო თითქმის მშობლიური შესრულების სიჩქარის განვითარება, როგორც ამას ბრაუზერის შიგნით C/C++ აპლიკაციებით იპოვით. ის ასევე იგულისხმება, რომ იყოს უსაფრთხო, ღია სტანდარტის, გამართვადი და ვერსიის ნაკლებობის ვებ სტანდარტი, რომელიც თავსებადია უკან და შეესაბამება JavaScript-ს.

როგორ მუშაობს WebAssembly?

WebAssembly შექმნილია როგორც გაშვების ძრავა, როგორიცაა Java ან JavaScript, რომელიც შეიძლება იყოს ჩასმული ბრაუზერის ან სერვერის გარემოში .wasm ორობით ან .wat ტექსტურ ფორმატებში შედგენილი კომპიუტერული კოდის გასაშვებად.

WebAssembly-ის შესრულებისთვის კოდის დასაწერად, დეველოპერი წერს პროგრამას მხარდაჭერილ მრავალ ენაზე. შემდეგ შეადგინეთ იგი WebAssembly შემდგენელის გამოყენებით ან AOT (დროზე ადრე) ან JIT (მხოლოდ დროში).

ამ კოდს შეუძლია სამუშაოს უმეტესი ნაწილი შესრულების გარემოში, მაგრამ მას არ შეუძლია წვდომა ან შეცვალოს ბრაუზერის DOM ობიექტები. ნებისმიერი ასეთი ურთიერთქმედება უნდა გაიაროს JavaScript-ით.

როგორ შევქმნათ WebAssembly აპლიკაციის ნიმუში

მარტივი Wasm აპლიკაციის შექმნა ვებ ბრაუზერისთვის შესაძლებელია მხოლოდ რამდენიმე ნაბიჯით, როგორც ხედავთ ქვემოთ:

  1. ჩამოტვირთეთ და დააინსტალირეთ Emscripten SDK.
  2. დაწერეთ თქვენი ნიმუში Helloworld.c შეიყვანეთ კოდი ან გააკეთეთ ეს C++/Rust-ში, თუ გსურთ.
  3. გასაშვებად emcc helloworld.c -s WASM=1 -s helloworld.html ტერმინალში კოდის შედგენა WebAssembly-ში Emscripten-ით. ის შექმნის Wasm ორობით, HTML და JavaScript ფაილებს, რომლებიც გჭირდებათ (წებო კოდი).
  4. ემსახურეთ helloworld.html გვერდს თქვენი ბრაუზერის საშუალებით.

WebAssembly-ის უპირატესობები

WebAssembly-ისა და მასთან დაკავშირებული ტექნოლოგიების გამოყენების მრავალი მიზეზი არსებობს, მათ შორისაა:

  • თითქმის მშობლიური შესრულება – WebAssembly-ს აქვს ისეთი დაბალი დონის დიზაინი, რომ გთავაზობთ დაბალი დონის ენების მსგავს შესრულებას, როგორიცაა C და C++.
  • უსაფრთხოება – სისტემა შექმნილია უსაფრთხოდ, ვირტუალურ გარემოში იზოლირებით, სისტემაში შეზღუდული წვდომით.
  • გახსენით სტანდარტი – ბევრი ორგანიზაცია და ინდივიდი მონაწილეობს WebAssembly-ში და ეს არის W3C ოფიციალური რეკომენდაცია.
  • მსუბუქი – WebAssembly იკრიბება ბინარულ კოდში, რომელიც შესრულდება ვირტუალურ მანქანაში. ეს კოდი არის პორტატული და არ სჭირდება და არ გააჩნია სისტემური ფაილები.
  • მრავალენოვანი მხარდაჭერა – 50-ზე მეტ ენას შეუძლია WebAssembly-ში შედგენა.
  • პლატფორმა დამოუკიდებელი – WebAssembly ვირტუალური მანქანა შექმნილია თითოეული არქიტექტურისთვის, რათა წარმოადგინოს ერთი და იგივე გაშვების გარემო. ყველაფერი, რაც დეველოპერმა უნდა გააკეთოს, არის WebAssembly-ისთვის კოდის დაწერა.

WebAssembly-ის შეზღუდვები

  • მუშაობა მიმდინარეობს - სტანდარტი ჯერ კიდევ დამუშავების პროცესშია და, შესაბამისად, ბევრი ფუნქცია და გაუმჯობესება ჯერ კიდევ არ არის.
  • არ არის ნაგვის შეგროვება – WebAssembly-ს ჯერ კიდევ აკლია ნაგვის შეგროვება, თუმცა ის შესაძლოა მალე განხორციელდეს.
  • DOM წვდომა არ არის – თქვენ ვერ შეხვალთ ვებ ბრაუზერის DOM–ზე პირდაპირ WebAssembly–დან, თქვენ დაგჭირდებათ JavaScript–ის გავლა.

WebAssembly vs Java

Java არის WebAssembly-ის ერთგვარი ადრეული განხორციელება. იგი შეიქმნა, როგორც ჩაწერის ერთჯერადი, ყველგან გაშვებული ენა, მაგრამ გზაში მრავალი საკითხი განვითარდა.

ისევე, როგორც Java-ს შემთხვევაში, WebAssembly იყენებს RE (Runtime Environment) კოდის შესასრულებლად, მაგრამ Java-სგან განსხვავებით, თქვენ შეგიძლიათ დაწეროთ WebAssembly თქვენს არჩეულ ენაზე.

WebAssembly vs JavaScript

WebAssembly ახორციელებს ბრაუზერში ან სხვა მასპინძელ გარემოში, ისევე როგორც JavaScript. თუმცა, სადაც JavaScript მიეწოდება შესრულების გარემოს ტექსტის ფორმატში და შედგენილია დროულად, WebAssembly-ს აქვს როგორც ტექსტური, ასევე ორობითი ფორმატები.

ვებ ბრაუზერების შიგნით JavaScript-ს აქვს წვდომა DOM-ზე, ხოლო WebAssembly-ს არა. თუმცა, როდესაც საქმე ეხება შესრულების სიჩქარეს, WebAssembly აჯობა JavaScript-ს, მისი თითქმის მშობლიური კოდის შესრულების სიჩქარით.

სიჩქარე არის ის, სადაც WebAssembly ანათებს და მიზეზი იმისა, რომ ის იდეალურია ამდენი გამოყენებისთვის. თქვენ შეგიძლიათ ჩატვირთოთ WebAssembly ბრაუზერში JavaScript-ის გამოყენებით და ეს ორი კოდი შეიძლება ერთად იმუშაოს და გააზიაროს რესურსები.

WebAssembly Vs Docker Vs Kubernetes

Docker და Kubernetes არის ორი პოპულარული ტექნოლოგია, რომელიც აძლიერებს ღრუბლოვან გამოთვლებს. Docker არის კონტეინერის ტექნოლოგია, რომელიც დეველოპერებს საშუალებას აძლევს შეფუთონ აპლიკაცია მისი სისტემის ყველა დამოკიდებულებით ერთ პაკეტში. ეს აადვილებს აპლიკაციის განთავსებას ნებისმიერ ღრუბლოვან გარემოში წამში ან ნაკლებ დროში.

მეორე მხრივ, Kubernetes არის ღია კოდის სისტემა, რომ მართოს და განათავსოს კონტეინერირებული აპლიკაციები, როგორიცაა Docker, CRI-O, კონტეინერი და ნებისმიერი Kubernetes CRI (Container Runtime Interface). Kubernetes ასევე აადვილებს ღრუბლის განლაგების მასშტაბირებას მრავალ სერვერზე ან ვირტუალურ მანქანებზე.

ამ თვალსაზრისით, WebAssembly უფრო ჰგავს Docker-ს და შეიძლება შეიქმნას კონტეინერირებული ღრუბლოვანი აპლიკაციის სახით Kubernetes-ის გამოყენებით. ის ასევე ბევრ უპირატესობას გვთავაზობს Docker-თან შედარებით, მაგრამ სავარაუდოდ არ ჩაანაცვლებს მას.

ბრაუზერის მიღმა

თავიდან არსებობდა ვებ სერვერები. თქვენ უნდა დაეთმოთ სრული მანქანა სერვერად. შემდეგ, იყო ვირტუალური მანქანები, ან VM, რომლებიც სერვერს საშუალებას აძლევდნენ იმუშაონ მხოლოდ ერთ ან მეტ CPU ძაფზე. მიუხედავად ამისა, თქვენ უნდა გქონდეთ გამოყოფილი VM.

Cloud computing შესაძლებელი გახადა სერვერების გაშვება და გაშვება მხოლოდ საჭიროების შემთხვევაში აპლიკაციების კონტეინერირებით. ამან გამოიწვია ხარჯების შემცირება, რადგან თქვენ მხოლოდ უნდა გადაიხადოთ ის, რასაც იყენებთ - აღარ არის გამოყოფილი მანქანები. მაგრამ ჯერ კიდევ არის რამდენიმე საკითხი.

პირველი, დოკერის ფაილები შეიძლება იყოს რამდენიმე გიგაბაიტი, რაც ნიშნავს მცირე შეფერხებას გაშვებისა და მართვის სხვა საკითხებში. თუმცა, მსგავსი Wasm ფაილი შეიძლება იყოს მხოლოდ რამდენიმე მბ დიდი, რადგან ის არის წინასწარ შედგენილი ბინარი. ეს აძლევს მას ბევრად უფრო სწრაფ გაშვების დროს, ვიდრე Docker, იდეალურია გარკვეული დროის კრიტიკული აპლიკაციებისთვის.

მეორეც, WebAssembly-ის დიზაინი ნიშნავს, რომ დეველოპერს არ უწევს სისტემური რესურსების მართვა და მინიჭება, მას შეუძლია უბრალოდ მიაღწიოს პუნქტს თავისი არჩეული პროგრამირების ენის გამოყენებით.

ეს ფუნქციები WebAssembly-ს იდეალურს ხდის ღრუბლოვანი მიკროსერვისების გასაშვებად, თუმცა Docker აპლიკაციები მაინც სასურველია აპლიკაციებისთვის, რომლებიც საჭიროებენ მეტ კონტროლს ოპერაციულ გარემოსა და ფაილურ სისტემაზე.

დამატებითი ინფორმაციისთვის, პროექტები, როგორიცაა WasmCloud მდე WasmEdge ავითარებენ WebAssembly-ს სიცოცხლისუნარიან გამოთვლით პლატფორმად.

Wasm გამოყენების შემთხვევები

WebAssembly-ის გამოყენების მრავალი შემთხვევაა, მისი თავისებური ბუნების გათვალისწინებით. ისინი შეიძლება დაიყოს სამ დიდ ჯგუფად; ბრაუზერის შიგნით, ბრაუზერის გარეთ და ჰიბრიდული პარამეტრები.

ბრაუზერის შიდა ტიპი არის თვითმმართველობის განმარტებითი და ბრაუზერის გარეთ ძირითადად სერვერის, IoT და ღრუბლის განლაგებას ეხება, ხოლო ჰიბრიდი ეხება ამ ორის ნაზავს.

ქვემოთ მოცემულია გამოყენების შემთხვევები, როდესაც Wasm შეიძლება გამოირჩეოდეს:

  • უკვე არსებობს მაღალი ხარისხის კოდი – ძველი, მაგრამ საოცარი კოდი, რომელიც შეგიძლიათ უბრალოდ გადაიტანოთ WebAssembly-ზე.
  • ახალი მაღალი ხარისხის კოდი – ისინი, რომლებიც უნდა დააპროექტოთ და განახორციელოთ ნულიდან.
  • დესკტოპის აპლიკაციების ვებზე პორტირება – ამან შეიძლება გახსნას ვებ-ზე დაფუძნებული დესკტოპის გადაწყვეტილებების ახალი სახეობა, როგორიცაა ვებ დაფუძნებული ვიდეო რედაქტირება.
  • Cloud computing - Docker-თან და Kubernetes-თან ერთად სირბილი ახალი შესაძლებლობებისთვის.

ქვემოთ მოცემულია კონკრეტული პროგრამები და სცენარები, სადაც Wasm შეიძლება გამოირჩეოდეს:

  • ვიდეო და გამოსახულების რედაქტირება
  • თამაშის დიზაინი
  • AI პროგრამები
  • ვირტუალური და გაფართოებული რეალობის აპლიკაციები
  • მუსიკალური პროგრამები
  • P2P პროგრამები
  • სერვერის აპლიკაციები
  • ღრუბლოვანი/კლასტერული გამოთვლები
  • კომპიუტერის დახმარებით დიზაინი
  • OS პლატფორმის სიმულაცია
  • შიფრაცია
  • ლოკალური ვებ სერვერი
  • დისტანციური დესკტოპის აპლიკაციები
  • სამეცნიერო ვიზუალიზაცია
  • ჰიბრიდული მშობლიური აპლიკაციები სმარტფონებზე
  • IoT მოწყობილობებზე

მხარდაჭერილი ენებისა და ჩარჩოების სია

50-ზე მეტი ენა შედგენილია WebAssembly-ში და აქ არის რამდენიმე ყველაზე პოპულარული:

  • C
  • C + +
  • R
  • Ruby
  • Swift
  • Go
  • კოტლინი
  • Rust
  • PHP
  • ბლაზორი – Framework .NET დეველოპერებისთვის.
  • JwebAssembly – შემდგენელი Java bytecode და მასთან დაკავშირებული ენებისთვის, როგორიცაა JRuby, Jython, Groovy, Scala და Kotlin.
  • უთხოვარი – Rust ჩარჩო WebAssembly-ის გამოყენებით მრავალნაკადიანი ვებ აპების შესაქმნელად.
  • ასამბლეის სკრიპტი – ენა, რომელიც სპეციალურად შექმნილია WebAssembly კოდის შესაქმნელად.
  • მარცვლეულის - მკაცრად აკრეფილი ფუნქციური ენა.
  • მოტოკო

თქვენ შეგიძლიათ იპოვოთ მეტი ენა აქ დაწკაპუნებით.

WebAssembly Runtimes & Tools-ის სია

  • ყველა მთავარ ბრაუზერს აქვს Wasm მხარდაჭერა
  • პიოდიდი – პითონის გაშვების დრო ბრაუზერზე Python-ის სამეცნიერო სტეკით, მათ შორის Pandas, NumPy, SciPy.
  • თბილი
  • წონა – მიკრო სერვისებისა და ვებ აპებისთვის
  • ვასი - მოდულური სისტემის ინტერფეისი
  • WasmTime – სწრაფი და უსაფრთხო WebAssembly გაშვების დრო.
  • ვასმერი
  • ლუსეტი
  • wasmCloud - ღრუბლოვანი გარემო
  • კრუსტლეტი – Kubernetes kublete Wasm-ის გასაშვებად, დაწერილია Rust-ში.
  • WasmEdge - ღრუბელი და ზღვრული გაშვების გარემო

დასკვნა

ჩვენ მივედით WebAssembly-ში ჩვენი მოგზაურობის დასასრულამდე და რა არის ის გამოთვლით. და როგორც ხედავთ, ის ბევრს გვპირდება.

ეს ჯერ კიდევ მიმდინარეობს, თუმცა მუდმივ განვითარებაში. და თუ გაინტერესებთ, შეგიძლიათ მიიღოთ მეტი ინფორმაცია აქ დაწკაპუნებით, აქ დაწკაპუნებითდა აქ დაწკაპუნებით.

ნნამდი ოკეკე

ნნამდი ოკეკე

ნნამდი ოკეკე არის კომპიუტერის მოყვარული, რომელსაც უყვარს წიგნების ფართო სპექტრის კითხვა. მას აქვს უპირატესობა Linux-ზე Windows/Mac-ზე და უკვე იყენებს
Ubuntu მისი ადრეული დღეებიდან. მისი დაჭერა ტვიტერზე შეგიძლიათ ბონგოტრაქსი

სტატიები: 298

მიიღეთ ტექნიკური პროდუქტები

ტექნიკური ტენდენციები, გაშვების ტენდენციები, მიმოხილვები, ონლაინ შემოსავალი, ვებ ინსტრუმენტები და მარკეტინგი თვეში ერთხელ ან ორჯერ