About Me

Foto saya
pkl.kerinci, riau, Indonesia
Tentang Waktu Ambillah waktu untuk berfikir, itu adalah sumber kekuatan. Ambillah waktu untuk bermain, itu adalah rahsia dari masa muda yang abadi. Ambillah waktu untuk berdoa, itu adalah sumber ketenangan. Ambillah waktu untuk belajar, itu adalah sumber kebijaksanaan. Ambillah waktu untuk mencintai dan dicintai, itu adalah hak istimewa yang diberikan Tuhan. Ambillah waktu untuk bersahabat, itu adalah jalan menuju kebahagiaan. Ambillah waktu untuk tertawa, itu adalah musik yang menggetarkan hati. Ambillah waktu untuk memberi, itu adalah membuat hidup terasa bererti. Ambillah waktu untuk bekerja, itu adalah nilai keberhasilan. Ambillah waktu untuk beramal, itu adalah kunci menuju syurga.

Labels

Kamis, 05 Agustus 2010

Objek, Metode Instansi dan Variable Instansi

Pemrograman berorientasi objek bermaksud untuk memecahkan masalah programming mirip dengan cara berfikir manusia dan bagaimana manusia berinteraksi dengan dunia. Kita telah melihat bagaimana masalah programming dipecahkan dengan membaginya menjadi instruksi-instruksi kecil yang dirangkai menjadi suatu kesatuan tugas. Cara ini disebut juga dengan pemrograman berdasarkan prosedur.

Pada pemrograman berorientasi objek, kita membagi masalah pemrograman berdasarkan objek atau "sesuatu" benda. Objek ini diibaratkan seperti makhluk hidup, yaitu memiliki ciri-ciri fisik dan juga perilaku. Dalam pemrograman berorientasi objek, ciri-ciri fisik ini disebut juga sebagai atribut, pada dasarnya berisi informasi tentang objek tersebut. Sedangkan perilaku disebut sebagai metode, yaitu bagaimana suatu objek bertindak atau melakukan sesuatu.

Dengan cara ini diharapkan pemrograman berorientasi objek merupakan pemrograman yang lebih alami dibandingkan dengan pemrograman berorientasi prosedur, karena cara fikir kita sudah terbiasa dengan bagaimana kita berinteraksi dengan dunia.

Sampai tingkat tertentu, PBO hanya merubah cara pandang programmer. Objek dalam kaitannya dengan dasar pemrograman adalah gabungan dari variabel (dalam hal ini atribut) dan subrutin (yaitu metode) yang berinteraksi dengan variabel pada objek.

Banyak bahasa pemrograman lain yang juga mendukung konsep PBO, akan tetapi Java merupakan bahasa yang mendukung penuh PBO, di antaranya karena Java memiliki beberapa fitur penting yang berbeda dari bahasa standar. Untuk menggunakan fitur ini, kita harus mengubah cara pandang kita terlebih dahulu.

Objek terkait erat dengan kelas. Kita telah bahas dan mencoba beberapa contoh kelas pada bab-bab sebelumnya. Seperti kita lihat pula bahwa kelas memiliki variabel dan subrutin.

Jika objek juga memiliki variabel dan subrutin, lalu apa bedanya dengan kelas? Lalu mengapa kita harus memiliki cara pandang berbeda dengan cara kita melihat kelas? Sepertinya apabila kita lihat contoh-contohnya sebelumnya, perbedaannya hanya menghilangkan kata "static" dari deklarasi variabel dan subrutinnya, khan?

Seperti disebutkan sebelumnya bahwa kelas mendeskripsikan suatu objek, atau lebih tepatnya, bagian non "static" mendeskripsikan suatu objek. Mungkin bahasa biologi, kelas adalah species, sedangkan objek merupakan individu. Human sapiens (nama biologi manusia) adalah kelas, sedangkan Anda, saya, ibu, bapak, pak hansip adalah objek. Masing-masing dari kita memiliki "blueprint" atau cetak biru yang sama, tetapi kita memiliki ciri-ciri yang berbeda, rambut, mata, telinga, tinggi badan, berat badan, dan juga perilaku kita saat makan, minum, belajar, dan lain-lain.

Dalam sudut pandang pemrograman, kelas digunakan untuk menciptakan suatu objek. Atau dengan kata lain, kelas adalah pabrik pembuat objek. Bagian non-statik dari suatu kelas adalah bagian yang memuat detail suatu objek, yaitu apa isi variabel dan metodenya. Perbedaan kelas dan objek adalah : Objek diciptakan dan dihancurkan ketika program berjalan, sehingga kita bisa memiliki beberapa objek sekaligus.

Kita lihat contoh sederhana, dimana kelas sederhana digunakan untuk menggabungkan beberapa variabel statik. Misalnya

class DataPenduduk {
static String nama;
static int umur;
}

Pada program yang menggunakan kelas ini, hanya ada satu kopi dari setiap variabel DataPenduduk.nama dan DataPenduduk.umur. Hanya akan ada satu penduduk, karena kita menyimpan data tersebut sebagai data statik, yang artinya hanya satu tempat di memori di mana data tersebut disimpan. Kelas DataPenduduk dan variabel isinya akan ada selama program tersebut berjalan.

Sekarang kita lihat kode berikut yang memiliki variabel non-statik:

class DataPenduduk {
String nama;
int umur;
}

Dalam hal ini tidak ada lagi yang variabel DataPenduduk.nama dan DataPenduduk.umur, karena nama dan umur bukan anggota statik kelas DataPenduduk. Jadi, tidak ada yang bisa kita lakukan dengan kelas ini sama sekali, kecuali membuat objek dari kelas ini.

Setiap objek akan memiliki variable sendiri yang dinamakan "nama" dan "umur". Kita bisa membuat banyak "penduduk" karena kita bisa membuat objek untuk setiap penduduk. Misalnya setiap kali seseorang dilahirkan, kita bisa membuat objek penduduk baru. Atau jika seseorang meninggal dunia, kita bisa hapus objek tersebut.

Suatu sistem yang terdiri dari kumpulan objek digunakan untuk memodelkan apa yang terjadi di alam nyata. Kita tidak bisa membuat beberapa objek dengan menggunakan variabel statik.

Contoh lainnya adalah pada GUI. Bayangkan kita memiliki beberapa tombol, misalnya tombol OK, Cancel dan Apply. Masing-masing tombol ini memiliki kelas yang sama akan tetapi apa yang dilakukan tombol ini berbeda-beda. Teks yang ditampilkan (OK, Cancel atau Apply) merupakan variabel masing-masing objek.

Suatu objek yang diciptakan dari suatu kelas disebut instansi dari kelas tersebut. Variabel yang dimiliki oleh objek disebut variabel instansi. Sedangkan subrutinnya disebut . (Dalam PBO subrutin disebut metode)

