Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows Phone
  • Javascript ili java što je lakše. Koja je razlika između Jave i JavaScripta

Javascript ili java što je lakše. Koja je razlika između Jave i JavaScripta

Imena koja su slična u sintaksi ponekad su obmanjujuća, što dovodi do toga da ljudi brkaju koncepte Jave i Javascripta ili ih generalizuju u jedan programski jezik. Zapravo, to su različiti jezici, koji se razlikuju po strukturi, obimu i funkcionalnosti. Da biste razumjeli razliku između Jave i Javascripta, morate saznati šta su oni. Možete steći dubinsko znanje iz oblasti programiranja kroz kurseve u školi ITlandia.

Šta je Java?

Java je programski jezik koji se koristi za pisanje aplikacija i apleta. Kreirao J. Gosling u Sun Microsystems Corporation.

Šta je Javascript?

Java Script je skriptni jezik koji se koristi za dodavanje interaktivnosti web stranicama umetanjem u HTML kod. Kreirao B. Eiche u Netscape Communications.

Po čemu se Java razlikuje od JavaScripta?

Razumijevajući šta je Java i šta je Java skripta, možete izvršiti uporednu analizu na osnovu brojnih kriterijuma:

Osim toga, Java se razlikuje od Javascripta po tome što se prvi kompajlira, a drugi interpretira.

U kojim slučajevima treba koristiti Java i gdje je Java Script prikladan?

