Rozdiel medzi Java a Javascriptom. V čom je Java iná ako Javascript? Porovnanie Java a JavaScript. Zásadné koncepty vášho kódu

  • 21.04.2019

Otázka, ako sa Java líši od JavaScriptu, zmätie hlavu mnohých začínajúcich programátorov, pretože sa zdajú byť takmer rovnakí a majú v koreňoch rovnaké koreňové slovo. Môžeme predpokladať, že JS je skôr ako „skriptovací“ formulár. Ale toto je nesprávny úsudok. Sú to dva rôzne programovacie jazyky. Zdieľajú iba spoločnú históriu vzniku Netscape, ktorá vysvetľuje ich podobnosť. Potom sa rozchádzajú úplne inými smermi.

Programátori dnes radi žartujú, že tieto jazyky sú si navzájom podobné ako škrečok so šunkou. Porozumenie toho, ako sa Java líši od JavaScriptu, je však nevyhnutné, aby ste sa mohli považovať za gramotného človeka.

V začiatkoch internetu, v roku 1990, internet Explorer a Netscape Navigator boli dva z najpopulárnejších webových prehľadávačov, ktoré používatelia široko používali.

Za pouhých 10 dní vytvoril talentovaný vývojár Brendan Eich zo spoločnosti Netscape Inc programovací jazyk prehľadávača, ktorý počítaču naordinoval interakciu s používateľom. Tento jazyk pomenoval Livescript a integroval ho priamo do Navigátora. Prehliadač potom interpretoval príkazy používateľa. Kód nebolo potrebné kompilovať a doplnok sa nevyžadoval vôbec.

Ďalší programovací jazyk, Java, si získaval popularitu približne v rovnakom čase, aj keď na svoju prácu potreboval samostatný doplnok. Je to programovací jazyk, ktorý vynašiel James Gosling zo spoločnosti Sun Microsystems. Jeho vytvorenie a vývoj trval oveľa viac ako 10 dní - trvalo to štyri roky. Od roku 1991 skupina inžinierov spoločnosti Sun Microsystem s názvom The Green Team pracovala na jeho vytvorení dňom i nocou. Prvýkrát bol vydaný v roku 1995 a od tej doby vyšlo niekoľko nových verzií tohto jazyka.

Dnešný internet je presýtený programovacími produktmi a Jave sa dá poďakovať za množstvo aplikácií, ktoré uľahčujú prácu každodenný život používateľov. Túto značku v súčasnosti vlastní spoločnosť Oracle.

Java je niečo, čo má svoj vlastný kód, je to univerzálny objektovo orientovaný programovací jazyk, v ktorom je možné rovnaký kód použiť kdekoľvek. Je zostavený a interpretovaný. Kompilátor prevádza zdrojový kód na bytecode a potom vytvorí tlmočník, ktorý priamo vykoná stroj. Je spoľahlivý, distribuovaný, prenosný a možno ho použiť na vývoj samostatných alebo webových aplikácií.

Jazykové vlastnosti:

  1. Kompilácia a interpretácia je Java, ktorá vytvára podmienky pre preklad kompilátorom zdrojový kód do bytecode. Potom sa vygeneruje strojový kód, ktorý môže vykonať priamo stroj, a je za to zodpovedný tlmočník.
  2. Vďaka nezávislej a prenosnej platforme je možné ju premiestňovať z jedného stroja na druhý. Použiť pri akejkoľvek úprave operačného systému, zatiaľ čo systémové prostriedky a procesor neovplyvňuje programy.
  3. Bajtkód vygenerovaný kompilátorom je možné použiť na ľubovoľnom stroji.
  4. Čisto objektovo orientovaný jazyk, kde sa všetko točí okolo tried a objektov.
  5. Zabraňuje hrozbe vírusov a zneužitiu zdrojov. Pozostáva zo zberača odpadu a na odstránenie chýb a rizika nehôd používa spracovanie výnimiek.
  6. Distribuovaný. Umožňuje vám vytvárať aplikácie na webe a môže zdieľať údaje aj program. Môže sa tiež použiť na prístup k vzdialeným objektom cez internet a umožňuje viacerým programátorom pracovať v tandeme z rôznych vzdialených miest.
  7. Multithreading a interaktivita. Pomáha programom s viacerými vláknami, kde je možné súčasne spracovať viac úloh.
  8. Má dynamické a rozšíriteľné nové triedy, objekty, metódy a knižnice. Môže tiež podporovať funkcie napísané v jazykoch ako C a C ++.
  9. Ľahkosť vývoja od r opätovné použitie kód uľahčuje proces vytvárania.
  10. Škálovateľnosť. Výkon môžete zvýšiť predĺžením doby spustenia a minimalizáciou spotreby pamäte za behu.

Čo je to JavaScript? Po prvé daného jazyka dôležité pre fungovanie systému. Má zabudovaného klienta na zabezpečenie správneho správania a interaktivity aplikácií. Jazyk bol zavedený pre štandardizáciu ECMA (Európska asociácia výrobcov počítačov) Netscape. Štandardná verzia s názvom ECMA Script. Stal sa populárnym kvôli marketingovému triku, ktorým získal záujem používateľov.

Prehliadač slúži na spustenie kódu JavaScript (na čo sa práve pozeráme). Posledná je k dispozícii v rôzne verzie... Ako platformy sa nepoužívajú iba prehliadače. Niektoré databázy ako Mongo DB, Couch DB používajú JS ako svoj skriptovací a dotazovací jazyk. Zahŕňa malú a jednoduchú sadu príkazov súvisiacich s Javou, ktoré interpretuje prehliadač.

Udalosti stránky je možné rýchlo vytvoriť pomocou JS, aj keď nie sú schopné vyvíjať desktopové aplikácie rovnakým spôsobom ako iné jazyky ako Java alebo C ++ určené na správu.

Vlastnosti a popis programovacieho jazyka Java sú uvedené nižšie:

  1. Výklad - kód JS sa vykonáva v prehliadači, čo priamo znemožňuje kompiláciu kódu.
  2. Skriptovací jazyk na strane klienta, ktorý na vykonávanie kódu používa prehľadávač a nevyžaduje interakciu so serverom. Novšie verzie a rámce však už umožňujú skriptovanie na strane servera.
  3. Na základe udalostí - môže spustiť konkrétny kód, keď k nemu dôjde, môže to byť akákoľvek načítavacia stránka alebo odoslanie formulára.
  4. Použije kontrolu na stránku HTML manipuláciou s objektmi na nej.

Rozdiely v primárnom jazyku

