Vodič: Poslovni softver u oblaku

U poslednjih nekoliko godina primetan je trend pojavljivanja Cloud rešenja za mnoge oblasti, a posebno u domenu poslovnog softvera.

Da li je Cloud poslovni softver, rešenje za vašu kompaniju?

Javascript: Gorila u sobi

Vreme čitanja: 4 minuta

Preskočiću istoriju Javascript-a.  Neću da pišem o tome.  Srž Javascript-a nema ništa u vezi sa prošlošću. Uvek je Javascript bio sa problemima “danas”, a koji će biti rešeni “sutra”. Dežurni predmet ismevanja dizajnera, programera, govornika i stručnjaka, sa više nego ubedljivim argumentima da nedostaje “ovo” ili nedostaje “ono”.

No, korak po korak, Javascript-ovo  “sutra” je uvek stizalo.

Nije preterano bitno kako je Javascript uspeo da pretekne redom skoro sve postojeće tehnologije. Bitnije može biti da prepoznamo gde su prednosti koje Javascript sada ima, sa fokusom na razvoj poslovnih aplikacija.

Stiv Džobs i AppStore

Gotovo je neverovatno koliki je i danas uticaj Stiva Džobsa. Ako postoji trenutak na koji se može pokazati prstom i reći “E tad je Javascript prešao Rubikon”, onda je to odluka Stiva Džobsa da iPhone neće podržavati Adobe Flash.

Fleš plejer je do tog trenutka bio tehnologija koja se bez razmišljanja potezala za bilo koje naprednije  baratanje na internet stranici. Instalirana na svakom računaru, bila je na ivici da preuzme svet.

Jedna odluka, i Fleš više nije bio dostupan na milionima mobilnih uređaja. Postao je zastareli i opasni desktop dodatak kojeg bolje da nemate.  Sa njim, u digitalni zaborav kreću AIR i Silverlight tehnologije.

Od tog trenutka otvoreno je interesantno tržište.  Svaki sajt ima na raspolaganju samo Javascript da svoj sadržaj oživi i na mobilnom uređaju.  I dodatno – dok namenske mobilne aplikacije moraju da prođu proveru da bi se pojavile na AppStore-u ili GooglePlay servisu, Javascript omogućava da aplikaciju menjate po svojoj volji kada god zaželite.

Ovo važi i sada, i velika je prednost Javascript-a.

Google Chrome i V8

Chrome, odnosno Google, uradio je jako bitnu stvar. Napravili su sistem nadogradnje koji je u isto vreme i pouzdan, i potpuno nevidljiv za korisnika. Dok ovo pišem, Chrome prelazi 50% globalne zastupljnosti, a vi verovatno koristite verziju pedeset i neku, a da o tome pojma nemate.

Na bilo koji operativni sistem, Windows, macOS, Linux, Android, ChromeOS, pa i iOS, možete  instalirati Chrome i biti sigurni da na dalje imate modernu i stabilnu Javascript platformu.

Ako koristite bilo koju tehnologiju koja zahteva preinstalirane neke biblioteke ili frejmvork (framework) – znate kolika je ovo prednost.

Možda je manje poznata stvar da je Google Javascript poseban projekat pod nazivom V8.  Ovaj projekat dobija dosta podrške sa ciljem da implementacija Javascript-a bude brža i modernija. Ta konkurencija između nekoliko Javascript implementacija ima ogroman uticaj na munjevit razvoj Javascript-a.

Dok su drugi su svoju Javascript implementaciju vezivali čvršće uz svoj browser, ono što je V8 izdvojilo je  to što je odvojena komponenta  koja se javno razvija.

V8 je brod koji  je omogućio da Javascript isplovi iz luke internet browsera.

NodeJS i prijatelji

Upravo V8 kao posebnu Javascript komponentu koristi NodeJS.  NodeJS je Javascript interpreter u istom formatu kakav je bilo koji drugi skript jezik (na primer Python, Ruby, PHP, Perl).  Na V8 je dodata standardna biblioteka koja omogućava Javascriptu pristup sistemu – fajlovima, internet portovima, konzoli, itd.

NodeJS može sve što može i bilo koji skript jezik: ima npm – svoj menadžer paketa, http server u standardnoj biblioteci, test sistem, odličnu podršku u editorima. Node projekat se razvija na isti način i sličnom brzinom kao i moderni  RubyOnRails ili Python ili PHP projekti.

Uz jednu ogromnu prednost – isti programski jezik i na serveru i na klijentu. 

V8 nije samo deo NodeJS projekta. Iskorišćen je na mnogim mestima koja podržavaju skriptovanje. Možda je najinteresantnija primena u bazama podataka novije generacije kakve su MongoDB i RethinkDB, gde je V8 glavni način za upite, ili kao proceduralni jezik u PostgreSQL bazi.  Sa Microsoft-ovom novom javaskript implementacijom (Chakra), očekujemo i nove stvari na vidiku.

Javascript Framework i SinglePage aplikacije

Prve internet aplikacije su koristile serverski jezik da formiraju HTML stranu, koja se tako isporučivala klijentu. Svaki klik otvarao je novu spremljenu stranu.  Javascript odavno preuzima ogroman deo ovih operacija na sebe, uključujući izbegavanje otvaranje novih strana.

Ovo koncepcijski ima jednu manu. Serverski jezik se koristi za klijent deo. Logično je pitati da li je Javascript dovoljno “dobar” da preuzme kompletnu klijent aplikaciju? To je mesto gde se trenutno najviše razvija i jezik i okruženje.  SinglePage aplikacije su upakovani Javascript projekti koji kompletno kontrolišu browser. Sa serverom komuniciraju pomoću JSON-a, a kompletan korisnički interfejs prikazuju na toj jednoj strani pomoću Javascripta.

