Polimorfisme pada Java

Polimorfisme merupakan suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku berbeda. Istilah ini sendiri berasal dari bahasa Yunani, yang berarti “Mempunyai banyak bentuk”.

Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama. Polimarfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan.

Contoh program Bentukwajah.java :


import java.*;
import java.io.*;
/*class induk dengan nama Bentukwajah*/
class Bentukwajah
{
/*Membuat sebuah method respons pada class induk dimana mengembalikan
*sebuah nilai String*/
public String respons()
{
return(“Perhatikan reaksi wajah saya\n”);
}
}
/*Membuat class-class lain dengan turunan dari class Bentukwajah*/
class Senyum extends Bentukwajah
{
public String respons()
{
return(“Senyum karena senang\n”);
}
}
class Tertawa extends Bentukwajah
{
public String respons()
{
return(“Tertawa karena gembira\n”);
}
}
class Marah extends Bentukwajah
{
public String respons()
{
return(“kemarahan disebabkan bertangkar\n”);
}
}
class Sedih extends Bentukwajah
{
public String respons()
{
return(“Sedih disebabkan cemburu\n”);
}
}

 

Contoh program Programpolimorphis.java :

 

//program utama
public class Programpolimorphis
{
/**Main method*/
public static void main(String []args)
{
System.out.println(“\n Program Polimorphis”);
System.out.println(“======================”);
//membuat objek-objek raut(ekspresi) dari wajah
Bentukwajah objbentuk=new Bentukwajah();
Senyum objsenyum=new Senyum();
Tertawa objtertawa=new Tertawa();
Marah objmarah=new Marah();
Sedih objsedih=new Sedih();
//polimorphis dari bentuk wajah ada 5 dimulai dari 0-4
Bentukwajah []Bentuk=new Bentukwajah[5];
Bentuk[0]=objbentuk;
Bentuk[1]=objsenyum;
Bentuk[2]=objtertawa;
Bentuk[3]=objmarah;
Bentuk[4]=objsedih;
System.out.println(“Bentuk[0]:”+Bentuk[0].respons());
System.out.println(“Bentuk[1]:”+Bentuk[1].respons());
System.out.println(“Bentuk[2]:”+Bentuk[2].respons());
System.out.println(“Bentuk[3]:”+Bentuk[3].respons());
System.out.println(“Bentuk[4]:”+Bentuk[4].respons());
}
}

 

Output Program :

Disusun Oleh :

