Minggu, 03 April 2011

sekilas-tentang-java

Java merupakan suatu teknologi perangkat lunak yang di dalamnya mencakup bahasa pemrograman. Selain itu Java juga merupakan suatu platform yang memiliki virtual machine dan library yang diperlukan untuk menulis dan menjalankan suatu program.

Java sendiri pada awalnya dikembangkan pada lingkungan komputer oleh Sun Microsystem Inc. dengan tujuan untuk menghasilkan suatu bahasa komputer sederhana tanpa harus terikat pada arsitektur tertentu. Maka tak heran jika dalam perkembangannya Java dapat dijalankan pada berbagai platform sistem operasi seperti Linux, Windows maupun Unix.

Karena keunikan dan kehandalannya, Java pun semakin banyak dikenal. Pada tahun 1995 Sun meluncurkan sebuah browser berbasis Java dengan julukan Hot Java, kemudian diikuti Netscape yang memutuskan untuk membuat browser dengan dilengkapi bahasa Java di dalamnya. Setelahnya ikut bergabung pula berbagai pengembang ternama diantaranya IBM dan Microsoft.

Kemudian pada tahun berikutnya, Sun Microsystem Inc. merilis Java Software Development Kit (JDK) pertamanya, JDK 1.1. Dan terus berkembang dari pemrograman applet yang berjalan di browser menjadi pemrograman kelas dunia yang banyak digunakan untuk pengembangan aneka ragam aplikasi. Tidak hanya pada komputer, Java juga dapat berjalan pada bermacam-macam perangkat, mulai telepon genggam sampai aplikasi berskala enterprise pada komputer server.

Lingkungan Java
Seperti disebutkan di atas, Java merupakan bahasa pemrograman yang dapat diimplementasikan pada berbagai lingkungan, seperti internet, telepon genggam maupun komputer. Bahasa pemrograman Java secara garis besar dikelompokan menjadi tiga edisi, yaitu, Java 2 Standar Edition (J2SE), Java 2 Enterprise Edition (J2EE) dan Java 2 Micro Edition (J2ME).

J2SE digunakan untuk mengembangkan aplikasi-aplikasi desktop dan applet, J2EE dipergunakan untuk mengembangkan aplikasi-aplikasi berbasis client/server berskala enterprise, sedangkan J2ME diaplikasikan pada berbagai perangkat kecil dengan jumlah memory, kapasitas penyimpan dan user interface terbatas, seperti ponsel dan PDA.

J2ME
Seperti paket-paket Java lainnya yang menggunakan Java Virtual Machine (JVM) sebagai interpreter, dalam J2ME digunakan pula virtual machine yang disebut K Virtual Machine (KVM) yang memiliki keunggulan tersendiri dimana hanya memerlukan memori kecil. Huruf K pada K Virtual Machine sendiri merupakan singkatan dari kilobyte, untuk menggambarkan betapa virtual machine ini bekerja pada memory yang demikian kecilnya.

KVM memungkinkan para software developer independen untuk bermain-main pada berbagai platform handset menjadi terbuka tanpa perlu melakukan perubahan berarti dalam hal programnya. Dengan J2ME yang berbasis C++, sebuah aplikasi akan memiliki portabilitas untuk dijalankan pada berbagai jenis telepon genggam.

MIDIlet
MIDIlet adalah aplikasi yang dibuat menggunakan J2ME dengan profile Mobile Information Device Profile (MIDP) yang dikhususkan untuk digunakan pada handset dengan kemampuan prosessor, memori dan layar yang terbatas, misalnya ponsel, pager, PDA, Pocket PC dan sebagainya.

Hingga saat ini ada dua versi platform Java J2ME yang umum digunakan pada telepon genggam yaitu MIDP 1.0 yang masih memiliki spesifikasi sederhana dan menyediakan fungsi dasar untuk aplikasi mobile, diantaranya basic user interface dan kemanan jaringan. Satu lagi MIDP 2.0, yang sudah ditambahkan berbagai fasilitas seperti game, multimedia, dukungan berbagai jenis konektivitas, maupun OTA.


Solusi dan Pengembangan Java
Meski aplikasi Java telah banyak digunakan pada telepon nirkabel, namun sudah menjadi hal umum bagi pengembang, bahwa Java tidak sepenuhnya dapat berjalan pada semua tipe ponsel meski pada telepon genggam tersebut sudah ditanamkan suatu platform Java.

