Web Development Dengan 1 Bahasa Untuk Server dan Client ???
Salah satu impian web developer adalah punya satu bahasa pemrograman satu untuk semua, maksudnya adalah bisa memrogram aplikasi web baik untuk sisi client (yang jalan di web browser) ato di sisi server (yang jalan di web server) dengan menggunakan satu bahasa yang sama. Kalau kita perhatikan proses web development saat ini adalah web developer minimal menggunakan 2 bahasa untuk membangun aplikasi web, yaitu menggunakan JavaScript (disisi client) ditambah PHP/Java/Python/.NET (disisi server).
Kesulitannya memang ada disisi client yang hanya mendukung JavaScript, dan melihat perkembangan web browser saat ini, hanya ada kemungkinan kecil peran javascript bisa digantikan oleh bahasa pemrograman lain dalam beberapa tahun kedepan. Bahkan implementasi EcmaScript 4 yang merupakan kelanjutan javascript juga ditunda sampai waktu yang tidak ditentukan. Penantang javascript disisi client yang bisa diperhitungkan hanya ActionScript yang berjalan diatas platform flash dan .NET yang berjalan diatas silverlight (walau masih dalam jumlah yang belum signifikan).
Memang sih sudah ada usaha untuk menggabungkan development client dan server kedalam satu bahasa. Contoh pertama adalah .NET dengan visual studionya. Cara yang dipergunakan .NET adalah membuat kode javascript transparant, digenerate secara otomatis sehingga developer hanya berurusan dengan kode .NET. Tapi bagaimanapun juga, secanggih-canggihnya IDE tersebut, pada akhirnya developer yang ingin membuat aplikasi web yang advance harus turun juga ke kode javascript.
Contoh kedua yang cukup ekstrim adalah Haxe. Pendekatan yang dipakai Haxe adalah menciptakan bahasa baru dan menyediakan kompiler yang mampu menggenerate output ke beberapa platform seperti javascript (untuk web browser), php (untuk server), ActionScript (untuk flash) dan beberapa platform kecil lain. Pendekatan ini cukup menarik tetapi output yang digenerate sering tidak memuaskan pengguna sebab bukan merupakan hasil yang efisien.
Selain pendekatan diatas, sebenarnya pendekatan yang paling masuk akal mungkin adalah membawa bahasa pemrograman javascript ke sisi server. Yup Server Side Javascript. Bahkan sebenarnya ide untuk membawa javascript menjadi bahasa pemrograman server sudah dilakukan Netscape dari tahun 1996 dengan Server LiveWire-nya. Tapi kenapa pemakaian javascript untuk sisi server seperti tidak pernah terdengar ?? Mungkin permasalahannya terletak dari desain bahasanya sendiri. Selama ini bahasa javascript dianggap bahasa kelas 2 dengan struktur yang tidak terlalu baik sehingga dianggap tidak cocok untuk digunakan sebagai bahasa pemrograman aplikasi besar. Walaupun javascript mau tidak mau digunakan untuk sisi client saat ini, tetapi kebanyakan developer melihat hal tersebut tidak apa-apa karena javascript hanya digunakan untuk proses tampilan, sedangkan fungsi inti bisnis berjalan di sisi server dengan menggunakan bahasa yang lebih serius seperti java/PHP/.NET/Python/Ruby. Alasan lain mungkin kebanyakan virtual machine untuk menjalankan javascript yang tersedia masih relatif lambat.
Akan tetapi ada semangat baru yang tumbuh akhir-akhir ini dengan pemakaian javascript sebagai kode di sisi server. Hal ini dimulai dengan terbuka-nya kode javascript engine dari mozilla. Engine javascript yang cukup stabil dan cepat mengundang beberapa developer untuk mempergunakannya sebagai engine javascript disisi server. Salah satu contohnya adalah JSEXT yang mempergunakan engine SpideMonkey (C based dari firefox) untuk menjalankan javascript di ApacheServer. Contoh lain adalah JSSP yang mempergunakan engine Rhino (java based javascript engine dari Mozilla). Tapi mungkin kalau anda mencari versi lain dari serverside javascript menggunakan Rhino anda akan mendapatkan banyak sebab Rhino secara default di ikutkan dalam pake JDK 1.6 (Bahkan banyak tutorial untuk membuat sendiri serverside javascript engine dengan mempergunakan Rhino ini…)
Tapi yang paling menarik perhatian saya sebenarnya project Tamarin dari Mozilla. Buat yang belum tau, project Tamarin adalah project untuk mengimplementasikan EcmaScript 4 ke dalam WebBrowser FireFox versi yang akan datang. Project ini mempergunakan dasar dari engine ActionScript dari Adobe, yaitu engine yang di pergunakan di platform Flash. Walau sempat mengalami stagnasi karena ada perdebatan tentang implementasi EcmaScript 4 ke browser, tapi project ini akhir-akhir ini mulai menggeliat lagi.
Yang menarik dari project ini adalah sama seperti engine javascript dari mozilla terdahulu, engine yang terbuka sourcenya ini bisa diimplementasikan untuk engine javascript disisi client maupun di sisi server. Akan tetapi engine ini mempergunakan standar EcmaScript 4 yang desain bahasanya jauh lebih modern dibanding dengan javascript saat ini, bahkan menurut pendapat saya pribadi, EcmaScript 4 lebih modern dibandingkan PHP, sehingga cocok juga untuk pengembangan aplikasi besar yang dan serius. Engine ini juga berperformansi baik dengan ukuran yang relatif kecil (saat ini sekitar 200KB, coba bandingkan dengan JVM java ato .NET). Yang lebih menarik lagi adalah engine ini juga mampu menghandle bahasa action script yang dipakai flash, oleh karena itu saya mengharapkan penyatuan bahasa pemrograman antara web browser script, flash script dan serverside script akan terwujud tidak lama lagi.
Memang engine tamarin masih dalam fase awal sekali dan masih berkutat pada pembangunan core engine, belum ada planning pasti untuk penggabungan ke firefox browser. Akan tetapi status terakhir dari engine ini cukup meyakinkan. Sudah ada usaha untuk mempergunakan engine ini untuk shell-based javascript bernama RedTamarin. Dan usaha untuk membuat mod apache dengan EcmaScript 4 sebagai bahasa pemrogrammannya dengan menggunakan engine tamrin juga sudah dimulai.
Jadi, kita tunggu gimana perkembangan bahasa pemrograman untuk web selanjutnya. Kalo anda tidak sabar dan punya kemampuan C, saya kira memulai project opensource untuk javascript engine dengan mempergunakan tamarin engine adalah ide yang cukup menarik. Bukan untuk embuat fork dari project yang ada diatas, tapi untuk mempercepat, sebab project diatas masih one man project.

