Pengertian Java

Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Dikembangkan oleh Sun Microsysten dan diterbitkan tahun 1995. Java tidak sama dengan Javascript, Javascript adalah bahasa scripting yang digunakan oleh web browser. Java merupakan satu dari beberapa kemajuan terpenting di bidang software komputer dalam 20 tahun terakhir. Sama pentingnya dengan HyperText Markup Language (HTML) yang sangat sukses dalam penerbitan homepage static di World wide Web (WWW). Java meledakkan internet dengan isi yang lebih menarik dan interaktif.

Kelebihan-Kelebihan Java

-Multiplatform
Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform/sistem operasi komputer, sesuai dengan prinsip “tulis sekali, jalankan di mana saja”. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis Java dikerjakan di atas sistem operasi Linux tetapi dapat dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebabnya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri untuk menginterpretasikan bytecode tersebut.

-Pemrograman Berorientasi Objek
Berorientasi objek (OOP) sehingga memudahkan programmer untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.
Artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis objek secara murni. Ini sangat memudahkan pemrogram untuk mendesain, membuat dan mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemrograman termudah, bahkan untuk fungsi-fungsi yang advance seperti komunikasi antara komputer sekalipun.

-Perpustakaan Kelas yang Lengkap
Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program-program yang disertakan dalam pemrograman Java) yang sangat memudahkan dalam penggunaan oleh pada pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah keberadaaan komunitas Java yang besar yang terus menerus membuat perpustakaan baru untuk melingkupi seluruh kebutuhan pembangun aplikasi.

-Bergaya C++
Java memiliki sintaks seperti bahasa pemrograman C++ sehingga banyak menarik pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika juga mulai pindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.

-Pengumpulan sampah Otomatis
Java memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).

Kekurangan Java

– Tulis sekali, jalankan di mana saja –
Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.

– Mudah didekompilasi-
Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.

– Penggunaan memori yang banyak -Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

Perbandingan Java dengan Bahasa Pemrograman Lain

Java merupakan bahasa pemrograman OOP tidak seperti bahasa-bahasa sebelumnya yang bersifat prosedural. OOP sangat berguna untuk membuat software yang memiliki banyak Objek yang mirip sehingga pemrogram tidak perlu menulis ulang script untuk Objek-Objek tersebut. Pemrogram cukup menentukan nama ’Class’ dan ’Perilaku’nya dengan meng-assign-kan Class tersebut ke suatu Objek maka secara otomatis Objek tersebut akan memiliki perilaku yang ditentukan.
Dilain sisi penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun. Namun karena Java mempunyai memori yang besar sehingga big num problem bias teratasi.
Bahasa pemrograman C menggunakan pointer sehingga programmer bertanggung jawab untuk membebaskan memory sendiri. Hal ini sering menyebabkan kegagalan memory. Sedangkan pada Java hanya terdapat reference (tidak mempunyai pointer) dan penggunaan memory diatasi oleh garbage collector sehingga programmer tidak perlu bersusah payah untuk mengatur memori.

Tahap Kompilasi Java

Tulis / Ubah. Pemrogram menulis program dan menyimpannya di media dalam bentuk berkas ‘.java’.
Kompilasi. Pengkompilasi membentuk bytecodes dari program menjadi bentuk berkas ‘.class’.
Muat. Pemuat kelas memuat bytecodes ke memori.
Verifikasi. Peng-verifikasi memastikan bytecodes tidak mengganggu sistem keamanan Java.
Jalankan. Penerjemah menerjemahkan bytecodes ke bahasa mesin.tidak bisa di pakai‘’

Contoh Kode Program Sederhana Dalam Java

Contoh program Halo dunia yang ditulis menggunakan bahasa pemrograman Java adalah sebagai berikut:

// Outputs “Hello, world!” and then exits
public class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”);
}
}

Integrated Development Environment

Banyak pihak telah membuat IDE (Integrated Development Environment – Lingkungan Pengembangan Terintegrasi) untuk Java. Yang populer saat ini (Juli 2006) antara lain:

Dr. Java, program gratis yang dikembangkan oleh Universitas Rice, Amerika Serikat
BlueJ, program gratis yang dikembangkan oleh Universitas Monash, Australia
NetBeans (open source- Common Development and Distribution License (CDDL))

NetBeans disponsori Sun Microsystems, dan versi terkininya memilki Matisse, sebuah GUI Editor yang menurut pendapat umum merupakan yang terbaik.[rujukan?]