Penyebabnya, yaitu implementasi Java oleh masing-masing vendor telepon seluler tidaklah sama terutama pada fragmentasi API (Application Programming Interface). Maka untuk mengatasi perbedaan tersebut berbagai perusahaan teknologi di dunia seperti Nokia, Motorola, NTT DoCoMo, Sprint dan lainnya membentuk suatu kolaborasi guna menyusun spesifikasi Java yang lebih jelas bagi vendor telepon genggam, operator seluler, serta pengembang aplikasi. Spesifikasi tersebut dinamakan Java Technology for Wireless Industry (JTWI).


Tujuan JTWI sendiri adalah untuk memperbaiki kompatibilitas, interoperabilitas, dan kelangkapan implementasi Java pada telepon genggam. Spesifikasi JTWI sendiri yaitu untuk meminimasi fragmentasi API serta memaksimalkan fungsionalitas pada telepon genggam sehingga dapat memperluas penerapan aplikasi Java.


JTWI mendefinisikan tiga kategori spesifikasi yaitu mandatory, conditional required, dan minimum configuration. Spesifikasi mandatory yaitu MIDP 2.0, conditional required adalah MMAPI 1.1, dan minimum configuration adalah CLDC 1.0.


CLDC (Connected Limited Device Configuration) adalah spesifikasi yang ditujukan pada perangkat elektronik yang memiliki sumber daya terbatas yang dikembangkan untuk keperluan teknologi wireless Java, dimana memungkinkan pengguna ponsel untuk menginstallkan aplikasi Java (MIDIlet) ke telepon genggam mereka. MIDP (Mobile Information Device Profile) merupakan suatu spesifikasi untuk memperkaya fitur pada CLDC dengan menyediakan tambahan kelas yang lebih spesifik pada tipe perangkat.


Sedangkan MMAPI (Mobile Media API) merupakan suatu spesifikasi yang ditujukan untuk menangani kemampuan multimedia pada telepon bergerak yang berbasis Java. Pada JTWI dikenal juga istilah WMA (Wireless Messaging API) yaitu spesifikasi yang ditujukan untuk menangani pengiriman dan penerimaan pesan singkat pada platform Java.

TENTANG JAVA

JAVATM yang dikembangkan di Sun Microsystem berawal dari gagasan untuk menciptakan suatu bahasa, perangkat lunak yang bebas dan tidak bergantung pada platform atau sistem operasi tertentu (tidak hanya bekerja pada sistem operasi tertentu). Tujuan awalnya adalah dengan menggunakan bahasa yang sudah ada, yaitu C++ namun seiring dengan kemajuan yang dicapai, para pencipta JAVA menyadari bahwa akan lebih baik bila mereka menemukan (menciptakan) bahasa mereka sendiri daripada mengembangkan C++.

Tidak seperti bahasa-bahasa compiler tradisional, yang mengubah kode (source code) menjadi perintah-perintah tingkat mesin (bahasa mesin), kompiler Java mengubah (menterjemahkan) kode-kode sumber Java menjadi perintah-perintah yang akan di- interpretasi (dibaca) oleh runtime Mesin Virtual Java (Java Virtual Machine).
Java dapat digunakan untuk membuat dua jenis program, yaitu applet dan aplikasi mandiri (stand alone application). Secara sederhana, sebuah applet adalah bagian dari halaman web entah itu berupa animasi, gambar sederhana (image) atau hanya sebuah garis atau sekumpulan teks.
Para pencipta Java di Sun Microsystem mendefinisikan Java sebagai bahasa yang sederhana, berorientasi object, terdistribusi, terinterpretasi, kokoh, aman, netral arsitektur, akrab, berkinerja tinggi, multi jalinan (multithreaded) dan dinamis.

1. Sederhana
Inti dari ke-"sederhana"-an Java terutama terletak pada kemiripannya dengan C dan C++. Karena programmer-programmer masa kini khususnya yang tertarik menggunakan Java telah memiliki pengalaman setidaknya dengan C dan mungkin dengan C++, Java tentu saja terlihat sederhana dan akrab bagi programmer- programmer ini.
Java menyederhanakan bahasa C++ dengan menambahkan fitur-fitur pendukung yang belum terdapat dalam C++ dan membuang beberapa fitur yang membuat C++ menjadi bahasa yang rumit dan sulit untuk dikuasai. Java sederhana karena hanya ia memiliki tiga tipe angka data primitif, tipe Boolean dan array. Selebihnya, semua dalam Java adalah sebuah kelas. Salah satu fitur penting yang ditawarkan Java (yang belum ada pada C++) adalah pengumpulan sampah (garbage collection). Dengan mekanisme ini, user tidak perlu membebaskan memori yang dialokasikan, karena semua dilakukan oleh Mesin Virtual Java. Java juga mendukung penulisan program multi jalinan, yaitu suatu program yang dapat melakukan lebih dari satu pekerjaan dalam waktu yang bersamaan.