Misalnya dalam kelas DataPenduduk di atas, kemudian kita buat suatu objek dari kelas ini, maka objek yang diciptakan disebut instansi dari kelas DataPenduduk, "nama" dan "umur" adalah variabel instansi di dalam objek tersebut.

Penting untuk diingat bahwa kelas suatu objek menentukan tipe data dari variabel instansi, akan tetapi isi datanya sendiri tidak disimpan di dalam kelas, akan tetapi di dalam objek yang diciptakan, sehingga setiap objek akan memiliki data masing-masing.

Begitu juga dengan metode instansi, misalnya pada kelas tombol, kita memiliki metode yang dinamakan klik(). Masing-masing tombol akan melakukan tugas berbeda-beda tergantung dari objeknya.

Seperti kita lihat di sini bahwa bagian statik dan non-statik dari suatu kelas merupakan hal yang sama sekali berbeda. Banyak kelas yang hanya memiliki anggota statik, atau hanya memiliki anggota non-statik. Akan tetapi kita juga bisa mencampur keduanya dalam suatu kelas. Variabel anggota statik suatu kelas juga bisa disebut variabel kelas dan metode anggota statik suatu kelas juga bisa disebut metode kelas, karena mereka adalah milik kelas dan bukan milik objek yang diciptakan dari suatu kelas.

Sekarang kita gunakan contoh yang lebih real. Kita akan buat versi sederhana dari kelas Murid, dimana kita akan menyimpan informasi tentang murid yang terdaftar pada suatu sekolah.

class Murid {
String nama ; // nama murid
double nilai1, nilai2, nilai3; // nilai ulangan murid tersebut
double hitungRataRata() { // hitung rata-rata nilai ulangan
return (nilai1 + nilai2 + nilai3) / 3;
}
}

Kita lihat bahwa semua anggota kelas tersebut bukan anggota statik, artinya kelas ini hanya bisa digunakan untuk membuat objek. Definisi kelas ini artinya bahwa di dalam objek yang akan diciptakan, akan ada variabel instansi yang bernama nama, nilai1, nilai2, dan nilai3, dan juga metode instansi yang bernama hitungRataRata(). Setiap murid memiliki nilai rata-rata yang berbeda-beda. (Makanya ini disebut perilaku suatu objek berbeda-beda).

Dalam Java, kelas merupakan tipe data, yaitu mirip dengan tipe data bawaan seperti int atau boolean. Jadi nama kelas bisa digunakan untuk menentukan tipe suatu variabel dalam deklarasi pernyataan, dalam parameter formal dan juga dalam tipe keluaran suatu fungsi. Misalnya, program mendefinisikan seorang murid dengan pernyataan seperti :

Murid amir;

Akan tetapi membuat variabel seperti di atas TIDAK menciptakan objek. Initinya, ini adalah hal Yang Sangat Amat Penting :

Dalam Java, tidak ada variabel yang bisa menyimpan objek. Variabel hanya bisa menyimpan referensi (alamat di memori) suatu objek. Komputer akan menggunakan referensi ini untuk mencari objek di dalam memori.

Objek diciptakan dengan pernyataan new, yang bertugas menciptakan objek kemudian mengembalikan referensi ke objek yang sudah diciptakan. Misalnya amir adalah variabel dengan tipe Murid seperti dideklarasikan di atas, maka pernyataan berikut :

amir = new Murid();

akan membuat objek yang merupakan instansi dari kelas Murid. Variabel amir akan menyimpan referensi ke objek yang baru saja diciptakan.

Sekarang anggap variabel amir merujuk pada objek yang diciptakan dari kelas Murid. Dalam objek tersebut terdapat variabel nama, nilai1, nilai2, dan nilai3. Variabel instansi ini bisa dipanggil dengan amir.nama, amir.nilai1, amir.nilai2, dan amir.nilai3. (Ingat aturan penulisan nama lengkap, akan tetapi karena kelas ini tidak memiliki anggota statik, dan hanya objek yang diciptakan dari kelas ini memiliki variabel atau metode ini, maka nama lengkapnya diturunkan dari nama objek yang memilikinya).

Misalnya, program berikut :

System.out.println("Hai, " + amir.nama + " . Nilai Anda adalah : ");
System.out.println(amir.nilai1);
System.out.println(amir.nilai2);
System.out.println(amir.nilai3);

Program di atas akan mencetak nama dan nilai-nilai yang disimpan oleh objek amir. Begitu juga kita bisa menghitung rata-rata pada suatu objek dengan menggunakan amir.hitungRataRata(). Sehingga untuk menghitung rata-rata murid tersebut, bisa kita perintahkan dengan:

System.out.println("Nilai rata-rata Anda adalah : " + amir.hitungRataRata());

Lebih umum lagi, kita bisa menggunakan amir.nama seperti layaknya variabel bertipe String, artinya kita bisa menghitung jumlah karakter dengan menggunakan amir.nama.length().

Kita juga bisa membuat variabel seperti amir untuk tidak menunjuk atau memiliki referensi ke obek mana pun. Dalam hal ini kita sebut bahwa objek amir berisi referensi kosong (null reference). Referensi kosong ini ditulis dalam Java dengan ekspresi "null". Dan kita bisa menyimpan nilai "null" pada variabel amir dengan perintah :

amir = null;

Dan kita juga bisa uji apakah amir berisi referensi kosong dengan perintah

if (amir == null) . . .

Jika suatu variabel berisi referensi kosong, maka tentu saja, kita tidak bisa mengambil variabel instansi dan menjalankan metode instansi, karena tidak ada objek yang dirujuk pada variabel tersebut. Misalnya jika variabel amir berisi null, maka kita tidak bisa mengambil variabel amir.nilai1.

Jika program kita mencoba mengakses referensi kosong secara ilegal, maka di tengah-tengah jalannya program, program akan menampilkan pesan kesalahan "null pointer exception".

Mari kita lihat beberapa pernyataan yang bisa digunakan dengan objek :

Murid mrd1, mrd2, mrd3, mrd4;    // mendeklarasikan 4 variabel yang bertipe Murid
mrd1 = new Murid(); // membuat objek baru dari kelas Murid, kemudian menyimpan referensinya pada variabel mrd1
mrd2 = new Murid(); // membuat objek baru dari kelas Murid, kemudian menyimpan referensinya pada variabel mrd2
mrd3 = mrd1; // menkopi „referensi" yang disimpan pada mrd1 ke mrd3
mrd4 = null; // menyimpan referensi kosong ke mrd4

mrd1.nama = "Ahmad Surahmat"; // mengisi nilai variabel instansi
mrd2.nama = "Hamid Samsudin";

Setelah komputer menjalankan program tersebut, maka kira-kira memori komputer akan tampak seperti gambar berikut :

