SlideShare a Scribd company logo
Node.js
Surabaya, 24 April 2014
ICROSS 2014
Mohammad Anwari
@aksimdamt
Mulai melangkah dengan
© 2014 Mohammad Anwari
CC-by-SA
Permasalahan
input = getInput();
result = query(“select * from db where
id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db where
id=?”, input);
displayResult(result);
apa yang kebanyakan program lakukan
saat menunggu hasil dari fungsi query?
diam
Pendekatan solusi
● multithread
○ context-switch
○ memory per thread
○ execution stack
○ os thread vs green thread
● event loop
Multithread
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
satu pengguna
Multithread
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
banyak pengguna
Event loop
input = getInput();
result = query(“select * from db
where id=?”, input);
satu pengguna
displayResult(result);
Event loop
banyak pengguna
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
input = getInput();
result = query(“select * from db
where id=?”, input);
displayResult(result);
Kenapa tidak pakai event loop?
● tidak semua bahasa pemrograman
mendukung
● bisa membuat kode tampak rumit
● kebanyakan pustaka program tidak
mendukung operasi asinkronus
Closure
input = getInput();
result = query(“select * from db where
id=?”, input, function(result) {
displayResult(result);
})
Kenapa JavaScript?
● Mendukung pemrograman non-
blocking dan async
● Hanya perlu satu kompetensi untuk
pengembangan sistem di depan dan di
belakang
Hati-hati
Sangat memungkinkan pemrograman
gaya koboi
Node.js
platform pengembangan aplikasi diciptakan oleh Ryan Dahl (2009)
➔ ditenagai oleh mesin JavaScript V8
◆ dibuat oleh Google
◆ ECMAScript
◆ bahasa C++
➔ fokus pada kinerja cepat
◆ non-blocking
◆ async events
Arsitektur
Pustaka inti Node.js
V8 libuv
lem
sistem operasi
aplikasi
JavaScript
C/C++
var net = require('net');
net.createServer(
function (stream) {
stream.write('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
var net = require('net');
net.createServer(
function (stream) {
stream.write('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
var net = require('net');
net.createServer(
function (stream) {
stream.write('hellorn');
stream.on('end',
function () {
console.log('goodbyern');
}
);
stream.pipe(stream);
}
).listen(8000);
var net = require('net');
var server = function(stream) {
var end = function() {
console.log('goodbyern');
}
stream.write('hellorn');
stream.on('end', end);
stream.pipe(stream);
}
net.createServer(server).listen(8000);
Instalasi
http://w.blankon.in/U1
REPL
$ node
Modul
● Kumpulan pustaka program dan
peralatan pengembangan
○ Menyediakan fungsi-fungsi spesifik
● Pengembangan aplikasi semakin
mudah
● Lisensi F/OSS
● Global
○ Dapat digunakan di keseluruhan sistem
○ Digunakan untuk alat bantu pengembangan
● Lokal
○ Digunakan pada spesifik pada proyek
pengembangan
■ Digunakan pada tahap pengembangan saja
■ Digunakan pada produksi saja
Modul
NPM
Tata kelola paket Node.js

More Related Content

What's hot

Presentasi java
Presentasi javaPresentasi java
Presentasi java
Putu Shinoda
 
Java netbeans
Java netbeansJava netbeans
Java netbeans
Muh Randy Mallombasi
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Dimas Prawira
 
Tutorial Penggunaan Laravel
Tutorial Penggunaan LaravelTutorial Penggunaan Laravel
Tutorial Penggunaan Laravel
Eka Rahmawati
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
kaniadona
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
WiEn SHipiet
 
Tutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web servicesTutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web services
muhammad arif nasution
 
Ci 1
Ci 1Ci 1
Mari belajar vue js
Mari belajar vue jsMari belajar vue js
Mari belajar vue js
Teten Nugraha
 

What's hot (9)

Presentasi java
Presentasi javaPresentasi java
Presentasi java
 
Java netbeans
Java netbeansJava netbeans
Java netbeans
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
 
Tutorial Penggunaan Laravel
Tutorial Penggunaan LaravelTutorial Penggunaan Laravel
Tutorial Penggunaan Laravel
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
 
Tutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web servicesTutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web services
 
Ci 1
Ci 1Ci 1
Ci 1
 
Mari belajar vue js
Mari belajar vue jsMari belajar vue js
Mari belajar vue js
 

Viewers also liked

Lokakarya penerjemah blank on 9.0
Lokakarya penerjemah blank on 9.0Lokakarya penerjemah blank on 9.0
Lokakarya penerjemah blank on 9.0
PT Lotus Indah Textile Industries
 
Database optimization 2
Database optimization 2Database optimization 2
Database optimization 2
PT Lotus Indah Textile Industries
 
Database optimization
Database optimizationDatabase optimization
Database optimization
PT Lotus Indah Textile Industries
 
Pemaketan blankon-i
Pemaketan blankon-iPemaketan blankon-i
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINTTUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
PT Lotus Indah Textile Industries
 
Domain name system dinamis dengan protokol dinamid versi 1.02
Domain name system dinamis dengan protokol dinamid versi 1.02Domain name system dinamis dengan protokol dinamid versi 1.02
Domain name system dinamis dengan protokol dinamid versi 1.02
Mohammad Anwari
 
En game hacking
En game hackingEn game hacking
En game hacking
Rahmad Kurniawan
 
PortableApps on Fedora 10 LiveUSB
PortableApps on Fedora 10 LiveUSBPortableApps on Fedora 10 LiveUSB
PortableApps on Fedora 10 LiveUSB
vargy
 
Pemaketan blankon-ii
Pemaketan blankon-iiPemaketan blankon-ii
Pemaketan blankon-ii
PT Lotus Indah Textile Industries
 
Macam2 sertifikasi linux
Macam2 sertifikasi linuxMacam2 sertifikasi linux
Macam2 sertifikasi linux
sabtolinux
 
Skalabilitas Aplikasi Web
Skalabilitas Aplikasi WebSkalabilitas Aplikasi Web
Skalabilitas Aplikasi Web
Mohammad Anwari
 
Laporan praktikum jarkom
Laporan praktikum jarkomLaporan praktikum jarkom
Laporan praktikum jarkom
Deprilana Ego Prakasa
 
Panduan praktikum jaringan & packet tracer
Panduan praktikum jaringan & packet tracerPanduan praktikum jaringan & packet tracer
Panduan praktikum jaringan & packet tracer
vianovian
 
Introduction into R for historians (part 1: introduction)
Introduction into R for historians (part 1: introduction)Introduction into R for historians (part 1: introduction)
Introduction into R for historians (part 1: introduction)
Richard Zijdeman
 
OpenOffice.Org Impress Tutorial
OpenOffice.Org Impress TutorialOpenOffice.Org Impress Tutorial
OpenOffice.Org Impress Tutorial
vargy
 
Best Practices with IPS on Oracle Solaris 11
Best Practices with IPS on Oracle Solaris 11Best Practices with IPS on Oracle Solaris 11
Best Practices with IPS on Oracle Solaris 11
glynnfoster
 
Ft tx presentation to telkom 25092013
Ft tx presentation to telkom 25092013Ft tx presentation to telkom 25092013
Ft tx presentation to telkom 25092013
Wahyu Nasution
 
FOSS and Linux
FOSS and LinuxFOSS and Linux
FOSS and Linux
vargy
 
Manual guide briker IP PABX
Manual guide briker IP PABX Manual guide briker IP PABX
Manual guide briker IP PABX
Wahyu Nasution
 

Viewers also liked (20)

Lokakarya penerjemah blank on 9.0
Lokakarya penerjemah blank on 9.0Lokakarya penerjemah blank on 9.0
Lokakarya penerjemah blank on 9.0
 
Database optimization 2
Database optimization 2Database optimization 2
Database optimization 2
 
Database optimization
Database optimizationDatabase optimization
Database optimization
 
Pemaketan blankon-i
Pemaketan blankon-iPemaketan blankon-i
Pemaketan blankon-i
 
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINTTUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
TUTORIAL INSTALASI LIBREOFFICE FOR LINUX MINT
 
Domain name system dinamis dengan protokol dinamid versi 1.02
Domain name system dinamis dengan protokol dinamid versi 1.02Domain name system dinamis dengan protokol dinamid versi 1.02
Domain name system dinamis dengan protokol dinamid versi 1.02
 
En game hacking
En game hackingEn game hacking
En game hacking
 
PortableApps on Fedora 10 LiveUSB
PortableApps on Fedora 10 LiveUSBPortableApps on Fedora 10 LiveUSB
PortableApps on Fedora 10 LiveUSB
 
Debian Tutorial
Debian TutorialDebian Tutorial
Debian Tutorial
 
Pemaketan blankon-ii
Pemaketan blankon-iiPemaketan blankon-ii
Pemaketan blankon-ii
 
Macam2 sertifikasi linux
Macam2 sertifikasi linuxMacam2 sertifikasi linux
Macam2 sertifikasi linux
 
Skalabilitas Aplikasi Web
Skalabilitas Aplikasi WebSkalabilitas Aplikasi Web
Skalabilitas Aplikasi Web
 
Laporan praktikum jarkom
Laporan praktikum jarkomLaporan praktikum jarkom
Laporan praktikum jarkom
 
Panduan praktikum jaringan & packet tracer
Panduan praktikum jaringan & packet tracerPanduan praktikum jaringan & packet tracer
Panduan praktikum jaringan & packet tracer
 
Introduction into R for historians (part 1: introduction)
Introduction into R for historians (part 1: introduction)Introduction into R for historians (part 1: introduction)
Introduction into R for historians (part 1: introduction)
 
OpenOffice.Org Impress Tutorial
OpenOffice.Org Impress TutorialOpenOffice.Org Impress Tutorial
OpenOffice.Org Impress Tutorial
 
Best Practices with IPS on Oracle Solaris 11
Best Practices with IPS on Oracle Solaris 11Best Practices with IPS on Oracle Solaris 11
Best Practices with IPS on Oracle Solaris 11
 
Ft tx presentation to telkom 25092013
Ft tx presentation to telkom 25092013Ft tx presentation to telkom 25092013
Ft tx presentation to telkom 25092013
 
FOSS and Linux
FOSS and LinuxFOSS and Linux
FOSS and Linux
 
Manual guide briker IP PABX
Manual guide briker IP PABX Manual guide briker IP PABX
Manual guide briker IP PABX
 

Similar to Mulai melangkah dengan Node.js

Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
DicodingEvent
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman web
Vicky Nitinegoro
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysql
rikysp
 
Pengenalan Dasar NodeJS
Pengenalan Dasar NodeJSPengenalan Dasar NodeJS
Pengenalan Dasar NodeJS
alfi setyadi
 
Laporan program chatting client server
Laporan program chatting client serverLaporan program chatting client server
Laporan program chatting client server
Rara Ariesta
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Java
roji muhidin
 
Program chatting
Program chattingProgram chatting
Program chatting
Aisy Cuyy
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Nabil Muhammad Firdaus
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
creatorb dev
 
Optimize php application in high traffic environment
Optimize php application in high traffic environmentOptimize php application in high traffic environment
Optimize php application in high traffic environment
k4ndar
 
Workshop On eCos
Workshop On eCosWorkshop On eCos
Workshop On eCos
Sugeng Widodo
 
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Javayoyomay93
 
Operasi bahasa java
Operasi bahasa javaOperasi bahasa java
Operasi bahasa java
rezkyputraa
 
Operasi bahasa java
Operasi bahasa javaOperasi bahasa java
Operasi bahasa java
MAFauzan
 
Understanding asynchronous process on website
Understanding asynchronous process on websiteUnderstanding asynchronous process on website
Understanding asynchronous process on website
Rizal Asrul Pambudi
 
Soal try out rpl 2014
Soal try out rpl 2014Soal try out rpl 2014
Soal try out rpl 2014
Rose Athy
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
Rakhmat Dedi Gunawan
 
Laporan program chatting
Laporan program chattingLaporan program chatting
Laporan program chattingganteng8
 
Pemrograman Bergerak Pertemuan 9.pdf
Pemrograman Bergerak Pertemuan 9.pdfPemrograman Bergerak Pertemuan 9.pdf
Pemrograman Bergerak Pertemuan 9.pdf
HendroGunawan8
 
Membuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan javaMembuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan java
Eko Kurniawan Khannedy
 

Similar to Mulai melangkah dengan Node.js (20)

Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman web
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysql
 
Pengenalan Dasar NodeJS
Pengenalan Dasar NodeJSPengenalan Dasar NodeJS
Pengenalan Dasar NodeJS
 
Laporan program chatting client server
Laporan program chatting client serverLaporan program chatting client server
Laporan program chatting client server
 
Struktur Pemrograman Java
Struktur Pemrograman JavaStruktur Pemrograman Java
Struktur Pemrograman Java
 
Program chatting
Program chattingProgram chatting
Program chatting
 
Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)Algoritma dan Pemrograman C++ (Program Structure)
Algoritma dan Pemrograman C++ (Program Structure)
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Optimize php application in high traffic environment
Optimize php application in high traffic environmentOptimize php application in high traffic environment
Optimize php application in high traffic environment
 
Workshop On eCos
Workshop On eCosWorkshop On eCos
Workshop On eCos
 
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman JavaMembuat Aplikasi Chatting Client Server Dengan Pemrograman Java
Membuat Aplikasi Chatting Client Server Dengan Pemrograman Java
 
Operasi bahasa java
Operasi bahasa javaOperasi bahasa java
Operasi bahasa java
 
Operasi bahasa java
Operasi bahasa javaOperasi bahasa java
Operasi bahasa java
 
Understanding asynchronous process on website
Understanding asynchronous process on websiteUnderstanding asynchronous process on website
Understanding asynchronous process on website
 
Soal try out rpl 2014
Soal try out rpl 2014Soal try out rpl 2014
Soal try out rpl 2014
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
 
Laporan program chatting
Laporan program chattingLaporan program chatting
Laporan program chatting
 
Pemrograman Bergerak Pertemuan 9.pdf
Pemrograman Bergerak Pertemuan 9.pdfPemrograman Bergerak Pertemuan 9.pdf
Pemrograman Bergerak Pertemuan 9.pdf
 
Membuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan javaMembuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan java
 

More from Mohammad Anwari

GNOME.Asia 2015: BlankOn Linux Architecture
GNOME.Asia 2015:  BlankOn Linux ArchitectureGNOME.Asia 2015:  BlankOn Linux Architecture
GNOME.Asia 2015: BlankOn Linux Architecture
Mohammad Anwari
 
Liku liku F/OSS
Liku liku F/OSSLiku liku F/OSS
Liku liku F/OSS
Mohammad Anwari
 
Ganasnya industri
Ganasnya industriGanasnya industri
Ganasnya industri
Mohammad Anwari
 
BlankOn dan PSrE Induk Nasional
BlankOn dan PSrE Induk NasionalBlankOn dan PSrE Induk Nasional
BlankOn dan PSrE Induk Nasional
Mohammad Anwari
 
JS di Destop
JS di Destop JS di Destop
JS di Destop
Mohammad Anwari
 
Lokakarya Manokwari - ICROSS 2013
Lokakarya Manokwari - ICROSS 2013Lokakarya Manokwari - ICROSS 2013
Lokakarya Manokwari - ICROSS 2013
Mohammad Anwari
 
Manokwari: HTML5 desktop built with gnome
Manokwari: HTML5 desktop built with gnomeManokwari: HTML5 desktop built with gnome
Manokwari: HTML5 desktop built with gnome
Mohammad Anwari
 
Blankon dan Debian
Blankon dan DebianBlankon dan Debian
Blankon dan Debian
Mohammad Anwari
 
BOF Srimubil 2009
BOF Srimubil 2009BOF Srimubil 2009
BOF Srimubil 2009
Mohammad Anwari
 
MeeGo Touch Input Method Framework
MeeGo Touch Input Method FrameworkMeeGo Touch Input Method Framework
MeeGo Touch Input Method Framework
Mohammad Anwari
 
Arsitektur Sistem Operasi BlankOn 201104
Arsitektur Sistem Operasi BlankOn 201104Arsitektur Sistem Operasi BlankOn 201104
Arsitektur Sistem Operasi BlankOn 201104
Mohammad Anwari
 
Kegiatan Riset BlankOn 2011-2012
Kegiatan Riset BlankOn 2011-2012Kegiatan Riset BlankOn 2011-2012
Kegiatan Riset BlankOn 2011-2012
Mohammad Anwari
 

More from Mohammad Anwari (12)

GNOME.Asia 2015: BlankOn Linux Architecture
GNOME.Asia 2015:  BlankOn Linux ArchitectureGNOME.Asia 2015:  BlankOn Linux Architecture
GNOME.Asia 2015: BlankOn Linux Architecture
 
Liku liku F/OSS
Liku liku F/OSSLiku liku F/OSS
Liku liku F/OSS
 
Ganasnya industri
Ganasnya industriGanasnya industri
Ganasnya industri
 
BlankOn dan PSrE Induk Nasional
BlankOn dan PSrE Induk NasionalBlankOn dan PSrE Induk Nasional
BlankOn dan PSrE Induk Nasional
 
JS di Destop
JS di Destop JS di Destop
JS di Destop
 
Lokakarya Manokwari - ICROSS 2013
Lokakarya Manokwari - ICROSS 2013Lokakarya Manokwari - ICROSS 2013
Lokakarya Manokwari - ICROSS 2013
 
Manokwari: HTML5 desktop built with gnome
Manokwari: HTML5 desktop built with gnomeManokwari: HTML5 desktop built with gnome
Manokwari: HTML5 desktop built with gnome
 
Blankon dan Debian
Blankon dan DebianBlankon dan Debian
Blankon dan Debian
 
BOF Srimubil 2009
BOF Srimubil 2009BOF Srimubil 2009
BOF Srimubil 2009
 
MeeGo Touch Input Method Framework
MeeGo Touch Input Method FrameworkMeeGo Touch Input Method Framework
MeeGo Touch Input Method Framework
 
Arsitektur Sistem Operasi BlankOn 201104
Arsitektur Sistem Operasi BlankOn 201104Arsitektur Sistem Operasi BlankOn 201104
Arsitektur Sistem Operasi BlankOn 201104
 
Kegiatan Riset BlankOn 2011-2012
Kegiatan Riset BlankOn 2011-2012Kegiatan Riset BlankOn 2011-2012
Kegiatan Riset BlankOn 2011-2012
 

Mulai melangkah dengan Node.js

  • 1. Node.js Surabaya, 24 April 2014 ICROSS 2014 Mohammad Anwari @aksimdamt Mulai melangkah dengan
  • 2. © 2014 Mohammad Anwari CC-by-SA
  • 3. Permasalahan input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result);
  • 4. input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); apa yang kebanyakan program lakukan saat menunggu hasil dari fungsi query? diam
  • 5. Pendekatan solusi ● multithread ○ context-switch ○ memory per thread ○ execution stack ○ os thread vs green thread ● event loop
  • 6. Multithread input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); satu pengguna
  • 7. Multithread input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); banyak pengguna
  • 8. Event loop input = getInput(); result = query(“select * from db where id=?”, input); satu pengguna displayResult(result);
  • 9. Event loop banyak pengguna input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result); input = getInput(); result = query(“select * from db where id=?”, input); displayResult(result);
  • 10. Kenapa tidak pakai event loop? ● tidak semua bahasa pemrograman mendukung ● bisa membuat kode tampak rumit ● kebanyakan pustaka program tidak mendukung operasi asinkronus
  • 11. Closure input = getInput(); result = query(“select * from db where id=?”, input, function(result) { displayResult(result); })
  • 12. Kenapa JavaScript? ● Mendukung pemrograman non- blocking dan async ● Hanya perlu satu kompetensi untuk pengembangan sistem di depan dan di belakang
  • 14. Node.js platform pengembangan aplikasi diciptakan oleh Ryan Dahl (2009) ➔ ditenagai oleh mesin JavaScript V8 ◆ dibuat oleh Google ◆ ECMAScript ◆ bahasa C++ ➔ fokus pada kinerja cepat ◆ non-blocking ◆ async events
  • 15. Arsitektur Pustaka inti Node.js V8 libuv lem sistem operasi aplikasi JavaScript C/C++
  • 16. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 17. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 18. var net = require('net'); net.createServer( function (stream) { stream.write('hellorn'); stream.on('end', function () { console.log('goodbyern'); } ); stream.pipe(stream); } ).listen(8000);
  • 19.
  • 20. var net = require('net'); var server = function(stream) { var end = function() { console.log('goodbyern'); } stream.write('hellorn'); stream.on('end', end); stream.pipe(stream); } net.createServer(server).listen(8000);
  • 23. Modul ● Kumpulan pustaka program dan peralatan pengembangan ○ Menyediakan fungsi-fungsi spesifik ● Pengembangan aplikasi semakin mudah ● Lisensi F/OSS
  • 24. ● Global ○ Dapat digunakan di keseluruhan sistem ○ Digunakan untuk alat bantu pengembangan ● Lokal ○ Digunakan pada spesifik pada proyek pengembangan ■ Digunakan pada tahap pengembangan saja ■ Digunakan pada produksi saja Modul