Minggu, 09 Desember 2007

Server Side Scripting

Ini tentang pertanyaan yang sering muncul di benak mereka yang baru belajar pemrograman web. Server-side scripting mana yang paling baik untuk pemrograman web? Apa PHP, ASP, atau alternatif lain (perl, misalnya)? Saya sering mendapat pertanyaan semacam itu, baik dari pengunjung web ini maupun dari teman-teman di darat.

Saat ini, saya memang masih stuck dengan PHP sebagai server-side scripting andalan, walaupun pernah juga pengalaman dengan Perl (termasuk via Slashdot untuk sebuah portal yang sekarang sudah almarhum). Untuk ASP, biarpun sudah belajar tapi masih belum sempat mempraktekkan di lapangan (Anyway, saya bukan web developer profesional!). Dengan latar belakang semacam ini, saya jelas tidak cukup kompeten untuk merekomendasikan mana yang paling baik diantara berbagai alternatif yang tersedia. So, baiknya kesempatan kali ini kita pakai untuk sedikit mengulas soal server-side scripting (juga dikenal sebagai web scripting), tanpa perlu mempromosikan satupun diantaranya.

Pertama-tama, apa sih server-side scripting itu? Ringkasnya begini, kalau kita mengakses sebuah halaman web, itu artinya bahwa kita memanggil sebuah dokumen web dalam format HTML yang tersimpan dalam sebuah webserver. Dokumen web ini umumnya bersifat statis, artinya dokumen itu tidak mengandung komponen yang bisa berubah-ubah dalam kondisi tertentu. Untuk membuat sebuah dokumen HTML terlihat lebih dinamis, maka dibuatlah bahasa pemrograman khusus yang disebut web scripting. Menurut sifatnya, web scripting dibagi menjadi yang berbasis client (client-side) dan yang berbasis server (server-side).

Web scripting berbasis client melakukan operasinya di komputer client, artinya seluruh kode sumber (source-code) akan ikut di download bersama dokumen web bersangkutan, dan selanjutnya, pengolahan script menjadi bentuk keluaran (output) akan dilakukan disisi komputer client. Contoh dari sebuah web scripting berbasis client adalah JavaScript. Sebaliknya, pada web scripting berbasis server, pengolahan script akan dilakukan di server. Server kemudian mengirimkan hasil keluaran (output) berupa halaman web dalam format HTML standar tanpa menyertakan script penyusunnya ke komputer client.

Dibandingkan dengan client-side scripting, server-side scripting tergolong ideal untuk membuat situs web yang dinamis, termasuk mengkombinasikannya dengan database atau fungsi-fungsi eksternal lainnya. Halaman web yang disususun dengan server-side scripting umumnya berukuran kecil karena komponen-komponen penyusunnya tidak ikut didownload. Penggunaan resource di sisi client juga jadi lebih sedikit. Karena kode sumber untuk server-side scripting tersimpan di server, maka keamanannya menjadi lebih terjamin karena tidak dapat diintip atau dicontek oleh pihak lain selain dari yang memiliki akses ke server yang menyimpannya.

ASP

Giliran pertama untuk kita bahas adalah ASP (Microsoft Active Server Page). Sebelum melangkah lebih jauh, perlu ditegaskan bahwa ASP sebenarnya bukan merupakan sebuah bahasa pemrograman. ASP sebenarnya adalah sebuah bingkai kerja (framework) yang memungkinkan developer web mengkombinasikan sejumlah scripting language (VBScript dan JavaScript merupakan pilihan yang paling populer) dengan komponen software yang dapat diekspansi. Komponen-komponen ini diperlakukan sebagai objek oleh scripting language saat ia digunakan sebagai sebuah bagian dari bingkai kerja ASP. Pada pokoknya, kekuatan ASP terletak pada kemampuannya untuk memadukan bahasa script yang relatif sederhana seperti VBScript dan JavaScript dengan komponen software yang 'poweful' yang biasanya hanya digunakan oleh para developer C/C++.

Tapi okelah, itu kan kata tim pemasaran Microsoft. Sekarang ayo kita lihat faktanya: dalam prakteknya, ASP jelas berlaku layaknya sebuah bahasa pemrograman. Programmer punya pilihan, apakah akan menulis program menggunakan VBScript ASP atau JavaScript ASP. Walaupun demikian, kebanyakan contoh program yang tersedia ditulis dalam VBScript, maka jadilah ASP diartikan sebagai suatu bahasa pemrograman untuk mendevelop sebuah situs web yang dinamis dengan memanfaatkan VBScript.