Akbar Imanulrachman (https://akbalakbal.wordpress.com)

Noordian Singgih P. (http://meongngedip.blogspot.com)

Kelas 2IA14

Inheritance pada Java

Salah satu bagian penting dalam object oriented programming adalah inheritance / pewarisan. Inheritance adalah proses pewarisan data dan method dari suatu class kepada class yang lain. Secara default inheritance bersifat menyeluruh sehingga semua data dan method diturunkan kepada class yang baru. Kelas yang mewariskan disebut dengan super class sedangkan class turunan disebut dengan sub class. Keuntungan dari inheritance :

• Bersifat reusable. Bayangkan bila anda perlu membuat beberapa class yang mempunyai sifat dasar dan basis class yang sama, dan pada masing masing class tersebut ditambahkan data dan method yang unique. Tanpa inheritance anda harus menyalin semua data dan method dari suatu class. Hal tersebut mungkin masih bisa dilakukan jika basis class anda definisikan sendiri. Namun bagaiman jika anda ingin menggunakan method dari class standard API. Saya rasa itu tidak mungkin.
• Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama. Jika anda ingin melakukan modifikasi suatu data atau method pada semua sub class anda tidak perlu melakukan perubahan pada masing masing sub class. Modifikasi cukup dilakukan pada super class.

Dalam inheritance dikenal dengan istilah overriding. Overidding adalah kemampuan sub class untuk melakukan modifikasi data dan method dari super class. Sebelum anda melakukan overidding terhadap method atau data dari class induk, anda harus memperhatikan aksesibelitas dari data dan method dari super class.[ overidding hanya bisa dilakukan untuk data dan method yang memiliki modifier default, public dan protected.

  • Untuk melakukan inheritance digunakan keyword extends
  • Dalam java hanya mendukung single inheritance
  • data dengan modifier private tidak diwariskan ke sub class
  • constructor super class tidak diwariskan ke sub class

 

Contoh Program :

Program induk : kakek.java

public class kakek
{
protected String namekakek;
protected String address;
public kakek()
{
System.out.println(“\n Program Demo Inheritance”);
System.out.println(“============================”);
System.out.println(“   Masukan construktor kakek  “);
System.out.println(“–Dijalankan oleh class Bapak–”);
namekakek=”Doni wijaya”;
address=”Merauke”;
}
public kakek(String name,String address)
{
this.namekakek=namekakek;
this.address=address;
}
public String getName()
{
return namekakek;
}
public String getAddress()
{
return address;
}
}

 

Program anak/turunan : bapak.java

public class bapak extends kakek
{
protected String namebapak;
protected String addressbapak;
public bapak()
{
System.out.println(“Nama Kakek :”+namekakek);
System.out.println(“Address kakek :”+address);
System.out.println(“\n”);
System.out.println(” Masukan Construktor Bapak “);
System.out.println(“—-dijalankan class cucu—-”);
namebapak=”Ridho Saputra”;
addressbapak=”Yogyakarta”;
}
public bapak(String namebapak,String addressbapak)
{
this.namebapak=namebapak;
this.addressbapak=addressbapak;
}
public String getNama()
{
return namebapak;
}
public String getAddress()
{
return addressbapak;
}
public static void main(String []args)
{
bapak sari=new bapak();
}
}

 

Program anak/turunan : cucu.java

public class cucu extends bapak
{
public cucu()
{
System.out.println(“Nama Bapak  :”+namebapak);
System.out.println(“Address Bapak :”+addressbapak);
}
public static void main(String []args)
{
String namacucu;
cucu lagan=new cucu();
System.out.println(“\nSaya adalah CUCU”);
System.out.println(“Nama Saya : Samuel”);
System.out.println(“”);
}
}

Output Program :

Apabila program bapak.java dijalankan :

Apabila program cucu.java dijalankan :

Disusun Oleh :

Akbar Imanulrachman (https://akbalakbal.wordpress.com)

Noordian Singgih P. (http://meongngedip.blogspot.com)

Kelas 2IA14

Konsep Enkapsulasi pada Pemrograman Java

Pada postingan kali ini saya akan membahas tentang konsep Enkapsulasi pada bahasa Pemrograman Java, sebelum kita memulai ke contoh program, ada baiknya jika kita mengetahui terlebih dahulu tentang pengertian enkapsulasi itu sendiri.

Nah di bawah ini ada sedikit pengertian mengenai enkapsulasi yang saya dapat dari wikipedia.

Enkapsulasi (bahasa Inggris:encapsulation), secara umum merupakan sebuah proses yang membuat satu jenis paket data jaringan menjadi jenis data lainnya. Enkapsulasi ialah suatu prinsip penyembunyian desain atau pengimplementasian informasi yang tidak sesuai pada object yang ada. Enkapsulasi terjadi ketika sebuah protokol yang berada pada lapisan yang lebih rendah menerima data dari protokol yang berada pada lapisan yang lebih tinggi dan meletakkan data ke format data yang dipahami oleh protokol tersebut. Dalam Osi References Model, proses enkapsulasi yang terjadi pada lapisan terendah umumnya disebut sebagai “framing“. Dalam JAVA, dasar enkapsulasi adalah class. anda membuat suatu class yang menyatakan bahwa variable atau method sebuah class tidak dapat diakses oleh class lain dengan menjadikan class tersebut private, atau dengan menjadikan class tersebut protected, yaitu hanya bisa diakses oleh turunannya. lain hal jika anda menggunakan class public, dalam hal ini dapat diakses oleh sembarang class karena bersifat umum.

Dalam enkapsulasi terdapat hak akses public, protected, dan private. Hak akses public memungkinkan semua kelas mengaksesnya, hak akses protected hanya diberikan kepada kelasnya sendiri dan turunannya, serta kelas-kelas dalam satu paket. Sedangkan private hanya boleh diakses oleh kelasnya sendiri. Mengapa jika hak akses public pada konstruktor manusia di ganti dengan PRIVATE, program akan ERROR ? Private, adalah level proteksi untuk andi yang berada di dalam manusia. Si andi tidak boleh keluar dari manusia karena mempunya level proteksi paling tinggi. Dalam implementasinya, field dengan level proteksi private hanya dapat diakses di dalam class tersebut.

Dibawah ini ada potongan program sederhana yang menjelaskan tentang konsep enkapsulasi..

class Box {
// what are the properties or fields
private int length;
private int width;
private int height;

// what are the actions or methods
public void setLength(int p)
{length = p;}

public void setWidth(int p)
{width = p;}

public void setHeight(int p)
{height = p;}

public int displayVolume()
{return (length*width*height);}
}

class BoxVol {
public static void main (String args[]) {

Box ob1 = new Box();

double vol;

ob1.setLength(120);
ob1.setWidth(100);
ob1.setHeight(90);

vol = ob1.displayVolume();
System.out.println(“Volume nya adalah : ” + vol);
}
}

Output :

Tugas Pemrograman Berbasis Objek 1

Listing Program

Output Program

Logika Program

Disini kita akan mencari luas dan keliling dari berbagai macam bangun datar, yang pertama kita mencari luas dan keliling lingkaran, pada luas dan keliling lingkaran kita menggunakan tipe data double karena untuk mencari luas dan keliling kita menggunakan pi=3,14 sedangkan fungsi double itu sendiri digunakan untuk bilangan yang menggunakan koma.

Kemudian untuk mencari luas dan keliling segitiga dan persegi kita menggunakan tipe data integer yang berfungsi untuk bilangan real yang tidak menggunakan koma, dan untuk output nya seperti biasa kita menggunakanSystem.out.println untuk mengeluarkan nya secara per baris.

Sedangkan untuk penamaan file pada java harus sama dengan public class yang kita buat, contoh nama file nodie.java jadi kita harus membuat public class nodie.

untuk args pada line Public static void main (string []args) kita dapat mengganti args dengan kata lain selain args karena args hanya sebuah variabel yang dapat kita ubah-ubah.

Dan Untuk mengakhiri sebuah statement atau string jangan lupa kita harus memberikan tanda ( ; ).

Disusun Oleh :

Akbar Imanulrachman

Noordian Singgih ( http://meongngedip.blogspot.com )

Kelas 2IA14

Definisi dan Perbedaan antara Pemrograman Terstruktur dan Pemrograman Berbasis Objek

Sebelum menjabarkan lebih lanjut tentang definisi dan perbedaan antara Pemrograman Terstruktur dan Pemrograman Berorientasi Objek, ada baiknya dulu kami mendefinisikan dulu apa itu pemrograman.

A. Definisi Pemrograman 

Pemrograman adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau ‘pekerjaan’ sesuai dengan keinginan si pemrogram. Untuk dapat melakukan pemrograman, diperlukan keterampilan dalam algoritma, logika, dan bahasa pemrograman, dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika. Pemrograman adalah sebuah seni dalam menggunakan satu atau lebih algoritma yang saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu sehingga menjadi sebuah program komputer. Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda pula. Gaya pemrograman ini biasa disebut paradigma pemrograman. Apakah memprogram perangkat lunak lebih merupakan seni, ilmu, atau teknik telah lama diperdebatkan. Pemrogram yang baik biasanya mengkombinasikan tiga hal tersebut, agar dapat menciptakan program yang efisien, baik dari sisi waktu berjalan (running time), atau memori.

B. Definisi Pemrograman Terstruktur

Pemrograman Terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami.
Untuk program yang simple / sederhana biasanya menggunakan pemrograman terstruktur karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman berorientasi objek. Pemrograman Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi secara independen sehingga untuk setiap perubahan kode tidak tergantung pada kode yang lainnya, atau lebih dikenal dengan modular. Terdapat juga perbedaan secara spesifik antara Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur, yaitu pada kelas dan objek. Pada pemrograman terstruktur tidak terdapat kelas dan objek.
Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop).
Bahasa pemrograman yang mendukung pemrograman terstruktur:
  • Cobol Turbo Prolog
  • C
  • Pascal
  • Delphi
  • Borland Delphi
Dilihat dari pengertian di atas, pemrograman terstruktur memilki beberapa sifat – sifat seperti :
  • Memuat teknik pemecahan masalah yang logis dan sistematis.
  • Memuat algoritma yang efisien, efektif dan sederhana.
  • Program disusun dengan logika yang mudah dipahami.
  • Tidak menggunakan perintah GOTO.
  • Biaya pengujian program relatif rendah.
  • Memiliki dokumentasi yang baik.
  • Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah.

Berdasarkan penjelasan diatas, pemrograman terstruktur unggul dalam melakukan pemrograman sederhana karena lebih efisien dan lebih murah dalam hal perawatannya tetapi permodelan ini lebih sulit untuk dipahami.

C. Definisi Pemrograman Berorientasi Objek

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,

Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Konsep dasar dari Pemrograman Berorientasi Objek Pemrograman orientasi-objek menekankan konsep berikut:

  • Kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh ‘class of dog’ adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
  • Objek – membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program; objek merupakan dasar dari  modularitas dan struktur dalam sebuah program komputer berorientasi objek.
  • Abstraksi – Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
  • Enkapsulasi – Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri. Pemrograman berorientasi objek sangat cocok digunakan dalam kasus pembuatan software yang rumit dan kompleks.

Bahasa pemrograman yang mendukung OOP antara lain:

  • Visual Foxpro
  • Java
  • C++
  • Pascal (bahasa pemrograman)
  • Visual Basic.NET
  • SIMULA
  • Smalltalk
  • Ruby
  • Python
  • PHP
  • C#
  • Delphi
  • Eiffel
  • Perl
  • Adobe Flash AS 3.0
Pemrograman berorientasi objek memliki beberapa keuntungan seperti :
  • Maintenance; program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
  • Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database program misalnya.
  • Dapat digunakannya obyek-obyek sesering yang diinginkan, kita dapat menyimpan obyek-obyek yang yang dirancang dengan baik ke dalam sebuah tolkit rutin yang bermanfaat yang dapat disisipkan kedalam kode yang baru dengan sedikit perubahan atau tanpa perubahan pada kode tersebut.
D. Perbedaan antara Pemrograman Terstruktur dan Pemrograman Berbasis Objek
  • Dengan menggunakan PBO maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur), tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur, menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur.
  • Untuk tata nama, keduanya pun memiliki tatanan yang sama walaupun memiliki pengertian tersendiri: PBO menggunakan “method” sedangkan terstruktur menggunakan “function”. Bila di PBO sering didengar mengenai “objects” maka di terstruktur kita mengenalnya dengan ”modules”. Begitu pula halnya dengan “message” pada PBO dan “argument” pada terstruktur. “attribute” pada PBO juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
  • Pemrograman berorientasikan objek dikatakan lebih baik apabila model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung PBO mengklaim bahwa PBO lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan PBO lebih mudah dikembangkan dan dirawat.
Dari penjelasan di atas kami menyimpulkan, jika ingin membuat program yang panjang dan rumit lebih baik menggunakan Pemrograman Berorientasi Objek, namun apabila ingin membuat program dalam skala yang lebih kecil lebih baik menggunakan Pemrograman Terstruktur. Demikian penjabaran kami. Apabila ada yang kurang berkenan mohon dimaafkan. Terima kasih.

Disusun Oleh :

Akbar Imanulrachman

Noordian Singgih ( http://meongngedip.blogspot.com )

Kelas 2IA14

Tugas 2 Pemrograman Berbasis Objek

Sumber :

http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek

http://java.lyracc.com/belajar/java-untuk-pemula/bab-vi-pemrograman-berorientasi-objek

http://astrobo-yeah.blogspot.com/2010/09/pemrograman-berorientasi-objek.html

http://shandy-06shihab.blogspot.com/2010/10/pemrograman-terstruktur.html

http://id.wikipedia.org/wiki/Pemrograman_terstruktur

http://jkw1.wordpress.com/bsi-kuliah/pemrograman-terstruktur/http://hilda_kamaruddin.students-blog.undip.ac.id/tag/pemrograman-terstruktur/

Teknologi Yang Digunakan Pada Jejaring Sosial Facebook

Memcached

Memcached saat ini menjadi salah satu perangkat lunak paling terkenal di internet. Ia merupakan sistem caching memori terdistribusi yang digunakan Facebook (dan banyak situs lainnya) sebagai lapisan caching antara server web dan server MySQL (karena akses database relatif lambat).

Selama bertahun-tahun, Facebook telah berkali-kali melakukan optimasi pada memcached dan perangkat lunak sekitarnya (seperti mengoptimalkan penumpukan jaringan).

Facebook menjalankan ribuan server memcached dengan puluhan terabyte data cache pada satu titik waktu. Kemungkinan ini merupakan instalasi memcached terbesar di dunia.


HipHop for PHP

PHP, sebagai scripting language, relatif lambat bila dibandingkan dengan kode yang berjalan secara native di server. HipHop mengubah PHP menjadi kode C++ yang kemudian dapat dikompilasi untuk menghasilkan performa yang lebih baik.

Hal ini telah memungkinkan Facebook untuk mengoptimalkan server webnya karena ia sangat bergantung pada PHP untuk melayani konten.

Sebuah tim kecil engineer (awalnya hanya tiga orang) di Facebook menghabiskan 18 bulan mengembangkan HipHop, dan sekarang telah di produksi.

Haystack

Haystack adalah sistem penyimpanan/pencarian foto berkinerja tinggi pada Facebook (Sesungguhnya Haystack adalah sebuah penyimpanan object, sehingga tidak menyimpan foto). Ia mengerjakan kerja berat, ada lebih dari 20 miliar foto yang diunggah di Facebook, dan masing-masing disimpan dalam empat resolusi yang berbeda, menghasilkan lebih dari 80 miliar foto.

Dan hal tersebut bukan hanya tentang kemampuan menangani miliaran foto, kinerja juga sangatlah penting. Seperti yang telah disebutkan sebelumnya, Facebook melayani sekitar 1,2 juta foto per detik, angka yang tidak termasuk gambar/foto dilayani oleh CDN Facebook.

BigPipe

BigPipe adalah sistem layanan halaman web dinamis yang dikembangkan oleh Facebook. Facebook menggunakannya untuk melayani setiap halaman web dalam beberapa bagian (disebut “pagelets” untuk menghasilkan kinerja yang optimal.

Misalnya, jendela chat diambil secara terpisah, feed berita diambil secara terpisah, dan seterusnya. Pagelets ini dapat diambil secara paralel, sehingga kenerja tetap terjaga, dan juga memungkinkan user mengakses situs dengan baik meskipun beberapa bagian dinonaktifkan atau rusak.

Cassandra

Cassandra adalah sistem open source yang berfungsi sebagai menejemen database terdistribusi. Facebook kemudian mengembangkannya dengan NoSQL dan menggunakannya untuk fitur Inbox Search. Selain facebook, sejumlah layanan lain juga menggunakannya, misalnya Digg.

Scribe

Scribe adalah sistem logging fleksibel yang digunakan secara internal oleh Facebook untuk banyak tujuan. Ia dikembangkan untuk menangani logging pada Facebook, dan secara otomatis menangani kategori logging baru yang muncul.

Hadoop dan Hive
Hadoop adalah implementasi map-reduce open source yang memungkinkan untuk melakukan perhitungan data dalam jumlah besar. Facebook menggunakannya untuk analisis data (dan seperti yang kita ketahui, Facebook memiliki data dalam jumlah yang besar).

Hive dikembangkan oleh Facebook, dan dengannya dimungkinkan untuk menggunakan query SQL terhadap Hadoop, sehingga lebih mudah bagi non-programmer untuk menggunakannya.

Baik Hadoop dan Hive adalah open source dan digunakan oleh sejumlah layanan besar, misalnya Yahoo dan Twitter.

Thrift
Facebook menggunakan beberapa bahasa yang berbeda untuk beberapa layanannya. PHP digunakan untuk front-end, Erlang digunakan untuk Chat, Java dan C + + juga digunakan di beberapa tempat (dan mungkin bahasa lainnya juga).

Thrift adalah cross-language framework yang dikembangkan secara internal untuk mengikat semua bahasa yang berbeda tersebut, sehingga memungkinkan komunikasi antar bahasa tersebut. Hal ini memudahkan Facebook untuk pengembangan lintas-bahasanya.

Varnish

Varnish adalah akselerator HTTP yang bertindak sebagai penyeimbang beban dan juga konten cache yang kemudian dapat dilayani secepat kilat. Facebook menggunakan Varnish untuk melayani foto dan gambar profil, penanganan miliaran permintaan setiap hari. Seperti hampir semua yang digunakan Facebook, Varnish adalah open source.

Hal-hal lain yang membantu Facebook berjalan lancar

Kita telah menyebutkan beberapa perangkat lunak yang membangun sistem Facebook dan membantu layanannya dengan benar. Tetapi penanganan sistem sebesar itu merupakan tugas yang kompleks. Berikut adalah hal-hal yang dilakukan Facebook untuk menjaga agar layanannya tetap berjalan lancar.

Gradual releases and dark launches

Facebook memiliki sistem yang mereka sebut Gatekeeper yang memungkinkan mereka menjalankan kode yang berbeda untuk sekumpulan pengguna yang berbeda. Ini memungkinkan Facebook untuk melakukan rilis bertahap fitur-fitus baru, pengujian A/B, mengaktifkan fitur tertentu hanya untuk karyawan Facebook, dll.

Gatekeeper juga memungkinkan Facebook untuk melakukan sesuatu yang disebut “dark launches”, yaitu untuk mengaktifkan unsur-unsur dari fitur tertentu di balik layar sebelum ditayangkan (tanpa sepengetahuan pengguna).

Hal ini berfungsi sebagai tes nyata dan membantu mengekspos kemacetan dan masalah-masalah lain sebelum fitur tersebut secara resmi diluncurkan. Dark launches biasanya dilakukan dua minggu sebelum peluncuran resmi.

Profiling of the live system

Facebook memonitor sistemnya secara cermat dan juga memantau kinerja setiap fungsi PHP dalam live production environment. Profiling PHP ini dilakukan dengan menggunakan sebuah tool open source yang bernama XHProf.

Gradual feature disabling for added performance

Jika Facebook mengalami masalah kinerja, ada sejumlah tuas yang secara bertahap menonaktifkan fitur kurang penting untuk meningkatkan kinerja fitur utama Facebook.

Kalau kita perhatikan, ternyata Facebook banyak menggunaka open source untuk membangun sistemnya. Tidak hanya menggunakan, Facebook juga memberikan kontribusi untuk perangkat lunak open source seperti Linux, memcached, MySQL, Hadoop, dan lainnya.

Lebih daripada itu, Facebook juga menjadikan software-software yang dikembangkan secara internal oleh mereka sebagai open source. Contoh proyek open source yang berasal dari Facebook adalah HipHop, Cassandra, Thrift dan Scribe.

Daftar software open source di mana Facebook terlibat dalam pengembangannya dapat di lihat di halaman Facebook’s Open Source.

Sumber :

http://blog.dikutip.com/2011/06/daftar-software-yang-digunakan-facebook.html

Konsep Utama Yang Digunakan pada Jejaring Sosial Facebook – Facebook Page

Salah satu cara yang dilakukan sebuah produk (barang maupun orang/ artis) ketika memasuki situs jejaring sosial facebook adalah dengan menggunakan facebook page. Facebook page ini memang disediakan untuk mereka yang ingin berinteraksi dengan para orang-orang terdekat.

Bagi pemilik facebook page yang tidak jeli, mereka tidak menghiraukan tentang kinerja page-nya. Akibatnya, page-nya tak ramai lagi, tak ada aktivitas, dan akhirnya ditinggal penggemarnya. Sedangkan, mereka akan menggunakan facebook insights page untuk mengetahui kinerja facebook page-nya.

Facebook insights page adalah sebuah paket fasilitas dari facebook bagi mereka yang mempunyai page. Bentuknya berupa data-data statistik, serta informasi tentang kinerja suatu page.

Dari data dan informasi tersebut, dapat diketahui bagaimana interaksi dalam page, berapa postingan yang telah diunggah, berapa jumlah orang yang menyukai postingan dalam page, ada berapa rata-rata komentar, berapa skor kualitas postingan, berapa kali postingan dilihat, dan hal-hal lain.

Jika mau mencermati data-data tersebut, admin page bisa selalu mengontrol bagaimana kinerja page-nya. Kapan terjadi lonjakan kunjungan, kapan kunjungan menurun, postingan yang bagimana yang disenangi penggemar, apa yang tidak terlalu disenangi, dan lain sebagainya. Dengan begitu, kinerja facebook page akan makin efektif dan optimal.

Sumber : http://rumahdot.com/web-business/melihat-kinerja-facebook-page/