2. Berorientasi Obyek
Dalam pendekatannya pada orientasi-obyek, Java lebih merujuk pada SmallTalk daripada C++. Selain tipe data primitive-nya, semua yang ada pada Java adalah kelas. Sebaliknya dalam C++ semuanya serba campur-aduk, dimana programmer dapat secara bebas (benar-benar bebas)dalam mencampur kode-kode orientasi obyek (kelas) (kelas) dengan kode prosedural (fungsi). Dalam Java semua ini tidak diperbolehkan. Tidak ada fungsi global dalam Java, semua fungsi harus dipanggil melalui sebuah obyek.
Dukungan Java terhadap orientasi-obyek tidak termasuk penurunan (inheritansi) ganda. Para perancang Java merasa kerumitan yang dimunculkan inheritansi ganda tidak sebanding dengan keuntungan yang dihasilkan. Sebagai ganti dari inheritansi ganda, Java kemudian menyediakan antarmuka (interface).

3. Terdistribusi
Java memudahkan pembuatan aplikasi terdistribusi dengan sekumpulan kelas yang digunakan pada aplikasi-aplikasi jaringan. Dengan menggunakan kelas URL (Uniform Resource Locator) Java, suatu aplikasi dapat dengan mudah mengakses server-jauh (remote server).

4. Terinterpretasi
Karena Java adalah bahasa interpretasi, sekali Interpreter Java terpasang, terinstal pada suatu mesin tertentu, mesin tersebut dapat secara langsung menjalankan aplikasi-aplikasi Java (tidak peduli platform atau sistem operasi apa yang terpasang pada mesin tersebut). Ketika menggunakan bahasa interpreter, programmer juga terbebas dari kekhawatiran berkaitan dengan ketergantungan antar modul.
Keuntungan lain adalah waktu yang digunakan untuk lingkaran edit-compile-link-test dapat dipotong. Tanpa adanya langkah kompile dan link, maka bekerja dalam lingkungan interpreter lebih sederhana dan lebih hemat waktu karena hanya melalui lingkaran edit-test.

5. Kokoh
Membuat suatu program yang terdistribusi, mendukung multi-jalinan yang dapat dijalankan pada berbagai sistem operasi dan berbagai prosesor bukanlah suatu pekerjaan yang mudah. Berdasarkan pemikiran ini, maka Java diciptakan sebagai bahasa yang sangat ketat dalam penulisan (strongly typed language). Dalam Java management memori telah disederhanakan dengan dua cara. Pertama Java tidak mendukung manipulasi pointer atau aritmatik secara langsung, sehingga mustahil bagi program Java untuk menumpuk (meng-overwrite) memori atau mengkorupsi data. Kedua Java menggunakan mekanisme pengumpulan sampah saat program berjalan (runtime) daripada pembebasan memori secara eksplisit.

6. Aman
Karena Java tidak menggunakan pointer yang secara langsung merujuk pada lokasi memori seperti yang terdapat pada C atau C++, Java memiliki kendali penuh terhadap semua kode yang ada pada lingkungan Java. Sebelumnya telah diantisipasi bahwa aplikasi-aplikasi Java akan dijalankan di internet dan akan secara dinamis dapat dijalankan bersama atau mengeksekusi program lain di tempat yang berlainan melalui internet, maka para pengembang Java berpendapat tentang perlu adanya kompiler Java yang akan menghasilkan kode bite Java yang akan melewati standar keamanan runtime Java. Gagasan ini memunculkan ide tentang pemeriksa kode byte yang akan memeriksa semua kode yang masuk dan memastikan bahwa semua kode tersebut telah mematuhi serangkaian aturan yang telah ditentukan dan aman untuk dijalankan.

7. Arsitektur Netral
Sebelum dijalankan, program Java harus dikompile terlebih dulu menggunakan kompiler Java. Proses kompilasi ini kemudian akan menghasilkan suatu kode bite tertentu yang serupa dengan file kode (bahasa) mesin yang dapat dieksekusi pada mesin apapun yang memiliki interpreter Java.
Jadi, Java dapat dijalankan dalam mesin (komputer) dengan system operasi apapun selama ia memiliki interpreter Java, dan dengan demikian maka tuntutan arsitektur netral pada Java dapat dipenuhi.