Asi pred piatimi rokmi mohla byť odpoveď na otázku, ako sa Java líši od JavaScriptu, ľahšia. Java je jazyk s všeobecný účela JS sú vlastné webom na vytváranie animovaných a interaktívnych prvkov. Dnes je všetko oveľa komplikovanejšie. Oba jazyky sa za posledných pár rokov rýchlo rozvíjali. Jazyky Java a JavaScript sa píšu, zostavujú a implementujú odlišne. Pokiaľ ide o funkčnosť, každý má zásadné rozdiely.

Pre lepšie pochopenie problematiky uvádzame porovnávaciu tabuľku.

Prísny jazyk s premennou deklarovanou ako prvá na použitie v programe. Počas kompilácie sa kontroluje typ premennej.

Má uvoľnenejšiu syntax a pravidlá.

Je to objektovo orientovaný jazyk.

Jazyk pre objektové skriptovanie.

Aplikácie môžu bežať na ľubovoľnom virtuálnom stroji (JVM) alebo v prehľadávači.

Kód JS sa vykonáva iba v prehliadači, pretože JS je určený iba pre prehliadač.

Objekty sú postavené na triedach, dokonca ani my nemôžeme vytvoriť žiadny program bez vytvorenia triedy.

Objekty sú založené na prototypoch.

Program má príponu súboru .Java a prevádza zdrojový kód na bytové kódy, ktoré vykonáva JVM (Java Virtual Machine).

Súbor má príponu „.js“ a je interpretovaný, ale nie je skompilovaný. Každý prehliadač má interpret jazyka JavaScript na vykonávanie kódu JS.

Autonómny jazyk.

Program využíva viac pamäte.

Vyžaduje menej pamäte, preto sa používa na webových stránkach.

Používa závitový prístup k súbežnosti

Podporuje udalosti založené na súbežnosti

Pomocou tejto tabuľky používatelia začnú lepšie rozumieť rozdielom medzi jazykmi Java a JavaScript.

JavaScript bol pôvodne špecifický pre daný web. Vo svojej súčasnej inkarnácii funguje takmer vo všetkých prehliadačoch a niektoré webové stránky ho používajú na vylepšenie svojich používateľské rozhranie... Prehliadače Java applety sú podporované iba do určitej miery a ich použitie je nízke hlavne z bezpečnostných dôvodov. Väčšina návštevníkov stránok má v predvolenom nastavení povolený JS a zakázané Java aplikácie, najmä v mobilné prehliadače... Oba jazyky sú kompatibilné so serverom Java Server, napríklad v aplikáciách ako Apache Tomcat, JBoss a WebSphere.

Tieto servery obsadzovali väčšinu programov, ktoré sa zobrazovali na verejných stránkach a chránili ich podnikové brány firewall. Spoločnosť JS už nejaký čas experimentuje na strane servera. JS čoraz viac využívajú aplikačné servery s vlastným kódovaním.

Oba jazyky majú rámce a knižnice. Používateľom ponúkajú prístup k cieľu a univerzálny kódna ktoré je možné znovu použiť rôznych výrobkov... Pri použití výrazne skracujú čas potrebný na vývoj.

Po preskúmaní týchto argumentov môže používateľ nájsť odpoveď na otázku, aký je rozdiel medzi programami Java a JavaScript.

Kľúčové rozdiely medzi modernými jazykmi

Jazyky sa zlepšovali a vyvíjali viac ako desať v posledných rokoch... Zmenili sa aj rozdiely medzi nimi. Dnes ich môžete systematizovať niekoľkými spôsobmi:

  1. Štýl výkonu. Kľúčové je, ako sa robia. Kód Java sa zvyčajne píše v IDE a kompiluje sa do kódu, ktorý spúšťa virtuálny stroj Java, ale ktorý nie je čitateľný pre používateľov. JS je implementovaný obvyklým spôsobom s využitím jeho mechanizmu a syntaxe. Súbory JS zverejnené online sú v skutočnosti zvyčajne komprimované do jemného formátu. Čitateľnosť je dôležitý rozdiel, pretože zmeny v prostredí Java IDE budú vyžadovať množstvo krokov a špecializovaný softvér na zostavenie a nasadenie zmien.
  2. Vplyv spoločenstva. Programátorská komunita mala obrovský vplyv na oba jazyky. Proces Java Community Process používa Java na prijímanie vstupov do budúcich inklúzií v jazykoch prostredníctvom požiadaviek na špecifikácie. Súčasný vlastník spoločnosti Java, spoločnosť Oracle, používa tieto dotazy na ďalšiu oficiálnu implementáciu jazyka.
  3. Písanie a rozmiestňovanie. Toto je ďalší kľúčový rozdiel medzi jazykmi Java a JavaScript. Java je navrhnutá špeciálne pre vývojárov, ktorí napíšu kód raz a potom ho nasadia do ľubovoľného operačný systémsi vyberú bez potreby akýchkoľvek zmien. JS viac reaguje na zmeny za behu a riadi sa otvoreným štandardom ECMAScript.
  4. Porovnanie Java a JavaScript ako koncepty dedenia. JS nepoužíva triedy, ale je založený na prototype.
  5. Rozdiely v rodokmeni. JS má jednoduchšiu a menšiu sadu príkazov ako Java.

Zatiaľ čo Java a JS zdieľajú rovnaký objektovo orientovaný prístup, prvý z nich môže stáť sám o sebe a druhý musí byť v zásade umiestnený v dokumente HTML, aby fungoval. Java je zložitejší a širší jazyk, ktorý vytvára samostatné aplikácie.

Java applety sú úplne samostatné programya JS je text, ktorý spracováva a interpretuje prehliadač. Dnešné webové aplikácie však stierajú hranice medzi konvenčnými desktopovými aplikáciami a tými, ktoré sú vytvorené pomocou bežných webových technológií, ako sú CSS, HTML a JS.

Ostatné kľúčový rozdiel je spôsob prezentácie jazyka koncovému používateľovi. Java by mala byť kompilovaná do strojový jazyk... JS je textový základ v tom, že ho môžete zapísať do dokumentu HTML a dokument sa spustí priamo v prehliadači bez kompilácie.

Java je nezávislá od HTML a JS je od nej takmer úplne závislá. Odpoveď na otázku, ktorý jazyk je najlepší pre najlepšie webové aplikácie, sa môže líšiť, niekto uprednostňuje JSt za chodu a niekto viac. dostatok príležitostí a silné stránky Java.

Jednou z najväčších silných stránok spoločnosti JS je, že ľudia tomu dokážu porozumieť. Toto výrazne uľahčuje programovanie a robí jazyk robustnejším. Poskytuje tiež obrovskú rýchlostnú výhodu oproti jazyku Java. Je možné vytvárať udalosti a prvky webových stránok rýchlejšie s JS ako s Java. Mnoho príkazov JavaScriptu sa nazýva aj obslužné rutiny udalostí. Tieto príkazy sú priamo zabudované do existujúcich príkazov HTML.

