Perbedaan javascript dan nodejs

Mungkin Anda mendapatkan alamat postingan blog ini karena mendengar buzzword “Node.js” atau “NPM” dan penasaran apa maksud istilah-istilah tersebut. Node.js memang sedang banyak dibicarakan akhir-akhir ini sebagai platform software yang baru dan sedang berkembang.

Javascript

Node.js sebenarnya Node.js merupakan runtime, atau sederhananya intepreter Javascript. Javascript yang dulunya berjalan di dalam browser sekarang bisa dijalankan di luar browser dengan menggunakan Node.js. Jadi Node.js itu bukan bahasa pemrograman baru, melainkan adalah runtime untuk Javascript yang berjalan di luar browser.

Ketika dulu Javascript digunakan hanya untuk memberi animasi di halaman web, kemudian berkembang digunakan untuk melakukan AJAX call, sekarang Javascript bahkan bisa digunakan sebagai bahasa pemrograman untuk apapun, termasuk untuk pemrograman backend website. Nah itulah yang bikin Node.js populer. Dengan adanya Node.js, sekarang programmer dapat melakukan pemrograman frontend maupun backend dengan bahasa yang sama, yaitu Javascript. Bahkan sekarang Javascript juga dapat digunakan dalam pemrograman mobile apps [Android dan iOS] dengan menggunakan React Native, Native Script, dan lain-lain. Kayaknya cuma Javascript yang bisa gitu, karena Javascript adalah satu-satunya bahasa yang jalan di browser secara native wkw.

Menurut survey dari StackOverflow [yang biasa dibuka programmer setiap hari], Javascript pada tahun 2016 merupakan teknologi yang paling populer //insights.stackoverflow.com/survey/2016#technology-most-popular-technologies. Tapi populer di sini bukan berarti paling bagus, bisa aja populer di StackOverflow karena orang pada gak paham sama Javascript, jadi banyak Q&A di sana.

Non blocking I/O dan Async

Node.js menggunakan Javascript engine V8 dari Google, seperti yang terdapat di browser Google Chrome. Javascript engine itu sederhananya adalah intepreter Javascript, yang tugasnya baca kode Javascript. Dan yang menarik adalah satu process Node.js secara alami hanya berjalan di satu thread. Jadi misalnya Anda punya server dengan 8 CPU [8 thread], lalu Anda menjalankan kode Javascript dengan satu process Node.js, maka CPU yang terpakai hanya 1, sementara yang 7 nganggur. Akan tetapi hal ini dapat diatasi, salah satunya dengan menggunakan package seperti pm2 atau menjalankannya dengan docker dengan beberapa container.

Sifat alami lain dari Javascript adalah non blocking I/O dan async. Misalnya kita punya kode untuk baca file atau untuk call API di bahasa PHP seperti ini:

$books = callApi["//api.example.com/v1/books"] displayBooks[$books]; $reviews = readFile["reviews.json"] 
displayReviews[$reviews];
echo "the page is loaded";

Kode tersebut merupakan synchronous, yang berarti benar-benar dieksekusi berurutan dari atas ke bawah. Jadi pertama kodenya akan memanggil API, menunggu proses pemanggilan API selesai [mungkin bisa lama, tergantung server dan besarnya ukuran data], lalu menampilkan hasilnya. Kemudian dilanjutkan dengan proses membaca file reviews.json, menunggu proses membaca file selesai [bisa jadi lama kalau ukurannya besar], lalu menampilkan hasilnya. Lalu baru mencetak tulisan “the page is loaded”.

Proses baca file maupun call API itu biasanya adalah proses yang butuh waktu agak lama. Dan ketika memanggil API I/O terblok, tidak bisa menjalankan sesuatu yang lain, bisa dibilang itu adalah blocking I/O. Sementara bisa dilihat kode Javascript yang ekuivalen dengan kode PHP tadi:

callApi["//api.example.com/v1/books"]
.then[[data] => {
displayBooks[data];
}];
readFile["reviews.json"]
.then[[data] => {
displayReviews[data];
}];
console.log["the page is loaded"];

Pada kode Javascript tersebut, kode dijalankan secara asynchronous, tidak selalu dari atas ke bawah. Jadi urutannya adalah seperti ini. Pertama-tama kode akan memanggil API, kemudian menempelkan callback yang akan dipanggil ketika proses pemanggilan API selesai, yaitu menampilkan data books. Tanpa menunggu proses pemanggilan API selesai, langsung dilakukan proses pembacaan file “reviews.json” dan menempelkan callback juga ketika pembacaan file selesai, yaitu menampilkan data reviews. Kemudian tanpa menunggu pemanggilan API dan pembacaan file selesai, akan dicetak tulisan “the page is loaded”. Apabila proses pemanggilan API selesai, maka callbacknya akan dipanggil beserta data yang didapat dari API. Begitu juga dengan proses pembacaan file.

