tugas mingguan ke-3

Java



Java menurut definisi dari Sun Microsystem adalah nama untuk sekum-pulan teknologi yang membuat perangkat lunak dan menjalankan perangkat lunak pada komputer standalone ataupun pada lingkungan jaringan. Java2 adalah generasi kedua dari Java platform. Java berdiri di atas sebuah mesin intepreter yang diberi nama Java Virtual Machine (JVM). JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin. Oleh karena itu bahasa Java disebut sebagai bahasa pemrograman yang portable, karena dapat dijalankan pada berbagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM.

Platform Java terdiri dari sekumpulan library, compiler, debugger dan alat lain yang dipaket dalam Java Development Kit (JDK). Java 2 adalah generasi yang sekarang sedang berkembang dari platform Java. Agar sebuah program Java dapat dijalankan, maka file dengan ekstensi .java harus dikompilasi menjadi file bytecode. Untuk menjalankan file byte-code tersebut dibutuhkan JRE (Java Runtime Environment) yang memungkinkan pemakai untuk menjalankan program Java, hanya menjalankan tidak membuat kode baru lagi. JRE terdiri dari JVM dan library Java yang digunakan.

Platform Java memiliki tiga buah edisi yang berbeda :
¨      J2EE (Java 2 Enterprise Edition)
¨      J2SE (Java 2 Second Edition)
¨      J2ME (Java 2 Micro Edition)


1.2. J2EE (JAVA 2 ENTERPRISE EDITION)


J2EE adalah kelompok dari beberapa API (Application Programming Interface) dari Java dan teknologi selain Java. J2EE dirancang untuk membuat aplikasi yang rumit. J2EE sering dianggap sebagai middle-ware atau teknologi yang berjalan di server, namun sebenarnya J2EE tidak hanya terbatas untuk itu. Faktanya J2EE juga mencakup teknologi yang dapat digunakan di semua lapisan dari sebuah sistem informasi.

Implementasi J2EE menyediakan kelas dasar dan API dari Java yang mendukung pengembangan dan rutin standard untuk aplikasi client maupun server, termasuk aplikasi yang berjalan di web browser.




1.3. J2SE (JAVA 2 SECOND EDITION)


J2SE adalah inti/ dasar dari bahasa pemrograman Java. JDK (Java Development Kit) adalah salah satu tool dari J2SE untuk mengkom-pilasi dan menjalankan program Java. Tool J2SE yang salah satunya adalah JDK 1.5 dapat diunduh pada http://java.sun.com/j2se/, dimana JDK merupakan tool open source dari Sun.


1.4. J2ME (JAVA 2 MICRO EDITION)


J2ME adalah lingkungan pengembangan yang dirancang untuk mele-takan perangkat lunak Java pada barang elektronik beserta perangkat pendukungnya. Pada J2ME, jika perangkat lunak berfungsi baik pada sebuah perangkat, maka belum tentu juga berfungsi baik pada perang-kat yang lainnya.

J2ME membawa Java ke dunia informasi, komunikasi, dan perangkat komputasi selain perangkat komputer desktop yang biasanya lebih kecil dibandingkan perangkat komputer desktop. J2ME biasa digunakan pada telepon selular, pager, personal digital assistants (PDA) dan sejenisnya.

J2ME adalah bagian dari J2SE, karena itu tidak semua librabry yang ada pada J2SE dapat digunakan pada J2ME. Tetapi J2ME mempunyai beberapa library khusus yang tidak dimiliki J2SE. Arsitektur J2ME dapat dilihat seperti pada gambar berikut ini
Profile
Configuration
Kumpulan
Library
JVM
Sistem Operasi

Teknologi J2ME juga memiliki beberapa keterbatasan, terutama jika diaplikasikan pada ponsel. J2ME sangat tergantung pada perangkat (device) yang digunakan, bisa dari segi merek ponsel dan dukungan terhadap teknologi J2ME. Misalnya, jika sebuah ponsel tidak memiliki kamera, maka jelas J2ME pada ponsel tersebut tidak dapat mengakses kamera. Keterbatasan lainnya adalah pada ukuran aplikasi, karena memori pada ponsel sangat terbatas. Sebagian ponsel tidak mengijin-kan aplikasi J2ME menulis pada file, karena alasan keamanan.