Okrem jednoduchého použitia je JavaScript k programátorovi zhovievavejší ako Java. To dáva programátorovi viac slobody pri vytváraní objektov pomocou svojho prototypu. Java je zatiaľ prísnejšia a vyžaduje, aby boli definované a označené všetky triedy a inštancie. JavaScript tiež umožňuje volať už existujúce objekty, ako je samotný prehliadač alebo stavový riadok, a umožňuje vám hrať iba s touto časťou. Java je zameraná viac tam, kde je to potrebné takmer stále, zatiaľ čo JavaScript je zameraný na webové stránky.

Java a JS však môžu skutočne vytvárať dobré stránkya Java aj JS môžu ponúkať viac vysoký stupeň kontakt medzi webom a používateľom, ako je to možné pri pomocou HTML... Je zrejmé, že žiadny jazyk nie je nadradený inému. JavaScript a applety sa najčastejšie ponúkajú ako plne funkčné prvky na webe. To znamená, že ich môžete na svojej stránke jednoducho získať a použiť, ak máte požadované povolenie. V skutočnosti existuje niekoľko webov, ktoré sa špecializujú na poskytovanie appletov a JavaScriptu.

Ak sa chcete dozvedieť, ako implementovať prvky na svoju webovú stránku, na internete nájdete veľa skvelých návodov a zdrojov. Presne to umožňujú výukové programy o jazyku JavaScript a HTML. Majte však na pamäti, že neučia písať jazyky, ale jednoducho vám ukážu, ako ich umiestniť na webovú stránku. Môže dať dobrá prezentácia o obidvoch formátoch. Keď sa používateľ dozvie, v čom sa Java líši od JavaScriptu, môže lepšie pochopiť ich štruktúry a pokúsiť sa dozvedieť viac o jazykoch. Možno niekedy vytvorí svoje vlastné applety alebo prvky JavaScriptu.

Všetko. Toto sú nepríbuzné jazyky.

2018-12-04T00: 00Z

JavaScript je objektovo orientovaný jazyk skripty, ktorý umožňuje vytvárať dynamické stránky HTML a umožňuje spracovávať vstupy a údržbu údajov, zvyčajne v prehliadači.

Java je programovací jazyk, základná sada knižníc a platforma virtuálneho stroja, ktorá vám umožňuje vytvárať kompilované programy, ktoré bežia prakticky na každej platforme bez distribúcie zdrojového kódu v pôvodnej podobe alebo opätovnej kompilácie.

Aj keď majú rovnaké názvy, skutočne ide o dva úplne odlišné programovacie jazyky / modely / platformy a slúžia na riešenie úplne odlišných problémov.

Je bežnou mylnou predstavou, že JavaScript je podobný alebo úzko súvisí s Javou; to nie je pravda. Oba majú syntax C, sú objektovo orientované, zvyčajne izolované a široko používané vo webových aplikáciách na strane klienta, ale podobnosti tým končia. Java je staticky napísaná; Konfigurácia JavaScriptu je dynamická (to znamená, že premenná môže obsahovať objekt ľubovoľného typu a nemôže byť obmedzená). Java sa načítava z kompilovaného bytecode; JavaScript je načítaný ako ľudsky čitateľný kód. C je ich posledný spoločný jazyk predkov.

2018-12-11T00: 00Z

JavaScript takto pomenoval Netscape, aby zmiatol neopatrného, \u200b\u200bže má niečo spoločné s Javou. módne slovo dní, a uspel.

Tieto dva jazyky sú úplne odlišné.

2018-12-18T00: 00Z

Tu sú niektoré z rozdielov medzi týmito dvoma jazykmi:

  • Java je staticky napísaný jazyk; JavaScript je dynamický.
  • Java je založená na triedach; JavaScript je založený na prototypoch.
  • Konštruktory jazyka Java sú špeciálne funkcie, ktoré je možné vyvolať iba pri vytvorení objektu; „Konštruktory“ JavaScriptu sú iba štandardné funkcie.
  • Java vyžaduje, aby všetky neblokujúce príkazy končili bodkočiarkou; JavaScript vkladá bodkočiarky na konce určitých riadkov.
  • Java používa zmenu mierky bloku; JavaScript používa funkčná definícia oblasti.
  • Java má implicitný tento rozsah pre nestatické metódy a implicitný rozsah triedy; JavaScript má skrytý globálny rozsah.

Niektoré z funkcií, ktoré považujem za špeciálne silné stránky JavaScriptu, sú:

  • JavaScript podporuje zatváranie; Java môže simulovať triedenie „uzáverov“ pomocou anonymných tried. (Skutočná uzávierka môže byť podporovaná v budúcej verzii Java.)
  • Všetky funkcie JavaScriptu sú premenné; Funkcie Java sú premenné, iba ak sú výslovne označené.
  • Prototypy JavaScriptu je možné za behu prepísať a majú okamžitý efekt na všetky odkazované objekty. Triedy Java nemožno prepísať spôsobom, ktorý ovplyvňuje všetky existujúce inštancie objektov.
  • JavaScript vám umožňuje prepísať metódy na objekte bez ohľadu na jeho prototyp (myslite na seba v Ruby, ale steroidy); metódy v objekte Java sú viazané na jeho triedu a nemôžu byť prepísané za behu programu.

2018-12-25T00: 00Z

Java a Javascript sú podobné ako Car a Carpet sú podobné.

2019-01-01T00: 00Z

Takmer každý počítač na svete predáva najmenej jeden nainštalovaný prekladač JavaScriptu.

Väčšina (ale nie „takmer všetky“) počítače majú nainštalovaný Java VM.

Ak sa pozriete na štatistiku GitHubu, uvidíte, že JavaScript a Java sú dva hegemóny. moderný svet programovanie pred C / C ++, Python, PHP a Ruby. Napriek tomu, že sú si podobné názvy, že JavaScript, ako už názov napovedá, je ľahšou, ľahšie pochopiteľnou a pohodlnejšou verziou Java, stále nemajú takmer nič spoločné.

V tomto článku sa pozrieme na hlavné črty týchto jazykov, ktoré ukazujú, že bežný názov nie je nič iné ako prvotná myšlienka vývojárov.

Java

Jazyk Java, ktorý bol počas svojho vývoja pomenovaný „dub“ a „zelený“, bol oficiálne vydaný v roku 1995. Veľa si požičal z C / C ++, ale propagoval nové koncepty, ktoré zahŕňali ľahké a bezpečné programovanie. Preto bola pôvodne Java vnímaná ako dedič týchto najpopulárnejších jazykov.

Základným princípom kódu Java je schopnosť programátora jednorazovo napísať kód tak, aby mohol bežať kdekoľvek. Namiesto zostavovania rôzne súbory pre každú platformu sa tu vytvorí súbor JAR. A ak systém podporuje Javu, potom sa súbor vykoná.