Gambar tersebut menunjukkan variabel dalam kotak-kotak kecil dengan nama variabelnya. Objek ditunjukkan dalam kotak dengan pojok bulat. Ketika suatu variabel berisi referensi ke suatu objek, maka nilainya adalah seperti panah yang menunjuk pada objek tersebut.

Variabel mrd4 bernilai null, sehingga tidak menunjuk ke mana-mana. Panah dari mrd1 dan mrd3 menjunjuk pada objek ang sama. Ini merupakan Hal Yang Sangat Penting :

Jika isi variabel suatu objek diberikan kepada variabel yang lain, maka yang dikopi hanya referensinya saja. Isi objek tidak pernah dikopi.

Ketika pernyataan "mrd3 = mrd1;" dieksekusi, tidak ada objek baru yang dibuat. Akan tetapi mrd3 akan merujuk pada alamat yang sama seperti mrd1. Konsekuensinya mungkin sedikit mengejutkan. Misalnya variabel mrd1.nama dan mrd3.nama menunjuk pada variabel yang persis sama, maka apabila mrd1.nama disi dengan "Juju Juminten", maka mrd3.nama juga berisi "Juju Juminten".

Sekali lagi, variabel tidak berisi objek, akan tetapi berisi referensi ke suatu objek.

Kita bisa menguji beberapa objek dengan operator == dan != untuk menguji kesamaan dan ketidaksamaan. Akan tetapi yang dicek lagi-lagi bukan isi objek, melainkan alamat memori dimana objek tersebut dijadikan referensi. Jika alamat referensi di memori sama, artinya kedua objek tersebut merujuk pada alamat memori yang sama. Ini berarti perubahan yang dilakukan pada variabel yang satu akan ikut mempengaruhi variabel yang lain.

Untuk menguji isinya, maka isinya harus dibandingkan satu per satu, yaitu misalnya dengan "mrd3.nilai1 == mrd1.nilai1 && mrd3.nilai2 == mrd1.nilai2 && mrd3.nilai3 == mrd1.nilai3 && mrd3.nama.equals(mrd1.nama)"

Seperti telah disebutkan sebelumnya bahwa String juga merupakan objek. Sehingga membandingkan String yang satu dengan String yang lain dengan menggunakan tanda == adalah membandingkan apakah alamat memori yang ditunjuk oleh String yang satu sama dengan alamat memori yang ditunjuk oleh String yang lain. Ingat == pada objek bukan membandingkan isi objek, tetapi membandingkan alamat memori yang ditunjuk oleh variabel tersebut. Untuk membandingkan isi String, kita dapat menggunakan String.equals() di mana parameternya adalah objek String yang akan dibandingkan. Metode ini akan membandingkan karakter per karakter dari kedua String.

Misalnya, variabel salam berisi String "Selamat". Untuk menguji apakah variabel salam berisi "Selamat", bisa kita gunakan perintah

salam.equals("Selamat")

Konsekuensi lainnya adalah apabila suatu variabel merujuk pada objek yang dideklarasikan sebagai final. Ini berarti nilai variabel itu tidak bisa berubah setelah diinisialisasi, sedangkan isi variabel itu adalah rujukan ke alamat memori tempat objek berada. Dengan demikian variabel tersebut akan selalu menunjuk pada alamat memori yang sama. Akan tetapi hal ini tidak berlaku untuk objek itu sendiri. Apabila ada variabel lain yang tidak "final" tetapi menunjuk pada alamat memori yang sama, kemudian variabel ini mengubah isi objek tersebut, maka isi objek tersebut bisa berubah.

Kita boleh saja untuk menulis perintah sebagai berikut.

final Murid mrd = new Murid();
murid.nama = "Ahmad Basir";

Perhatikan pada kode di atas bahwa isi objek bisa diubah. Akan tetapi jika kita mencoba menulis seperti ini

Murid mrd99 = new Murid();
mrd = mrd99; // ILEGAL, karena mrd adalah variabel final

* Membuat kode, menguji, dan mencari kesalahan (debugging)

Akan sangat sederhana dan indah apabila program yang kita tulis akan berjalan 100% tanpa kesalahan sama sekali. Kita tinggal memencet tombol run, dan semuanya berjalan sesuai rencana.

Nyatanya tidak demikian.