Configuration merupakan Java Library minimum dan kemampuan yang dimiliki oleh para pengembang J2ME, maksudnya adalah sebuah moblile device dengan kemampuan Java akan dioptimalkan agar sesuai. Configuration hanyalah mengatur hal-hal tentang kesamaan sehingga dapat dijadikan ukuran kesesuaian antar device. Misalnya sebuah lampu sepeda dapat digunakan oleh berjenis-jenis sepeda.

Dalam J2ME telah didefinisikan dua buah konfigurasi yaitu :

¨      CLDC (Connected Limited Device Configuration)
Untuk perangkat kecil.
¨      CDC (Connected Device Configuration)
Untuk perangkat yang lebih besar.

Profile berbeda dengan configuration, profile membahas sesuatu yang spesifik untuk sebuah perangkat. Sebagai contoh misalnya, sebuah sepeda dengan merek tertentu tentu mempunyai ciri spesifik dari sepeda lainnya.
Dalam J2ME terdapat dua buah profile yaitu MIDP (Mobile Information Device Profile) dan Foundation Profile. Keterhubungan antara configuration dan profile yang ada pada J2ME beserta jenis mesin virtualnya dapat dilihat pada gambar dibawah ini.

 





















CLDC (Connected Limited Device Configuration) adalah perangkat dasar dari J2ME berupa library dan API yang diimplementasikan pada J2ME, seperti yang digunakan pada telepon selular, pager dan PDA. Perangkat tersebut sangat terbatas pada memori, sumber daya dan kemampuan memproses.


Spesifikasi CLDC pada J2ME adalah spesifikasi minimal dari package, kelas, dan sebagian fungsi JVM yang dikurangi agar dapat diimplemen-tasikan dengan keterbatasan sumber daya pada alat-alat tersebut. JVM yang digunakan disebut KVM (Kilobyte Virtual Machine).

CDC (Connected Device Configuration) merupakan komunitas proses pada Java yang memiliki standardisasi. CDC terdiri dari virtual machine dan library dasar untuk dipergunakan pada profile industri. Implementasi CDC pada J2ME adalah source code yang menyediakan sambungan dengan macam-macam platform. Perbandingan antara CLDC dengan CDC sebagai berikut :

CLDC
CDC
¨      Mengimplementasikan seba gian dari J2SE
¨      JVM yang digunakan adalah KVM
¨      Digunakan pada perangkat genggam (handphone, two-way pager, dan PDA) denga memori terbatas antara 160-512KB
¨      Prosessor : 16/ 32 bit
¨      Mengimplementasikan selu-ruh fitur J2SE
¨      JVM yang digunakan adalah CVM
¨      Digunakan pada perangkat genggam (internet TV, Nokia communicator, car TV) dgn memori minimal 2MB
¨      Prosessor : 32 bit

MIDP (Mobile Information Device Profile) adakal spesifikasi untuk sebuah profil J2ME. MIDP memiliki lapisan di atas CLDC, API tam-bahan untuk daur hidup aplikasi, antarmuka, jaringan, dan penyimpan-an persisten.

Pada saat ini terdapat MIDP 1.0 dan MIDP 2.0, fitur tambahan pada MIDP 2.0 adalah terdapat API untuk multimedia, terdapat dukungan memainkan tone, tone sequence, dan file WAV walaupun tanpa adanya Mobile Media API (MMAPI).

KVM (Kilobyte Virtual Machine) adalah paket JVM yang dirancang untuk perangkat yang kecil. KVM mendukung sebagian dari fitur-fitur JVM, tidak mendukung operasi floating-point dan finalisasi objek. KVM diimplementasikan dengan menggunakan C, sehingga sangat mudah beradaptasi pada tipe platform yang berbeda

CVM (C-Virtual Machine) adalah paket JVM yang digunakan pada CDC. CVM mempunyai seluruh fitur-fitur dari virtual machine yang dirancang untuk perangkat yang memerlukan fitur-fitur Java 2 Virtual Machine.

MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian dari kelas javax.microedition.midlet. MIDlet yang didefinisikan pada MIDP. MIDlet berupa sebuah kelas abstrak yang merupakan sub kelas dari bentuk dasar aplikasi sehingga antaramuka antara aplikasi J2ME dan aplikasi manajemen pada perangkat dapat terbentuk.

JAD (Java Application Descriptor) digunakan untuk mendeskripsikan isi aplikasi untuk keperluan pemetaan. File JAD bersisi deskripsi file JAR (Java Archive) dan pemetaan atribut MIDlet, sedangkan file JAR berisi kumpulan kelas dan resource.

OTA (Over The Air) mengacu pada beberapa teknologi jaringan tanpa kabel. Dengan menggunakan OTA, provider MIDlet dapat menginstal MIDlet pada web server dan menyediakan link untuk mengunduh via WAP atau internet microbrowser.

J2ME WTK (J2ME Wireless Tool Kit) adalah alat yang menyediakan lingkungan emulator, dokumentasi, beserta contoh-contoh aplikasi Java untuk perangkat kecil (small device). J2ME WTK berbasiskan pada CLDC dan MIDP. J2ME WTK adalah program yang meniru kerja ponsel yang mendukung MIDP atau yang biasa disebut emulator. Oleh karena itu, belum tentu MIDlet yang berjalan di emulator juga berjalan pada ponsel yang sebenarnya, karena juga tergantung pada kemampuan dan kapasitas ponsel yang digunakan.




Exception Handling

Pengertian Exception

Suatu program apabila mengalami kesalahan akan menghasilkan suatu runtime errors seperti gagal membuka file, suatu program melakukan akses diatas range array dan lain-lain. ketika runtime errors tersebut terjadi, aplikasi akan membuat suatu exception. Java exception merupakan instance dari class Throwable. Throwable class terdapat dalam java.lang package

Jenis-jenis Exception

§ Exception class merupakan kesalahan yang disebabkan oleh program dan kesalahan external. Kesalahan jenis ini dapat ditangkap dan diatasi oleh program. Exception terdiri dari banyak subclass
§ Error class merupakan class yang berhubungan dengan kesalahan pada internal system. Jika terjadi kesalahan jenis ini maka hanya dapat dilakukan bagaimana memberitahu kepada pemakai dan melakukan pengakhiran program.

Cara menggunakan Exception
Java exception dibagi menjadi tiga buah operasi yaitu :

1. Claiming an exception

Claiming an exception dimaksudkan dengan menyatakan exception apa saja yang mungkin terjadi dalam suatu main() ataupun dalam method. Untuk system errors dan runtime errors tidak perlu dilakukan klaim karena kedua macam kesalahan ini dapat terjadi dimana saja.

Untuk melakukan claiming an exception dilakukan dengan menggunakan throws
keyword. Contoh :

public void myMethod() throws IOException
{
...
}

untuk melakukan klaim terhadap banyak exception dapat dilakukan dengan menambahkan exception dipisahkan dengan koma ( , ).

method_declaration throws Exception1, Exception2, ...Exception n


2. Throwing an exception

Throwing an exception dimaksudkan dengan apabila suatu kesalahan terjadi maka method berisi statement yang melakukan claiming an exception tersebut membuat suatu exception object yang dilempar ke dalam sistem.

Untuk melakukan throwing exception kita menggunakan keyword throw didalam method yang telah melakukan claim exception.

throw ExceptionObjectInstance;

3. Catching an exception

Catching an exception dimaksudkan apabila exception object yang dilempar kedalam sistem akan ditangkap untuk diatasi dalam exception handler. Metode pencarian handler ini dilakukan secara backward yaitu pencarian dimulai dengan method yang dieksekusi sampai ke pemanggil method tersebut.

Untuk melakukan catching an exception dapat dilakukan digunakan suatu blok trycatch.

try {
statements; // statements that may throw exceptions
}
catch (Exception1 ex) {
handler for Exception1;
}
catch (Exception2 ex) {
handler for Exception2;
}
...
catch(ExceptionN ex) {
handler for ExceptionN;
}