Eclipse JDT (open source- Eclipse Public License)

Eclipse dibuat dari kerja sama antara perusahaan-perusahaan anggota ‘Eclipse Foundation’ (beserta individu-individu lain). Banyak nama besar yang ikut dalam ‘Eclipse Foundation’, termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi dibandingkan IDE lainnya.

IntelliJ IDEA (commercial, free 30-day trial)
Oracle JDeveloper (free)
Xinox JCreator (ada versi berbayar maupun free)

JCreator ditulis dalam C/C++ sehingga lebih cepat (dan menggunakan memori lebih sedikit) dari kebanyakan IDE.

Java bytecode

Java bytecode adalah bentuk petunjuk bahwa mesin virtual Java mengeksekusi. Setiap bytecode opcode adalah satu byte panjang, meskipun beberapa memerlukan parameter, sehingga beberapa multi-byte instruksi. Tidak semua dari 256 kemungkinan opcodes digunakan. 51 dicadangkan untuk penggunaan masa depan. Selain itu, Sun Microsystems , pengembang asli dari platform Java , telah menyisihkan tiga nilai secara permanen diimplementasikan. Sebuah Java programmer tidak perlu menyadari atau memahami bytecode Java sama sekali. Namun, seperti yang disarankan di IBM jurnal developerWorks, “adalah Memahami bytecode dan apa bytecode mungkin dihasilkan oleh compiler Java membantu programmer Java dengan cara yang sama bahwa pengetahuan tentang perakitan membantu C atau C + + programmer. ”
Lihat juga: daftar instruksi bytecode Java

Karena setiap byte memiliki 256 nilai potensial, ada 256 opcodes mungkin. Dari jumlah tersebut, 0x00 melalui 0xca, 0xFE, dan 0xff ditugaskan nilai. 0xca dicadangkan sebagai instruksi breakpoint untuk debugger dan tidak digunakan oleh bahasa. Demikian pula, 0xFE dan 0xff tidak digunakan oleh bahasa, dan dicadangkan untuk penggunaan internal oleh mesin virtual.

Instruksi jatuh ke dalam beberapa kelompok yang luas:

Beban dan toko (misalnya aload_0, istore)
Aritmatika dan logika (misalnya Ladd, fcmpl)
Jenis konversi (misalnya i2b, d2i)
Obyek penciptaan dan manipulasi (baru, putfield)
Operan tumpukan manajemen (swap misalnya, dup2)
Kontrol transfer (misalnya ifeq, goto)
Metode doa dan kembali (misalnya invokespecial, areturn)

Ada juga beberapa instruksi untuk sejumlah tugas yang lebih khusus seperti melemparkan pengecualian, sinkronisasi, dll

Banyak petunjuk prefiks dan / atau akhiran mengacu pada jenis operan mereka beroperasi pada. Ini adalah sebagai berikut:
Awalan / Sufiks Operan Type
i bilangan bulat
l panjang
s pendek
b byte
c karakter
f mengapung
d dua kali lipat
a referensi

Misalnya, “iadd” akan menambahkan dua bilangan bulat, sementara “Dadd” akan menambahkan dua ganda. The “const”, “beban”, dan “toko” instruksi juga dapat mengambil akhiran bentuk “_ n”, dimana n adalah nomor 0-3 untuk “beban” dan “toko”. N maksimum untuk “const” berbeda menurut jenis.

The “const” petunjuk mendorong nilai dari tipe tertentu ke stack. Misalnya “iconst_5” akan mendorong sebuah 5 bilangan bulat, sementara “dconst_1” akan mendorong 1 ganda. Ada juga “aconst_null”, yang mendorong “nol”. N untuk “beban” dan “toko” instruksi menentukan lokasi dalam tabel variabel [ klarifikasi diperlukan ] untuk memuat atau dari toko ke. The “aload_0” instruksi mendorong objek dalam variabel 0 ke stack (ini biasanya “ini” objek). “Istore_1” menyimpan integer di atas tumpukan ke 1 variabel. Untuk variabel dengan jumlah yang lebih akhiran dijatuhkan dan operator harus digunakan.
Para model perhitungan Jawa bytecode adalah bahwa dari bahasa pemrograman berorientasi tumpukan . Sebagai contoh, kode assembly untuk prosesor x86 mungkin terlihat seperti ini:

mov eax, byte [ebp – 4]
mov edx, byte [ebp – 8]
add eax, edx
mov ecx, eax

