Cześć,
W tym artykule poznamy się bliżej ze skryptowym językiem JavaScript, który dość mocno zakorzenił się nam w przeglądarkach sieciowych jak i nie tylko. Dowiemy się czym jest, jakie ma zastosowania, gdzie jest używany, dlaczego jest dośc mocno popularny, kto obecnie wspiera ten język oraz wielu wielu ciekawych rzeczy. Do tego artyukułu zebrałem się po kilku próbach, ale oto jest!
Jednak zanim zaczniemy to tak jak w poprzednim artykule napiszę kilka słów o sobie.
O mnie
Od 2012 roku zacząłem na poważniej swoją przygodę z programowaniem. W zasadzie wtedy nic
nie umiałem, ale wiadomo, że każdy od czegoś zaczynał. Wtedy moim faworytem był C++, potem
PHP a wraz z nim nauczyłem się HTML, CSS oraz JavaScript. Od 2018 roku zacząłem pracować
zawodowo i poznałem dużo lepiej tematykę programowania obiektowego. Ogólnie to mam za sobą
projekty w PHP, JavaScript, Java, Kotlin, Dart/Flutter, Ruby, C#, Python itd. itd.. Pisałem w tym w
czym musiałem. Potrafię pisać własne skrypty w RPG Makerach jak również edytować te, co już
istnieją np. w grze K-8-0 używam tego skryptu
ale w przeze mnie zmodyfikowanej wersji.
Dodatkowo powiem, że w JavaScript siedzę stosunkowo długo, bo też od 2018 roku zacząłem ten język poznawać dość mocno (od tej strony co trzeba), a chwili obecnej też przy jego użyciu piszę porównywarki cen.
O języku JavaScriptCzym jest?
Ogólnie bardzo trudno powiedzieć to prostymi słowami. JavaScript dla zrozumienia czym jest i jak działa nie można użyć prostych słów. Tak jak mamy w dokumentacji Mozilli w pierwszym zdaniu JavaScript (JS) to skryptowy (interpretowany lub kompilowany metodą JIT) język programowania1 już padają słowa, które pewnie większość czytających może nie zrozumieć, a zagłębiając się dalej, można śmiało uznać, że się niczego nie rozumie. Natomiast w ich kursie od podstaw brakuje tego co chciałbym opowiedzieć.
Jednak korzystając z kilku źródeł jak i własnego doświadczenia postaram się wyjaśnić czym jest JavaScript.
JavaScript, w skrócie JS, jest to skryptowy, obiektowy język programowania, który dość popularnie jest wykorzystywany w stronach www i aplikacjach sieciowych, grach, serwerach, serwisach, w wielu różnych i odmiennych brażnach, w wyświetlaczach w autobusach, a nawet w układach sterujących. Głównie dzięki NodeJS ten język wybił się poza łatką WWW lub PRZEGLĄDARKA, aczkolwiek, nie tylko NodeJS potrafi ten język wynieść poza internet. Język ten został stworzony 4 grudnia 1995 przez Netscape, a jego twórcą jest Brendan Eich. W latach 90. XX wieku organizacja ECMA wypuściła na podstawie tego języka standard języka skryptowego ECMAScript (w skrócie ES). Na stronie https://caniuse.com/?search=es6 możemy zobaczyć, która wersja ES jest wspierana przez które przeglądarki - w linku od razu mamy zaimplementowane zapytanie o ES6 i jak widać, pomimo że standard jest z 2015 roku to dalej wszystkie przeglądarki go nie wspierają. Gdy wyszukamy ES7 lub ES8, to żadna przeglądarka nie wspiera nowsze standardy. Dlaczego tak jest? A no po to, aby był ład i skład. Też trudno jest zmienić standard na jakiś nowszy (ale tego też nie da się uniknąć).
Idąc dalej z tym czym jest JavaScript: jest to język, który można interpretować (tak jak robią to przeglądarki) albo kompilować i tworzyć różnego rodzaju aplikacje komputerowe - pliki uruchomieniowe itd. Jest to język oparty na prototypach i chociaż trudno pojąć co to znaczy to głównie dzięki tej zalecie zyskuje on na swojej elastyczności i złożoności. W tym języku można pisać własne prototypy do istniejących już rzeczy, a potem z nich korzystać jakby zawsze tam były. W JavaScript głównie programuje się funkcyjnie, a takie rzeczy jak klasy są tylko nakładką na tzw. funkcje prototypowe.2
Drogi czytelniku, jeśli mało z tego co napisałem rozumiesz, to śpieszę z pocieszeniem: to naprawdę jest powalony język.
Przykłady zastosowania JavaScript
Tak naprawdę to mógłbym za przykłady się nie brać, bo każda współczesna (w domyśle nowoczesna) strona internetowa używa JavaScript, ale tym pozbawiłbym zrozumienia tego do czego można JS użyć. Tutaj mogę posłużyć się własnym doświadczeniem i tak naprawdę podać przykłady, których nie każdy mógłby się spodziewać.
Mówiąc już ogólnie to JavaScript jest używany w systemach rezerwacji sal konferencyjnych, systemach rezerwacji pokoi hotelowych, na ekranach LED z wynikami aktualnych meczów piłki nożnej, futsalu, koszykówki, na większości ekranów w autobusach (ale głównie w ekranach bocznych i na górnym pasku informacyjnym), na ekranach na których widać gdzie odbywają się wykłady dla studentów, telewizory wyświetlające menu dań (MacDonald's), część biletomaty, część kasowników do biletów w autobusach, itd. itd., a to nawet nie połowa "niestandardowych" przykładów!
Ja obecnie JS używam do programowania porównywarek cen. W moim przypadku jest to raczej dość mocno oczywiste, że używam JS, ponieważ taka porównywarka jest na przeglądarkę internetową.
Co ciekawe, tego języka nie zawsze używa się bezpośrednio. Jak np. przez bardzo popularny CMS WordPress albo to jak może (ale nie wiem) robić Google używając Flutter czy Facebook używając React Native.
W dzisiejszych czasach raczej to nie będzie szokujące, że można używać JavaScript do pisania aplikacji mobilnych, gier na Android jak i całych portali i oprogramowania serwerowego. Dzięki JavaScript można pisać bardzo wydajne serwery do gier oparte na protokole WebSocket (który swoją drogą nie działa zbyt dobrze na PHP).
Prywatna armia narzędzi JavaScript
Ten język doczekał się tak mocnego wsparcia, że teraz jest mi bardzo trudno powiedzieć ile on ma narzędzi programistycznych. Ale ale, zawsze mogę wymienić te najpopularniejsze.
Wraz z rozwojem biblioteki React JavaScript zyskało na programowaniu reaktywnym, co skutkuje z tym że dzięki tej bibliotece programuje się pisząc to co chce się uzyskać pomijając całą drogę uzyskiwania danych rzeczy - brzmi wygodnie? Oczywiście tak jak każdy wynalazek ma to swoje wady i zalety.
Kolejnym genialnym wynalazkiem i tym samym rywalem dla Reacta jest framework Vue, który też służy do uproszczonego programowania stron internetowych (dla osób, które się znają, pewnie teraz dostali zawału przez to jak bardzo po łebkach mówię o tych technologiach).
Facebook oczywiście nie chciał zostać w tyle i wymyślili React Native, który służy do pisania natywnych aplikacji mobilnych właśnie przy użyciu składni Reacta Angular jest konkurentem dla Vue i React i w zasadzie cel ma podobny: ułatwić życie z pisaniem kodu pod strony internetowe. Natomiast ja wiem tyle, że wiele osób go nie lubi, aczkolwiek nie mam bladego pojęcia dlaczego.
jQuery, gdzie jego oryginalnym autorem jest John-a Resig-a3, chociaż dalej istnieje, to jego użycie powinno być wycofane. Powstał, aby pomóc z różnymi standardami przeglądarek, ale te czasy dawno minęły (no chyba że używasz IE). Jest to obecnie ciężka krowa, która tylko zasyfia internet. jQuery doczekał się czasów, kiedy to w czystym JS dużo łatwiej i wydajniej pisze się niż w nim.
Mniej oczywistymi rzeczami jest to, że można pisać w tym języku nie pisząc w nim! Pewnie zrodziło się pytanie "JAK TO JEST MOŻLIWE!!??". Śpieszę z odpowiedzią: takiego typu rzeczy są na porządku dziennym. Przecież wiele języków programowania jest tłumaczone na inne, a potem na język zrozumiały przez procesor. Tutaj tylko jest taka zmiana, że z innego języka wysokiego poziomu na inny język wysokiego poziomu zachodzi takie tłumaczenie.
Pierwszym takim kandydatem jest TypeScript (w skrócie TS). Jest to nakładka językowa stworzona przez mistrza mieszania w tym w czym nie powinni, a mowa jest o Microsoft. W TS pisze się tak jak w JavaScript, ale można używać typowania oraz klasy inaczej działają. Potem taki kod jest tłumaczony na JavaScript i oto mamy gotowiec, który zamula stronkę - nic prostszego
Kolejnym, aczkolwiek nie miałem jeszcze okazji sprawdzić i ponarzekać, konkurentem pod wydziwianie jest język Dart! - tak to dokładnie ten język, w którym piszę FoxSimulator. Dart jest o tyle ciekawy, że można go kompilować natywnie jak i przetłumaczyć na JavaScript. Dzięki temu, można go używać do niemal wszystkiego. Żeby była jasność: tłumaczenie na JS to w Dart jest tylko dodatkową opcją.
Możliwe, że wynalazków pod JavaScript jest więcej, a jestem pewien że tak jest, ale pisanie o nich wszystkich graniczy się z cudem, a nie chcę was zanudzić przedługą listą.
JS w RPG Makerach
Nie jest tajemnicą to, że w RPG Makerach MV oraz MZ jest używany JavaScript, aczkolwiek nie taki surowy jakby się mógł wydawać. Twórcy RM zastosowali dość ciekawi silnik, a mianowicie PixiJS, który wykorzystuje renderowanie 2D WebGL.4. Skąd w ogóle wiadomo? - wystarczy tylko przejrzeć używane przez RM pliki. Z katalogu gry wejść do js\libs i tam znajdziemy plik pixi.js, a w środku będzie ten lub podobny komentarz:
/*!
* pixi.js - v5.2.4
* Compiled Sun, 03 May 2020 22:42:17 UTC
*
* pixi.js is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/
Własnie ten komentarz mówi nam, że jest używany Pixi, a w moim przypadku wersja 5.2.4. Dalej jest informacja o dacie kompilacji, a ostatnie 2 linijki mówią nam o licencji, na której oparte jest użytkowanie
Troszke sumując, to co napisałem, to głównie dzięki JavaScript twórcy RM mogli podejść do kompilowania gry na wiele platform: Windows, Linux, Android, iOS, MacOSX jak i tworzenie gier Web (HTML5). Aczkolwiek jest to troszkę oszukane. Gra tak naprawdę w każdym przypadku (na każdej platformie) jest w formacie HTML5 co w rezultacie daje nam to, że trzeba tylko odpowiednio spreparowanej przeglądarki do odpalenia gry. Gdy sprawdzałem działanie gry na Windows to tak naprawdę odpaliło się okno silnika Chromium, które co jak co zostało mocno zmodyfikowane pod samą grę.
W przypadku Androida to RM MV i RM MZ dały mi grę pod postacią HTML5. Żadnego APK! Moim zdaniem to jest dość dziwne jak na "nowoczesne" silniki gier. Przecież mogli zrobić tak, że od razu wypluwa APK pod Android, albo IPA pod iOS. No właśnie nie do końca mogli. Jak wiecie to żyjemy w czasach kiedy do wszystkiego potrzebna jest licencja albo prawo. W przypadku Androida to, aby zrobić pełnoprawną aplikację to należy dostarczyć certyfikatu no, a skąd RM ma go dostarczyć? Łatwiej jest dać HTML5 i pozostawieniu na twórcy utworzenie aplikacji uruchomieniowej gry. Podobnie sytuacja ma się na iOS. W przypadku Windows, aby system nie pluł się, też najlepiej jest dostarczyć odpowiedni certyfikat. Tutaj sprawa jest łatwiejsza, bo taki Chromium powinien mieć takową certyfikację (aczkolwiek w tej kwestii nie jestem do końca pewny).
Także już mówiąc skrótowo: za każdym razem mamy grę w HTML5 - jeden format by rządzić każdą platformą!
Podsumowanie
Jak widać ten język ma bardzo wiele zastosowań, można z nim bardzo mocno kombinować. JS jest prosty i skomplikowany na raz. Jest bardzo łatwo nauczyć się w nim podstaw, ale koniec końców można dość do sytuacji, gdzie nie wiadomo już niczego. W przypadku RMów jest używany dość oczywisty sposób: wrzucić Pixi i wyświetlmy grę na przeglądarce. Można też utworzyć projekt tylko w HTML5 i używać go do dystrybucji na dowolną platformę (tworząc własne aplikacje uruchomieniowe).
Czy warto uczyć się tego języka? Tak! Przyda się on jak i w RM jak i w szukaniu pracy. Obecnie jest to dość często wymagany język w świecie programowania.
Dziękuję bardzo za uwagę i liczę że zobaczymy się w kolejnych publikacjach.