Da biste napravili izbor, morate jasno znati po čemu se Java razlikuje od JavaScripta. Osnova za odabir su zahtjevi za funkcionalnošću i brzinom izvršenja.

  • Funkcionalni. Odaberite Java Script ako su vam potrebne veće mogućnosti, jer Java ima mnogo ograničenja.
  • Brzina izvršenja. Kodu napisanom u Java Script-u treba više vremena da se izvrši nego kodu napisanom u Javi.
  • Za web razvoj morate koristiti Java Script, ali za razvoj složenog softvera bolje je odabrati Javu. Oba programska jezika mogu se koristiti za kreiranje desktop i mobilnih aplikacija, ali sa Javom će proces programiranja biti lakši i sa manje grešaka.

    Recite prijateljima o nama na društvenim mrežama:

    Obećao sam da ću napisati članak o korišćenju GraalVM-a za mešanje Jave i JS-a. Evo je.


    Šta je problem? U svakodnevnoj praksi često se susrećemo sa aplikacijama koje se sastoje od dva dela: JavaScript frontend i Java backend. Organiziranje međusobne saradnje zahtijeva napor. Po pravilu ih rade ljudi sa različitih strana barikada, a kada pokušaju da uđu u tuđe područje, počinju da pate. Postoje i full-stack web programeri, ali s njima je sve jasno: oni uvijek moraju patiti.


    U ovom članku ćemo pogledati novu tehnologiju koja može učiniti proces malo manje bolnim. Tačnije, metoda postoji dosta dugo, ali je nekako prošla pažnju šire javnosti.


    Ako neko od Javaista još nije pisao u Reactu, ovdje će biti tutorijal koji će vam to omogućiti. Ako neko od Javascriptera nije pokušao da piše u Javi, onda ćete u ovom tutorijalu moći da ga dotaknete (iako u samo jednom redu i kroz JS veze).

    JS->Java. Hajde da protresemo stvari: Nashorn

    Ako želite Java->JS interop, takva tehnologija je postojala u JDK-u davno, a zove se Nashorn (čitaj: “Nashorn”).


    Uzmimo realnu situaciju. Ljudi s vremena na vrijeme, iz godine u godinu, nastavljaju da pišu validatore „servera“ u Javi i „klijentske“ validatore u JS-u. Poseban cinizam ovdje je u tome što se čekovi često poklapaju i za 80%, a sva ta aktivnost, zapravo, predstavlja poseban oblik gubljenja vremena.


    Zamislimo da imamo veoma glup validator:


    var validate = function(target) (if (cilj > 0) (vrati "uspjeh"; ) else (vrati "neuspjeh"; ));

    Možemo ga pokrenuti na sve tri platforme:

    • Pretraživač
    • Node.js

    U pretraživaču je ovo trivijalno. Samo ugrađujemo ovaj dio koda bilo gdje i on radi.


    U Node.js-u morate ili poštovati njihov feng shui pristup korištenju zahtjeva, ili ga hakirati dovraga ovim jednostavnim kodom:


    var fs = zahtijevaju("fs"); var vm = require("vm"); var includeInThisContext = function(path) (var code = fs.readFileSync(path); vm.runInThisContext(code, path); ).bind(this); includeInThisContext(__dirname + "/" + filename);

    Pripremite se na činjenicu da ako koristite takve tehnike, uskoro bi vas kolege mogle početi smatrati strašilom. Nama, Javaistima, ovo nije strano, ali profesionalni Javascripteri mogu biti posramljeni.


    Sada ćemo uraditi istu stvar, ali pod Nashornom u Javi.


    javna klasa JSExecutor (privatni statički završni Logger logger = LoggerFactory.getLogger(JSExecutor.class); ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); Invocable invoker = (Invocable) engine ()javni JSExecu (pozivni) engine () bootstrapFile = novi ClassPathResource("validator.js").getFile(); String bootstrapString = novi String(Files.readAllBytes(bootstrapFile.toPath())); engine.eval(bootstrapString); ) catch (Izuzetak e) (loger. error("Ne mogu učitati bootstrap JS!", e); ) ) public Object execute (String code) ( Rezultat objekta = null; pokušaj ( rezultat = engine.eval(code); ) catch (Izuzetak e) ( logger. error("Ne mogu pokrenuti JS!", e); ) vrati rezultat; ) public Object executeFunction(Naziv niza, Object... args) ( Rezultat objekta = null; pokušaj ( rezultat = invoker.invokeFunction(name, args) ; ) catch (Izuzetak e) (logger.error("Ne mogu pokrenuti JS!", e); ) vratiti rezultat; ) )

    Kao što vidite, možete povući i proizvoljan kod i zasebnu funkciju po njenom imenu.


    Naravno, postoje problemi koji se mogu riješiti samo ručno. Na primjer, možete napraviti polifil ovako:


    var global = ovo; var prozor = ovo; var proces = (env:()); var console = (); console.debug = print; console.log = print; console.warn = print; console.error = print;

    Ako želite da kod validatora bude savršeno identičan i na serveru i na klijentu, moraćete da napišete stubove za „serverske“ metode, koje se guraju samo u pretraživač. Ovo su već detalji konkretne implementacije.


    Usput, ab na mom laptopu (ab -k -c 10 -n 100 http://localhost:3000/?id=2) pokazuje 6-7 hiljada zahtjeva u sekundi za ovaj kod, i nije važno šta radi na - na Nashornu ili Node.js. Ali u tome nema ništa zanimljivo: prvo, ab na localhost mjeri vrijeme na Marsu, a drugo, već vjerujemo da u ovim motorima nema očiglednih grešaka, oni su konkurenti.


    Jasno je da ako živite u “crvenoj zoni” krivulje Sh., ne možete koristiti Nashorna bez uključivanja mozga i pisanja mjerila. Ako dobro razmislite, možete napisati benchmark gdje će Nashorn klonuti, a ispravnije bi bilo napisati izvorni kod. Ali moramo jasno shvatiti da svijet nije ograničen samo na teme visokog opterećenja i performansi, ponekad je praktičnost pisanja važnija od bilo koje izvedbe.

    Java->JS. Problem

    Pokušajmo gurnuti podatke u suprotnom smjeru, sa Jave na JS.


    Zašto bi ovo moglo biti potrebno?


    Prvo, i najvažnije, u mnogim kompanijama postoji aksiom o kojem se ne raspravlja: mi koristimo Javu. U nekim bankama. Drugo, u rješavanju svakodnevnih problema takvi zadaci se stalno javljaju.


    Pogledajmo kućište za igračke iz stvarnog života. Zamislite: trebate generirati front s webpackom i želite napisati trenutnu verziju aplikacije u gornjem desnom kutu web stranice. Vjerovatno je da se backend verzija može izvući na normalan način samo pozivanjem nekog Java koda (naslijeđe). To znači da morate kreirati Maven projekat koji će raditi u dva prolaza: priložiti nekoj fazi životnog ciklusa Maven Build-a sklop nekoliko klasa i njihovo pokretanje, koji će generirati datoteku svojstava s brojem verzije, koja će biti pokupen od strane ručno pozvanog npm u sljedećoj fazi.


    Neću ovdje navoditi primjer takvog pom.xml, jer je odvratan :)


    Općenito, problem je što moderna kultura podržava i ohrabruje poliglotske programere i projekte napisane na više jezika. Iz ovoga proizilaze sljedeće tačke:

    • Programeri žele koristiti jezik koji najbolje odgovara problemu. Veoma je bolno pisati web interfejs u Javi (barem dok se JVM i OpenJDK ne stabilizuju na WebAssembly), ali u JS-u je jednostavno i zgodno.
    • Često želite da razvijete nekoliko baza koda paralelno. Na primjer, postoji jedna baza u JS-u - naprijed, a druga baza u Javi - pozadi. Voleo bih da razvijam projekte, polako prepravljajući celu aplikaciju u Node.JS, uključujući i serverski kod - na onim mestima gde Java nije smisleno potrebna. Ne bi trebalo da postoji "dan broj nula" kada ceo Java backend ili JS frontend ode u otpad, i neka ceo svet čeka dok ne napišemo novi.
    • Kada prelazite jezičnu granicu, morate ručno napisati mnogo smeća koda koji pruža interakciju.

    Ponekad postoje gotova rješenja - na primjer, prelazak Java/C granice se vrši pomoću JNI-a.


    Upotreba takve integracije je također dobra jer, kako funkcionalni programeri vole da kažu, „ono što ne postoji neće se slomiti“. Ako podržavamo paklene pom.xml, svojstva i xml datoteke i druge ručne interakcije u našem kodu, onda oni imaju tendenciju da se pokvare u najneprijatnijim trenucima. Ako su ovaj sloj pisali neki pravi borbeni štreberi, poput Oraclea ili Microsofta, skoro da se ne lomi, a kada se pokvari, nije na nama da ga popravljamo.


    Da se vratimo na prethodni primjer: zašto trebamo dvaput da ustajemo i radimo čuda sa Nashornom, ako nikako ne možemo ustati i napisati cijeli UI samo na Node?


    Ali kako to učiniti, s obzirom na to da morate transparentno sisati podatke iz Jave?


    Prva misao koja vam pada na pamet je nastaviti koristiti Nashorn. Usisajte sve potrebne biblioteke u nju, arhivirajte je, a možda će i početi. Ako među njima nema onih kojima su potrebne izvorne ekstenzije. I ručno emulirajte cijelu Node infrastrukturu. I još nešto. Čini se da je ovo problem. Generalno, takav projekat je već postojao, zvao se Projekat Avatar, i, nažalost, umro. Ako programeri iz Oraclea nisu mogli da ga završe, kolika je onda šansa da će to moći sami?

    Java->JS. Graal

    Srećom, imamo još jedan prilično nov i zanimljiv projekat - Graal.js. To jest, dio Graala koji je odgovoran za pokretanje JavaScripta.


    Inovativni projekti iz svijeta JDK često se doživljavaju kao nešto daleko i nestvarno. Graal je drugačiji u tom pogledu - vrlo iznenada je stupio na scenu kao zreo takmičar.


    Graal nije dio OpenJDK, već poseban proizvod. Poznato je po tome da u najnovijim verzijama OpenJDK možete prebaciti JIT kompajler sa C2 na onaj koji dolazi uz Graal. Osim toga, Graal dolazi sa okvirom Truffle, koji se može koristiti za implementaciju raznih novih jezika. U ovom slučaju, programeri iz Oracle Labs implementirali su podršku za JavaScript.


    Da biste stekli utisak koliko je to jednostavno i praktično, pogledajmo primjer projekta igračaka.


    Zamislimo da obaramo NLO na Habréu.



    U prvoj verziji Slashinga, NLO će moći da zabrani nasumične ljude, a dugme će se zvati „Zabrani nekoga!“ U drugoj verziji, dugme će zabraniti ili trolove ili spamere, a koga tačno sada zabranjujemo biće učitano sa Jave. Da bi se primjer sveo na minimum, promijenit će se samo oznaka na gumbu; nećemo mijenjati poslovnu logiku.


    Postoji mnogo koraka za pravljenje aplikacije za reakciju, tako da su oni uredno raščlanjeni na korake. Na kraju dobijem ispravnu aplikaciju, provjerio sam.

    Dio 1. Priprema aplikacije1. Preuzmite “enterprise” GraalVM (preko veze) i postavite uobičajene varijable Java okruženja.

    Enterprise verzija je potrebna jer je jedina koja ima GraalJS.


    Možete, na primjer, napisati ovo u .bash_profile:


    graalvm () ( export LABSJDK=/Users/olegchir/opt/graalvm-0.33/Contents/Home export LABSJRE=/Users/olegchir/opt/graalvm-0.33/Contents/Home/jre export JDK_HOME JDK_HOME JDK_HOME JDK_HOME izvoz=$LABSHJOMEJOME izvoz JAVA_HOME=$JDK_HOME export PATH=$JDK_HOME/bin:$JRE_HOME/bin:$PATH )

    I onda nakon ponovnog pokretanja ljuske, pozovite ovu funkciju: graalvm.


    Zašto predlažem da napravite zasebnu bash funkciju i pozovete je po potrebi, a ne sve odjednom? Ovdje je sve vrlo jednostavno: nakon što GraalVM uđe u PATH, vaš normalni sistemski npm (na primjer, /usr/local/bin/npm na macOS-u) će biti zamijenjen našom specijalnom Java verzijom ($JDK_HOME/bin/npm). Ako ste JS programer, takva trajna zamjena nije najbolja ideja.

    2. Napravite direktorij za projekat mkdir -p ~/git/habrotest cd ~/git/habrotest 3. npm init (popunite mudro, ali možete samo kliknuti na dugme enter)4. Instalirajte potrebne module: 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-react npm i --save react react-dom

    Imajte na umu da npm može biti malo zastario (u odnosu na "pravu" verziju) i tražit će od vas da ažurirate. Nije vrijedno ažuriranja.

    5. Kreirajte direktorije u kojima će se rad odvijati: mkdir -p src/client/app mkdir -p src/client/public mkdir -p loaders 6. Naučite Babel naše jezike:
    ( "presets" : ["es2015", "react"] ) 7. Postavljanje web paketa:

    ./webpack.config.js:


    var p = require("path"); var webpack = require("webpack"); var BUILD_DIR = p.resolve(__dirname, "src/client/public"); var APP_DIR = p.resolve(__dirname, "src/client/app"); var config = ( izlaz: ( staza: BUILD_DIR, naziv datoteke: "bundle.js"), unos: APP_DIR + "/index.jsx", modul: ( pravila: [ ( test: /\.jsx?/, uključuju: APP_DIR , loader: "babel-loader" ) ] ) ); module.exports = config; 8. Kreirajte stranicu za našu aplikaciju:

    ./src/client/index.html


    Dobrodošli u kormilarnicu UFO 9. Kreirajte indeks (kako bismo onda mogli u njega ugurati demo komponentu):

    ./src/client/app/index.jsx


    import React iz "react"; import (render) iz "react-dom"; import NLOComponent iz "./NLOComponent.jsx"; class App proširuje React.Component ( render () ( return (

    Dobrodošli u kormilarnicu, NLO

    ); ) ) render(, document.getElementById("app")); 10. Kreirajte komponentu!

    ./src/client/app/NLOComponent.jsx


    import React iz "react"; klasa NLOComponent proširuje React.Component ( konstruktor(props) ( super(props); this.state = (zabranjeno: 0); this.onBan = this.onBan.bind(this); ) onBan() (neka newBanned = this. state.banned + 10; this.setState((banned: newBanned)); ) render() ( return (Zabrani nekoga! 11. Pokreni build: webpack -d

    Sve bi se trebalo uspješno spojiti i proizvesti nešto poput:


    joker:habrotest olegchir$ webpack -d Hash: b19d6529d6e3f70baba6 Verzija: webpack 4.5.0 Vrijeme: 19358ms Napravljeno u: 2018-04-16 05:12:49 Veličina imovine Komadovi Komadova MiB glavna imena main. bundle.6j9. js [./src/client/app/NLOComponent.jsx] 3,03 KiB (glavni) [./src/client/app/index.jsx] 2,61 KiB (glavni) + 21 skriveni modul 12. Sada ga možete otvoriti u browser./ src/client/index.html i uživajte u sljedećem prikazu:

    Prvi dio tutorijala je završen, sada morate naučiti kako promijeniti oznaku na gumbu.

    Dio 2. Ubacimo varijable13. Pokušajmo u našoj komponenti implementirati varijablu “naziv dugmeta” (buttonCaption) i “listu opcija” (buttonVariants), o čemu se u JS-u ništa ne zna. U budućnosti će biti povučeni iz Jave, ali za sada samo provjeravamo da li njihova upotreba dovodi do greške: import React iz "react"; klasa NLOComponent proširuje React.Component ( konstruktor(props) ( super(props); this.state = (zabranjeno: 0, dugme: buttonCaption); this.onBan = this.onBan.bind(this); ) onBan () ( neka newBanned = this.state.banned + 10; this.setState((banned: newBanned, button: buttonVariants)); ) render() ( return (Broj zabranjenih: (this.state.banned) (this.state.button)) ) ; ) ) izvoz podrazumevani NLOComponent;

    Vidimo iskrenu grešku:


    NLOComponent.jsx?8e83:7 Uncaught ReferenceError: buttonCaption nije definiran na novom NLOComponentu (NLOComponent.jsx?8e83:7) na constructClassInstance (react-dom.development.js?61bb:6789) na updateClassComponent.develop js?61bb:8324) na beginWork (react-dom.development.js?61bb:8966) na performUnitOfWork (react-dom.development.js?61bb:11798) na workLoop (react-dom.development.js?627bb:1 ) na HTMLUnknownElement.callCallback (react-dom.development.js?61bb:104) na Object.invokeGuardedCallbackDev (react-dom.development.js?61bb:142) na invokeGuardedCallback (react-dom.js16bb1) na replayUnitOfWork (react-dom.development.js?61bb:11302) (anonimno) @ bundle.js:72 react-dom.development.js?61bb:9627 Gornja greška se dogodila u komponenti: u NLOComponent (kreirao App) u div (kreiran od strane aplikacije) u aplikaciji 14. Sada hajde da se upoznamo sa legalnim načinom prosljeđivanja varijabli u Webpack-u. Ovo su utovarivači.

    Prvo, morate malo prepisati konfiguraciju web paketa kako biste prikladno učitavali prilagođene loadere:


    var p = require("path"); var webpack = require("webpack"); var BUILD_DIR = p.resolve(__dirname, "src/client/public"); var APP_DIR = p.resolve(__dirname, "src/client/app"); neka defaults = ( izlaz: ( staza: BUILD_DIR, naziv datoteke: "bundle.js"), unos: APP_DIR + "/index.jsx", modul: ( pravila: [ ( test: /\.jsx?/, uključuju: APP_DIR , loader: "babel-loader" ) ] ), resolveLoader: ( moduli: ["node_modules", p.resolve(__dirname, "loaders")] ) ); module.exports = funkcija (sadržaj) ( neka dd = zadane vrijednosti; dd.module.rules.push(( test: /index\.jsx/, loader: "preload", opcije: () )); return dd; );

    (Imajte na umu da možete staviti bilo koje podatke u opcije za učitavač, a zatim ih pročitati koristeći loaderUtils.getOptions(ovo) iz modula loader-utils)


    Pa, sada, u stvari, pišemo loader. Učitavač je glupo dizajniran: primamo originalni kod kao ulaz u izvorni parametar, mijenjamo ga po želji (možda ga ne mijenjamo) i onda ga vraćamo nazad.


    ./loaders/preload.js:


    const loaderUtils = require("loader-utils"), schemaUtils = require("schema-utils"); module.exports = function main(source) ( this.cacheable(); console.log("applying loader"); var initial = "Ban the troll!"; var variants = JSON.stringify(["Ban the troll!" , " Zabrani spamera!"]); return `window.buttonCaption=\"$(inicijal)\";` + `window.buttonVariants=$(varijante);` + `$(izvor)`; );

    Obnavljamo koristeći webpack -d .


    Sve radi kako treba, nema grešaka.

    Dio 3. Dodajte Java kod15. Sada se pitate: U redu, naučili smo jedan prljavi mali Webpack hak, ali kakve veze Java ima s tim?

    Zanimljivo je da se naš loader ne izvršava tek tako, već pod Gralom. To znači da, koristeći API sličan Nashornovom, možete raditi iz JS-a sa Java tipovima.


    const loaderUtils = require("loader-utils"), schemaUtils = require("schema-utils"); module.exports = function main(source) ( this.cacheable(); console.log("applying loader"); //Možemo dobiti Java tipove i kreirati objekte ovog tipa var JavaString = Java.type("java.lang . String"); var initial = new JavaString("Zabranite trolu!"); //Možemo konvertirati podatke naprijed-natrag var jsVariants = ["Zabranite trolu!", "Zabranite spamera!"]; var javaVariants = Java .to(jsVariants, "java.lang.String"); var variants = JSON.stringify(javaVariants); //Ali interakcija nije uvijek dobra, a onda morate koristiti štake vratiti `window.buttonCaption=\" $(inicijal)\ ";` + `window.buttonVariants=$(varijante);` + `$(izvor)`; );

    I naravno, webpack -d .

    16. Prilikom pokušaja izgradnje sa webpackom, vidimo grešku: GREŠKA u ./src/client/app/index.jsx Izgradnja modula nije uspjela: ReferenceError: Java nije definirana na Object.main (/Users/olegchir/git/habrotest /loaders/preload. js:9:19)

    Nastaje zato što Java tipovi nisu dostupni po defaultu i omogućeni su posebnom zastavicom --jvm, koja je dostupna samo u GraalJS-u, ali ne i u “običnom” čvoru.


    Stoga ga morate prikupiti posebnom naredbom:


    čvor --jvm node_modules/.bin/webpack -d


    Pošto je kucanje svega ovoga prilično zamorno, koristim pseudonim u bash-u. Na primjer, u .bash_profile možete umetnuti sljedeći red:


    alias graal_webpack_build="čvor --jvm node_modules/.bin/webpack -d"

    Ili nešto još kraće da kucanje bude prijatno.

    17. PROFIT!

    Rezultat se može vidjeti u mom GitHub spremištu. Prikupljeni fajlovi se predaju direktno u spremište tako da ih možete pregledati čak i bez prolaska kroz tutorijal do kraja.


    Zaključak

    Na ovaj jednostavan i zgodan način sada možemo integrirati Javu i JS. Sve ovo je daleko od izolovanog slučaja, može se zamisliti mnogo načina primjene.


    Na kraju, kap masti u mast. u čemu je kvaka?

    • GraalJS još nije Open Source, iako, prema glasinama, žele ga otvoriti; Sve je već u redu.
    • Java npm je još uvijek spor. Zašto - treba da učimo. Usporava se npm, a ne sam JS motor;
    • Ispod haube svega toga krije se žestoka magija, a kada pokušate da uđete u nju, moraćete da proučite mnogo dodatnih stvari;
    • Sve ovo je prikupljeno u odnosu na JDK8. Moraćete dosta dugo čekati na nove funkcije iz Jave 11;
    • Graal je eksperimentalni projekat. Ovo se mora uzeti u obzir kada pokušavate da ga integrišete u veoma krvavo preduzeće bez ikakve greške.

    Oznake: Dodajte oznake

    Webmastere početnike koji tek počinju sa izgradnjom web stranica često zanima pitanje – šta je to JavaScript?! Relevantan je i za mnoge jednostavno radoznale korisnike računara koji ovu riječ mogu čuti na forumima, kada komuniciraju u krugovima IT stručnjaka, a naišli su na nju u izvještajima antivirusnih laboratorija. Šta je?

    JavaScript, ili JS, je objektno orijentisani, interpretirani programski jezik koji se može koristiti za kreiranje aplikacija koje mogu samostalno ili biti ugrađene u HTML kod. U potonjem slučaju, Java Script se koristi za kreiranje interaktivnih elemenata na stranici - formulara za autorizaciju, anketa, upitnika itd. Takođe, JavaScript se koristi u web pretraživačima kao dodatna ekstenzija za organizovanje interaktivne kontrole pretraživača, pokretanje skripti ugrađenih u kod stranica i rad sa dokumentima unutar prozora pretraživača. i njegovu interakciju sa korisnikom, kontrolišu web pretraživač i menjaju sadržaj dokumenta koji se prikazuje u prozoru veb pretraživača. Ova ugrađena verzija JavaScripta pokreće skripte ugrađene u HTML kod web stranica. Ova verzija se obično naziva JavaScript na strani klijenta.

    JavaScript uopšte nije jednostavan jezik

    Iako mnogi programeri smatraju da je JavaScript jednostavan za korištenje, on nije tako jednostavan kao što se čini. Iza njegove prividne jednostavnosti krije se punopravni programski jezik, čak složeniji od mnogih njegovih kolega.
    Programeri ga često koriste ne kao programski jezik, već kao alat za kreiranje skripti. Ovdje je činjenica da u nedostatku kontrole tipa JavaScript oprašta mnoge greške koje prave neiskusni i početnici programeri. Kao što sam već rekao, zbog svoje višeplatformske prirode i rada sa gotovo svim postojećim pretraživačima, Java Script je popularan među kreatorima web stranica. Koriste ga za rješavanje određenog niza problema vezanih za povezivanje različitih elemenata interaktivnosti na web stranice u obliku formi, igrica, agregatora, chatova, multimedijalnih playera itd.

    Koja je razlika između Jave i JavaScripta

    Java Script ne treba mešati sa drugim programskim jezikom - Java. To su potpuno različite stvari! Java je objektno orijentisani programski jezik koji je razvio Sun Microsystems još 1995. godine, a potom ga je nabavio Oracle. Da biste pokrenuli aplikacije napisane na Javi, potrebna vam je posebna virtuelna mašina.
    Ali Java Script se može, uz natezanje, nazvati mnogo pojednostavljenom verzijom Jave. Pojednostavljeno do te mjere da je samo sintaksa slična, i to samo u nekim aspektima. U svojoj osnovi, to je drugačiji, poseban jezik koji postoji sam za sebe. Zasnovan je na međunarodnim standardima, što osigurava odličnu kompatibilnost
    između implementacija, iako kao takva, kompatibilnost JavaScript implementacija u različitim pretraživačima obično donosi mnogo problema programerima koji koriste JavaScript jezik na strani klijenta.

    Šta učiti Javu ili Javascript?!

    Ovo pitanje postavljaju mnogi početnici koderi. Da biste na njega odgovorili, morate sami odrediti s čime ćete raditi u budućnosti. Ako se radi o punopravnim aplikacijama za PC ili mobilne uređaje (telefone i tablete), odaberite Java.
    Ali ako vas zanima web programiranje i planirate raditi kao web programer, onda je vaš izbor Javascript

    Sve. Ovo su nepovezani jezici.

    2018-12-04T00:00Z

    JavaScript je objektno orijentisani jezik skripte, koji vam omogućava da kreirate dinamičke HTML stranice, omogućavajući obradu unosa i održavanje podataka, obično u pretraživaču.

    Java je programski jezik, osnovni skup biblioteka i platforma virtuelne mašine koja vam omogućava da kreirate kompajlirane programe koji rade na gotovo svakoj platformi bez distribucije izvornog koda u njegovom originalnom obliku ili njegovog ponovnog kompajliranja.

    Iako imaju ista imena, to su zapravo dva potpuno različita programska jezika/modela/platforme i koriste se za rješavanje potpuno različitih problema.

    Uobičajena zabluda je da je JavaScript sličan ili blisko povezan sa Javom; ovo je pogrešno. Oba imaju sintaksu sličnu C, objektno su orijentirana, obično su izolirana i široko se koriste u web aplikacijama na strani klijenta, ali sličnosti se tu završavaju. Java je statički otkucana; JavaScript postavka je dinamička (što znači da varijabla može sadržavati objekt bilo kojeg tipa i ne može biti ograničena). Java se učitava iz kompajliranog bajtkoda; JavaScript se učitava kao kod čitljiv ljudima. C je njihov posljednji zajednički jezik predaka.

    2018-12-11T00:00Z

    Netscape je tako nazvao JavaScript kako bi zbunio neoprezne da ima ikakve veze sa Javom, popularnom riječju tog vremena, i uspio je.

    Dva jezika su potpuno različita.

    2018-12-18T00:00Z

    Evo nekih razlika između ova dva jezika:

    • Java je statički kucani jezik; JavaScript je dinamičan.
    • Java je zasnovana na klasi; JavaScript je baziran na prototipu.
    • Java konstruktori su posebne funkcije koje se mogu pozvati samo kada je objekt kreiran; JavaScript "konstruktori" su samo standardne funkcije.
    • Java zahtijeva da se svi izrazi koji ne blokiraju završavaju tačkom i zarezom; JavaScript umeće tačke i zareze na krajevima određenih linija.
    • Java koristi skaliranje blokova; JavaScript koristi definiciju funkcionalnog opsega.
    • Java ima implicitni opseg this za nestatičke metode i implicitni opseg klase; JavaScript ima skriveni globalni opseg.

    Evo nekih karakteristika koje smatram posebnim prednostima JavaScripta:

    • JavaScript podržava zatvaranja; Java može simulirati sortiranje "zatvaranja" koristeći anonimne klase. (Prava zatvaranja mogu biti podržana u budućoj verziji Jave.)
    • Sve JavaScript funkcije su varijable; Java funkcije su samo varijable ako su eksplicitno označene.
    • JavaScript prototipovi se mogu nadjačati u vrijeme izvođenja i imati trenutni učinak na sve referencirane objekte. Java klase se ne mogu redefinirati na način koji utječe na bilo koje postojeće instance objekta.
    • JavaScript vam omogućava da nadjačate metode na objektu bez obzira na njegov prototip (mislim na Ruby, ali na steroidima); metode u Java objektu su vezane za njegovu klasu i ne mogu se nadjačati u vrijeme izvođenja.

    2018-12-25T00:00Z

    Java i Javascript su slični kao što su Car i Carpet slični.

    2019-01-01T00:00Z

    Gotovo svaki kompjuter na svijetu prodaje barem jedan JavaScript prevodilac instaliran na njemu.

    Većina (ali ne i "praktično svi") računari imaju instaliranu Java VM.

    Za one koji tek počinju sa programiranjem, bilo na strani servera ili na strani klijenta, neizbježno je da ćete naići na Java i JavaScript programske jezike.

    Ako imate iskustva u programiranju u jednom ili drugom, znate da oni nisu isti i vjerovatno znate razliku između njih. Ali ako tek počinjete, to može biti zbunjujuće iz više razloga, prije svega kako se jezici nazivaju.

    Iako dijele naziv "Java" u svom imenu, imaju vrlo malo atributa i karakteristika. U ovom članku ćemo pogledati neke od ključnih razlika između jezika, ispitujući neke od atributa visokog nivoa koji svaki jezik nudi.

    Na kraju, cilj nam je pomoći onima od vas koji su novi u programiranju i nisu sigurni koji jezik želite naučiti (ili prvo naučiti!). U ovom članku ćemo pogledati neke od ključnih razlika koje postoje između jezika i gdje se svaki primjenjuje u pokušaju da vas naoružamo informacijama koje su vam potrebne da vam pomognu da napravite sljedeći korak u karijeri.

    Java i JavaScript

    Možda je najbolja poenta kada počnete da razlikujete dva jezika je da napravite poređenje ovako:

    Java je za JavaScript ono što je gad za hrčka.

    Nažalost, ovu analogiju ne mogu smatrati svojom. Jeremy Keith ga je smislio umjesto toga, ali to je odlična ideja: jedina stvar zajednička jezicima je da dijele "Javu" u svom imenu.

    Jedna sličnost je u tome što su jezici ono što nazivamo jezicima u "C stilu", u smislu da je njihova sintaksa slična sintaksi jezika C. To jest, oba imaju funkcije, zagrade, zagrade i tačke i zareze.

    Međutim, osim ovoga, ima vrlo malo zajedničkog. U nastavku ovog članka, svaki jezik ćemo pogledati na vrlo visokom nivou kako bismo vam dali predstavu o tome što svaki jezik nudi i karakteristike svakog od njih.

    Kada to učinite, moći ćete vidjeti razliku u dva jezika i iako se zovu isto i imaju slično sintaksa im je jedino zajedničko.

    Dakle, počnimo.

    Šta je Java?

    Javu smo pokrili u drugim tutorijalima na ovoj stranici i nastavit ćemo to činiti kako jezik nastavi da raste tokom vremena.

    Java je dizajnirana s idejom „napišite jednom, pokrenite bilo gdje“, što znači da možete napisati program na računalu i zatim ga primijeniti na bilo koji uređaj koji ima Java runtime okruženje.

    Ali čekajte: šta je Java runtime?

    Prvo, važno je shvatiti da je Java kompajlirani jezik, iako nije preveden u binarni izvršni kod. Umjesto toga, kompajlira se u bajtkod.

    Java bajt kod je skup instrukcija za Java virtuelnu mašinu. Svaki bajt kod se sastoji od jednog, au nekim slučajevima i dva bajta koji predstavljaju naredbu (opcode), zajedno sa nula ili više bajtova za prosljeđivanje parametara.

    Ne zvuči tako uzbudljivo, zar ne? Ovo je u redu! Kao programeri, nismo odgovorni za pisanje bajtkoda. Umjesto toga, Java kompajler kompajlira naš kod u bajt kod.

    Ovaj bajt kod radi na vrhu vremena izvođenja, koje se pokreće u kontekstu drugog operativnog sistema. Ovaj operativni sistem može da radi na mobilnom telefonu, može da radi na drugom računaru, može da radi na Windows, OS X, Linux ili bilo kom drugom sistemu na kojem je kompatibilan. Sve o tome možete pročitati na ovoj stranici.

    Zvuči dobro, zar ne? Činjenica je da ovdje postoji niz problema. Čini se da je mnogo jednostavnije od ovoga i na tome rade napredniji Java programeri. Ovo je izvan okvira ovog članka. Umjesto toga, fokusirat ćemo se na atribute jezika kako bismo ga mogli uporediti i suprotstaviti JavaScriptu.

    Ali prvo, pogledajmo neke od funkcija sa kojima možemo raditi u Javi. Važno je napomenuti da poslujemo na mnogo višem nivou. Na primjer, možemo raditi sa sljedećim konstruktorima:

    • Klase su osnova svakog objektno orijentisanog jezika. Oni nam omogućavaju da odredimo koje karakteristike i ponašanje će objekt pokazati kada bude stvoren.
    • Funkcije su dijelovi klasa koje dozvoljavaju objekte radi nešto. Klasa koja predstavlja File može nam omogućiti čitanje sadržaja svega što sadrži.
    • Svojstva ili atributi su ono što opisuje klasu. Datoteka, na primjer, može imati dozvole kao što je mogućnost čitanja ili pisanja u sistem datoteka. Takođe može imati putanju koja predstavlja lokaciju na kojoj se nalazi u sistemu datoteka.
    • Nasljeđivanje je kada jedna klasa može naslijediti određena svojstva druge klase. To znači da prima sve funkcije i svojstva roditeljske klase I može dodati svoje jedinstvene funkcije.

    Ako nikada ranije niste pisali kod, neki od njih mogu zvučati kao žargon. To je jasno! Imamo resurse koji će vam pomoći da naučite ono što trebate znati:

    Ali prije nego što skočimo predaleko u odlučivanje o tome šta želite da naučite, hajde da pogledamo JavaScript.

    Šta je JavaScript?

    Ja sam JavaScript detaljnije obradio u prethodnom članku, što možete i vi, ali ja ću pokriti glavne tačke pomenute gore u ovom članku. Za dublje ronjenje, pogledajte ono što je gore navedeno.

    JavaScript je, u svojoj srži, dinamički jezik koji nije ukucan i interpretiran. To znači:

    • Mi, kao programeri, možemo lako proširiti određene aspekte jezika dodavanjem našeg koda već postojećim objektima, kao što je String objekat.
    • Netipizirana priroda jezika znači da možemo deklarirati nizove, logičke vrijednosti i brojeve (nasuprot cijelih brojeva, plutajućih brojeva i decimalnih brojeva) bez eksplicitnog specificiranja njihovog tipa, kao u Javi (i drugim jezicima).
    • Jezik se interpretira, što znači da nije kompajliran u izvršnu datoteku. Umjesto toga, tumači ga web pretraživač ili drugi softver na vašem računalu, koji pretvara vaše upute u strojni kod.

    Ako vas nešto zbuni, ne brinite! Svi smo bili tamo:

    • Definicija varijabli?
    • Implementacija funkcije?
    • Stvaranje objekata?
    • Postavljanje uvjetnih izjava?
    • I mnogo više.

    To je puno. Znam. Ali najbolja stvar koju imamo je puno resurse za ubrzanje vašeg JavaScript iskustva. A kada jednom naučite nijanse jezika, postaje sve lakše i lakše raditi unutar njegovih granica.

    Zapamtite da je sve ono "nisam siguran šta radim" prirodno i dio učenja. Ako ti nikad nisam vidio programiranje vezano za JavaScript, toplo preporučujem da pogledate sljedećih nekoliko kurseva:

    Jednom kada se bolje snađete s jezikom, također je važno koristiti odgovarajuće alate za razvoj vaših aplikacija. Ovo uključuje korištenje alata kao što je debugger (koji većina modernih pretraživača uključuje). Međutim, ovo je izvan okvira ovog članka.

    Napomena o objektnoj orijentaciji

    Druga važna razlika je u tome što se JavaScript i Java smatraju objektno orijentisanim jezicima, ali iz različitih razloga.

    Java nam omogućava instanciranje objekata iz klasa koje kreiramo. Nasuprot tome, sve u JavaScriptu je objekat. To znači da nema časova. A pošto je sve objekt, sve ima metode i svojstva koja možemo koristiti.

    U Javi, kada instancirate klasu, imate pristup metodama i svojstvima koja izlažete kroz definiciju klase. Ako imate javna svojstva, javne funkcije itd., programer ih može koristiti.

    U JavaScriptu, kada kreirate varijablu, objekt ili čak funkciju, imate mogućnost da pozovete funkcije koje postoje ne samo na tom objektu, već i na objektima iz kojih taj objekt izvodi svoja svojstva. To je zbog prototipske prirode JavaScript nasljeđivanja, o čemu možete čitati u

    Koju da odaberete?

    Kao što možete vidjeti iz gornjeg sadržaja, oba jezika, iako su oba inspirirana C-om u pogledu njihove sintakse, prilično se razlikuju jedan od drugog. Svaki od njih također služi različitoj svrsi.

    Iako možete pisati JavaScript na serveru pomoću tehnologija kao što je Node.js, to nisu iste vrste aplikacija koje su izgrađene u Javi. Pored toga, iako možete pisati aplikacije na strani servera u Javi, one nisu iste vrste aplikacija koje biste obično pisali sa JavaScript-om.

    Umjesto toga, često je korisno razmišljati o JavaScriptu kao jeziku koji je najprikladniji za razvoj na strani klijenta, za aplikacije koje će se pokretati u web pretraživaču ili za aplikacije na jednoj stranici. Javu je najbolje smatrati programskim jezikom koji je najpogodniji za pisanje serverskih ili desktop aplikacija koje mogu raditi na mnogim različitim operativnim sistemima i uređajima.

    Zaključak

    Čini se da svaki od ovih jezika nudi svoj jedinstveni skup prednosti i nedostataka. Iskreno, mislim da mnogo toga što nas motivira da izaberemo jedan jezik u odnosu na drugi ima veze sa onim što želimo da radimo u smislu izgradnje rješenja za sebe i druge.

    Ako želite da radite na internetu, JavaScript, vjerovatnije, Vaš najbolji izbor. Ako, s druge strane, želite da pišete desktop aplikacije, onda Java nije loš izbor.

    Za one koji su zainteresovani, vredi napomenuti da je JavaScript postao jedan od de facto jezika interneta. Nije bez krivulje učenja, a postoji mnogo okvira i biblioteka koje će vas zaokupiti. Ako tražite više resursa za istraživanje ili korištenje u svom radu, provjerite šta imamo na Envato tržištu.

    Najviše vremena provodim radeći sa WordPress-om; Međutim, ja sam također obožavatelj JavaScript-a i s vremena na vrijeme pišem blog o njemu. Ako ste zainteresovani za druge kurseve i tutorijale koje sam napisao za Envato, pogledajte moju profilnu stranicu. Također, možete pročitati više članaka o WordPress i JavaScript razvoju na mom blogu. Slobodno me pratite i na Twitter-u na

    Najbolji članci na ovu temu