Na implementáciu takejto myšlienky sa používa JVM, čiže Virtual stroj Java... Nejde o nič iné ako o súbor pokynov, ktoré určujú kompiláciu v závislosti od platformy a ďalšieho vykonávania kódu. Tento princíp sa nazýva just-in-time.

Hlavné použitia Java:

  • Aplikácie pre Android. to úradný jazyk pre najpopulárnejší operačný systém súčasnosti. To znamená, že dostať lepšie výsledky a s využitím čo najväčšieho počtu funkcií je Java ideálnym jazykom
  • Desktopové aplikácie. Okrem toho je Java jedným z nástrojov na vytváranie softvéru pre rôzne platformy. JavaFX a SWT, ktoré vám pomôžu.
  • Podnikové systémy. V odvetviach spojených so spracovaním osobných údajov (bankovníctvo, financie, obchod) sa Java používa ako spoľahlivý, ľahko udržiavateľný a rýchly jazyk.
  • Vložené systémy. Inteligentné hodinky, niektoré ovládače, semafory a dokonca samostatné systémy hybridné autá používajú Javu. Najaktuálnejším vývojovým vektorom je internet vecí.
  • Vedecký výskum... Oveľa populárnejšie sú tu programy MATLAB a Python, ale Java si poradí aj so zložitými úlohami, ako je spracovanie jazyka alebo správa umelej inteligencie.

JavaScript

JavaScript bol vyvinutý na pozadí obrovských obmedzení HTML. Netscape Communications predvídal bezprostrednú potrebu dynamického a funkčného webu, a tak za pouhých 10 dní vytvorili v roku 1995 jazyk s názvom LiveScript.

Neskôr vývojári prišli s nápadom pridať funkcionalitu pomocou Javy. Takto vznikol konečný názov a podobná syntax. Tým však akékoľvek podobnosti končia. Z pochopiteľných dôvodov sa v tom čase ešte Java nespustila na webe, zatiaľ čo JavaScript si rýchlo získal obľubu a stal sa spolu s HTML a CSS hlavnými piliermi moderného internetu.

Na rozdiel od Javy, ktorej kód sa kompiluje, sa interpretuje kód JavaScript. To znamená, že keď navštívite webovú stránku, váš prehliadač prijme kód napísaný v JavaScripte a okamžite ho vykoná. Na tento účel sa používajú špeciálne motory, každý prehliadač používa svoje vlastné: V8 - Chrome, SpiderMonkey - Firefox, Chakra - Edge atď.

JavaScript však už nie je výlučne nástrojom založeným na prehliadači. Za viac ako dve desaťročia od svojho vzniku sa JavaScript etabloval ako jeden z najflexibilnejších programovacích jazykov, ktorý sa používa aj v iných oblastiach:

  • Webové aplikácie. JavaScript je neuveriteľne dobrý pre front-end aj back-end vývoj. V prvom prípade to znamená manipuláciu s DOM na strane prehliadača (animácia, vkladanie údajov, aktualizácie), v druhom - na strane servera (smerovanie, spracovanie údajov, interakcia s databázou).
  • Mobilné aplikácie. Nástroje ako React Native a PhoneGap vám umožňujú vytvárať kompletné mobilné aplikácie iba pomocou JavaScriptu. Takéto rámce sú rozdelené do dvoch typov: tie, ktoré prekladajú JavaScript do natívneho kódu, a tie, ktoré samy používajú motor JavaScript.
  • Desktopové aplikácie. JavaScript môžete stiahnuť offline pomocou rámcov ako Electron a NE.js. Modul je zabalený do spustiteľného súboru a v otvorenom okne sa vykoná kód HTML / CSS / JS.

Aký si teda zvoliť?

Vzhľadom na modernú úroveň rozvoja oboch jazykov v skutočnosti zostáva na výber dané požiadavky výkon, funkčnosť a rýchlosť vykonania.

Java je o niečo zložitejší jazyk veľké množstvo obmedzenia. Aplikácie Java sú menej náchylné na chyby a sú všeobecne funkčnejšie ako aplikácie vytvorené pomocou JavaScriptu. Ale prichádza aj za cenu, hlavnou je čas a zložitosť vývoja. Aplikácie JavaScriptu od vás budú vyžadovať menšie úsilie, ale ich spustenie bude trvať dlhšie, počas ladenia sa objaví viac chýb a komplexný kód asi nebudeš chcieť písať.

Preto je lepšie používať JavaScript pre web a Java je lepšie opustiť vývoj zložitého zložitého softvéru. Pokiaľ ide o vytváranie desktopových a mobilných aplikácií, je to vec vkusu. Odporučil by som používať Javu, pretože udržuje váš kód čistý a má menej chýb. Na druhú stranu, JavaScript je tiež v poriadku.

Prisľúbil, že napíše článok o používaní GraalVM na miešanie Java a JS. Tu je.


Aký je problém? V každodennej praxi často existujú aplikácie, ktoré pozostávajú z dvoch častí: frontendu JavaScriptu a Javaendendu. Interoperačná organizácia medzi nimi si vyžaduje úsilie. Spravidla ich vyrábajú ľudia z rôznych strán barikád a keď sa pokúsia vyliezť do cudzej oblasti, začnú trpieť. Existujú aj vývojári webových stránok s úplným zásobníkom, ale je v nich všetko jasné: musia vždy trpieť.


V tomto článku sa pozrieme na nová technológiavďaka čomu môže byť proces o niečo menej bolestivý. Presnejšie, metóda existuje už dlho, ale nejakým spôsobom prešla cez pozornosť širokých más.


Ak niektorí z javistov ešte nepísali v Reacte, bude tu tutoriál, ktorý vám to umožní. Pokiaľ sa jeden z javascriptorov nepokúsil písať v Jave, potom sa ho v rovnakom tutoriáli bude môcť dotknúť (aj keď iba s jedným riadkom a cez väzby JS).

JS-\u003e Java. Shake The Old: Nashorn

Ak chcete interop Java-\u003e JS, v JDK už dávno bola takáto technológia a volá sa Nashorn (čítajte: „Nashorn“).


Zoberme si skutočnú situáciu. Z času na čas, z roka na rok, ľudia naďalej píšu „serverové“ validátory v Jave a „klientske“ validátory v JS. Zvláštnym cynizmom je tu to, že kontroly sa často kryjú o 80% a celá táto činnosť je v skutočnosti zvláštnou formou priemerného premrhaného času.


Povedzme, že máme veľmi tupého validátora:


var validate \u003d function (target) (if (target\u003e 0) (return "success";) else (return "fail";));

Môžeme ho prevádzkovať na všetkých troch platformách:

  • Prehliadač
  • Node.js