jika tidak terjadi suatu exception pada statements maka blok catch akan dilewati. Jika ada suatu exception yang dikenali pada blok catch maka exception akan diatasi oleh handler statement untuk exception tersebut. Sedangkan jika ada suatu exception yang tidak dikenali maka java keluar dari method dan mengirim exception ke method sebelumnya yang memanggil method tersebut. Hal ini dilakukan sampai method pemanggil awal dicapai dan bila masih belum terdapat handler dari exception ini maka program terhenti dan menampilkan pesan ke java console. Exception object membawa informasi penting mengenai exception yang terjadi.

Membuat Exception Class

Selain menggunakan exception class yang sudah ada pada java, exception class dapat diturunkan menjadi suatu exception class yang baru. Cara membuatnya adalah dengan menurunkan exception class dan meng-override method toString() atau getLocalizedMessage().
Perhatikan contoh berikut :

Pada ExceptionTest.java

public class ExceptionTest {

public static void main(String [] args) {
int x = 2;
int y = 3;

try {
if((x==2) && (y==3))
throw new MyException(x,y);

System.out.println(x/y);
           }     catch (MyException ex) {
System.out.println(ex.toString());
}
System.out.println("this never executed");
}
}

Pada MyException.java

class MyException extends Exception {
int x;
int y;

MyException(int x,int y) {
super("MyException");
this.x = x;
this.y = y;
}

public String toString() {
return(""+x+" divide by "+y);
}
}

Rethrowing Exception

Ketika suatu exception terjadi dalam suatu method, maka alir program akan keluar dari method jika suatu tidak ditangkap pada method tersebut. Jika ingin melakukan beberapa operasi yang harus dilakukan sebelum keluar dari method maka exception dapat ditangkap terlebih dahulu baru kemudian dilempar kembali ke handler yang sebenarnya.
Strukturnya adalah sebagai berikut :

try {
statements;
}
catch(TheException ex) {
perform operations before exits;
throw ex;
}

Klausa finally
Finally digunakan apabila menginginkan menjalankan suatu operasi tanpa dipengaruhi apakah terjadi exception atau tidak. Dengan finally suatu operasi tidak akan mengalami peloncatan alur.

Struktur try-cacth-finally adalah sebagai berikut :

try {
statements;
}
catch(TheException ex) {
handling ex statements;
}
finally {
finalStatements;
}

Perhatikan tiga kasus berikut :

1.         Jika tidak ada exception dalam blok try-catch, maka finalStatements akanselalu dieksekusi dan statement selanjutnya setelah blok try-catch dieksekusi.

2.         Jika salah satu statement dalam blok try-catch menyebabkan exception dan ditangkap oleh blok catch . Statement selanjutnya dalam blok try akan diloncati, kemudian finalStatements. Jika exception tidak di lempar ulang dengan menggunakan keyword throw maka statement setelah blok try-catch akan dieksekusi. Akan tetapi sebaliknya maka eksekusi akan dikembalikan ke method pemanggilnya.

3.         Jika salah satu statement dalam blok try-catch menyebabkan exception dan tidak ada blok catch yang memenuhi exception tersebut maka statement dalam blok try akan diloncati dan finalStatements dijalankan dan eksekusi akan dikembalikan ke method pemanggilnya.

Garbage Collection