February 11th, 2009 at 12:02 am
[...] Planet Terasi [...]
February 11th, 2009 at 6:59 am
bingung.. kalo bikin mod_js.so untuk apache, nanti yang membedakan server-side javascript dengan clientsidenya gimana yah? apa pake tag ‘<?’ dan ‘?>’ ?
boleh juga bwt oprekan kuliah teknik kompilasi..
February 12th, 2009 at 1:00 am
thanks. kita tunggu bersama sama
February 12th, 2009 at 7:18 pm
@pebbie, makanya perlu spesifikasi yang lebih enak sih. Kalo netscape dulu pake script runat=”server” tapi kayaknya kepanjangan deh kalo nulis itu terus berulang-ulang
Tapi yang enak, koding kode client & server gak perlu 2 kali, kayak sekarang kan harus implement di javascript trus kostumisasi biar jalan di php (ato sebaliknya). Kalo udah sama,. wah enak banget….
February 27th, 2009 at 3:26 am
kalo nanti terlaksana, tinggal tunggu supportnya. Kalo ga ada yg support (browser/server) tinggal tunggu matinya deh
May 14th, 2009 at 2:41 am
mas, saya mau minta bantu nih…
saya kan lagi desain web menggunakan javascript? yang saya bingungin adalah :
saya kan pake ubuntu, xp ma vista keberatan dipake di komputer saya.
1.JavaScript ga bisa di gunakan di firefox(emang), pas saya cari solusi ada?saya pikir internet explorer bisa jalanin JavaScript, aku install ies4linux?ternyata sama aja ga bisa?
2.ada ga software atau perangkat lunak yang cocok untuk masalah aku ini?Menjalankan JavaScript di ubuntu?
Mohon bantuannya?
terima kasih…
May 14th, 2009 at 2:43 am
oh iya lupa, saya membuat tugas untuk UAS kuliah saya…
membangun Website dengan JavaScript…
May 14th, 2009 at 9:41 am
@chandra
javascript kan standar browser, bisa dong jalan di semua browser modern. Kalo gak bisa mungkin ada fitur yang enggak kompatibel. Biasanya sih IE yang enggak kompatiberl ke browser lain
March 23rd, 2010 at 7:57 pm
maz mau tanyak nih..
membuat program traffic laight/lampu lalu lintas byasa nya menggunakan
bahasa pemrograman apa?
gimana cara coding mengatur waktu nya?
March 23rd, 2010 at 8:50 pm
@indra, mungkin kalo traffic light maennya dilevel micro controller kali ya, bisa pake assembly ato pake C untuk micro controller.
Timernya ? di micro controller kan ada komponen timer
July 14th, 2010 at 9:37 pm
Idem sama pebbie. Sebenarnya seh hampir sama klo pake framework yg server side (ex: symfony), semua script JS digenerate langsung sama frameworknya. Tapi bener kata-kata Anda, klo mo bikin web yg advanced, tetep aja programmernya turun tangan langsung lagi. Jadi infinite loop deh. Kesimpulannya satu: nggak mungkin