8. Portable
Salah satu tujuan penting pembuatan Java adalah kode-kode Java haruslah Portable, sehingga ketika arsitektur baru (baik itu perangkat keras ataupun sistem operasi atau keduanya) berkembang, lingkungan Java dapat diterapkan dan dipindahkan pada mereka.
Pada Java, semua tipe data primitif (integer, long, float, double dan sebagainya) memiliki ukuran tertentu, tidak bergantung pada mesin atau sistem operasi dimana program Java dijalankan. Hal ini sangat berlawanan dengan bahasa seperti C atau C++ yang menyerahkan ukuran tipe data primitif pada kompiler dan mesin (serta sistem operasi). Java portable karena kompiler Java sendiri ditulis menggunakan Java.

9. Berkinerja Tinggi
Sebuah aplikasi Java tidak akan menyamai kinerja aplikasi bahasa terkompilasi penuh seperti C atau C++. Namun demikian untuk sebagian besar aplikasi termasuk pengolahan grafis, satu dari berbagai macam hal yang dapat ditemui secara umum pada World Wide Web, kinerja Java lebih dari cukup.
Banyak pengadopsi awal C++ khawatir aanya kemungkinan penurunan kinerja saat mereka mengubah program mereka dari C ke C++. Namun para pengadopsi (pengguna) awal C++ menemukan walaupun program dalam C akan melebihi suatu program C++ dalam banyak kasus, waktu untuk pengembangan lebih lanjut dan biaya tidak sesuai dengan kinerja yang dihasilkan.
Walupun aplikasi Java mungkin tidak dapat menyamai aplikasi C++, namun secara normal aplikasi Java akan cukup cepat, dan Java memungkinkan user melakukan banyak hal yang tidak dapat dilakukan dengan C++.

10. Multi-Jalinan
Menulis suatu bahasa yang hanya bisa melakukan satu perkerjaan adalah hal yang biasa dalam bahasa pemrograman. Program-program Java dapat terdiri atas beberapa jalinan yang memungkinkan program untuk melakukan beberapa pekerjaan sekaligus. Suatu contoh, sebuah program multi jalinan dapat me-render sebuah image di layar pada satu jalinan disamping menerima masukan dari keyboard user pada jalinan utama-nya.
Dukungan terhadap beberapa jalinan tersinkronisasi sekaligus telah terbangun (secara internal) pada Java dan lingkungan runtime-nya. Jalinan tersinkronisasi sangat berguna dalam membuat aplikasi yang terdistribusi dan berbasis jaringan. Aplikasi semacam ini dapat berkomunikasi dengan server jauh pada satu jalinan dan berinteraksi dengan user pada jalinan yang lain.

11. Dinamis
Karena terinterpretasi, Java adalah bahasa yang benar-benar dinamis. Saat runtime, lingkungan Java dapat mengembangkan dirinya dengan terhubung pada kelas-kelas yang mungkin terletak pada server-jauh pada suatu jaringan (misalnya, lewat internet). Pada C++ setiap kali anggota variabel atau fungsi ditambahkan pada suatu kelas, maka kelas tersebut dan semua kode tambahan yang merujuk pada kelas tersebut perlu dikompile ulang. Java menyederhanakan masalah ini dengan menyerahkan pada runtime. Saat runtime interpreter Java melakukan resolusi nama ketika terhubung dengan kelas-kelas yang bersangkutan. Interpreter Java juga bertanggung-jawab dalam menentukan penempatan obyek dalam memori. Dua fitur pada interpreter Java ini memecahkan masalah berkaitan degan perubahan definisi kelas ketika digunakan kelas-kelas yang lain.

MASALAH SURAM DI UBUNTU LUCYD LINUX

Setelah sekian lama pake ubuntu lucyd lynx (10.4) tanpa suara emang bosen juga. Tapi akhirnya searching di om gugel dapet juga deh solusinya dan akhirnya ubuntu tercinta gw ngga bisu lagi…
Buat temen-temen yang ada masalah sama, yaitu ubuntu lucyd nya “bisu”. Silahkan deh simak postingan gw.

Solusi ini saya dapatkan setelah bertandang ke http://www.ugos.ugm.ac.id. Oia, sekedar informasi, laptop yang saya pakai Hp Compaq Presario CQ42.
1. Tambahkan daftar source APT dengan buka terminal kemudian ketikkan
sudo add-apt-repository ppa:ubuntu-audio-dev/ppa
tekan Enter
2. Kemudian silakan muat ulang sourcelist dengan mengetikkan
sudo apt-get update
dan tekan Enter
3. Sekarang saatnya menginstall ALSA Driver terbaru dengan mengetik sudo apt-get install linux-alsa-driver-modules-$(uname -r)
dan Enter
Tunggu prosesnya sampai selesai kemudian restart laptop/pc anda. Dan selamat menikmati suara khas dari ubuntu.