V prehliadači je to triviálne. Len sme ten kúsok kódu vložili kamkoľvek a funguje to.


V Node.js musíte buď rešpektovať ich Feng Shui pre použitie require, alebo ho hacknúť takto jednoduchý kód:


var fs \u003d require ("fs"); var vm \u003d require ("vm"); var includeInThisContext \u003d function (cesta) (var kód \u003d fs.readFileSync (cesta); vm.runInThisContext (kód, cesta);) .bind (toto); includeInThisContext (__ dirname + "/" + názov súboru);

Pripravte sa na to, že ak použijete tieto techniky, potom vás kolegovia môžu čoskoro považovať za strašiaka. My, javisti, nie sme nijakí cudzinci, ale profesionálni javascripti sa môžu hanbiť.


Teraz poďme súložiť to isté, ale pod Naskhornom v Jave.


public class JSExecutor (private static final Logger logger \u003d LoggerFactory.getLogger (JSExecutor.class); ScriptEngine engine \u003d new ScriptEngineManager (). getEngineByName ("nashorn"); Invocable invoker \u003d (Invocable) engine; public JSExecutor () (vyskúšať (File (súbor)) bootstrapFile \u003d new ClassPathResource ("validator.js"). getFile (); String bootstrapString \u003d new String (Files.readAllBytes (bootstrapFile.toPath ())); engine.eval (bootstrapString);) catch (Výnimka e) (záznamník). error ("Can" t load bootstrap JS! ", e);)) public Object execute (String code) (Object result \u003d null; try (result \u003d engine.eval (code);) catch (Exception e) (logger. error ("Can" t run JS! ", e);) return result;) public Object executeFunction (String name, Object ... args) (Object result \u003d null; try (result \u003d invoker.invokeFunction (name, args) ;) catch (Výnimka e) (logger.error ("Nemôžem spustiť JS!", e);) vrátiť výsledok;))

Ako vidíte, môžete vytiahnuť ľubovoľný kód aj samostatná funkcia podľa jej mena.


Existujú samozrejme problémy, ktoré je možné vyriešiť iba manuálne. Polyfill môžete napríklad pripraviť takto:


var global \u003d this; var okno \u003d toto; var proces \u003d (env :()); var konzola \u003d (); console.debug \u003d tlač; console.log \u003d tlač; console.warn \u003d tlač; console.error \u003d tlač;

Ak chcete, aby bol overovací kód úplne identický na serveri aj na klientovi, budete musieť zapísať útržky pre metódy „servera“, ktoré sa tlačia iba do prehľadávača. Toto sú podrobnosti konkrétnej implementácie.


Mimochodom, ab na mojom notebooku (ab -k -c 10 -n 100 http: // localhost: 3000 /? Id \u003d 2) zobrazuje pre takýto kód 6-7 tisíc požiadaviek za sekundu a nezáleží na tom, na čom beží - na serveri Nashorn alebo Node.js. Ale to nie je nič zaujímavé: po prvé, ab na localhost meria počasie na Marse, a po druhé, už veríme, že v týchto motoroch nie sú zjavné chyby, sú to konkurenti.


Je jasné, že ak žijete v „červenej zóne“ krivky názvu S., nemôžete používať Nashorn bez zapnutia mozgu a písania testov. Ak sa nad tým zamyslíte, môžete napísať test, kde bude Nashorn klesať, a bolo by správnejšie napísať natívny kód. Musíme však jasne pochopiť, že svet sa neobmedzuje iba na témy s vysokým zaťažením a výkonom, niekedy je pohodlnosť písania dôležitejšia ako akékoľvek vystúpenie.

Java-\u003e JS. Problém

Pokúsme sa tlačiť dáta opačným smerom, od Javy k JS.


Prečo to môže byť potrebné?


Po prvé, a čo je najdôležitejšie, v mnohých spoločnostiach existuje nezameniteľná axióma: používame Java. V niektorých bankách. Po druhé, pri riešení každodenných problémov tieto problémy neustále vznikajú.


Zvážte puzdro na hračky z skutočný život... Predstavte si: musíte vytvoriť prednú časť s webovým balíkom a chcete ho umiestniť do pravého horného rohu webovej stránky. aktuálna verzia aplikácie. Je pravdepodobné, že backendovú verziu je možné vytiahnuť bežným spôsobom iba zavolaním nejakého java kódu (legacy). To znamená, že musíte vytvoriť taký projekt Maven, ktorý bude fungovať v dvoch priechodoch: pridať dvojicu tried do niektorej fázy životného cyklu Maven Build a spustiť ich, čím sa vygeneruje súbor vlastností s číslom verzie, ktorý v ďalšej fáze manuálne vyzdvihne npm.


Nebudem tu uvádzať príklad takého pom.xml, pretože je to hnus :)


Globálnejšie je problémom to, že moderná kultúra podporuje a podporuje polyglotových programátorov a projekty napísané vo viacerých jazykoch. Z toho vyplývajú tieto body:

  • Vývojári chcú použiť jazyk, ktorý najlepšie vyhovuje danej úlohe. Je veľmi bolestivé písať webové rozhranie v Jave (aspoň dovtedy, kým sa JVM a OpenJDK nestabilizujú na WebAssembly), ale v JS sa to deje jednoducho a pohodlne.
  • Často chcete vyvinúť niekoľko kódových databáz paralelne. Napríklad existuje jedna základňa JS - predná a iná základňa Java - zadná. Chcel by som vyvíjať projekty, pomaly prepisovať celú aplikáciu v Node.JS vrátane kódu servera - na tých miestach, kde to Java nepotrebuje. Nemal by existovať deň nula, keď sa celý backend Java alebo frontend JS dostane na výpis, a nechať celý svet počkať, kým napíšeme nový.
  • Pri prekročení jazykovej hranice musíte manuálne napísať veľa smetného kódu, ktorý poskytuje komunikáciu.

Niekedy je hotové riešenia - napríklad prekročenie hranice Java / C sa vykonáva pomocou JNI.


Použitie takejto integrácie je tiež dobré, pretože, ako radi hovoria funkční programátori, „niečo, čo sa nezlomí, sa nezlomí“. Ak v našom kóde podporujeme najnovšie pom.xml, vlastnosti a súbory XML a ďalšie manuálne prepojenie, majú tendenciu sa lámať v tých najnepríjemnejších okamihoch. Ak túto vrstvu napísali niektorí skutoční bojovníci, napríklad Oracle alebo Microsoft, ťažko sa rozbije a keď sa rozbije, nie je na nás, aby sme ju opravovali.


Vráťme sa k predchádzajúcemu príkladu: prečo musíme vstávať dvakrát a robiť zázraky s Naskhornom, ak nemôžeme vôbec vstať a celé používateľské rozhranie napísať iba v Node?


