Node.js
Node.js on vabavaraline platvormiülene runtime keskkond serveripoolsete rakenduste arendamiseks.
Node.js populaarsuse taga on kindlasti võimalus kasutada JavaScripti ka serveripoolselt. See andis paljudele arendajatele võimaluse arendada ka serveripoolseid lahendusi, mis ehk enne mõne vajaliku programmeerimiskeele oskamatuse taha jäi.
Tänu asünkroonsele programmeerimisele on Node.js rakendus märgatavalt kiirem, kuna erinevad tegevused võivad joosta samaaegselt. Üks tegevus ei blokeeri teist, st ei pea ootama, et esimene oma tegevused lõpetaks.
Node.js kasutatakse peamiselt järgnevate lahenduste loomiseks, kuid kindlasti ei piirdu nendega:
- API-d
- Veebiserverid
- Mobiilirakenduste serveripoolsed liidesed
- Staatilised failiserverid
Asünkroonsed moodulid parandavad märgatavalt kiirust. Üsna lihtne on ka teha reaalajas rakendusi, kasutades populaarset Socket.io mootorit.
Veebiserverite loomisel on ülimalt populaarne Express raamistik, mida ka meie Redwallis eelistame. Näiteks väga lihtsa veebiserveri käivitamiseks on vaja vaid järgnevat koodi:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Antud veebiserver vastab juuraadressilt (/) “Hello World!” ja kõigile teistele päringutele 404 Not found. Hetkel ei tee loodud server midagi eriti kasulikku, kuid näitab, kui lihtne on luua uut veebiserverit, kasutades Node.js-i ja Express raamistikku.
Meie Redwall-is oleme siiamaani Node.js-i kasutanud mobiilirakenduste loomisel, nimelt API-de loomiseks, mis pakuvad rakendusele vajalikku infot.
Platvormiülesed mobiilirakendused (Apache Cordova)
Apache Cordova on vabavaraline NodeJS-i peal jooksev mobiilirakenduste arenduse raamistik. See võimaldab arendada rakendusi, mis kasutavad laialdaselt levinud HTML-i, CSS-i ja JavaScripti. Antud raamistiku plussiks on ühe koodibaasiga rakenduse tegemine mitmele platvormile, näiteks iOS, Android, WP8 jne.
Cordova suhtleb reaalse seadmega läbi lisade (plugins), mida selle postituse kirjutamise hetkel on 845, pluss väga paljud laiendused, mis pole ametlikult registris, kuid on arendajate poolt lisatud GitHub-i. Lisad võimaldavad kasutada seadme üldinfot, kaamerat, kalendrit, kontakte, faile, dialooge jne. Kui soovitud laiendust ei ole, on alati võimalus see ise programmeerida, vastavalt siis vajalikele platvormidele (siinkohal on ikkagi vajalik omada vastava platvormi programmeerimiskeele oskust).
Üha enam kasutatakse Cordovat selleks, et vältida mitmele platvormile rakenduse nullist arendama hakkamist. Sellest tulenevalt kasvab antud raamistiku edu ja populaarsus tuleval aastal. Ilma raamistikuta native-rakenduse loomine tähendaks Androidi puhul Java oskuse vajadust, iOS-i puhul Objective-C või Swift programmeerimiskeele oskust, WP8 puhul C++ keelt. Seega rakenduse loomist igale platvormile eraldi, pluss kõigi nende oskuste olemasolu meeskonnas. Kõige tulemuseks on meeskonnale suur ajakulu ja seega kliendile suurem hind. Jah, ilma raamistikuta liigub ilmselt rakendus natuke sujuvamalt, aga kasutades koos Cordovaga hästi väljatöötatud HTML ja JS raamistikke, on tulemus väga ligilähedane, kui mitte sama. Tihtipeale eelistab klient hinnavõitu, kui rakenduse kiiruse erinevus on peaaegu märkamatu.
PHP7
PHP teeb läbi suuri muudatusi, jättes vahele PHP 6 versiooni avaldamise. PHP 6 vahelejätmise põhjuseks oli mitmete valede otsuste tegemine. Peamiselt Unicode standardi suhtes. Selleks, et hoiduda halvast mainest, mis PHP 6-t saatma kippus, nimetati uus versioon ümber PHP 7-ks. Ilmselt tekitas see reaalsuses veel enam segadust, kui vältida suudeti, aga PHP 7-ga teame vähemalt, et probleemid, mis oleks 6-ga tulnud, on parandatud.
Tegevuskava järgi pidi PHP 7 välja tulema 2015. aasta detsembris. Seda ta ka tegi, 3. detsembril.
PHP 7 tõi mitmeid uusi huvitavaid võimalusi:
- skalaartüübi deklaratsioonid (scalar type declarations)
- tagastava väärtuse tüübi deklaratsioonid (return type declarations)
- null liitumise operaator (null coalesce operator)
- grupeeritud use deklaratsioonid (group use declarations)
- anonüümsed klassid (anonymous classes)
Uusi võimalusi on tegelikult palju rohkem, üks parem kui teine. Loetlesin siia endale enim meeldivamad. Kindlasti ei ole aga ülejäänud vähem tähtsad.
Näide null liitumise operaatorist.
<?php
// Tagastab 'nobody', kui $_GET['user'] väärtust ei eksisteeri.
$username = $_GET['user'] ?? 'nobody';
// See on sama, mis järgnev (< PHP 7):
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Null liitumise operaator on aheldatav. Tagastab esimese defineeriud väärtuse
// $_GET['user'], $_POST['user'] ja 'nobody' hulgast.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
Kes kasutab PHP-d, teab kui palju mugavamaks see lihtsa muutuja väärtuse määramise teeb. Tundub väike lisa, kuid eemaldab ebamugavate korduste kirjutamise.
Kiirus ja jõudlus
PHP 7 on väidetavalt kaks korda kiirem, kui selle eelkäija. Uus versioon baseerub PHP Next-Gen projektil, mida juhtis Zend, et kiirendada rakendusi, mis kasutavad PHP-d. Ja nad on teinud suurepärast tööd. Reaalsete rakenduste jõudlus on olenevalt rakendusest 25% kuni 70% parem. See on väga suur võit ainuüksi PHP versiooni uuendamisest.
PHP 7 on midagi, mida ootasime suure huviga. Nüüd on see kohal ja ka meie raalides ja serverites saadaval.
ECMAScript 6
ECMAScript 6 (tuntud ka kui “ES.next” ja “Harmony”, lühendiga ES6) jõudis arendajateni alles 2015. aastal. Algselt oli ES6 väljatuleku eesmärk aasta 2013, kuid võimaluste arendamine, vigade parandamine ja testimine võtsid arvatust tunduvalt rohkem aega. Seega lükati avaldamise tähtaega korduvalt edasi. Ametlikult avaldati ja tunnustati ES6-t standardina 17. juunil 2015.
Kuna 2015. aastal ei jõutud arusaadavatel põhjustel ES6-e tuge veebilehitsejatesse rakendada, siis sel aastal seda kindlasti tehakse. Hetkel on mitmed võimalused töös ja poolikud. Kõige paremini on toe lisamisega hetkel hakkama saanud Firefox, kes on saavutanud 85% toe (antud postituse kirjutamise hetkeks, versioonis 45, mida pole ametlikult välja antud). ES6 toe arengut saab jälgida http://kangax.github.io/compat-table/es6/. Antud andmete põhjal võib järeldada, et kõige kauem peab toe juurutamist ootama Safari-sse.
Loomulikult ei takista uue standardi puuduv tugi arendajatel seda kasutamast. Niikaua, kui veebilehitsejad vaeva näevad, kasutatakse kompileerijaid, nagu Babel ja Traceur.
JavaScript ei ole enam pelgalt kliendipoolne (client-side) keel. Kuna seda kasutatakse nüüd ka tagaosa liideste (back-end) arenduses, siis seda aeganõudvam on üleminek. Ka NodeJS lisab järk-järgult ES6 võimalusi ja on sellega teinud juba väga hea alguse. Node ES6 toe kohta saab lugeda https://nodejs.org/en/docs/es6/. Võimalused, mis ei ole veel stabiilsed, saab aktiveerida kasutades --harmony
lippu e suvandit (flag).
Seega, 2016. aasta kujuneb uue standardi juurutamiseks ja seda ka sel aastal kindlasti tehakse. ES6 jõuab massidesse ja saab iga JavaScripti arendaja igapäevaseks sõbraks (kellele veel ei ole saanud). Uusi võimalusi on palju, mis hõlbustavad ja kiirendavad programmeerimist JavaScriptis (classes, modules, promises, const jne).