Dalam pemanfaatannya, ASP dikenal mudah untuk dipelajari, cukup powerful, dan memiliki performa yang lumayan baik. ASP memiliki hubungan yang erat dengan OS Windows (kebanyakan komponen software milik ASP dibuat spesifik untuk dijalankan pada Windows) dengan Microsoft Internet Information Server (IIS) sebagai webservernya. Dengan alasan demikian, adalah tidak praktis, atau tepatnya tidak mungkin, untuk menjalankan ASP pada server selain yang berbasis Windows. Dari segi biaya, jelas ASP lebih banyak menguras cost karena developer harus investasi untuk membeli paket Windows atau mencari webhosting yang mengoperasikan server berbasis Windows (yang biasanya mengenakan tarip lebih mahal). Ada juga sih versi ASP yang jalan di server Apache under Linux, tapi tetap bukan alternatif yang baik untuk menjalankan ASP dibawah OS selain Windows.

Satu hal yang juga perlu menjadi perhatian para developer ASP adalah terbatasnya komponen yang dibundel dalam paket software ASP. Apabila yang diperlukan hanyalah konektivistas dengan basis data (database), sebuah mesin pencari (search engine), penanganan email, dasar penelusuran (tracking) untuk proses dan sesi, maka ASP sudah merupakan pilihan yang cocok. Fungsi-fungsi yang lebih jarang digunakan, biasanya akan membutuhkan instalasi komponen software pada server. Banyak perusahaan diluaran yang menjual komponen-komponen ASP untuk fungsi-fungsi semacam meng-generate file PDF, berinteraksi dengan server FTP, penanganan upload file, dan sebagainya. Sayangnya, seperti halnya ASP sendiri, komponen-komponen tersebut kebanyakan bersifat komersial (baca: harus dibeli).

Pertimbangan utama untuk memilih ASP adalah dukungan teknologi yang baik dari komunitas developer Microsoft dibelakangnya. MSDN (Microsoft Development Network) menyediakan berbagai artikel teknis dan materi referensi untuk developer ASP. Microsoft sendiri menyediakan dukungan teknis yang cukup memadai bagi para developer ASP apabila mereka mengalami kesulitan. Tapi tentu saja, harus dicatat bahwa itu semua tidak gratis!

PHP

Berikutnya tentang PHP. Dibanding yang lainhya, PHP boleh dibilang pendatang baru dalam arena pemrograman berbasis server-side. Namun demikian, kiprahnya tidak bisa dipandang sebelah mata. Bahasa pemrograman ini termasuk favorit bagi para developer web karena sintaksnya yang sederhana dan familiar, dan pustaka fungsinya yang komprehensif. Dan tentu saja, yang menjadi daya tarik utamanya adalah harganya yang sangat-sangat murah (gratis!). Tidak heran kalau PHP belakangan menjadi alternatif yang sangat menarik bagi developer baru ketimbang ASP-nya Microsoft.

PHP juga sering disebut sebagai 'Perl killer' dalam dunia server-side scripting. Untuk kepentingan pengembangan aplikasi web, PHP dapat melakukan hampir semua yang bisa dilakukan dengan Perl. Dan PHP biasanya melakukannya dengan lebih cepat dan mudah. Tidak seperti Perl yang biasanya dijalankan sebagai sebuah program CGI oleh webserver untuk menangani setiap permintaan halaman (page request), maka PHP dapat bekerja secara terintegrasi dengan webserver sehingga proses loading halaman web dapat berlangsung dengan lebih efisien.

PHP adalah bahasa pemrograman yang sangat kapabel, dengan fungsi-fungsi built-in yang lengkap. Ia dapat melakukan hampir segala hal, mulai dari yang paling umum hingga yang sophisticated yang diperlukan untuk membangun sebuah situs web. Developer tidak perlu lagi menginstall (baca: membeli) modul add-ins komersial. PHP mengerjakan semuanya sendirian! Tapi dibalik semua kemudahan yang ditawarkan, ia sebenarnya menyimpan kerumitan tersendiri. PHP termasuk relatif sulit dikembangkan untuk menambahkan fungsi-fungsi non-standar yang tidak tercakup dalam pustaka fungsi built-in miliknya. Bukannya tidak bisa sih, tapi untuk melakukannya diperlukan pengetahuan tentang pemrograman C/C++ yang dikenal ruwet itu. Untungnya, sangat sedikit aplikasi web yang membutuhkan fungsi-fungsi yang belum bisa ditangani oleh PHP.