Ako to ale urobiť, keďže potrebujete transparentne nasávať údaje z Javy?


Prvá myšlienka, ktorá vás napadne, je používanie Nashornu ďalej. Nasajte do toho všetko požadované knižnice, súbor so súborom, a možno sa aj začnú. Pokiaľ medzi nimi nie sú tí, ktorí potrebujú natívne rozšírenia. A ručne emulovať celú infraštruktúru Uzla. A ešte niečo. Zdá sa, že to je problém. Všeobecne taký projekt už bol, volal sa Project Avatar a ten je, bohužiaľ, ohnutý. Ak to vývojári z Oracle nemôžu dokončiť, aká je šanca, že to zvládnete sami?

Java-\u003e JS. Graal

Našťastie máme ďalší pomerne nový a zaujímavý projekt - Graal.js. Teda časť spoločnosti Graal zodpovedná za spustenie JavaScriptu.


Inovatívne projekty zo sveta JDK sú často vnímané ako niečo vzdialené a nereálne. Graal je v tomto smere iný - veľmi náhle vstúpil na pódium ako zrelý konkurent.


Graal nie je súčasťou OpenJDK, ale samostatným produktom. Je známy tým, že je v čerstvé verzie OpenJDK môže prepnúť kompilátor JIT z C2 na ten, ktorý je dodávaný s Graalom. Graal sa dodáva s rámcom Truffle, ktorý je možné použiť na implementáciu rôznych nových jazykov. V tomto prípade vývojári v laboratóriách Oracle Labs implementovali podporu JavaScriptu.


Aby sme získali predstavu o tom, aké ľahké a pohodlné je to, pozrime sa na ukážkový projekt hračky.


Predstavme si, že robíme kabínu UFO na Habrého.



V prvej verzii Fellingu bude môcť UFO zakázať náhodným ľuďom a tlačidlo bude mať názov „Zakážte niekomu!“ V druhej verzii bude tlačidlo zakazovať buď trollov, alebo spamerov a komu presne momentálne zakazujeme, bude načítaný z Javy. Z dôvodu minimalizácie príkladu sa zmení iba štítok na tlačidle, nepreskočíme obchodnú logiku.


Existuje mnoho krokov, ktoré je potrebné podniknúť na podanie žiadosti o reakciu, takže sú prehľadne rozdelené do krokov. Nakoniec sa získa funkčná aplikácia, ktorú som skontroloval.

Časť 1. Žiadosť

1. Stiahnite si „podnikový“ GraalVM (podľa referencie) a zaregistrujte premenné prostredia obvyklé pre Javu.

Podniková verzia je potrebná, pretože iba ona obsahuje GraalJS.


Môžete to napríklad napísať do súboru .bash_profile:


graalvm () (export LABSJDK \u003d / Users / olegchir / opt / graalvm-0.33 / Obsah / Home export LABSJRE \u003d / Users / olegchir / opt / graalvm-0.33 / Contents / Home / jre export JDK_HOME \u003d $ LABSJDK export JRE_HOME \u003d $ LABSJRE export JAVA_HOME \u003d $ JDK_HOME export PATH \u003d $ JDK_HOME / bin: $ JRE_HOME / bin: $ PATH)

A potom po reštartovaní shellu zavolajte túto funkciu: graalvm.


Prečo navrhujem vytvoriť samostatnú funkciu bash a zavolať ju podľa potreby, a nie hneď? Všetko je tu veľmi jednoduché: potom, čo je GraalVM v PATH, bude váš normálny systémový npm (napríklad / usr / local / bin / npm v macOS) nahradený našou špeciálnou verziou v jave ($ JDK_HOME / bin / npm). Ak ste vývojár JS, nie je dobrý nápad meniť sa na konštantu.

2. Vytvorenie adresára pre projekt

mkdir -p ~ / git / habrotest cd ~ / git / habrotest

3. npm init (vyplňte s rozumom, ale stačí kliknúť na tlačidlo Enter)

4. Nainštalujte potrebné moduly: Webpack, Babel, React

npm i --save-dev webpack webpack-cli webpack-dev-server npm i --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-reagovat npm i --save reagovat reagovat-dom

Upozorňujeme, že npm môžu byť mierne zastaraná verzia (vo vzťahu k „súčasnosti“) a požiada vás o aktualizáciu. Nestojí to za aktualizáciu.

5. Vytvorte adresáre, v ktorých sa bude pracovať:

mkdir -p src / klient / aplikácia mkdir -p src / klient / verejné nakladače mkdir -p

6. Učíme Babel naše jazyky:


("predvoľby": ["es2015", "reagovať"])

7. Konfigurácia webpacku:

./webpack.config.js:


var p \u003d require ("cesta"); var webpack \u003d require ("webpack"); var BUILD_DIR \u003d p.resolve (__ dirname, "src / client / public"); var APP_DIR \u003d p.resolve (__ dirname, "src / client / app"); var config \u003d (výstup: (cesta: BUILD_DIR, názov súboru: "bundle.js"), položka: APP_DIR + "/index.jsx", modul: (pravidlá: [(test: /\\.jsx?/, zahrnúť: APP_DIR) , loader: "babel-loader")])); module.exports \u003d config;

8. Vytvorte stránku pre našu aplikáciu:

./src/client/index.html


Vitajte v kormidlovni UFO


9. Vytvorte index (aby sme do neho potom mohli vtlačiť ukážkovú súčasť):

./src/client/app/index.jsx


importovať Reagovať z „reagovať“; importovať (vykresliť) z „react-dom“; importovať NLOComponent z "./NLOComponent.jsx"; trieda App rozširuje React.Component (render () (return (

Vitajte v kokpite, UFO

); )) render ( , document.getElementById ("aplikácia"));

10. Vytvorme komponent!

./src/client/app/NLOComponent.jsx