Banyak bahasa pemrogaman lain yang mengijinkan seorang pemrogram
mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa lainnya, adalah pemrogram yang mutlak bertanggung jawab akan hal ini. Hal ini dapat menyulitkan bilamana pemrogram tersebut alpa untuk mengembalikan blok memori sehingga menyebabkan situasi yang dikenal dengan nama memory leaks.
Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek – objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh pemrogram dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.
Garbage Collection adalah suatu mekanisme yang dilaksanakan dengan algoritma tersendiri untuk melacak state dari object(object masih terpakai atau tidak) dan untuk melakukan penghapusan object. Garbage Collection terus berlangsung selama program kita berjalan. Pada saat-saat tertentu Garbage Collection akan melakukan pencatatan state dari suatu object. Dan apabila object tersebut sudah tidak terpakai lagi(misalnya tidak ada variabel yang merujuk kepada object tersebut) maka object ini kemudian akan dianggap sampah dan apabila program memerlukan memory tambahan maka object tersebut akan dihapus dan memory-nya dibebaskan. Yang melaksanakan semua mekanisme ini disebut sebagai Garbage Collector(Istilah lainnya Garbage Collector adalah sebuah bagian dari CLR yang menjalankan mekanisme Garbage Collection).
Jadi pada C#, object yang di-null-kan tidak langsung dihapus dari memory. Itu semua terserah dari Garbage Collector dan bagaimana Algoritma Garbage Collection itu dilaksanakan. Kita tidak dapat mengetahui secara pasti kapan suatu object dihapus dari memory,  tetapi ada suatu keadaan dimana ketika object dihapus dari memory dan kita ingin program kita melaksanakan sesuatu. Untuk itu maka C# punya yang namanya Destructor.
Destructor di C# tidak lebih dari sebuah method yang akan dipanggil oleh CLR sesaat sebelum object dihapus dari memory. Makanya Destructor di C# namanya harus didahului dengan tanda ~, misalnya ~SomeClass. Tujuannya supaya program kita tidak bisa memanggil Destructor secara langsung. Jadi Destructor di C# bisa dikatakan sangat berbeda dengan destructor di C. Oleh karena itu Destructor di C# disebut juga Finalize Method.

Modular Type Checking for Hierarchically Extensible Data Types and Functions      

Salah satu pendekatan yang menjanjikan untuk menambahkan object-oriented (OO) fasilitas untuk bahasa fungsional seperti ML adalah untuk menggeneralisasi datatype yang ada dan konstruksi fungsi menjadi hirarkis dan extensible, sehingga varian datatype mensimulasikan kelas dan kasus fungsi mensimulasikan metode. Pendekatan ini memungkinkan datatypes ada untuk dengan mudah diperluas dengan kedua operasi baru dan varian baru, menyelesaikan konflik lama antara gaya fungsional dan OO. Namun, desain sebelumnya didasarkan pada pendekatan ini telah dipaksa untuk menyerah modular typechecking, membutuhkan seluruh Program pemeriksaan untuk memastikan keselamatan jenis. Kami menjelaskan ML Extensible (EML), bahasa ML-seperti yang mendukung hirarkis, datatypes extensible dan fungsi sambil menjaga murni modular typechecking. Untuk mencapai hasil ini, sistem tipe EML yang memberlakukan beberapa persyaratan pada datatype dan diperpanjang fungsi, namun EML masih mampu mengekspresikan idiom fungsional dan OO tradisional. Kami telah diformalkan versi inti EML dan terbukti suara jenis sistem yang terkait, dan kami telah mengembangkan prototipe untuk juru bahasa.

Secure Code/Security Code