PHP adalah software gratis yang bersifat lintas plattform dan open-source. Ia terintegrasi dengan seluruh webserver dari semua sistem operasi yang umum digunakan. Ini adalah keuntungan yang sangat besar bagi developer dengan modal yang 'cekak' karena mereka dapat membangun sebuah webserver berbasis Linux dengan dukungan PHP tanpa perlu mengeluarkan ongkos untuk pengadaan softwarenya. Tapi, sebagaimana software gratis lainnya, tidak ada dukungan formal apabila terdapat problem dalam menjalankannya. Demikian pula, karena PHP adalah teknologi baru dan sangat aktif dikembangkan, maka sering ditemui sejumlah bug pada versi terbarunya. Tapi ini bukanlah hal yang perlu terlampau dikhawatirkan. PHP memiliki komunitas pengguna yang sangat aktif. Mereka cukup rajin merespon setiap pertanyaan atau permintaan bantuan dari sesama pengguna. Lagipula, versi terakhir dari PHP juga diketahui cukup stabil dan handal.

Perl

Sedikit cerita tentang Perl. Kalau PHP adalah 'pendatang baru', maka Perl justeru adalah bahasa pemrograman tertua yang digunakan untuk web scripting. Bahasa pemrograman yang satu ini usianya malahan jauh lebih tua dari WWW itu sendiri. Versi pertama dari Perl diluncurkan pada 18 Desember 1987, lebih tua lima tahun dari browser web yang pertama! Mungkin agak mengherankan kalau sebuah bahasa pemrograman berbasis server untuk mengembangkan web justeru muncul lebih dahulu dari web itu sendiri. Jawabnya adalah karena Perl sebenarnya tidak dikembangkan sebagai bahasa pemrograman untuk web development. Dalam kenyataannya, Perl adalah bahasa pemrograman script yang bersifat serbaguna untuk menangani tugas-tugas yang berkenaan dengan manipulasi teks.

Perl dikenal sangat handal dalam mengambil bagian-bagian teks dari berbagai sumber dan menggabungnya menjadi sebuah dokumen lengkap. Fungsi inilah yang dikembangkan untuk mendevelop sebuah halaman web yang dinamis sehingga Perl akhirnya juga dimanfaatkan sebagai web scripting. Kini, setelah satu setengah dekade berlalu dari saat pertama kali dibuat, Perl telah dikembangkan dengan menambahkan aneka modul dengan fungsi-fungsi yang lebih kompleks untuk penggunaan yang lebih luas. Diantara fungsi-fungsi yang ditambahkan tersebut adalah fungsi untuk menciptakan konten web yang dinamis melalui Common Gateway Interface (CGI) yang telah didukung oleh sebagian besar software webserver. Dalam hal ini, Perl dapat dimanfatkan untuk membangun situs web yang kompleks secara modular, menangani pengisian form di situs web, dan fungsi-fungsi standar lain yang diperlukan untuk membuat sebuah situs web yang dinamis.

Saat ini, versi dari Perl tersedia secara gratis untuk sebagian besar sistem operasi, mulai dari mainstream Windows hingga varian Unix yang kurang begitu dikenal. Kalaupun menulis sendiri program berbasis Perl terasa memberatkan, maka di internet telah tersedia berbagai modul siap pakai untuk aneka fungsi, misalnya pada situs The Comprehensive Perl Archive Network (CPAN). Situs ini menyediakan sumber yang terpusat bagi modul add-in, contoh script, bahkan aplikasi web berbasis Perl yang telah didevelop secara lengkap!

Satu-satunya kelemahan dari Perl adalah kenyataan bahwa bahasa pemrograman ini sebenarnya bukan ditujukan untuk pengembangan web sehingga ia belum pernah dioptimasi untuk meningkatkan kecepatan, skalabilitas, maupun kemudahan penggunaannya. Dewasa ini telah tersedia berbagai bahasa pemrograman yang lebih gampang dipelajari bagi para developer web, namun demikian, Perl juga menawarkan kemungkinan untuk melakukan lebih banyak hal selain sekedar pemrograman web apabila dibutuhkan.

Akhirnya, kita sudah berbincang serba sedikit tentang beberapa web programming yang populer saat ini. Sebenarnya ada alternatif-alternatif lain yang juga tidak kalah 'seru' untuk dibahas, seperti Cold fussion atau Java. Tapi, ketimbang weblog ini jadi terasa kian membosankan, maka topik ini baiknya kita sudahi dulu. Insya Allah, kapan-kapan kalau masih ada umur, soal web programming ini akan kita bahas secara lebih rinci di halaman Informatika.