Kode ini akan menambahkan dua nilai dan memindahkan hasil ke lokasi yang berbeda. Bytecode dibongkar serupa mungkin terlihat seperti ini:

0 iload_1 1 iload_2 2 iadd 3 istore_3
0 iload_1 1 iload_2 2 iadd 3 istore_3

Perhatikan kode Java berikut:

outer:
for (int i = 2; i <1000; i + +) {
for (int j = 2, j <i, j + +) {
if (i% j == 0)
lanjutkan luar;
}
.. Sistem keluar println (i);
}
Sebuah kompiler Java akan menerjemahkan kode Java di atas ke dalam kode byte sebagai berikut, dengan asumsi di atas dimasukkan ke dalam metode:

0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 11: iload_2 12: iload_1 13: if_icmpge 31 16: iload_1 17: iload_2 18: irem 19: ifne 25 22: goto 38 25: iinc 2, 1 28: goto 11 31: getstatic #84; //Field java/lang/System.out:Ljava/io/PrintStream; 34: iload_1 35: invokevirtual #85; //Method java/io/PrintStream.println:(I)V 38: iinc 1, 1 41: goto 2 44: return
0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 11: iload_2 12: iload_1 13: if_icmpge 31 16: iload_1 17: iload_2 18: irem 19: ifne 25 22: goto 38 25: iinc 2, 1 28: goto 11 31: getstatic #84; //Field java/lang/System.out:Ljava/io/PrintStream; 34: iload_1 35: invokevirtual #85; //Method java/io/PrintStream.println:(I)V 38: iinc 1, 1 41: goto 2 44: return
Java bytecode dirancang untuk dijalankan dalam mesin virtual Java . Ada beberapa mesin virtual yang tersedia saat ini, baik produk gratis dan komersial.
Informasi lebih lanjut: mesin virtual Java

Jika mengeksekusi bytecode Java dalam mesin virtual Java tidak diinginkan, pengembang juga dapat mengkompilasi kode Java sumber atau bytecode Java langsung ke kode mesin asli dengan alat seperti GNU Compiler Java . Beberapa prosesor dapat mengeksekusi bytecode Java native. Prosesor tersebut dikenal sebagai prosesor Java .

Java Development Kit (JDK)

Java Development Kit (JDK) merupakan implementasi dari salah satu dari Java SE , Java EE atau Java ME platform dirilis oleh Oracle Corporation dalam bentuk produk biner ditujukan Jawa pengembang pada Solaris , Linux , Mac OS X atau Windows . Sejak diperkenalkannya Java platform, telah jauh Software Development Kit yang paling banyak digunakan ( SDK ). Pada tanggal 17 November 2006, Sun mengumumkan bahwa mereka akan dirilis di bawah GNU General Public Lisensi (GPL), sehingga membuatnya perangkat lunak bebas . Hal ini terjadi sebagian besar pada 8 Mei 2007, ketika Matahari menyumbang kode sumber ke OpenJDK .
JDK memiliki sebagai komponen utamanya kumpulan alat pemrograman, termasuk:

appletviewer – alat ini dapat digunakan untuk menjalankan dan debug applet Java tanpa web browser
apt – dengan alat penjelasan-processing
extcheck – sebuah utilitas yang dapat mendeteksi JAR-file konflik
idlj – compiler IDL-to-Jawa. Utilitas ini menghasilkan Java bindings dari diberikan IDL Java file.
java – yang loader untuk aplikasi Java. Alat ini penerjemah dan dapat menginterpretasikan file kelas yang dihasilkan oleh javac compiler. Sekarang sebuah peluncur tunggal digunakan untuk kedua pengembangan dan penyebaran. Peluncur penyebaran tua, jre, tidak lagi datang dengan Sun JDK, dan sebagai gantinya telah digantikan oleh loader java baru.
javac – yang compiler Java , yang mengubah kode sumber menjadi Java bytecode
javadoc – generator dokumentasi, yang secara otomatis menghasilkan dokumentasi dari source code komentar
jar – pengarsip, yang paket kelas terkait perpustakaan menjadi satu file JAR . Alat ini juga membantu mengelola file JAR.
javah – header C dan generator rintisan, digunakan untuk menulis metode asli
javap – file kelas disassembler
javaws – yang Web Java Mulai peluncur untuk aplikasi JNLP
JConsole – Java Monitoring dan Management Console
jdb – yang debugger
jhat – Java Heap Alat Analisis (percobaan)
Jinfo – Utilitas ini mendapat informasi konfigurasi dari proses Java berjalan atau crash dump. (Percobaan)
jmap – Utilitas ini output peta memori untuk Java dan dapat mencetak peta memori obyek bersama atau rincian tumpukan memori dari suatu proses atau core dump. (Percobaan)
jps – Java Machine Proses Alat Status Virtual daftar diinstrumentasi HotSpot Java Virtual Machines (JVMs) pada sistem target. (Percobaan)
jrunscript – Java baris perintah skrip shell .
jstack – utilitas yang mencetak Jawa jejak stack benang Java (percobaan)
jstat – Java Virtual Machine statistik alat pemantau (percobaan)
jstatd – jstat daemon (percobaan)
keytool – alat untuk memanipulasi keystore
pack200 – JAR alat kompresi
policytool – penciptaan kebijakan dan alat manajemen, yang dapat menentukan kebijakan untuk runtime Java, yang menetapkan hak akses yang tersedia untuk kode dari berbagai sumber
VisualVM – alat visual mengintegrasikan beberapa baris perintah alat JDK dan ringan kinerja dan memori profiling kemampuan
wsimport – menghasilkan portabel JAX-WS artefak untuk memanggil layanan web.
xjc – Bagian dari API Java untuk XML Binding (JAXB) API. Ia menerima skema XML dan menghasilkan kelas Java.