importovať Reagovať z „reagovať“; trieda NLOComponent rozširuje React.Component (constructor (rekvizity) (super (rekvizity); this.state \u003d (zakázaný: 0); this.onBan \u003d this.onBan.bind (this);) onBan () (let newBanned \u003d this. state.banned + 10; this.setState ((banned: newBanned));) render () (return (

11. Spustite build: webpack -d

Všetko by malo úspešne zbierať a vydávať napríklad:


joker: habrotest olegchir $ webpack -d Hash: b19d6529d6e3f70baba6 Verzia: webpack 4.5.0 Čas: 19358ms Postavené dňa: 2018-04-16 05:12:49 Asset Size Chunks Chunk Names bundle.js 1,69 MiB main main Entrypoint main \u003d bundle. js [./src/client/app/NLOComponent.jsx] 3,03 KiB (hlavný) [./src/client/app/index.jsx] 2,61 KiB (hlavný) + 21 skrytých modulov

12. Teraz môžete otvoriť vo svojom prehliadači. / Src / client / index.html a vychutnať si nasledujúce zobrazenie:

Dokončili ste prvú časť tutoriálu, teraz sa musíte naučiť, ako zmeniť štítok na tlačidle.

Časť 2. Premeniteľné premenné

13. Skúsme do našej súčasti vložiť premennú „názov tlačidla“ (buttonCaption) a „zoznam možností“ (buttonVariants), o ktorých v JS nie je nič známe. V budúcnosti budú stiahnuté z Javy, zatiaľ však iba kontrolujeme, či ich použitie vedie k chybe:

importovať Reagovať z „reagovať“; trieda NLOComponent rozširuje React.Component (constructor (rekvizity) (super (rekvizity); this.state \u003d (zakázaný: 0, button: buttonCaption); this.onBan \u003d this.onBan.bind (this);) onBan () (let newBanned \u003d this.state.banned + 10; this.setState ((banned: newBanned, button: buttonVariants));) render () (return (
Zakázané: (this.state.banned)
); )) exportovať predvolený NLOComponent;

Pozorujeme úprimnú chybu:


NLOComponent.jsx? 8e83: 7 Uncaught ReferenceError: buttonCaption nie je definovaný pre nový NLOComponent (NLOComponent.jsx? 8e83: 7) pri constructClassInstance (reag-dom.development.js? 61bb: 6789) pri updateClassComponde (reagovať. js? 61bb: 8324) at beginWork (react-dom.development.js? 61bb: 8966) at performUnitOfWork (reag-dom.development.js? 61bb: 11798) at workLoop (reag-dom.development.js? 61bb: 11827) ) na HTMLUnknownElement.callCallback (react-dom.development.js? 61bb: 104) na Object.invokeGuardedCallbackDev (reag-dom.development.js? 61bb: 142) na invokeGuardedCallback (reag-dom.development.js? 61bb: 191) at replayUnitOfWork (reagovat-dom.development.js? 61bb: 11302) (anonymne) @ bundle.js: 72 reagovat-dom.development.js? 61bb: 9627 K vyššie uvedenej chybe došlo v komponent: v NLOComponent (vytvorený App) v div (vytvorený App) v App

14. Teraz sa oboznámime s legálnym spôsobom, ako vložiť premenné do Webpacku. Toto sú nakladače.

Najskôr je potrebné trochu prepísať konfiguráciu webpacku, aby ste mohli pohodlne načítať vlastné nakladače:


var p \u003d require ("cesta"); var webpack \u003d require ("webpack"); var BUILD_DIR \u003d p.resolve (__ dirname, "src / client / public"); var APP_DIR \u003d p.resolve (__ dirname, "src / client / app"); let defaults \u003d (output: (cesta: BUILD_DIR, názov súboru: "bundle.js"), položka: APP_DIR + "/index.jsx", modul: (pravidlá: [(test: /\\.jsx?/, zahrnúť: APP_DIR) , loader: "babel-loader")]), resolveLoader: (modules: ["node_modules", p.resolve (__ dirname, "loaders")])); module.exports \u003d function (content) (let dd \u003d defaults; dd.module.rules.push ((test: /index\\.jsx/, loader: "preload", options: ())); return dd;);

(Upozorňujeme, že v rámci možností môže zavádzač vložiť akékoľvek údaje a potom ich načítať pomocou nástroja loaderUtils.getOptions (this) z modulu loader-utils)


No, teraz vlastne píšeme nakladač. Nakladač je hlúpy: počiatočný kód prichádza na vstup do zdrojového parametra, zmeníme ho podľa vlastnej vôle (nemôžeme ho zmeniť) a potom ho vrátime späť.


./loaders/preload.js:


const loaderUtils \u003d require ("loader-utils"), schemaUtils \u003d require ("schema-utils"); module.exports \u003d function main (source) (this.cacheable (); console.log ("applying loader"); var initial \u003d "Ban troll!"; var varianty \u003d JSON.stringify (["Ban troll!", " Zakážte spammerovi! "]); Vrátiť` window.buttonCaption \u003d \\" $ (počiatočné) \\ ";` + `window.buttonVariants \u003d $ (varianty);` + + $ (zdroj) `;);

Prebudovanie pomocou webpack -d.


Všetko funguje dobre, nie sú žiadne chyby.

Časť 3. Pridanie kódu Java

15. Teraz sa pýtaš, dobre, naučili sme sa jedného malého špinavého hackera Webpacku, ale čo s tým má Java spoločné?

Je tu zaujímavé, že náš nakladač je popravený z nejakého dôvodu, ale pod grálom. To znamená, že môžete použiť API podobné Nashornu na prácu z JS s typmi Java.


const loaderUtils \u003d require ("loader-utils"), schemaUtils \u003d require ("schema-utils"); module.exports \u003d function main (source) (this.cacheable (); console.log ("applying loader"); // Môžeme získať typy Java a vytvárať objekty tohto typu var JavaString \u003d Java.type ("java.lang. Reťazec "); var initial \u003d new JavaString (" Ban the troll! "); // Údaje môžeme prevádzať sem, tam a späť var jsVariants \u003d [" Zakázať trolla! "," Zakázať spammerovi! "]; Var javaVariants \u003d Java .to (jsVariants, "java.lang.String"); var varianty \u003d JSON.stringify (javaVariants); // Interoper však nie je vždy dobrý, a potom musíte ohradiť späť `window.buttonCaption \u003d \\" $ (initial) \\ A samozrejme, webpack -d.

16. Pri pokuse o zostavenie pomocou webového balíka sa zobrazí chyba:

CHYBA v ./src/client/app/index.jsx Zostavenie modulu zlyhalo: ReferenceError: Java nie je definovaná na Object.main (/Users/olegchir/git/habrotest/loaders/preload.js:9:19)

Vzniká preto, že typy Java nie sú v predvolenom nastavení k dispozícii a sú povolené špeciálnym príznakom --jvm, ktorý je k dispozícii iba v GraalJS, ale nie v „normálnom“ uzle.

Preto musíte zbierať pomocou špeciálneho príkazu:


node --jvm node_modules / .bin / webpack -d


keďže toto všetko je dosť nepríjemné písať, v bashe používam alias. Napríklad do súboru .bash_profile môžete vložiť nasledujúci riadok:


alias graal_webpack_build \u003d "node --jvm node_modules / .bin / webpack -d"


Alebo ešte niečo kratšie, aby bolo písanie príjemné.

17. ZISK!

Výsledok je možné zobraziť v mojom úložisku GitHub. Zhromaždené súbory sa odovzdajú priamo do úložiska, takže si ho môžete prezrieť bez toho, aby ste prešli tutoriál až do konca.

Záver


Týmto jednoduchým a pohodlným spôsobom môžeme teraz integrovať Java a JS. To všetko zďaleka nie je

jediný prípad , môžete uvažovať o mnohých spôsoboch použitia.Nakoniec kvapka dechtu v sude s medom. V čom je úlovok?


GraalJS ešte nie je Open Source, aj keď ho podľa povestí chcú otvoriť; Už je to v poriadku.

  • Java NPM sa stále spomaľuje. Prečo - je potrebné študovať. Spomaľuje npm, nie samotný motor JS;
  • {!LANG-0c57bc534b2fa4956dc8721f9c0667d6!}
  • Pod kapotou tohto všetkého sa skrýva divoká mágia a pri pokuse o vstup do nej budete musieť študovať veľa ďalších vecí;
  • To všetko je kompilované proti JDK8. Nové funkcie v prostredí Java 11 si budú musieť počkať dosť dlho;
  • Graal je experimentálny projekt. Toto musíte vziať do úvahy pri pokuse o integráciu do veľmi krvavého podniku bez priestoru pre chyby.

Značky: Pridať štítky

LiveScript, ECSMAScript \u003d JavaScript

Teraz na Gmail reagujeme pokojne pomocou jeho vyskakovacích okien, okamžité správy a to všetko bez opätovného načítania stránky. Ale na začiatku 90. rokov to programy v systéme Windows dokázali a potom s veľmi veľkým náskokom, pričom im vnucovali povahu samostatných aplikácií. Problémom je v skutočnosti nedostatok interaktivity na webových stránkach, iba suchý text s obrázkami a hypertextovými odkazmi. Tento problém sa týkal inžinierov vtedajšej Netscape (teraz Mozilla) a tu stojí za to začať príbeh o Javascripte.

Mladý inžinier Brendan Icke dostal za úlohu vytvoriť jazyk, ktorý by bol podobný jazyku Java, ale menší a ako sám autor napísal: „akýsi jeho mladší brat“, a je veľmi dôležité, mal by expresívnu slovnú zásobu, aby neprogramátori mohli rýchlo zvládnuť túto technológiu ... Už po 10 dňoch bola napísaná prvá verzia jazyka, ktorý sa rozhodli nazvať LiveScript. Samozrejme, je ťažké vytvoriť ideálny jazyk v krátkom časovom období, ale napriek niektorým nedostatkom vyriešil pridelenú úlohu, a to umožnil prácu s HTML bez opätovného načítania stránky.

Po chvíli bol jazyk premenovaný na JavaScript. Toto meno nebolo vybrané náhodou. V tom čase a vlastne aj teraz bol jazyk Java veľmi populárny a predpona slova Java ho mala priťahovať viac pozornosti do jazyka. A prinieslo to ovocie, ľudia sa začali zaujímať, skúšali, oceňovali možnosti jazyka, a to tak, že po ohlásení technológie viac ako 20 spoločností vyjadrilo zámer použiť Javascript vo svojich budúcich produktoch ako skriptovací jazyk objektov s otvoreným štandardom (na základe Wikipedie). A to bol rok 1995.

V tom istom roku bol pri registrácii servera Netscape jazyk štandardizovaný ECMA (Európska asociácia výrobcov počítačov) a dostal názov ECMAScript. Aktuálna verzia dokumentu je 5.1 a je podporovaná väčšinou moderných prehľadávačov.

Teraz to spôsobuje zmätok, ľudia sú niekedy zmätení v názvoch jazykov LiveScript, JavaScript a ECSMAScript. Ak ale vynechá rozdiel medzi pojmami štandardný a programovací jazyk, potom neexistuje žiadny rozdiel ako taký, ako to nariadila história a korporácie.

Zásadné koncepty vášho kódu

Od roku 1994 sa Javascript ohromne rozrástol. Teraz je to plnohodnotný jazyk, čo znamená, že na ňom môžete napísať plnohodnotný web bez toho, aby ste napríklad použili ďalší programovací jazyk na strane servera. Toto sa stalo možné po objavení sa motora V8 vyvinutého spoločnosťou Google a na ňom založenej serverovej platformy node.js.

Stojí za to zdôrazniť dve veľmi dôležité príležitosti jazyku, sú to uzávierky a kontext vykonávania.

  • Uzávery sú schopnosťou odkazovať na premenné, ktoré sú k dispozícii pri deklarácii funkcie;
  • Kontext spustenia sú zmeny tohto odkazu na objekty vo funkcii v závislosti od toho, pre koho sa funkcia vykonáva.

Jedná sa o celkom ľahké a zároveň zložité pojmy, ktorých pochopenie prichádza po cvičení. Ich neporozumenie je však najčastejšou príčinou chýb v kóde.

Javascript toto jeJava?

Možno najbežnejšia otázka na internete. Ako ste už pochopili, odpoveď znie nie. Podobnosť v názve je iba podobná marketingový ťah... JavaScript niektoré zdedil funkcie Javaale nič viac. Tabuľka popisuje najzrejmejšie rozdiely.

Javascript

Vykladané

Skompilovaný

To znamená, že kód, ktorý napíšete v JavaScripte, je možné vykonať ihneď bez kompilácie. Na druhej strane musí byť kód Java najskôr prevedený na bytecode, ktorý potom vykoná virtuálny stroj.

Dynamické písanie

Statický

Dynamické písanie znamená, že v rôznych častiach programu môže rovnaká premenná nadobúdať hodnoty rôznych typov. Napríklad pri deklarovaní premennej ste ju definovali ako reťazec, ale popri tom ste jej priradili číselnú hodnotu. Javascript interpretuje takýto kód bez chýb, zatiaľ čo kompilátor Java vygeneruje chybu.

Prototypovo objektovo orientované

Trieda objektovo orientovaná

V Javascripti sú hlavným prvkom prototypy objektov, ktoré je možné počas vykonávania programu upravovať a klonovať tak, aby vytvorili ďalšie objekty. Toto sa nazýva takzvané prototypové programovanie.

V Jave existujú dva kľúčové pojmy, trieda a objekt. Pred použitím je potrebné objekt označiť ako triedu. Toto je takzvané prototypové programovanie triedy.

Zhrnutie. Kde začať

JavaScript zapnutý tento moment, najobľúbenejší programovací jazyk na strane klienta. Ak ste o tom počuli pred a po prečítaní článku, rozhodli ste sa začať študovať, ProstoWeb ich pripravil niekoľko užitočné zdroje pre začiatočníkov:

Webové stránky

  • http://javascript.ru - jednotka číslo jeden v runete;
  • https://developer.mozilla.org/ru/docs/JavaScript - najaktuálnejšie informácie príslušné témy Jazyk. Väčšina článkov sa týka hlbších tém, ale sú tu aj základné informácie o jazyku (angličtina).