Hari ini sistem komputer yang terhubung sangat sering terkena kode yang berasal dari berbagai sumber yang mungkin tidak diketahui. Kode dapat dilampirkan ke e-mail, yang terkandung dalam dokumen, atau di-download melalui Internet. Sayangnya, banyak pengguna komputer telah mengalami langsung dampak dari kode mobile berbahaya, termasuk virus dan worm, yang dapat merusak atau menghancurkan data dan waktu biaya dan uang. Mekanisme keamanan yang paling umum memberikan hak kepada pengguna berdasarkan kredensial logon mereka (biasanya password) dan membatasi sumber daya (sering direktori dan file) bahwa pengguna diperbolehkan untuk mengakses. Namun, pendekatan ini gagal untuk mengatasi beberapa masalah: pengguna mendapatkan kode dari berbagai sumber, beberapa di antaranya mungkin tidak dapat diandalkan, kode dapat mengandung bug atau kerentanan yang memungkinkan untuk dimanfaatkan oleh kode berbahaya, dan kode kadang-kadang melakukan hal-hal bahwa pengguna tidak tahu itu akan dilakukan. Akibatnya, sistem komputer bisa rusak dan data pribadi dapat bocor ketika pengguna berhati-hati dan dapat dipercaya menjalankan perangkat lunak berbahaya atau kesalahan-penuh. Mekanisme sistem operasi keamanan yang paling mengharuskan setiap potongan kode harus benar-benar dipercaya dalam rangka untuk menjalankan, kecuali mungkin untuk script pada halaman web. Oleh karena itu, masih ada kebutuhan untuk mekanisme keamanan yang berlaku secara luas yang memungkinkan kode yang berasal dari satu sistem komputer untuk mengeksekusi dengan perlindungan pada sistem yang lain, bahkan ketika tidak ada hubungan kepercayaan antara sistem.
Untuk membantu melindungi sistem komputer dari kode ponsel berbahaya, untuk memungkinkan kode dari asal tidak diketahui untuk menjalankan dengan perlindungan, dan untuk membantu mencegah kode terpercaya dari mengorbankan keamanan sengaja atau tidak sengaja, Framework. NET menyediakan mekanisme keamanan yang disebut kode keamanan akses. Kode keamanan akses memungkinkan kode bisa dipercaya untuk berbagai derajat tergantung di mana kode berasal dan pada aspek lain dari identitas kode itu. Kode akses keamanan juga memberlakukan berbagai tingkat kepercayaan pada kode, yang meminimalkan jumlah kode yang harus dipercaya sepenuhnya dalam rangka untuk menjalankan. Menggunakan kode keamanan akses dapat mengurangi kemungkinan bahwa kode Anda dapat disalahgunakan oleh kode berbahaya atau kesalahan-penuh. Hal ini dapat mengurangi kewajiban Anda karena Anda dapat menentukan seperangkat operasi kode Anda harus diizinkan untuk melakukan serta operasi kode Anda tidak boleh diizinkan untuk melakukan. Kode akses keamanan juga dapat membantu meminimalkan kerusakan yang dapat terjadi akibat kerentanan keamanan dalam kode Anda.Semua kode dikelola yang menargetkan runtime bahasa umum menerima manfaat keamanan kode akses, bahkan jika kode yang tidak membuat kode akses panggilan keamanan tunggal. Namun, semua aplikasi harus membuat permintaan kode akses, seperti yang dijelaskan dalam Dasar-Dasar Keamanan Kode Akses.

Fase – Fase Pemrograman Java :

Gambar dibawah ini menjelaskan aliran proses kompilasi dan eksekusi sebuah program Java :


Langkah pertama dalam pembuatan sebuah program berbasis Java adalah menuliskan kode program pada text editor. Contoh text editor yang dapat digunakan antara lain : notepad, vi, emacs dan lain sebagainya. Kode program yang dibuat kemudian tersimpan dalam sebuah berkas berekstensi .java.

Setelah membuat dan menyimpan kode program, kompilasi file yang berisi kode program tersebut dengan menggunakan Java Compiler. Hasil dari adalah berupa berkas bytecode dengan ekstensi .class.

Berkas yang mengandung bytecode tersebut kemudian akan dikonversikan oleh Java Interpreter menjadi bahasa mesin sesuai dengan jenis dan platform yang digunakan.

Adapun cara penulisan program dalam java diantaranya adalah:

1.   Harus disimpan berekstensi *.java
2.  Nama file harus sama dengan nama class public, misalnya nama filenya myHello.java, maka  nama  class public juga harus myHello
Contoh:
public class myHello     {
 //harus sama dengan nama file (myHello.java)
     }
3.  Comment sebaiknya sebaiknya ditulis untuk menjelaskan sebuah class atau method. Comment ditulis  untuk tujuan dokumentasi.
Contoh:
public static void main(String[]args){
//untuk menampilkan kata myfirs java
System.out.println(“Hello this is my first java”);
}
4.   Java statement adalah suatu baris yang diakhiri dengan titik koma.
Contoh:
System.out.println(“Hello this is my first java”);     
5.  Block adalah satu atau beberapa statement yang berada diantara tanda kurung kurawal { dan diakhiri dengan kurung kurawal }.
Contoh:
public static void main(String[]args){
System.out.println(“Hello this is my first java”);
System.out.println(“Java is very good”);
}

Komentar

Postingan populer dari blog ini

FLOWCHART

#PetGame - Sejarah Perkembangan Game