Isplivalo je nekoliko interesantnih tehnologija na ovu temu. Pomenuću nekoliko iz novije generacije.

ReactJS je izašao iz Facebook radionice.  Ovo nije pun frejmvork. React je sistem za prikaz komponenti. Ono što je interesantno i novo je što je HTML definicija komponente u suštini Javascript, i što se sve izmene na DOM stablu rade u kopiji (senci) DOM stabla, a onda se primenjuju samo razlike.

Google je već par godina među liderima sa Angular frejmvorkom, koji je stekao veliku popularnost. Doneli su kontraverznu odluku da verzija 2.0 bude potpuno različita.  Ali takav je javaskript svet.

Majkrosoftov TypeScript se mora pomenuti kao nadogradnja javaskript standarda. Iako mi je u početku izgledao kao višak, moram priznati da mi sve više prija kada vidim .ts (a i *.d) ekstenziju.  Angular2 i EmberJS Glimmer podsistem su od početka razvijani kroz TypeScript.  Mogu da kažem da je TypeScript u projektu izuzetno pozitivna stvar.

Od ostalih, nezavisnih projekata, pomenuo bi EmberJS, koji je interesantan kao kompletan sistem za razvoj aplikacija, zatim projekat  Aurelia koji je pokrenula ekipa iz Angulara1 projekta, a koja se nije slagala sa Angular2 pravcem razvoja.

Ne mogu da ne primetim da ima previše različitih tehnologija. To znači da je ova oblast još uvek poligon na kome tek treba da se formiraju stvari. Što znači da morate biti spremni da već gotovu aplikaciju pišete iznova. I to verovatno više puta. To nije uobičajeno za poslovni softver. Opet, takav je javaskript.

Danas možemo reći da možda to još nije to, zato što nedostaje “ovo” (na pr. pristup usb ili smartcard ili drugim portovima na klijentu) ili zato što nedostaje “ono” (na pr. mora da se prevlači cela SingePage aplikacija na uređaj).

No, opet – mogu da tipujem da će sve već “sutra” biti tu, dostupno na milionima uređaja.

Razmislite o tome pre sledećeg klika na “File->New”.

About the Author Dušan Majkić

If it wasn't for C, we would be using BASI, PASAL and OBOL! A feature is a bug with seniority. Undetectable errors are always infinite in variety.

  • Boris Drajer says:

    Zanimljiva tema… JavaScript je praktično zagradio ulaz ne samo u klijentsku stranu web-a nego i u cross-platform razvoj – mobilni odavno, a u poslednje vreme i desktop. Ja lično ga izbegavam (mada razumem u čemu je njegova magija) ali ga je jako teško zaobići.

    Moglo bi se reći da je JavaScript popunio prazninu koju je ostavio Visual Basic. VB je bio tehnologija koja je omogućavala da se lako (i bez mnogo formalnosti) prave jednostavniji programi koji su radili na platformi koja je u tom trenutku bila u naletu – Windows-u. Danas je web browser taj koji dominira, a JavaScript je tu bio na pravom mestu u pravom trenutku. Još jedna sličnost je što JavaScript, isto kao i VB, ima probleme u zahtevnijim scenarijima (npr. ozbiljnije aplikativne arhitekture), a što je verovatno posledica te njegove neformalnosti. Bilo bi zaista lepo ako bi se pojavio neki malo uredniji jezik koji bi mu bio alternativa: ne znam da li je to TypeScript, nekako mi on u ovoj priči dođe kao pandan VB.Net-u, pokušava da uvede formalizam tamo gde on nije poželjan :)… Čini mi se da će pre da posluži da olakša ulaz u browser onima (nama ;)) koji vole sigurnost strong typing-a nego što će nekog zagriženog JavaScript-ovca da navuče na type-safe kod.

    Jedna stvar koja ovde može donekle da promeni odnos snaga je web assembly, tehnologija koju (između ostalih) guraju i Google i Microsoft i Firefox fondacija i koja bi trebalo da podrži izvršavanje kompajliranog koda kroz manje-više isti JavaScript engine (i, što je još bitnije, sigurnosni model) u browser-u. To bi omogućilo korišćenje “ozbiljnijih” programskih jezika za iste zadatke koje sada radi JavaScript, i možda bi umanjilo njegovu popularnost – ali ne verujem da bi ga skinulo sa vrha. Ja lično bih bio srećan da mogu da pišem client-side web kod u C#-u i da bude kompajler (a ne test/tester ili, još gore, korisnik) taj koji će da mi pronađe greške. Ali ne bih se iznenadio ako bi se, dok mi stignemo dotle, igra ponovo promenila i glavni hit postale npr. embedded platforme i Lua :).

    Pozdrav!

    • dmajkic says:

      Odličan komentar od nekog ko C# profesionalno koristi i poznaje!

      > client-side web kod u C#-u i da bude kompajler … taj koji će da mi pronađe greške.

      Angular je jako blizu. TypeScript je default i sve je podređeno “Enterprise” aplikacijama. Čak je i uredno podržan od većine proizvođača C# komponenti. Odlično podržan u VS i VSCode.

      Napominjem da je TypeScript MS-ovo čedo, i da je sintaksa JavaSkripta proširena sa tipovima tako da je jako slična C# sintaksi. Nije ni čudo – autor je slavni Anders Hejlsberg, čije su kreacije sam C# kao i Delphi sa VCL-om.

      Nema biblioteka, WinFormsa i slično. I naravno – Angular, kao i svaki drugi “JavaScript Framework”, traži da se ceo projekat stalno usklađuje sa novim verzijama. Prespavajte dan ili dva i eto ga rewrite projekta.

  • >