Alat percobaan mungkin tidak tersedia dalam versi masa depan dari JDK.

JDK juga dilengkapi dengan lengkap Java Runtime Environment , biasanya disebut runtime pribadi, karena fakta bahwa itu dipisahkan dari JRE “biasa” dan memiliki isi tambahan. Ini terdiri dari Java Virtual Machine dan semua perpustakaan kelas hadir dalam lingkungan produksi, serta library tambahan hanya berguna untuk pengembang, seperti internasionalisasi perpustakaan dan IDL perpustakaan.

Salinan dari JDK juga termasuk berbagai pilihan program contoh menunjukkan penggunaan hampir semua bagian dari Java API .

JDK membentuk bagian diperpanjang dari software development kit (SDK). Dalam deskripsi yang menyertai rilis terbaru, yang menerapkan Java SE , EE dan ME , Sun mengakui bahwa di bawah terminologi, JDK membentuk subset dari SDK yang memiliki tanggung jawab untuk menulis dan menjalankan program Java. Sisa SDK terdiri dari perangkat lunak tambahan, seperti server aplikasi, debugger, dan dokumentasi.

Selain JDK yang paling banyak digunakan dibahas dalam artikel ini, ada beberapa JDK lain yang umum tersedia untuk berbagai platform, beberapa di antaranya dimulai dari sumber Sun JDK dan beberapa yang tidak. Semua dari mereka mematuhi spesifikasi Java dasar, tetapi mereka sering berbeda dalam wilayah eksplisit ditentukan, seperti pengumpulan sampah, strategi kompilasi, dan teknik optimasi. Mereka meliputi:

Dalam perkembangan atau dalam modus pemeliharaan:

OpenJDK ;
Aicas JamaicaVM ;
GNU ‘s GCJ (The GNU Compiler Java );
IBM J9 JDK, untuk AIX, Linux, Windows, MVS,, OS/400 Pocket PC, z / OS,
Oracle Corporation ‘s JRockit JDK, untuk Windows, Linux, dan Solaris,
Red Hat ‘s IcedTea , menggantikan proprietary classpath di OpenJDK .

Tidak dipertahankan atau dihentikan:

Apache Harmony
Apple ‘s Mac OS Runtime Java JVM / JDK untuk Classic Mac OS
Blackdown Java – Pelabuhan Sun JDK untuk Linux

8 responses »

  1. Jefferson Dryden mengatakan:

    Not clear on what you’ve in mind, Laila. Can you give us some more information?

  2. Rolf Landberg mengatakan:

    I just want to say I am all new to weblog and absolutely loved this web site. Probably I’m want to bookmark your blog post . You certainly have outstanding article content. Thank you for revealing your webpage.

  3. white whall mengatakan:

    Healing’s Dragon

    to discover concerns to boost my internet site!I suppose its okay to make use of a few of one’s principles!!

  4. this was

    Great facts can be discovered on this website web site.

  5. Digg

    While checking out DIGG yesterday I found this

  6. Android Freebies mengatakan:

    Very good write-up. I certainly love this site. Keep writing!

  7. web page mengatakan:

    Good day! I simply wish to offer youu a big thumbs up for the excellent information you’ve
    got here on this post. I am returning to your web site for more soon.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s