Coba Anda ganti salah satu dari beberapa contoh yang sudah diberikan dengan mengganti salah satu kurung { menjadi (. Kemudian pada Eclipse, jalankan dengan "Run -> Run". Lihat apa yang terjadi.

Eclipse akan menampilkan pesan kesalahan, itu artinya secara sintaks, atau format penulisan program ada memiliki kesalahan, dan Anda harus memperbaikinya sebelum program bisa dijalankan.

Sintaks adalah salah satu cara menentukan bagaimana komputer harus bekerja. Manusia tidak membutuhkan sintaks untuk berbicara karena manusia bisa menentukan mana subjek, predikat, atau objek dengan mudah, bahkan untuk kalimat yang belum pernah dibaca atau didengar sekalipun.

Bagi komputer, sintaks membantu komputer mengelola logika, mana yang merupakan variabel, mana yang berupa subrutin, mana perulangan, mana percabangan dan lain-lain. Dalam bahasa Java, yang merupakan bahasa dengan sintaks ketat, perbedaan sintaks sedikit saja membuat Java tidak mengerti apa yang dimaksud dalam program.

Bagi beberapa programmer, ketidakluwesan Java mungkin menghambat, tetapi perlu diingat bahwa kesalahan hanya datang dari manusia. Ketidakluwesan Java membantu programmer harus menggunakan logika yang benar, dan tidak boleh salah dalam menggunakan variabel. Variabel yang sudah ditentukan tipenya tidak dapat diubah ditengah jalan, kecuali dengan membuat variabel baru dengan tipe yang berbeda.

Debugging

Ketika program Anda tidak menunjukkan kesalahan sintaks, bukan berarti program Anda bebas dari kesalahan. Program harus diuji apakah ia berjalan sesuai dengan yang diharapkan. Idealya apabila program menerima input yang tidak sesuai dengan yang diharapkan, program akan memberikan pesan kepada penggunanya tentang kesalahan tersebut, bukan tiba-tiba keluar tanpa pesan.

Kita mungkin harus melakukan testing secara lebih perlahan-lahan. Apabila jumlah baris dalam program kita kecil, mungkin kesalahan tersebut dengan mudah akan kita temui. Tetapi apabila program tersebut sangat besar, maka mencari kesalahan yang kelihatannya sederhana tidaklah mudah.

Pencarian kesalahan ini dalam bahasa pemrograman disebut dengan "debugging", yang jika diterjemahkan ke dalam bahasa Indonesia berarti membersihkan kutu, karena kesalahan kecil dianggap sebagai kutu yang mengganggu jalannya program.

Eclipse menyediakan peralatan untuk melakukan debugging, yaitu dengan menekan tombol "Run -> Debug". Dalam Eclipse, debugging yang bisa dilakukan antara lain: membuat breakpoint (tempat berhenti program), mengeksekusi satu demi satu perintah, mengeksekusi satu subrutin, melihat isi variabel saat ini, dan bahkan mengganti variabel pada saat program dijalankan.

Untuk mendemonstrasikan debugging ini, mari kita gunakan program menghitung rata-rata pada bagian terdahulu.

Membuat breakpoint

Kita bisa menjalankan program baris demi baris, tetapi sebelum kita melakukannya, kita harus memberhentikan program tersebut di satu tempat terlebih dahulu. Tempat pemberhentian program sementara ini disebut breakpoint. Untuk mengeset breakpoint, double klik bagian paling kiri dari baris di mana Anda ingin program tersebut berhenti.

Misalnya pada tampilan berikut, program berhenti di baris double x=0;. Perhatikan juga bahwa baris yang diberi breakpoint memiliki tanda bulat di sampingnya.

Untuk menghapus breakpoint, double click lagi tanda bulat di baris yang sudah diberi breakpoint tadi.

Menjalankan program hingga breakpoint

Coba tekan tombol F11 atau "Run -> Debug". Pada saat Anda memulai debugging, Eclipse akan memberikan pertanyaan bahwa perspective (atau tampilan Eclipse) Anda akan diubah ke debugging perspective. Tekan Yes untuk mengubah perspective tersebut.

Berikut ini adalah perspektif dalam mode debugging.

Perhatikan bahwa di samping tanda bulat tadi, ada tanda panah (->) yang menunjukkan saat ini komputer telah melaksanakan program hingga pada baris ini. Di samping kanan adalah daftar variabel yang dideklarasikan dalam program ini. Karena baris yang kita pilih adalah baris pertama setelah deklarasi pada subrutin main, maka hanya satu variabel yang tersedia, yaitu yang berasal dari arg.

Menjalankan program langkah per langkah

Apabila Anda sudah berada dalam mode debugging, Anda bisa melakukan navigasi untuk melakukan eksekusi sesuka Anda. Ada beberapa pilhan yang disediakan oleh Eclipse, semuanya terdapat dalam menu Run yaitu :

  • Resume melanjutkan eksekusi program yang berhenti.
  • Suspend menghentikan sementara program yang sedang jalan.
  • Terminate menghentikan sesi debugging saat ini.
  • Step Into mengeksekusi SATU perintah atau masuk ke dalam subrutin.
  • Step Over mengeksekusi SATU perintah. Jika perintah tersebut merupakan perintah panggilan subrutin, maka subrutin tersebut akan dieksekusi tanpa masuk ke dalam subrutin yang dipanggil tersebut.
  • Step Return mengeksekusi seluruh perintah pada subrutin ini kemudian kembali kepada pemanggilnya.
  • Run to Line menjalankan program dari baris tempat berhentinya program sekarang hingga baris yang Anda tentukan. Atau jika di antaranya terdapat breakpoint lagi, maka program akan berhenti di breakpoint tersebut.
  • Mari kita coba untuk menjalankan progam satu langkah dengan menggunakan "Run -> Step Over" atau tombol F6.

    Berikut ini adalah screen shot setelah program maju satu langkah. Perhatikan bahwa tanda panah maju satu langkah. Dan juga karena instruksi pada baris ini adalah mendeklarasikan variabel x bertipe double, dan kemudian mengisinya dengan 0, variabel ini akan muncul di kanan atas perspektif Debug.

    Lakukan terus Step Over hingga program berakhir, dan Anda akan melihat langkah demi langkah bagaimana program dijalankan secara bertahap. Perlu diingat, pada saat program sampai pada instruksi untuk mengambil input Anda, klik bagian bawah (tab yang bernama Console), dan masukkan angka sebagai input kemudian tekan Enter. Lihat bagaimana variabel di kanan atas berubah sesuai dengan input yang Anda berikan.

    Melihat dan mengubah isi variabel
    Di sini saya jalankan program setiap baris hingga a = a + 1 seperti pada gambar berikut.

    Kemudian, saya ingin memperpanjang perulangan, sehingga bukan melakukan 5 kali perulangan, tetapi 6 kali, yaitu dengan mengubah nilai a menjadi -1. Ini bisa dilakukan yaitu dengan mengklik nilai dari a, yang semula 0, kemudian diganti menjadi -1, seperti pada screen shot berikut.

    Setelah diganti coba jalankan program hingga selesai, misalnya dengan "Run -> Resume". Jangan lupa untuk memasukkan inputnya di bagian Console. Lihat sekarang bilangan ke-0 ditanyakan 2 kali, yang artinya user diperintahkan untuk memasukkan 6 bilangan. Tentunya hasil rata-ratanya salah, karena perhitungan rata-rata dilakukan dengan rumus x = x/5, dalam hal ini seharusnya adalah 6.

    Setelah selesai melakukan debugging, Anda mungkin ingin mengubah perspektif kembali seperti semula. Caranya, di bagian paling kanan (lihat gambar dibawah), klik tanda >> kemudian pilihan akan muncul. Klik perspektif Java untuk mengubahnya menjadi tampilan semula.

JavaFX

Apakah JavaFX
JavaFX adalah Sun Microsystems (Minggu mengikuti notasi) adalah platform baru untuk menyediakan klien kaya. Java adalah dalam nama, Java adalah platform independen. Namun, teknologi yang berbasis Java.
JavaFX pembangunan yang dilakukan di open source. Java.net dalam proyek yang OpenJFX, OpenJFX-proyek Compiler & SceneGraph sedang berkembang dengan penuh semangat dalam proyek. Namun, pada saat ini tidak tampaknya telah menjadi sumber dari semua.
JavaFX, 2007 di San Francisco diumumkan di JavaOne. Awalnya, Ria (Rich Internet Application) digunakan untuk sisi, Ria tidak hanya dapat membuat user interface yang berbeda. Misalnya, dari Jawa swing GUI API ini hanya bagian dari aplikasi yang telah dibuat menggunakan JavaFX membangun, sangat mungkin.
Seperti dijelaskan di atas untuk Java JavaFX dibangun pada teknologi Java yang baik dan bagus, Java API keanekaragaman dapat digunakan seamlessly.
JavaFX daerah dibahas oleh
JavaFX adalah aplikasi PC desktop yang beroperasi tidak hanya mencakup berbagai bidang termasuk ponsel. JavaFX akan berjalan di Java VM. Java VM dan Java SE, Java ME di CLDC (Connected Limited Device Configuration) dan CDC (Connected Device Configuration), Anda dapat berjalan. Karena itu, ponsel dan ponsel cerdas, set-top box dan dapat menjalankan JavaFX. Selain itu, Blu-ray player yang digunakan oleh CDC berdasarkan BD-J, JavaFX akan mencakup area. CLDC tidak mengadopsi Google Android, tetapi 2008 JavaOne JavaFX demo itu berjalan.
Yang mencakup berbagai bidang seperti JavaFX adalah, di setiap daerah, dalam berbagai cara untuk membuat aplikasi. Khusus bahasa script untuk membangun user interface yang dikembangkan dalam JavaFX Script. Menggunakan JavaFX Script, Jawa pernah yang menawarkan "Menulis Sekali, Run Anywhere" dapat mencapai lagi.
JavaFX perkembangan sejarah
JavaFX adalah asli, SeeBeyond dari Oliver Christopher dimulai sebagai proyek pribadi orang. JavaFX tidak pada waktu itu, adalah sebagai berikut Formulir Fungsi (F3) bernama.
Sun pada bulan September 2005, ia memperoleh SeeBeyond, F3 sekarang Sun teknologi aset. Nanti, Oliver berkata, didirikan pada 2006 ke 11 blog, kemudian F3 dilepaskan. Kemudian F3 adalah Java SE dan Java 2D dan ayunan untuk tergantung dan tidak dapat bekerja hanya pada desktop. Namun, aplikasi yang terdapat di dalam ponsel F3 untuk melakukan pekerjaan ini penting. Sehingga strategi diadopsi, JavaSE telah diperoleh perusahaan. Ini hanya sebelum JavaOne 2007, dan 2007 akan menjadi bulan.
Biasanya, ponsel akan bekerja CLDC, JavaSE telepon untuk perusahaan CDC telah dikembangkan. The CDC JSR 209 Advanced Grafis dan Paket Antarmuka Pengguna Opsional untuk J2ME Platform dengan swing dan Java 2D dapat berjalan. Karena itu, CDC dan JSR 209 untuk aplikasi embedded berdasarkan JavaFX didirikan.
Dan, JavaOne 2007 di F3 adalah JavaFX adalah nama dan utama adalah pengumuman.
JavaOne 2007 di F3 dan pada awalnya disusun sesi, namun yang tidak menerima banyak perhatian.
Segera setelah pengumuman di JavaOne, OpenJFX proyek dijalankan di JavaFX SDK telah dilepaskan.
Telah diterbitkan selama ini telah beroperasi di JavaFX juru. Dengan kata lain, interpretasi dari pada skrip startup, Jawa transformasi kelas, adalah alur kerja untuk mengkompilasi dari. Ini adalah kekecewaan yang akan mulai waktu yang lama di sana.
Oleh karena itu, sebelum kompilasi telah dilakukan di setiap boot, sistem yang diadopsi oleh compiler. Untuk mengembangkan kompiler OpenJFX-Compiler proyek diluncurkan pada 2007, juga komponen GUI SceneGraph sedang dikembangkan dalam proyek. Desktop yang JavaFX untuk desktop dari tahun preview SDK dirilis pada Juli. Tentu saja, adalah untuk bekerja pada kompilator.
Dan 4 Desember, JavaFX Desktop 1.0, termasuk 1,0 JavaFX SDK telah dilepaskan. Sebagai tambahan, JavaFX SDK untuk aplikasi yang dibangun dengan JavaFX Mobile juga termasuk dalam versi beta.
2007 versi compiler dan juru versi telah diterbitkan dalam tata bahasa dan API telah berubah, dan banyak daerah lain. Selain itu, beberapa Pratinjau SDK dan API dalam versi resmi sehingga Anda harus berhati-hati untuk mengubah. Perubahan tersebut adalah ringkasannya di Lampiran pada akhir seri ini, silakan lakukan membantu.
Instalasi NetBeans
JavaFX adalah situs Web yang berikut tiga alat dapat didownload sebagai satu paket.
• NetBeans IDE 6,5 untuk JavaFX 1.1 (NetBeans JavaFX yang akan dimasukkan ke dalam pengembangan plug-in)
• Produksi 1,1 JavaFX Suite (Plugin untuk Adobe Illustrator dan Photoshop)
• 1,1 JavaFX SDK (command line tool)

JavaFX halaman download
Di sini, NetBeans IDE 6,5 JavaFX untuk menggunakan 1,0 JavaFX tentang bagaimana mengembangkan aplikasi. NetBeans IDE 6,5 JavaFX adalah untuk JavaFX NetBeans di situs Web atau Web memungkinkan orang untuk men-download dari situs installer. Yang telah terinstal NetBeans dapat diinstal melalui Update Center.
Pengenalan JavaFX Script
Benar-benar menggunakan NetBeans JavaFX Jadi mari kita lihat langkah-langkah pengembangan aplikasi. Proyek pertama Creation Wizard "Aplikasi JavaFX Script", memilih untuk membuat sebuah proyek.

Proyek Creation Wizard

Proyek telah dibuat
Proyek ini adalah untuk membuat sederhana JavaFX Script adalah Main.fx disertakan. Hal ini terutama sulit pada awalnya hanya untuk melihat apa pendapat Anda.
? Lihat Kode JAVA
; paket thecoders_javafxapp3;
; javafx.stage.Stage impor;
; javafx.scene.Scene impor;
; javafx.scene.text.Text impor;
; javafx.scene.text.Font impor;

Tahap (
judul: "Aplikasi judul"
width: 250
height: 80
scene: Scene (
konten: Teks (
{ font: font (
Ukuran: 16
)
, y : 30 x: 10, y: 30
konten: "Aplikasi content"
)
)
)
JavaFX Script adalah jendela sesuai dengan tahap (Panggung) memiliki konsep. Selain itu, dalam satu panggung beberapa adegan (Scene) dapat ditetapkan. Sekitar konsep ini mirip dengan Flex. Selain itu, Java sintaks sangat berbeda, dapat ditetapkan menggunakan notasi dideklarasikan di user interface.
Untuk men-debug aplikasi JavaFX akan menjalankan proyek, klik-kanan "Run Project" atau dipilih, klik tombol pada toolbar. NetBeans proyek memiliki gagasan utama, Anda hanya dapat dijalankan dari toolbar diatur ke proyek utama proyek. Jika Anda ingin mengubah utama dari proyek-proyek kanan klik menu "Atur sebagai Utama Proyek" diatur ke proyek utama proyek jika Anda pilih.
JavaFX harus dibuat segera setelah muncul jendela sebagai berikut: Ketika Anda menjalankan proyek. Output di Web Klik di sini ..

JavaFX proyek dilakukan
JavaFX Script Editor Fitur
NetBeans adalah JavaFX Script Editor fitur seperti input selesai dan memeriksa kesalahan skrip.

JavaFX Script kode selesai
The palet yang terletak di sisi kanan area editor tarik untuk menyisipkan potongan kode ke editor oleh drop. Potongan yang terdaftar di palet adalah hal yang sederhana, JavaFX mengetahui dan akan tersedia dalam petunjuk yang baik.

Palet
JavaFX kegiatan penanganan
Sebagai contoh, dengan acara penanganan dan mari kita membuat aplikasi sederhana JavaFX. Membuat aplikasi yang berikut ini akan mengubah warna dan mouse ke bidang segi empat yang tumpang tindih. Dalam Web Klik di sini ..

Lebih dari mouse

Membuat contoh aplikasi
Source code adalah sebagai berikut. Segi empat persegi panjang adalah bentuk yang menarik, onMouseEntered onMouseExited ketika overlapped dan bentuk mouse, yang menjelaskan proses untuk mengubah warna latar belakang ketika dimatikan.
? Lihat Kode JAVA
; javafx.stage.Stage impor;
; javafx.scene.Scene impor;
; javafx.scene.text.Text impor;
; javafx.scene.text.Font impor;
; impor javafx.scene.shape .*;
; impor javafx.scene.paint .*;
; impor javafx.scene.input .*;
/ **
* @ Author VenuThomas
* /

Tahap (
Judul: "Contoh Program"
scene: Scene (
width: 350
height: 175
konten: [
Rectangle (
x: 50
y: 50
width: 250
height: 55
. BLACK isi: Warna. BLACK
e : MouseEvent ) : Void { var rect : Rectangle = e. node as Rectangle ; onMouseEntered: function (e: MouseEvent): Void (var rect: Rectangle = e. node sebagai Rectangle;
Color . BLUE rect. isi = Warna. BLUE
)
e : MouseEvent ) : Void { var rect : Rectangle = e. node as R ; onMouseExited: function (e: MouseEvent): Void (var rect: Rectangle = e. node sebagai R;
Color . BLACK rect. isi = Warna. BLACK
)

)
Text (
{ font: font (
Ukuran: 20
nama: "Monospaced"
)
, x: 60,
y: 85
. WHITE isi: Warna. WHITE
konten: bind "code.venuthomas.net"
)
]
)
Ada banyak manfaat dan tantangan baru teknologi
Ria platform dan Microsoft Silverlight dan Adobe AIR, yang dengan kuat crammed kompetitif platform, JavaFX dan apakah yang utama adalah tidak jelas. JavaFX adalah berdasarkan platform Java, tapi harus belajar yang baru JavaFX Script harus memiliki alat dan pengembangan masih jauh dan ada yang merugikan dibandingkan dengan teknologi lainnya bersaing.
Tetapi JavaFX kaya di Jawa dapat memanfaatkan aset yang ada, dan kehandalan JavaVM oleh berjalan pada platform Java banyak keuntungan unik. Selain itu, plugin untuk NetBeans JavaFX, tapi ada banyak ruang untuk perbaikan dalam hal fungsi yang buka sumber-alat pembangunan, yang dapat gratis untuk pengembang pembangunan lingkungan dan manfaat mungkin benar.
JavaFX masih 1,1 baru telah dirilis. Saya melihat ke depan tren.
Sun Microsystems Inc

Index in Database (Indeks dalam Basisdata

Indeks atau index dalam database (basisdata) serupa dengan indeks dalam buku. Di suatu buku, satu indeks memungkinkan anda untuk menemukan informasi atau mencari kata kunci tertentu dengan cepat tanpa membaca seluruh buku. Di suatu database, indeks atau index memungkinkan program database menemukan data di suatu tabel tanpa menelusuri seluruh tabel. Satu indeks di suatu buku adalah daftar kata-kata dengan angka-angka halaman berisi masing-masing kata. Satu indeks di suatu database adalah daftar data tertentu dari tabel dengan lokasi penyimpanan baris dalam tabel berisi masing-masing nilai. Indeks dapat diciptakan dimanapun suatu kolom atau suatu kombinasi dari kolom di suatu tabel dan diterapkan dalam wujud B-trees.
Satu indeks berisi masukan dengan satu atau lebih kolom (kunci pencarian) dari masing-masing baris di suatu tabel. B-tree disortir di kunci pencarian, dan dapat dicari secara efisien di setiap subset yang terdepan dari kunci pencarian. Sebagai contoh, satu indeks di kolom A, B, C dapat dicari secara efisien di A, A, B, dan A, B, C.Sebagian besar buku berisi satu indeks dari kata-kata umum, nama, tempat, dan seterusnya.
Database berisi indeks yang individu untuk jenis atau kolom yang terpilih dari data: ini serupa dengan sebuah buku yang berisi indeks untuk nama dari orang dan indeks lain untuk tempat. Ketika anda membuat suatu database dan menadaptkan kinerja, anda perlu membuat indeks untuk kolom yang digunakan di dalam query untuk menemukan dataDalam contoh database, tabel karyawan mempunyai satu indeks di kolom emp_id.
Ilustrasi yang berikut menunjukkan bagaimana indeks menyimpan masing-masing nilai emp_id dan poin-poin ke baris Ketika aplikasi database melaksanakan suatu statemen untuk menemukan data dalam tabel karyawan berdasar suatu nilai emp_id yang ditetapkan, mengenali indeks untuk kolom emp_id dan menggunakan indeks itu untuk menemukan data. Jika indeks tidak ada, melaksanakan suatu permulaan scan tabel yang penuh pada awal tabel dan melangkah melalui masing-masing baris, mencari-cari nilai emp_id yang ditetapkan.
Aplikasi database secara otomatis membuat indeks untuk jenis tertentu dari batasan (sebagai contoh, KUNCI UTAMA dan batasan UNIQUE ). Anda dapat lebih lanjut menyesuaikan definisi-definisi tabel dengan menciptakan indeks yang tidak terikat pada batasan. Manfaat kinerja dari indeks, bagaimanapun, memerlukan biaya. Tabel dengan indeks memerlukan lebih banyak ruang(space penyimpanan dalam database. Juga, perintah agar sisipan, pembaruan, atau penghapusan data mengambil lebih panjang dan memerlukan lebih banyak waktu proses untuk memelihara indeks.
Ketika anda mendisain dan membuat indeks, anda perlu memastikan bahwa kinerja bermanfaat bagi berberapa lebih (dibanding) biaya tambahan dalam ruang (space penyimpanan dan memproses sumber daya).

Cara Koneksi Telkomnet Inst

Berhubung 2 minggu lalu saya diberi hadiah notebook (hehehe..promosi), akhirnya hampir tiap malem saya utak – atik tu notebook. Dan sampe pada suatu saat saya iseng ingin mencoba nyambung internet dengan telkomnet instan (walaupun rumah saya berada di jangkauan hotspot, jadi cuma iseng aja). Ternyata lumayan juga asiknya. Berikut adalah cara2 untuk bisa menikmati layanan telkomnet instan :
  1. Install driver modem dulu
  2. Lalu colokin kabel telponnya ke laptop atau pc
  3. Klik “Start” dan masuk ke “Control Panel”
  4. Klik ikon “Internet Options”, akan muncul kotak dialog “Internet Properties”
  5. klik “Tab Connections”
  6. Klik “Setup”, akan muncul kotak dialog “New Connection Wizard”
  7. klik “Next”
  8. Pilih “Connect to the Internet” dan klik “Next”
  9. Pilih “Set up my connection manually” dan klik “Next”
  10. Pilih “Connect using a dial-up modem” dan klik “Next”
  11. Ketik di ISP Name “TelkomNet Instan”, klik “Next”
  12. Isikan 080989999 di kotak “Phone number”, klik “Next”
  13. Isikan:
    • User id : telkomnet@instan
    • Password : telkom
  14. Klik “Next”, Windows akan menyelesaikan koneksi ke TelkomNet dan akan muncul kotak dialog “Completing the New Connection Wizard”
  15. Centang “Add a shortcut to this connection to my dekstop” agar muncul ikon koneksi di dekstop. Setelah selesai klik “Finish”.
  16. Terus coba dial deh.. dan nikmati layanannya..

Awal Sejarah Internet di Indonesia

Awal Sejarah Internet di Indonesia



Sumber Gambar : otakku.com

Sumber Gambar : otakku.com

RMS Ibrahim, Suryono Adisoemarta, Muhammad Ihsan, Robby Soebiakto, Putu, Firman Siregar, Adi Indrayanto merupakan beberapa nama-nama legendaris di awal pembangunan Internet Indonesia yang mungkin kurang banyak dikenal oleh khalayak Internet Indonesia di tahun 2008 ini. Masing-masing personal telah mengkontribusikan keahlian dan dedikasinya dalam membangun cuplikan-cuplikan sejarah jaringan komputer di Indonesia. Pada waktu itu di awal tahun 1990-an jaringan Internet di Indonesia lebih dikenal sebagai paguyuban network. Semangat kerjasama, kekeluargaan & gotong royong sangat hangat dan terasa diantara para pelakunya. Agak berbeda dengan suasana Internet Indonesia hari ini yang terasa lebih komersial dan individual di sebagian aktifitasnya terutama yang melibatkan perdagangan Internet.

Tulisan-tulisan tentang keberadaan jaringan Internet di Indonesia dapat di lihat di beberapa artikel di media cetak seperti KOMPAS berjudul “jaringan komputer biaya murah menggunakan radio” di akhir tahun 1990 / awal 1991-an. Juga beberapa artikel pendek di Majalah Elektron Himpunan Mahsiswa Elektro ITB di tahun 1989-an.

Inspirasi tulisan-tulisan awal Internet Indonesia datangnya dari kegiatannya di amatir radio khususnya rekan-rekan di Amatir Radio Club (ARC) ITB di tahun 1986-an. Bermodal pesawat Rig HF SSB Kenwood TS430 milik Harya Sudirapratama YC1HCE dengan komputer Apple II milik YC1DAV sekitar belasan anak muda ITB seperti Harya Sudirapratama YC1HCE, J. Tjandra Pramudito YB3NR (sekarang dosen di UNPAR), Suryono Adisoemarta N5SNN (sekarang dosen di Texas,US) bersama Onno W. Purbo YC1DAV mereka berguru pada para senior amatir radio seperti Robby Soebiakto YB1BG, Achmad Zaini YB1HR, Yos YB2SV, YB0TD di band 40m. Mas Robby Soebiakto YB1BG merupakan suhu diantara para amatir radio di Indonesia khususnya untuk komunikasi data packet radio yang kemudian di dorong ke arah TCP/IP, teknologi packet radio TCP/IP yang kemudian di adopsi oleh rekan-rekan BPPT, LAPAN, UI, & ITB yang kemudian menjadi tumpuan PaguyubanNet di tahun 1992-1994-an. Mas Robby Soebiakto YB1BG adalah koordinator IP pertama dari AMPR-net (Amatir Packet Radio Network) yang di Internet dikenal dengan domain AMPR.ORG dan IP 44.132. Saat ini AMPR-net Indonesia di koordinir oleh penulis YC1DAV. Koordinasi dan aktifitas-nya mengharuskan seseorang untuk menjadi anggota ORARI dan di koordinasi melalui mailing list YBNET-L@ITB.ac.id.

Di tahun 1986-1987-an awal perkembangan jaringan paket radio di Indonesia Mas Robby YB1BG juga merupakan pionir dikalangan teman-teman amatir radio Indonesia yang mengkaitkan jaringan amatir Bulletin Board System (BBS) yang merupakan jaringan e-mail store and forward yang mengkaitkan banyak “server” BBS amatir radio seluruh dunia agar e-mail dapat berjalan dengan lancar. Di awal tahun 1990-an komunikasi antara Onno W. Purbo yang waktu itu berada di Canada dengan panggilan YC1DAV/VE3 rekan-rekan amatir radio di Indonesia dilakukan melalui jaringan amatir radio ini. Dengan peralatan PC/XT dan walkie talkie 2 meteran, komunikasi antara Indonesia-Canada terus dilakukan dengan lancar melalui jaringan amatir radio. Mas Robby YB1BG ternyata berhasil membangun gateway amatir satelit di rumahnya di Cinere melalui satelit-satelit OSCAR milik amatir radio kemudian melakukan komunikasi lebih lanjut yang lebih cepat antara Indonesia-Canada. Pengetahuan secara perlahan di transfer melalui jaringan amatir radio ini.

RMS Ibrahim (biasa dipanggil Ibam) motor dibalik operasional-nya Internet di UI. Ibam pernah menjadi operator yang menjalankan gateway ke Internet dari UI yang merupakan bagian dari jaringan universitas di Indonesia UNINET. Protokol UUCP yang lebih sederhana daripada TCP/IP digunakan terutama digunakan untuk mentransfer e-mail & newsgroup. RMS Ibrahim juga merupakan pemegang pertama Country Code Top Level Domain (ccTLD) yang dikemudian hari dikenal sebagai IDNIC (http://www.idnic.net.id).

Muhammad Ihsan adalah staff peneliti di LAPAN Ranca Bungur tidak jauh dari Bogor yang di awal tahun 1990-an di dukung oleh kepala-nya Bu Adrianti dalam kerjasama dengan DLR (NASA-nya Jerman) mencoba mengembangkan jaringan komputer menggunakan teknologi packet radio pada band 70cm & 2m. Jaringan tersebut dikenal sebagai JASIPAKTA dengan dukungan DLR Jerman. Protokol TCP/IP di operasikan di atas protokol AX.25 pada infrastruktur packet radio. Pak Ihsan ini yang mengoperasikan relay penghubung antara ITB di Bandung dengan gateway Internet yang ada di BPPT.

Pak Firman Siregar merupakan salah seorang motor di BPPT yang mengoperasikan gateway packet radio bekerja pada band 70cm. PC 386 sederhana menjalankan program NOS di atas sistem operasi DOS digunakan sebagai gateway packet radio TCP/IP. IPTEKNET masih berada di tahapan sangat awal perkembangannya saluran komunikasi ke internet masih menggunakan X.25 melalui jaringan SKDP terkait pada gateway di DLR Jerman.

Putu sebuah nama yang melekat dengan perkembangan PUSDATA DEPRIN waktu masa kepemimpinan Pak Tungki Ariwibowo menjalankan BBS pusdata.dprin.go.id yang hingga saat ini masih beroperasi. Di masa awal perkembangannya BBS Pak Putu sangat berjasa dalam membangun pengguna e-mail khususnya di jakarta Pak Putu sangat beruntung mempunyai menteri Pak Tungki yang “maniac” IT dan yang mengesankan dari Pak Tungki beliau akan menjawab e-mail sendiri. Barangkali Pak Tungki adalah menteri pertama di Indonesia yang menjawab e-mail sendiri.

Mas Suryono Adisoemarta N5SNN di akhir 1992 kembali ke Indonesia, kesempatan tersebut tidak dilewatkan oleh anggota Amatir Radio Club ARC ITB seperti Basuki Suhardiman (sekarang di AI3 ITB), Aulia K. Arief (sekarang di WAHID), Arman Hazairin (sekarang di Telkomsel) di dukung oleh Adi Indrayanto untuk mencoba mengembangkan gateway packet radio di ITB. Berawal semangat & bermodalkan PC 286 bekas barangkali ITB merupakan lembaga yang paling miskin yang nekad untuk berkiprah di jaringan PaguyubanNet. Rekan lainnya seperti UI, BPPT, LAPAN, PUSDATA DEPRIN merupakan lembaga yang lebih dahulu terkait ke jaringan di tahun 1990-an mereka mempunyai fasilitas yang jauh lebih baik daripada ITB. Di ITB modem packet radio berupa Terminal Node Controller TNC merupakan peralatan pinjaman dari Muhammad Ihsan dari LAPAN.

Berawal dari teknologi packet radio 1200bps di atas, ITB kemudian berkembang di tahun 1995-an memperoleh sambungan leased line 14.4Kbps ke RISTI Telkom sebagai bagian dari IPTEKNET akses Internet tetap diberikan secara cuma-cuma kepada rekan-rekan yang lain. September 1996 merupakan tahun peralihan bagi ITB, karena keterkaitan ITB dengan jaringan penelitian Asia Internet Interconnection Initiatives (AI3) sehingga memperoleh bandwidth 1.5Mbps ke Jepang yang terus ditambah dengan sambungan ke TelkomNet & IIX sebesar 2Mbps. ITB akhirnya menjadi salah satu bagian terpenting dalam jaringan pendidikan di Indonesia yang menamakan dirinya AI3 Indonesia yang mengkaitkan 25+ lembaga pendidikan di Indonesia.

Jaringan pendidikan ini bukan hanya monopoly ITB saja, jaringan pendidikan lain yang lebih besar lagi adalah jaringan SMK yang dibawahi DIKMENJUR (dikmenjur@egroups.com) yang saat ini telah mengkaitkan 270+ SMK di seluruh Indonesia. Saat ini ada 4000 SMK yang mempunyai potensi yang sangat besar jika berhasil dikaitkan. Belum lagi kalau bisa mengkaitkan 10.000 SMU ke Internet pasti tidak kalah serunya dengan mengkaitkan 1300 PTN / PTS (saat ini baru ~200 PTS/PTN yang terkait) di seluruh Indonesia ke Internet.

Di tahun 1989-1990-an, teman-teman mahasiswa Indonesia di luar negeri mulai membangun tempat diskusi di Internet, salah satu tempat diskusi Indonesia di Internet yang pertama berada di indonesians@janus.berkeley.edu. Berawal dari mailing list pertama di Janus diskusi-diskusi antar teman-teman mahasiswa Indonesia diluar negeri pemikiran alternatif berserta kesadaran masyarakat ditumbuhkan. Pola mailing list ini ternyata terus berkembang dari sebuah mailing list legendaris di janus, akhirnya menjadi sangat banyak sekali mailing list Indonesia terutama di host oleh server di ITB & egroups.com. Mailing list ini akhirnya menjadi salah satu sarana yang sangat strategis dalam pembangunan komunitas di Internet Indonesia.

Di tahun 1994-an mulai beroperasi IndoNet yang dipimpin oleh Sanjaya. IndoNet merupakan ISP komersial pertama Indonesia pada waktu itu pihak POSTEL belum mengetahui tentang celah-celah bisnis Internet & masih sedikit sekali pengguna Internet di Indonesia. Sambungan awal ke Internet dilakukan menggunakan dial-up oleh IndoNet, sebuah langkah yang cukup nekad barangkali. Lokasi IndoNet masih di daerah Rawamangun di kompleks dosen UI kebetulan ayah Sanjaya adalah dosen UI. Seperti kita ketahui bahwa perkembangan usaha bisnis Internet di Indonesia semakin marak dengan 60-an ISP yang memperoleh lisensi dari pemerintah. Asosiasi ISP (APJII) terbentuk di motori oleh Sanjaya cs di tahun 1998-an. Effisiensi sambungan antar ISP terus dilakukan dengan membangun beberapa Internet Exchange (IX) di Indosat, Telkom, APJII (IIX) & beberapa ISP lainnya yang saling exchange. APJII bahkan mulai melakukan manouver untuk memperbesar pangsa pasar Internet di Indonesia dengan melakukan program SMU2000 yang kemudian berkembang menjadi Sekolah2000.

Perkembangan terakhir yang perlu diperhitungkan adalah trend ke arah e-commerce dan warung internet yang satu & lainnya saling menunjang membuahkan masyarakat Indonesia yang lebih solid di dunia informasi. Rekan-rekan e-commerce membangun komunitasnya di beberapa mailing list utama seperti warta-e-commerce@egroups.com, mastel-e-commerce@egroups.com, e-commerce@itb.ac.id & i2bc@egroups.com. Sedangkan rekan-rekan penyelenggara WARNET banyak berkumpul di asosiasi-warnet@egroups.com, pada tanggal 25 Mei 2000 merupakan hari bersejarah bagi rekan-rekan WARNET – karena telah lahir asosiasi warnet yang ada secara fisik dalam pertemuan di kantor DIKMENJUR. Ketua Asosiasi Warnet adalah rekan Rudy Rusdiah, Bendahara rekan Adlinsyah dan Sekretaris Abdullah Koro. WARNET di Indonesia akan disediakan domain war.net.id.