Kode asynchronous tersebut merupakan kode yang non blocking I/O karena ketika I/O atau resource tidak terblok pada saat pemanggilan API dan pembacaan file. Kode di bawahnya dapat dieksekusi tanpa menunggu kode di atasnya selesai dijalankan. Javascript dapat melakukan ini dengan mekanisme Event Loop. Tapi di postingan ini tidak akan dijelaskan tentang Event Loop karena cukup kompleks, kalau ada request untuk menjelaskan, nanti coba saya jelaskan di postingan lain. Sifat non blocking I/O ini merupakan keunggulan, akan tetapi akan sangat membingungkan untuk yang belum terbiasa.

Performa

Saya sebenarnya ingin menambahkan mengenai perbandingan performa Javascript di atas Node.js dibandingkan dengan bahasa lain. Akan tetapi hasil benchmark itu sangat beragam tergantung bagaimana benchmark dilakukan dan seringkali hasil benchmark tidak mencerminkan performa sesungguhnya ketika digunakan pada sistem yang kompleks. Apabila Anda ingin melihat benchmark performa, silakan bisa dicoba untuk dicari di Google. Banyak yang bilang Javascript dengan Node.js memiliki performa yang cukup superior dibandingkan bahasa-bahasa lain.

Penggunaan Javascript

Berikut merupakan beberapa implementasi Javascript dalam berbagai platform, saya sebutkan yang cukup populer dan saya tahu, haha.

Javascript imperative frontend:

  • jQuery dan anak-anaknya

Javascript declarative frontend:

  • React
  • Vue
  • Angular
  • Ember

Perbedaan imperative dan declarative mungkin bisa dibaca di sini //codeburst.io/declarative-vs-imperative-programming-a8a7c93d9ad2.

Backend:

  • Express
  • Sails
  • Meteor
  • Adonis [mirip Laravel]

Mobile Apps

  • React Native
  • NativeScript
  • Xamarin [hybrid]
  • Ionic [hybrid]
  • PhoneGap/Cordova [hybrid]

Cara install Node.js

Untuk menginstall Node.js, saya menyarankan untuk menggunakan NVM [Node Version Manager] agar dapat berganti-ganti versi Node dengan mudah. Di sini sebagai contoh, saya menggunakan Ubuntu. Pertama-tama silakan dilihat dulu versi NVM berapa yang terbaru di sini //github.com/creationix/nvm/releases. Misalnya waktu saya menulis ini, yang terbaru adalah v0.33.6, maka untuk menginstall:

curl //raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash

Nanti jika sukses, akan keluar kata-kata seperti ini:

Close and reopen your terminal to start using nvm

Setelah itu, silakan lakukan sesuai tulisan itu [tutup terminal, lalu buka lagi], atau kalau malas bisa pakai command ini:

source ~/.profile

Untuk mengecek bahwa NVM sudah terinstall dengan benar, silakan ketik:

nvm --version

Akan keluar:

0.33.6

Setelah itu kita cek versi Node.js berapa saja yang ada di NVM dengan command:

nvm ls-remote

Lalu akan keluar daftar versi Node.js yang sangat panjang. Misalnya saya install versi Node.js terbaru waktu saya menulis ini, yaitu v8.8.1.

nvm install v8.8.1

Tinggal ganti versi Node.js nya saja jika ingin menginstall versi yang lain. Lalu apabila mau mengecek versi Node.js berapa saja yang terinstall di komputer, bisa dengan command:

nvm ls

Dan apabila ingin berpindah ke versi Node.js yang lain, contohnya v8.5.0:

nvm use v8.5.0

Sekian artikel ini, jika ada saran, masukan, kritik, atau pertanyaan silakan tulis di kolom komentar di bawah. Terima kasih.

Apa beda dari JavaScript dan Node JS?

Maka dari itu, Javascript disematkan pada kode HTML. Inilah mengapa Javascript disebut sebagai bahasa pemrograman sisi client. Di sisi lain, Node.js adalah platform untuk menjalankan kode Javascript di sisi server. Ia mengeksekusi kode JavaScript sebelum website ditampilkan pada browser.

Node JS digunakan untuk apa?

Kesimpulan. Jadi, pengertian Node.js adalah runtime environment JavaScript open-source yang bisa digunakan lintas platform. Fungsinya adalah untuk mengembangkan aplikasi jaringan dan server-side, yang bisa disesuaikan dengan kebutuhan. Node JS menggunakan engine eksekusi JavaScript V8 Chrome.

Apakah Node JS itu framework?

Node.js framework atau Node merupakan perangkat lunak berbasis JavaScript yang bersifat open-source, dapat dijalankan dalam lingkungan lintas platform untuk mengeksekusi kode JavaScript di luar browser. Secara tradisional, browser menyediakan lingkungan runtime untuk kode JS.

Apa itu Node JS dan NPM?

NPM adalah Node Package Manager, yaitu pengelola package JavaScript bawaan Node.js. Package manager sendiri merupakan tools yang fungsinya untuk mengelola package secara otomatis.

Bài mới nhất

Chủ Đề