Rabu, 03 Oktober 2007

Program Client-Server menggunakan JDBC, DAO dan RMI

Program Client-Server menggunakan JDBC, DAO dan RMI
Tujuan Anda akan mengembangkan sebuah aplikasi client server, di mana sebuah Data Access Object yang berada di sisi server melayani client yang berada dalam JVM yang berbeda untuk mengakses sebuah database. Rancangan Anda mengembangkan sebuah obyek yang mengakses sebuah table dalam database, yaitu CatalogueDAO yang mengakses table CATALOGUETBL dalam database AMAZONDB. CatalogueDAO mempunyai method-method untuk menyimpan, membaca dan mengubah data dalam table tsb melalui JDBC. Anda akan menjadikan CatalogueDAO dapat berinteraksi dengan obyek lain yang berada dalam JVM yang terpisah dengan menggunakan teknik RMI. Untuk ini Anda akan mengembangkan class-class yang dibutuhkan untuk membungkus CatalogueDAO menjadi sebuah obyek yang dapat dijalankan di sisi server. Class-class ini adalah CatalogueRemote dan CatalogueRemoteImpl. Selanjutnya Anda menulis CatalogueRMIServerApp sebagai aplikasi stand alone yang bertingkah laku sebagai server untuk CatalogueRemote. Di sisi client, Anda akan menulis CatalogueRMITestClientApp untuk berinteraksi dengan obyek CatalogueRemote. Pembekalan ? Persiapan * Anda perlu meng-install terlebih dahulu Java Development Kit (JDK) * Buatlah sebuah directory untuk latihan Anda, misalnya /home/lab/kinabalu dan dibawah directory ini buatlah beberapa sub-directory : o net/developerforce/amazon/catalogue/bean o net/developerforce/amazon/catalogue/dao o net/developerforce/amazon/catalogue/rmi * Anda memerlukan mySQL server yang berjalan * Di mySQL server Anda persiapkan sebuah database yaitu AMAZONDB, Di dalam database AMAZONDB persiapkan sebuah table yaitu CATALOGUETBL. mysql> desc CATALOGUETBL; +---------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+-------+ | ISBN | varchar(20) | | PRI | | | | TITLE | varchar(255) | YES | | NULL | | | AUTHOR | varchar(255) | YES | | NULL | | | PUBLISHER | varchar(50) | YES | | NULL | | | CITY | varchar(30) | YES | | NULL | | | YEAR | varchar(4) | YES | | NULL | | | LASTUPDATEDON | varchar(8) | YES | | NULL | | +---------------+--------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) Mengembangkan Class Pembantu : CatalogueBean Langkah 1 : Dengan text editor tulislah CatalogueBean.java package net.developerforce.amazon.catalogue.bean; import java.io.Serializable; import java.util.Date; public class CatalogueBean implements Serializable { public CatalogueBean(String isbn) { this.isbn = isbn; } private String isbn; public void setIsbn(String isbn) { this.isbn = isbn; } public String getIsbn() { return this.isbn; } private String title; public void setTitle(String title) { this.title = title; } public String getTitle() { return this.title; } private String author; public void setAuthor(String author) { this.author = author; } public String getAuthor() { return this.author; } private String publisher; public void setPublisher(String publisher) { this.publisher = publisher; } public String getPublisher() { return this.publisher; } private String city; public void setCity(String city) { this.city = city; } public String getCity() { return this.city; } private String year; public void setYear(String year) { this.year = year; } public String getYear() { return this.year; } private Date lastUpdatedOn; public void setLastUpdatedOn(Date lastUpdatedOn) { this.lastUpdatedOn = lastUpdatedOn; } public Date getLastUpdatedOn() { return this.lastUpdatedOn; } } Simpanlah di directory yang telah Anda persiapkan sebagai CatalogueBean.java di sub-directory net/developerforce/amazon/catalogue/bean Mengembangkan Class Utama : CatalogueDAO Langkah 2 : Dengan text editor tulislah CatalogueDAO.java package net.developerforce.amazon.catalogue.dao; import java.sql.*; import java.text.*; import java.util.Date; import net.developerforce.amazon.catalogue.bean.CatalogueBean; public class CatalogueDAO { private Connection conn; public CatalogueDAO(Connection conn) throws NullPointerException { if(conn==null) { throw new NullPointerException(); } this.conn = conn; } public CatalogueBean selectCatalogueBean(String isbn) throws SQLException { CatalogueBean bean = null; String sqlSelect = "SELECT * FROM CATALOGUETBL " + "WHERE ISBN = '" + isbn + "'"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sqlSelect); if(rs.next()) { bean = new CatalogueBean(isbn); bean.setTitle(rs.getString("TITLE")); bean.setAuthor(rs.getString("AUTHOR")); bean.setPublisher(rs.getString("PUBLISHER")); bean.setCity(rs.getString("CITY")); bean.setYear(rs.getString("YEAR")); String lastUpdatedOn = rs.getString("LASTUPDATEDON"); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); try { Date date = format.parse(lastUpdatedOn); bean.setLastUpdatedOn(date); } catch(ParseException pe) { pe.printStackTrace(); } } return bean; } public int insertCatalogueBean(CatalogueBean bean) throws SQLException { String lastUpdatedOn = null; Date date = bean.getLastUpdatedOn(); if(date != null) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); lastUpdatedOn = format.format(date); } Statement stmt = conn.createStatement(); String sqlInsert = "INSERT INTO CATALOGUETBL " + "VALUES (" + "'" + bean.getIsbn() + "'," + "'" + bean.getTitle() + "'," + "'" + bean.getAuthor() + "'," + "'" + bean.getPublisher() + "'," + "'" + bean.getCity() + "'," + "'" + bean.getYear() + "'," + "'" + lastUpdatedOn + "'" + ")" ; return stmt.executeUpdate(sqlInsert); } public int updateCatalogueBean(CatalogueBean bean) throws SQLException { String lastUpdatedOn = null; Date date = bean.getLastUpdatedOn(); if(date != null) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); lastUpdatedOn = format.format(date); } String sqlUpdate = "UPDATE CATALOGUETBL " + "SET " + "TITLE = '" + bean.getTitle() + "'," + "AUTHOR = '" + bean.getAuthor() + "'," + "PUBLISHER = '" + bean.getPublisher() + "'," + "CITY = '" + bean.getCity() + "'," + "YEAR = '" + bean.getYear() + "'," + "LASTUPDATEDON = '" + lastUpdatedOn + "'" + "WHERE " + "ISBN = '" + bean.getIsbn() + "'"; Statement stmt = conn.createStatement(); return stmt.executeUpdate(sqlUpdate); } public int deleteCatalogueBean(String isbn) throws SQLException { String sqlDelete = "DELETE FROM CATALOGUETBL " + "WHERE " + "ISBN = '" + isbn + "'"; Statement stmt = conn.createStatement(); return stmt.executeUpdate(sqlDelete); } } Simpanlah di directory yang telah Anda persiapkan sebagai CatalogueDAO.java di sub-directory net/developerforce/amazon/catalogue/dao Mengembangkan Server Langkah 3 : Dengan text editor tulislah CatalogueRemote.java package net.developerforce.amazon.catalogue.rmi; import java.rmi.*; import java.sql.*; import net.developerforce.amazon.catalogue.bean.CatalogueBean; public interface CatalogueRemote extends Remote { public CatalogueBean findCatalogueBean(String isbn) throws RemoteException, SQLException; public int createCatalogueBean(CatalogueBean bean) throws RemoteException, SQLException; public int modifyCatalogueBean(CatalogueBean bean) throws RemoteException, SQLException; public int removeCatalogueBean(String isbn) throws RemoteException, SQLException; } Simpanlah di directory yang telah Anda persiapkan sebagai CatalogueRemote.java di sub-directory net/developerforce/amazon/catalogue/rmi Langkah 4 : Dengan text editor tulislah CatalogueRemoteImpl.java package net.developerforce.amazon.catalogue.rmi; import java.rmi.*; import java.rmi.server.*; import java.sql.*; import net.developerforce.amazon.catalogue.bean.CatalogueBean; import net.developerforce.amazon.catalogue.dao.CatalogueDAO; public class CatalogueRemoteImpl extends UnicastRemoteObject implements CatalogueRemote { public CatalogueRemoteImpl() throws RemoteException { } public Connection getConnection() throws ClassNotFoundException, SQLException { String jdbcDriver = "org.gjt.mm.mysql.Driver"; Class.forName(jdbcDriver); String url = "jdbc:mysql://localhost:3306/AMAZONDB"; String user = "ekobs"; String pwd = "j2ee"; Connection conn = DriverManager.getConnection( url, user, pwd); return conn; } public CatalogueBean findCatalogueBean(String isbn) throws RemoteException { Connection conn = null; try { conn = getConnection(); CatalogueDAO dao = new CatalogueDAO(conn); return dao.selectCatalogueBean(isbn); } catch(Exception e) { throw new RemoteException(e.toString()); } finally { try { if(conn != null) conn.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } } } public int createCatalogueBean(CatalogueBean bean) throws RemoteException { Connection conn = null; try { conn = getConnection(); CatalogueDAO dao = new CatalogueDAO(conn); return dao.insertCatalogueBean(bean); } catch(Exception e) { throw new RemoteException(e.toString()); } finally { try { if(conn != null) conn.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } } } public int modifyCatalogueBean(CatalogueBean bean) throws RemoteException { Connection conn = null; try { conn = getConnection(); CatalogueDAO dao = new CatalogueDAO(conn); return dao.updateCatalogueBean(bean); } catch(Exception e) { throw new RemoteException(e.toString()); } finally { try { if(conn != null) conn.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } } } public int removeCatalogueBean(String isbn) throws RemoteException { Connection conn = null; try { conn = getConnection(); CatalogueDAO dao = new CatalogueDAO(conn); return dao.deleteCatalogueBean(isbn); } catch(Exception e) { throw new RemoteException(e.toString()); } finally { try { if(conn != null) conn.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } } } } Simpanlah di directory yang telah Anda persiapkan sebagai CatalogueDAORemoteImpl.java di sub-directory net/developerforce/amazon/catalogue/rmi Langkah 5 : Dengan text editor tulislah CatalogueRMIServerApp.java package net.developerforce.amazon.catalogue.app; import java.net.*; import java.rmi.*; import java.sql.*; import net.developerforce.amazon.catalogue.rmi.*; public class CatalogueRMIServerApp { public static void main(String args[]) { System.setSecurityManager( new RMISecurityManager()); try { CatalogueRemote remote = new CatalogueRemoteImpl(); Naming.rebind("Catalogue", remote); } catch(RemoteException re) { re.printStackTrace(); } catch(MalformedURLException murle) { murle.printStackTrace(); } catch(NullPointerException npe) { npe.printStackTrace(); } } } Simpanlah di directory yang telah Anda persiapkan sebagai CatalogueRMIServerApp.java di sub-directory net/developerforce/amazon/catalogue/app Mengembangkan Client Langkah 6 : Dengan text editor tulislah CatalogueRMITestClientApp.java package net.developerforce.amazon.catalogue.app; import java.net.*; import java.rmi.*; import java.sql.*; import java.util.Date; import net.developerforce.amazon.catalogue.bean.CatalogueBean; import net.developerforce.amazon.catalogue.rmi.CatalogueRemote; public class CatalogueRMITestClientApp { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { CatalogueRMITestClientApp app = new CatalogueRMITestClientApp(); app.create(); app.view(); app.modify(); app.view(); app.remove(); } catch(MalformedURLException murle) { murle.printStackTrace(); } catch(NotBoundException ne) { ne.printStackTrace(); } catch(RemoteException re) { re.printStackTrace(); } catch(SQLException sqle) { sqle.printStackTrace(); } } private CatalogueRemote remote; public CatalogueRMITestClientApp() throws MalformedURLException, NotBoundException, RemoteException { remote = (CatalogueRemote)Naming.lookup("Catalogue"); } public void create() throws RemoteException, SQLException { System.out.println("Creating ... "); String isbn = "0-201-47967-2"; CatalogueBean bean = new CatalogueBean(isbn); bean.setTitle("Customer-centered Growth : 5 Proven Strategies For Building Competitive Advantage"); bean.setAuthor("Richard Whiteley"); bean.setPublisher("Addison Wesley Publishing Company"); bean.setCity("Massachusetts"); bean.setYear("1996"); bean.setLastUpdatedOn(new Date()); remote.createCatalogueBean(bean); } public void modify() throws RemoteException, SQLException { System.out.println("Modifying ... "); String isbn = "0-201-47967-2"; CatalogueBean bean = remote.findCatalogueBean(isbn); bean.setCity("Reading, Massachusetts"); remote.modifyCatalogueBean(bean); } public void remove() throws RemoteException, SQLException { System.out.println("Removing ... "); String isbn = "0-201-47967-2"; remote.removeCatalogueBean(isbn); } public void view() throws RemoteException, SQLException, NullPointerException { System.out.println("Displaying ... "); String isbn = "0-201-47967-2"; CatalogueBean bean = remote.findCatalogueBean(isbn); System.out.println("ISBN : " + bean.getIsbn()); System.out.println("Title : " + bean.getTitle()); System.out.println("Author : " + bean.getAuthor()); System.out.println("Publisher : " + bean.getPublisher()); System.out.println("City : " + bean.getCity()); System.out.println("Year : " + bean.getYear()); System.out.println("Last Updated On : " + bean.getLastUpdatedOn()); } } Penyiapan Lingkungan Langkah 7 : Bukalah sebuah console Untuk menghidupkan RMI Registry, bukalah sebuah console, dan jalankan rmiregistry. $ export PATH=/home/lab/jdk1.3.1_01/bin:$PATH $ rmiregistry Langkah 8 : Menuliskan security policy grant { permission java.net.SocketPermission "*:1024-65535", "connect,accept"; permission java.io.FilePermission "/home/lab/kinabalu/-", "read"; }; Simpanlah sebagai kinabalu.policy di directory yang dipersiapkan sebelumnya. Meng-compile dan Meluncurkan Server Langkah 9 : Bukalah sebuah console Anda akan meng-compile dan meluncurkan aplikasi dari console. Untuk dapat sukses melakukan kompilasi dan meluncurkan aplikasi, Anda harus menge-set setidaknya dua buah variabel lingkungan dalam Operating System Anda, yaitu : Variabel lingkungan PATH harus memuat directory dimana perintah java dan javac. Contoh untuk menge-set variabel lingkungan PATH : $ export PATH=/home/lab/jdk1.3.1_01/bin:$PATH Variabel lingkungan CLASSPATH harus memuat directory di mana file .class dari aplikasi Anda berada. Contoh untuk menge-set variabel lingkungan CLASSPATH : $ export CLASSPATH=/home/lab/kinabalu Dan Anda perlu memasukkan JDBC terkait, yaitu JDBC ke mySQL, ke dalam CLASSPATH : $ export CLASSPATH=/home/lab/lib/mm.mysql-2.0.8/mm.mysql-2.0.8-bin.jar:$CLASSPATH Langkah 10 : Meng-compile CatalogueDAORMIServerApp.java Melalui console, jalankan javac : $ javac -sourcepath /home/lab/kinabalu net/developerforce/amazon/catalogue/app/CatalogueRMIServerApp.java Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file CatalogueBean.class, CatalogueDAO.class, CatalogueRemote.class, CatalogueRemoteImpl.class dan CatalogueRMIServerApp.class Langkah 11 : Men-generate stub dan skeleton menggunakan rmic Melalui console, jalankan rmic : $ rmic -d . net.developerforce.amazon.catalogue.rmi.CatalogueRemoteImpl Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file CatalogueRemoteImpl_Skel.class dan CatalogueRemoteImpl_Stub.class di dalam directory /home/lab/kinabalu/net/developerforce/amazon/catalogue/rmi Langkah 12 : Meluncurkan aplikasi CatalogueDAORMIServerApp Untuk meluncurkan aplikasi Anda, melalui console, jalankan java : $ java -Djava.rmi.server.codebase=file:/home/lab/kinabalu/ -Djava.rmi.server.hostname=localhost -Djava.security.policy=kinabalu.policy net.developerforce.amazon.catalogue.app.CatalogueRMIServerApp Meng-compile dan Meluncurkan Client Langkah 13 : Bukalah sebuah console lainnya Anda akan meng-compile dan meluncurkan aplikasi dari console. Untuk dapat sukses melakukan kompilasi dan meluncurkan aplikasi, Anda harus menge-set setidaknya dua buah variabel lingkungan dalam Operating System Anda, yaitu : Variabel lingkungan PATH harus memuat directory dimana perintah java dan javac. Contoh untuk menge-set variabel lingkungan PATH : $ export PATH=/home/lab/jdk1.3.1_01/bin:$PATH Variabel lingkungan CLASSPATH harus memuat directory di mana file .class dari aplikasi Anda berada. Contoh untuk menge-set variabel lingkungan CLASSPATH : $ export CLASSPATH=/home/lab/kinabalu Langkah 14 : Meng-compile CatalogueRMITestClientApp.java Melalui console, jalankan javac : $ javac -sourcepath /home/lab/kinabalu net/developerforce/amazon/catalogue/app/ CatalogueRMITestClientApp.java Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file CatalogueRMITestClientApp.class. Langkah 15 : Meluncurkan aplikasi CatalogueRMITestClientApp Untuk meluncurkan aplikasi Anda, melalui console, jalankan java : $ java -Djava.rmi.server.hostname=localhost -Djava.security.policy=kinabalu.policy net.developerforce.amazon.catalogue.app.CatalogueRMITestClientApp Creating ... Displaying ... ISBN : 0-201-47967-2 Title : Customer-centered Growth : 5 Proven Strategies For Building Competitive Advantage Author : Richard Whiteley Publisher : Addison Wesley Publishing Company City : Massachusetts Year : 1996 Last Updated On : Sat Aug 17 00:00:00 SGT 2002 Modifying ... Displaying ... ISBN : 0-201-47967-2 Title : Customer-centered Growth : 5 Proven Strategies For Building Competitive Advantage Author : Richard Whiteley Publisher : Addison Wesley Publishing Company City : Reading, Massachusetts Year : 1996 Last Updated On : Sat Aug 17 00:00:00 SGT 2002 Removing ...

Selasa, 02 Oktober 2007

12.000 mahasiswa untuk tumbal JENI

Jakarta - JENI diharapkan akan menjaring 12.000 mahasiswa dalam waktu satu tahun. Sebanyak 58 kampus pun telah disiapkan untuk memenuhi target ini. Siapa sih JENI?

JENI adalah singkatan dari Java for Education Network in Indonesia. Program yang dikembangkan oleh berbagai pihak, termasuk Departemen Pendidikan Nasional dan Java User Group Indonesia, ini merupakan sistem belajar online bahasa pemrograman Java.

JENI merupakan bagian dari program Jaringan Pendidikan Nasional (Jardiknas) yang berupaya menghubungkan institusi pendidikan di seluruh Indonesia ke internet. Program ini mulai diperkenalkan pada publik lewat gelaran Java Night Festival (JNF) di Kampus Universitas Gunadarma, Depok, yang berlangsung Jumat 3 Agustus 2007 hingga Sabtu 4 Agustus 2007.

Kepala Biro Perencanaan dan Kerjasama Luar Negeri Departemen Pendidikan Nasional, Gatot Hari Priowirjanto, mengatakan program JENI ini dikembangkan bersama-sama untuk diterapkan di 58 perguruan tinggi. Ia berharap JENI bisa menjaring hingga 12.000 mahasiswa dalam satu tahun.

Nantinya, mahasiswa yang mengikuti JENI akan mendapatkan sertifikasi untuk setiap tingkatan JENI yang dilaluinya. Saat ini JENI disebut terdiri atas enam tingkatan, mulai dari pengenalan Java hingga pemrograman game di Java.

Matt Thompson, Director Technology Outreach and Open Source Programs Office Sun Microsystem, mengatakan sebenarnya program ini terdiri dari sembilan tingkat. "Bahkan nantinya akan menjadi 10 tingkat," tuturnya ketika ditemui wartawan pada gelaran JNF.

Sertifikasi Internasional

Program JENI, ujar Matt, dikembangkan dengan mengacu pada program sejenis di Filipina. Program bernama JEDI tersebut, ujar Matt, juga sedang dipelajari oleh Vietnam, Thailand, dan Malaysia. Sedangkan Brasil, sama seperti Indonesia, sudah mulai menerapkannya.

Harry Kaligis, General Manager Business Development Sun Microsystem Indonesia, mengatakan nantinya akan ada sertifikasi kelas internasional yang disubsidi oleh Sun Microsystem. Ujian untuk mendapatkan sertifikasi ini bisa diikuti oleh pemegang sertifikasi JENI.

Namun, Harry belum bisa memastikan berapa biaya sertifikasi tersebut. "Normalnya, jika tidak disubsidi, itu US$ 150. Kita sedang hitung, supaya bisa sekitar US$ 50 saja. Pokoknya cukup signifikan lah," paparnya.

Mengutip data Asosiasi Piranti Lunak Telematika Indonesia, Harry mengatakan rata-rata ada kebutuhan 2000-3000 orang programmer dengan kemampuan Java per tahun. "Di Indonesia memang banyak yang tahu Java. Tapi kalau kita bicara kualitas, ya belum sesuai dengan standardisasi dari Sun," ujarnya.

Salah satu poin keunggulan JENI, ujar Matt, adalah adanya sertifikasi dan kurikulum yang diakui secara global. Matt pun yakin lulusan program JENI akan menjadi sumberdaya bernilai tinggi di perusahaan.

"Bahkan beberapa di antara mereka akan memiliki ide yang hebat dan memilih untuk menolak tawaran kerja dan mengembangkan ide itu menjadi usaha sendiri. Kita lihat setelah program ini berjalan, jumlah perusahaan software asal Indonesia akan bertambah," ujarnya yakin.

Keterangan Foto: Gatot Hari Priowirjanto (kiri) dan Matt Thompson (kanan). Sumber: Dokumentasi Sun Microsystem Indonesia. ( wsh / wsh )

Konsep OOP di Java

Konsep OOP di Java

Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entiti) dari suatu permasalahan adalah objek. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, tengoklah sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep.

Objek
Dalam penjelasan mengenai analogi, kita sudah menyinggung mengenai objek. Sekarang kita akan mengupas lebih dalam tentang objek sebagai konsep kunci dari pemrograman berorientasi objek.

Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil memiliki state warna, model, tahun pembuatan, kondisi, dll. Sedang behaviour adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok, membunyikan klakson, dll. Objek menyimpan statenya dalam satu atau lebih variabel, dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan metode-metode yang berhubungan dengan variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

Message (Pesan)
Objek-objek yang bekerja sama membentuk suatu sistem harus saling berkomunikasi untuk menjalankan sistem tersebut. Dalam sebuah program, objek-objek berkomunikasi satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin memanggil metode dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang meminta objek tujuan untuk menjalankan metode yang dikehendaki. Pesan ini akan berisi informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan tadi.

Sebuah pesan dibentuk oleh informasi berikut ini: 1) objek yang dituju; 2) nama metode yang ingin dipanggil; 3) parameter yang dibutuhkan metode tersebut. Misalnya:

anotherObject.aMethod(parameter1);
Bila sebuah objek ingin memanggil metode miliknya sendiri, maka informasi pertama adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Java digunakan kata kunci this. Maka contoh sebelumnya akan menjadi:

this.aMethod(parameter1);
Atau kita dapat menghilangkan informasi pertama sehingga menjadi:

aMethod(parameter1);
karena bila informasi pertama tidak ada, kompiler akan secara otomatis menunjuk ke objek itu sendiri.

Ada dua keuntungan dalam penggunaan pesan, yaitu: 1) semua kebutuhan interaksi antarobjek dapat dilakukan; 2) objek-objek yang saling berinteraksi tidak harus berada dalam satu proses atau bahkan dalam satu komputer.

Kelas
Kelas adalah semacam cetakan, atau template, untuk membuat objek. Ibaratkan sebuah rancangan rumah yang digunakan untuk membangun ratusan rumah. Rumah yang dibangun tersebut adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan karena semua objek rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprint­nya. Tetapi objek-objek yang dibangun tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program, atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita definisikan kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.

Sebagai contoh, misalkan kita ingin membuat kelas Rumah, maka kita harus membuat sebuah kelas yang mendefinisikan semua variabel yang dimiliki objek dari kelas tersebut. Selain itu, kelas tersebut juga harus mendeklarasikan metode-metode yang dimiliki objek dari kelas dan juga membuat implementasi dari metode tersebut. Dengan adanya kelas ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.

Setelah mengenal konsep kelas, saatnya Anda dikenalkan dengan variabel kelas. Variabel kelas sebenarnya sama dengan variabel instans. Bedanya adalah, setiap objek berbagi satu dan hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap objek Rumah terdiri atas 2 lantai. Maka informasi ini cukup disimpan satu kali, karena nilainya tidak berbeda untuk semua objek. Lebih jauh, bila ada satu objek yang mengubah nilai dari variabel kelas, maka semua objek sejenis lainnya akan mengikuti perubahan itu. Di samping variabel, terdapat juga metode kelas. Metode jenis ini dapat langsung dipanggil melalui kelas dan bukan dari instans kelas tersebut.

Pewarisan
Terminologi asing untuk pewarisan adalah inheritance. Mungkin dalam literatur lain Anda akan sering menjumpai istilah ini. Secara gamblang, pewarisan berarti sebuah kelas mewarisi state dan behaviour dari kelas lain. Sebagai contoh, sebuah kelas RumahMewah akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas RumahSederhana. Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.

Seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya. Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau behaviournya. Misalkan, pada kelas Rumah tidak terdapat variable kolamRenang, namun subkelas RumahMewah memiliki variabel tersebut. Contoh lain misalnya kelas Rumah tidak memiliki metode nyalakanAlarm, namun rumah mewah memiliki metode itu.

Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas SepedaBalap memiliki implementasi metode ubahGigi yang berbeda dengan implementasi metode tersebut pada superkelas Sepeda.

Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu, subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus.

Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua objek untuk dapat dijalankan di Java Virtual Machine. Sebagai contoh, semua kelas mewarisi metode toString dari kelas Object, yang mengembalikan representasi String dari objek tersebut.

Manfaat penggunaan konsep pewarisan antara lain: pertama, kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas. Kedua, kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret, mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-masing.

Sedikit penjelasan mengenai kelas abstrak, kelas ini bisa memiliki hanya satu atau lebih metode abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan implementasi untuk metode-metode abstrak tersebut. Sebagai akibat dari keberadaan metode abstrak ini, kelas abstrak tidak dapat diinstanskan (dibuatkan instansnya) atau digunakan untuk menciptakan sebuah objek dari kelas tersebut.

Interface
Arti harfiah dari interface adalah antarmuka, yaitu suatu alat untuk digunakan benda-benda yang tidak terhubung secara langsung untuk berinteraksi. Dalam bahasa pemrograman, interface digunakan oleh berbagai objek yang tidak terhubung untuk saling berinteraksi. Jadi dalam bahasa pemrograman, interface dapat didefinisikan sebagai koleksi definisi metode-metode dan variabel-variabel konstan, namun tanpa implementasi. Implementasi akan dilakukan oleh kelas-kelas yang mengimplements interface ini. Tanpa implementasi di sini tidak seperti pada kelas abstrak yang merupakan metode-metode yang tidak melakukan apa-apa, melainkan hanya sekedar nama metode saja.

Sebelumnya telah dijelaskan bahwa sebuah kelas tidak dapat menjadi subkelas dari beberapa superkelas, melainkan hanya bisa menjadi subkelas dari satu superkelas saja. Hal ini membuat desain program lebih rapi dan teratur, sehingga dapat mengurangi kompleksitas program. Namun, terkadang hal ini dapat menjadi suatu halangan yang tidak menyenangkan, yaitu saat kita membutuhkan suatu kelas yang memiliki sifat-sifat dari dua atau lebih kelas lain. Pada masalah seperti ini, interface dapat memberikan alternatif jalan keluar.

Dengan adanya interface maka beberapa kelas akan dapat menangani interaksi yang sama namun dengan behaviour yang bisa berbeda. Misalnya beberapa kelas mengimplementasi sebuah interface yang sama, maka kelas-kelas tersebut dapat menangani interaksi sesuai interface tersebut, namun tiap kelas dapat memiliki implementasi yang berbeda-beda.

Begitu juga bila sebuah kelas mengimplementasi banyak interface, maka kelas tersebut akan dapat menangani interaksi-interaksi sesuai salah satu interface yang diimplement oleh kelas tersebut. Namun, kelas tersebut harus mengimplementasi sendiri behaviournya. Di sinilah letak perbedaan penggunaan interface dengan multiple inheritance. Dalam multiple inheritance, layaknya single inheritance, subkelas tidak harus mengimplementasikan sendiri behaviournya karena secara default kelas tersebut akan mengikuti behaviour superkelasnya.

Penutup
Tutorial kali ini memang hanya membahas konsep, jadi wajar bila anda merasa tutorial kali ini terlalu teoritis. Namun jangan kecewa dulu, karena di tutorial berikutnya kita akan membahas lebih jauh mengenai kelas dan objek, interface, pewarisan, dan metode dalam bahasa Java. Sambil menunggu anda punya banyak waktu untuk memahami konsep yang dibahas di atas.

The Java Tutorials describe features that are new for Java SE 6. For best results, download JDK 6

The Java Tutorials describe features that are new for Java SE 6. For best results, download JDK 6.

For supporting Java Platform documentation, see the latest Java SE Platform Guides and API documentation.

Trails Covering the Basics
These trails are available in book form as The Java Tutorial. To buy this book, refer to the box to the right.
Getting Started — An introduction to Java technology and lessons on installing Java development software and using it to create a simple program.
Learning the Java Language — Lessons describing the essential concepts and features of the Java Programming Language.
Essential Java Classes — Lessons on exceptions, basic input/output, concurrency, regular expressions, and the platform environment.
Collections — Lessons on using and extending the Java Collections Framework.
Swing — An introduction to the Swing GUI toolkit, with an overview of features and a visual catalog of components. See below for a more comprehensive tutorial on Swing.
Deployment — How to package applications and applets using JAR files, and deploy them using Java Web Start and Java Plug-in.
Preparation for Java Programming Language Certification — List of available training and tutorial resources.
Creating Graphical User Interfaces
This trail is available in book form as The JFC Swing Tutorial. To buy this book, refer to the box to the right.

--------------------------------------------------------------------------------
As part of the update to JDK 6, the Swing examples are now bundled to be open and run in NetBeans IDE. (Of course you can import the source files into any IDE that you wish.) For more information, see Running Tutorial Examples in NetBeans IDE. Each Swing lesson has a separate Examples Index — for an sample, check out the Using Swing Components Examples Index.
--------------------------------------------------------------------------------

Creating a GUI with Swing — A comprehensive introduction to GUI creation on the Java platform.
Specialized Trails and Lessons
These trails and lessons are only available as web pages.

Custom Networking — An introduction to the Java platform's powerful networking features.
The Extension Mechanism — How to make custom APIs available to all applications running on the Java platform.
Full-Screen Exclusive Mode API — How to write applications that more fully utilize the user's graphics hardware.
Generics — An enhancement to the type system that supports operations on objects of various types while providing compile-time type safety. Note that this lesson is for advanced users. The Java Language trail contains a Generics lesson that is suitable for beginners.
Internationalization — An introduction to designing software so that it can be easily be adapted (localized) to various languages and regions.
JavaBeans — The Java platform's component technology.
JDBC Database Access — Introduces an API for connectivity between the Java applications and a wide range of databases and a data sources.
JMX— Java Management Extensions provides a standard way of managing resources such as applications, devices, and services.
JNDI— Java Naming and Directory Interface enables accessing the Naming and Directory Service such as DNS and LDAP.
RMI — The Remote Method Invocation API allows an object to invoke methods of an object running on another Java Virtual Machine.
Reflection — An API that represents ("reflects") the classes, interfaces, and objects in the current Java Virtual Machine.
Security — Java platform features that help protect applications from malicious software.
Sound — An API for playing sound data from applications.
2D Graphics — How to display and print 2D graphics in applications.

Tutorial Java: O que é Java?

Tutorial Java: O que é Java?
Artigo com 86768 leituras.

1 O que é Java?
Java é uma tecnologia. É um mundo tão grande que ninguém se arrisca a dizer: ? Eu sei Java ?. Basicamente constitui-se de uma linguagem de programação e um programa para execução chamado de máquina virtual ou virtual machine. Quando programa-se em Java usa-se a linguagem de programação Java e um ambiente de desenvolvimento Java para gerar um software que será executado em um ambiente de distribuição Java. Tudo isso é a tecnologia Java.

1.1 O que pode ser feito em Java?
TUDO! Java é uma linguagem que não se prende a nenhuma arquitetura e a nenhuma empresa, é rápida e estável. Pode construir sistemas críticos, sistemas que precisam de velocidade e até sistemas que vão para fora do planeta, como a sonda Spirit enviada pela Nasa para Marte. Java tem um mar de projetos open source, que estão lá, esperando por usuários e desenvolvedores.

Java tem o apoio, a participação e o patrocínio das maiores organizações e empresas de tecnologia do Mundo: Oracle, Sun Microsystems, IBM, Nokia Corporation, Hewlett-Packard, Borland Software Corporation, Apache Software Foundation, SAP AG, SavaJe Tenologies, Apple Computer Inc, Cisco Systems, Fujitsu Limited, Macromedia Inc, Rational Software, Unisys, America Online, Hitachi LTDA, Mitsubishi Eletric Corp, NEC, Sony Internacional, Sharp, Ericsson Inc, Matsushita Eletric, Motorola, Samsung Eletronics, Siemens AG, Symbian, Novell, PalmSource Inc, BEA Systems, Object People e muitas outras.

1.2 Um pouco de história
A tecnologia Java começou a ser criada em 1991 com o nome de Green Project. O projeto era esperado como a próxima geração de software embarcado. Nele trabalhavam James Grosling, Mike Sheridan e Patrik Naughton. Em 1992 surge a linguagem ? Oak ? a primeira máquina virtual implementada. Várias tentativas de negócio foram feitas para vender o ? Oak ? mas nenhuma com sucesso.

Em 1994 surge a internet, a Sun vê uma nova possibilidade para o Green Project e cria uma linguagem para construir aplicativos Web baseada na Oak, a Java. Em 23 de maio de 1995 a linguagem Java é oficialmente lançada na SunWorld Expo 95 com a versão JDK 1.0 alpha. A Netscape aposta na idéia e inicia a implementação de interpretadores Java em seu navegador, possibilitando a criação de Java applets. A partir desta etapa o Java começa a crescer muito.

Em 1997 é lançado a prova da maturidade da tecnolo

De 1998 até hoje a tecnologia evoluiu muito possuindo um dos maiores repositórios de projetos livres do mundo, o java.net. Em 1999 surgiu a plataforma para desenvolvimento e distribuição corporativa batizado de Java 2 Enterprise Edition (J2EE) e a plataforma Java 2 Mobile Edition (J2ME) para dispositivos móveis, celulares, PDAs e outros aparelhos limitados.

Atualmente Java é uma das linguagens mais usadas e serve para qualquer tipo de aplicação, entre elas: web, desktop, servidores, mainframes, jogos, aplicações móveis, chips de identificação, etc.

Você sabia que seu cartão de crédito pode ter um JavaCard?

1.3 Máquina Virtual?
Java é multiplataforma. Quando um programa Java é compilado um código intermediário é gerado, chamado de bytecode. Este bytecode é interpretado pelas máquinas virtuais java (JVMs) para a maioria dos sistemas operacionais. A máquina virtual é a responsável por criar um ambiente multiplataforma, ou seja, se alguém construir um sistema operacional novo, basta criar uma máquina virtual java que traduza os bytecodes para código nativo e pronto! Todas as aplicações java estarão rodando sem problemas.

Entre outras funções, a máquina virtual java também é responsável por carregar de forma segura todas as classes do programa, verificar se os bytecodes aderem a especificação JVM e se eles não violam a integridade e a segurança do sistema.

A figura 1.1 mostra como acontece a compilação e a execução de um programa Java. De um código Java, que está em um arquivo. java, o compilador javac gera o bytecode: um arquivo. class. Após isso uma máquina virtual java executa o bytecode e roda o programa.

Figura 1.1: Compilador e Interpretador Java

Como existe um programa traduzindo um código a cada execução do sistema, poderia-se dizer que Java sempre será mais lenta que as linguagens que geram código nativo do sistema operacional como Delphi, VB ou C + +. Isso era fato até 1996 quando a Sun criou o compilador Just-in-time (JIT) que analisa e retira códigos desnecessários aumentando consideravelmente a velocidade da execução. Atualmente o Java é mais rápido que o próprio C em vários aspectos.

1.4 As três grandes edições
Java se divide em três grandes edições.

Java 2 Standard Edition (J2SE): É a tecnologia Java para computadores pessoais, notebooks e arquiteturas com poder de processamento e memória consideráveis. Várias APIs acompanham esta versão e tantas outras podem ser baixadas opcionalmente no site da Sun. É com elas que a maioria das aplicações são construídas e executadas. O J2SE possui duas divisões:
Java Development Kit (JDK) ou Standard Development Kit (SDK): um conjunto para desenvolvimento em Java e deveria ser instalado apenas pelos desenvolvedores por possuir ferramentas para tal tarefa.
Java Runtime Edition JRE: uma versão mais leve da JDK pois é preparada para o ambiente de execução, ou seja, é esta versão que executará os sistemas construídos com a SDK.
Java 2 Mobile Edition (J2ME): É a tecnologia Java para dispositivos móveis com limitações de memória ou processamento. Possui APIs bem simples e leves para economizar espaço, memória e processamento. São utilizadas para sistemas em celulares, palm tops, pocket pcs, smartphones, javacards e demais dispositivos. O J2ME se divide em dois grupos de bibliotecas. É dividida em dois grupos:
Connected Limited Device Configuration (CLDC): Para celulares e smartphones, que são mais limitados
Connected Device Configuration (CDC): Para Palmtops e Pocket pcs e alguns dispositívos mais poderosos.
Java 2 Enterprise Edition (J2EE): É a tecnologia Java para aplicações corporativas que podem estar na internet ou não. Possui um grande número de APIs onde a segurança é a principal preocupação. É ideal para a construção de servidores de aplicação, integração de sistemas ou distribuição de serviços para terceiros.
Neste tutorial nós iremos estudar apenas a edição J2SE para desenvolvimento de aplicações desktop comuns.

1.5 Java 2 Standard Edition
Podemos analisar na figura 1.2 toda a complexidade da arquitetura J2SE. Este gráfico, mostra todos os recursos que estão disponíveis, incluindo a separação entre JRE e JDK.

Figura 1.2: Arquitetura J2SE

Umas da maiores e, talvez, mais usadas APIs da J2SE é a Swing. Swing é uma biblioteca de classes para a construção de interfaces gráficas em ambiente desktop. Entre as classes existentes estão: Telas, botões, diálogos, mensagens, editores, entre outros. Esta biblioteca será vista logo após a linguagem java.

1.6 Instalação e Execução
O Java está disponível para download no site da Sun: http://java.sun.com/ clicando em J2SE. Agora é só escolher a versão desejada, clicar em downloads e escolher o subgrupo desejado JDK para desenvolvedores ou JRE para usuários finais. Neste site também existe para download o NetBeans, que é uma ferramenta para desenvolvimento Java livre. Para os iniciantes a sugestão é baixar somente o JDK, sem o NetBeans e utilizar algum editor de texto para escrever seus programas. Quando não se usa a IDE o desenvolvedor é forçado a aprender muito mais.

Após escolher o grupo, a licença do Java é mostrada. Aceitando a licença da Sun, aparecerão as verões próprias para cada sistema operacional. Basta escolher o mais apropriado e aguardar o download. A instalação é simples, não é demorada e depende de cada sistema operacional. Geralmente, basta executar o arquivo baixado e seguir as instruções.

Após a instalação pode-se ir até um shell ou um prompt de comando e digitar java - version. O comando fará aparecer a versão da máquina virtual instalada. No diretório de instalação do Java encontra-se uma pasta bin e dentro dela existem várias ferramentas. Na tabela 1.1 Mostra a descrição de algumas delas.

Estas ferramentas são invocadas via linha de comando e são úteis quando queremos independência de ambiente de produção. Utilizando elas, o único recurso necessário é um editor de textos, como um Notepad, para desenvolver o código. Ainda no diretório de instalação do Java, encontra-se uma pasta docs onde estarão todos os documentos necessários para o desenvolvimento. Outros manuais e documentação de APIs podem ser baixadas no site da Sun.

1.7 O compilador javac
O javac é um compilador de código fonte java com uma saída em bytecodes, os. class. É encontrado dentro da pasta bin da instalação. Para executá-lo, siga essas regras:

> javac [opções] [...] Pode-se compilar um ou mais arquivos utilizando as características de cada sistema operacional, como:

> javac MinhaPrimeiraClasse.java > javac MinhaPrimeira. * > javac MeuProjeto Uma série de opções que podem ser utilizadas são mostradas na tabela abaixo:

Opção e descrição - classpath: Especifica o caminho para as classes / bibliotecas. - cp: [caminho] Especifica o caminho para as classes / bibliotecas. - d: [dir] Diretório para armazenar os arquivos compilados. - source: Localização dos fontes para serem compilados. - deprecation: Advertência para funções que não devem ser utilizadas. - g: Compila com tabelas de debug. - nowarn: Desativa as mensagens de Warning. - verbose: Mostra detalhes da compilação. - depend: Compila todos os fontes, incluindo suas dependências. - target: Especifica a versão da JVM que irá executar o programa. - O: Otimização de código para gerar programas mais rápidos. - version: Informa a versão do javac. - help: Pequena ajuda com lista de opções. - X: Opções avançadas de compilação. - J: Passa um parâmetro fixo para o interpretador. 1.8 O interpretador java
O aplicativo java, encontrado na pasta bin da instalação, executa aplicações java compiladas (bytecodes). Para utilizá-lo, siga as instruções:

java [opções] [argumentos de entrada do programa] java [opções] - jar [argumentos de entrada do programa] Exemplo:

> java MinhaPrimeiraClasse > java - jar MeuPrimeiroJar As opções possíveis são listadas na tabela abaixo

Opção Descrição - classpath: Especifica o caminho para as classes / bibliotecas. - cp: Especifica o caminho para as classes / bibliotecas. - verbose: Mostra detalhes da compilação. - version: Informa a versão do javac. - help: Pequena ajuda com lista de opções. - X: Opções avançadas de interpretação. - Xdebug: Permite o uso do depurador. - D =: Definição de propriedades com a chave nome = valor. O interpretador javaw é utilizado opcionalmente em programas gráficos. O java cria uma janela de comandos a cada execução do programa, já o javaw não. Para executar uma applet usa-se o utilitário appletviewer, também encontrado na pasta bin da instalação do java. Neste caso, não é necessário um navegador para a visualização.

2 O que é Java?
Começamos nesta seção a colocar a mão na massa desenvolvendo código, compilando, executando e testando.

A linguagem Java possui um princípio: ? Mantenha-na simples, pois o que é complexo é difícil de construir, testar, depurar, aprimorar e explicar. ? Visando continuar com este princípio, no código 2 está um pequeno e simples exemplo muito conhecido em todas as linguagens. O Olá Mundo! feito em linguagem Java.

// Olá mundo em java.// Arquivo BemVindo.java.public class BemVindo { public static void main(String[] args) { System.out.println("Olá Mundo!"); }} Este código deve ser salvo em um arquivo com o nome BemVindo.java e em seguida deve-se executar: javac BemVindo.java estando na pasta que contém o arquivo. Este comando irá gerar um BemVindo.class que é o ? executável ? do java. Para rodar o programa, basta digitar: java BemVindo. Será impresso na tela do prompt o texto: Olá Mundo!.

Todo código fonte em Java deve ser salvo com a extensão. java. O compilador irá gerar no mínimo um. class para cada. java existente.

Este código não é muito diferente de um código em linguagem C, isto acontece porque a linguagem Java foi criada com base na linguagem C possuindo quase todas as palavras reservadas dela e um conceito que deixa muitos desenvolvedores descontentes: o case-sensitive. Isso mesmo, Java é case-sensitive, portanto maiúsculas são diferentes de minúsculas, ? a ? é diferente de ? A ?.

Ao contrário do C, Java é fortemente tipada, tanto que não existe nenhum tipo de variável primitiva indefinido como o variant do Delphi e não possui ponteiros. Java não possui herança múltipla de classes, diretivas de pré-compilação, modelos (Templates) e nem funções sem classes. A semântica de orientação a objetos é do SmallTalk, uma famosa e antiga linguagem totalmente orientada a objetos.

No java, os comandos são terminados com o sinal de ponto e vírgula ?; ? e os blocos de código tem inicio e tem o seu fim representados pelo uso das chaves ? {? e ?} ? respectivamente. Não existe restrição com espaços em branco, com tabulação ou nova linha, ficando a cargo do desenvolvedor definir o formato do código fonte.

2.1 Explicando o Olá Mundo!
Iniciaremos pela linha 3, public class BemVindo onde existe uma definição de classe. Cada arquivo java tem, pelo menos, uma classe definida e uma classe pública. O nome da classe pública deve ser o mesmo do nome do arquivo, considerando a propriedade case-sensitive da linguagem. Mais a frente será tratado a visibilidade dos identificadores. Por convenção todo a nome de classe deve iniciar com uma letra em maiúscula e a cada nova palavra a primeira letra também deve ser maiúscula, como no exemplo.

Na linha 4, public static void main (String [] args) existe a definição de um método. Este método é essencial para todo o programa java. O método main é o que será chamado para iniciar a execução da aplicação, é o início de tudo. Este método deve ser público public, estático static, sem retorno (void) e deve possuir um array de cadeia de caracteres String [] como parâmetro. Nesta cadeia de caracteres é que virá os argumentos / parâmetros da aplicação. Todos esses conceitos serão vistos mais adiante.

A linguagem Java diferencia os métodos dos atributos pelo uso dos parênteses (e). Nela todos os métodos, sem exceção, usam parênteses tanto na definição quanto no uso, mesmo aqueles que não possuem parâmetros.

Na linha 5, System.out.println (" Olá Mundo! "); existe uma chamada de método. É a primeira e a última linha de código que será executada pelo interpretador Java. System é uma classe que mantém uma série de configurações sobre o sistema que a máquina virtual está executando. Uma dessas configurações é o atributo público out, que define o local onde está a saída padrão. O atributo out é uma variável de escrita da classe PrintStream que possui o método println (). Este método é quem irá enviar a mensagem Olá Mundo! para o prompt ou shell exibir.

2.2 Comentários e documentação
Analisando o código, pode-se constatar que a linha 1 e a linha 2 possuem os caracteres // o que significa que são comentários de programa. Este é o comentário de linha e tudo que estiver depois da // não será compilado. Para fazer um comentário com mais de uma linha, o comentário de bloco, utiliza-se a construção /* e */. Os caracteres /* abrem um bloco de comentário e */ fecham o bloco. Por exemplo:

/* Este é um comentário de bloco para o programa BemVindo.java que apresentará a mensagem Olá Mundo! para quem o executar. */Este tipo de comentário pode-se estender por muitas linhas, quantas o programador achar necessário. Mas não abuse, comentário demais também complica o sistema. As duas maneiras de comentário acima são herdadas das características da linguagem C. Mas a linguagem Java não foi só cópia, ela inventou o conceito de comentário de documentação. Este comentário é específico para quem precisa saber o que o fonte faz sem ver o código, ou seja, é um comentário para documentos. Este tipo de comentário é semelhante ao comentário de bloco, mas abre o bloco com um asterisco a mais: /** e fecha com o mesmo */. Exemplo:

/** Esta classe chamada de BemVindo é simplesmente um Olá Mundo! da linguagem Java. @author Vitor Fernando Pamplona @since 15/01/2005 */public class BemVindo { public static void main(String[] args) { System.out.println("Olá Mundo!"); }} Este tipo de comentário não é compilado pelo javac, mas é considerado por uma outra aplicação, o javadoc que está dentro da pasta bin da instalação do java. O javadoc copia os comentários e compila determinadas tags gerando várias páginas HTML como a figura abaixo. O comentário de documentação deve ser sempre adicionado acima do ítem que se deseja comentar, escrevendo primeiramente o seu texto e após adicionando as tags como no exemplo de código 2.2.

Figura 2.1: HTML gerado do exemplo de código 2.2

Como são geradas páginas HTML o desenvolvedor pode adicionar códigos HTML a vontade na documentação, pois elas serão copiadas e farão o seu papel no arquivo HTML gerado. O JavaDoc compila somente as tags de documentação, iniciadas pela ? @ ?, para melhorar o visual e padronizar a documentação. Entre as tags mais freqüentes estão:

Nome Descrição @ author: Atribui uma classe ou método a um autor. @ since: Data da escrita do código @ version: Versão de determinada classe ou método @ see: Indicação de ? Leia Mais ? @ param: Parametro de um método @ return: Retorno de um método @ throws: Possíveis exceções lançadas que veremos mais a seguir @ deprecated: Componente deve ser removido nas próximas versões 2.3 Convenção da linguagem
Na linguagem Java é utilizada a seguinte convenção para formação de identificadores:

Constantes com todas as letras em maiúsculo: CONSTANTE
Variáveis começam com letra minúscula: variável
Classes começam com letra maiúscula: Classe
Se o nome for composto, cada nome começa com letra maiúscula: variávelComNomeComposto
Esta é a famosa linguagem Java e esta foi a primeira parte do tutorial. Em seguida, veremos algumas das características da linguagem java .

Vitor Fernando Pamplona é bacharel em Ciências da Computação pela Universidade Regional de Blumenau. É entusiasta do Prevayler, da XP e do Software Livre. Participa profissionalmente de um projeto envolvendo Swing, J2EE, EJB, Hibernate e JFreeReport. É lider dos projetos livres Baba XP , SnailDB , JavaFreeCMS , M3GE e RSSNotifier e um dos administradores do portal sobre java e software livre, JavaFree.org

Depdiknas Luncurkan Program JENI

Depdiknas Luncurkan Program JENI
Departemen Pendidikan Nasional (Depdiknas) bekerja sama dengan PT Sun Microsystem dan komunitas aplikasi Java meluncurkan program Java Education Network Indonesia (JENI).

Program ini merupakan tindak lanjut dari upaya pemerintah menggalakkan aplikasi open source di Tanah Air, juga mencari sumber daya manusia (SDM) yang andal dan siap pakai untuk memenuhi kebutuhan di bidang teknologi informasi (TI).

“Program ini ditujukan khususnya kepada generasi muda, mulai pelajar, mahasiswa, dan tenaga pengajar. Melalui program ini kami berharap adanya transfer ilmu pengetahuan dan teknologi (iptek) dari negara lain,” kata Kepala Biro Perencanaan dan Kerjasama Luar Negeri Gatot Hari Priowiryanto di Jakarta usai acara Java Night Festival 2007 , Jumat malam (3/8).

Dia menambahkan, saat ini Depdiknas telah menjalin hubungan 50-80 perguruan tinggi di Tanah Air dan hingga Juli telah terjaring 12.000 mahasiswa. Selain itu, Depdiknas akan melatih 40.000 guru di Tanah Air. Selanjutnya, ilmunya diharapkan ditransfer ke guru lain dan murid-muridnya.

Depdiknas juga kini tengah menjalankan program Jejaring Pendidikan Nasional (Jardiknas), yang memungkinkan sekolah mengakses Internet secara gratis selama satu tahun pertama. “Yang kita biayai adalah back bone- nya. Pada tahun ini kami menganggarkan Rp 50-60 miliar atau meningkat dibanding tahun lalu Rp 40 miliar,” kata Gatot. Saat ini, titik akses mencapai 600 dan akan ditambah menjadi 1.000 titik yang tersebar di seluruh Indonesia.

Sementara itu, Ketua Komunitas Java Indonesia Frans Thumura mengatakan, hingga tahun ini, Depdiknas telah mengeluarkan tidak kurang dari Rp 300 miliar untuk menyukseskan program tersebut. Frans adalah salah satu ahli Java Indonesia yang telah mendapat predikat Java Champion dari Sun Microsystem dan Regional Director dari Oracle. Ia juga masuk sebagai tim ahli dalam program JENI itu.

Program JENI, diharapkan menjadi solusi efektif untuk pendidikan murah. Dengan Jardiknas, pelajar dapat mengakses materi-materi yang diajarkan di sekolah atau perguruan tinggi secara on-line tanpa harus membeli buku pelajaran. Selain untuk pendidikan, Jardiknas dapat dimanfaatkan oleh pelaku usaha mikro kecil dan menengah (UMKM).

“Salah satu tujuan JENI adalah memangkas kesenjangan pendidikan. Saya harap ini bukan suatu yang mustahil diwujudkan,” tegas dia. Java adalah teknologi yang telah digunakan di seluruh dunia untuk aplikasi di komputer, telepon seluler, dan otomotif (navigasi).

Kerja Sama Sun Microsystem

Depdiknas juga menjalin kerja sama dengan beberapa provider lain, seperti Linux dan Ecost yang bekerja sama dengan Kantor Kementerian Negara Riset dan Teknologi (Ristek).

Sementara itu, Director Technology Outsearch Sun Microsystem Matt Thompson mengatakan, Java saat ini telah menjadi sistem standar pengoperasian aplikasi komputer dan ponsel di dunia. Tak kurang dari 85% aplikasi komputer (PC) di dunia menggunakan Java, bahkan 90% aplikasi ponsel menggunakan teknologi ini.

Lembaga survei Evans Research baru-baru ini mengumumkan, Java telah mengalahkan popularitas .NET (dot NET) milik Microsoft.

“Sebagai penggagas awal program ini, kami tetap berkomitmen terhadap pengembangan program ini di Indonesia. Hal ini bukan mengada-ada mengingat sebelumnya kami cukup sukses dengan program JEDI di Filipina. Kami yakin hal itu akan berhasil melihat animo dan progress salama setahun ini sangat pesat,” kata Matt. Sun akan menyediakan software gratis sebagai materi untuk program JENI. (c111)

JENI untuk E-learning

JENI untuk E-learning

Seiring perkembangan teknologi informasi komunikasi (TIK) di Indonesia, pola pendidikan konvensional sepertinya mulai ketinggalan zaman. Penggunaan e-learning kini mulai dibutuhkan pendidikan nasional.

Hal tersebut terkait dengan peluncuran Java Education Network Indonesia (JENI) pada Jumat (3/8) di Universitas Gunadarma. Adapun JENI adalah lanjutan JEDI yang sukses dikembangkan Sun Microsystems di Filipina.

Kepala Biro Perencanaan dan Kerjasama Luar Negeri Departemen Pendidikan Nasional (Depdiknas) Gatot Hari Priowiryanto kepada pers dalam jumpa pers Grand Java Night Festival 2007 mengungkapkan, pemerintah akan membiayai JENI bagi perguruan tinggi (PT) yang tergabung dalam Jardiknas.

Menurutnya, pemerintah akan membiayai back bone. Saat ini, lanjutnya, pembiayaan back bone akan dilakukan bertahap karena masih menunggu proses tender pada tahun ini sekitar Rp 50 hingga 60 miliar.

Gatot mengemukakan, pada tahun lalu mencapai Rp40 miliar. Dia berharap JENI bisa dimanfaatkan semua orang Indonesia dalam e-learning. “E-learning memudahkan proses belajar-mengajar,” katanya.

58 Kampus Disiapkan Jaring 12.000 Mahasiswa Miskin

58 Kampus Disiapkan Jaring 12.000 Mahasiswa Miskin
Penulis: Edwin Tirani
JAKARTA--MIOL: Sebanyak 58 perguruan tinggi di Indonesia tengah disiapkan untuk menjaring 12.000 mahasiswa melalui program Java for Education Network in Indonesia (JENI).

Kepala Biro Perencanaan dan Kerjasama Luar Negeri Departemen Pendidikan Nasional (Depdiknas), Gatot Hari Priowirjanto mengatakan mahasiswa yang mengikuti JENI akan mendapatkan sertifikasi untuk setiap tingkatan JENI yang dilaluinya.

Saat ini JENI terdiri atas enam tingkatan, mulai dari pengenalan Java hingga pemrograman game di Java.

"JENI diharapkan akan menjaring 12.000 mahasiswa dalam waktu satu tahun. Sebanyak 58 kampus pun telah disiapkan untuk memenuhi target ini," ujar Gatot di Jakarta, Senin (6/8).

Depdiknas telah meluncurkan JENI pada acara Grand Java Night Festival di Universitas Gunadarma, Depok, Jumat (3/8).

JENI merupakan sistem belajar online yang mnggunakan bahasa pemograman Java. Program yang merupakan bagian dari Jaringan Pendidikan Nasional (Jardiknas) ini dikembangkan atas kerjasama berbagai pihak.

Sedikitnya 1,5 juta lulusan SLTA sederajat akan melanjutkan ke perguruan tinggi. Akan tetapi, hanya 490.000 orang yang bisa ditampung di seluruh perguruan tinggi di Indonesia.

Sementara sisanya sebanyak 1 juta lebih tidak dapat meneruskan ke universitas dengan berbagai alasan. Misalnya, keterbatasan tempat, calon mahasiswanya tidak mampu membayar uang muka, biaya ujian terlalu mahal, dan banyak hal lagi yang membuat anak kurang mampu ini tidak kebagian tempat.

Sejuta lulusan SLTA sederajat ini yang menjadi perhatian pemerintah terkait dengan bagaimana agar anak-anak ini bisa mendapat pendidikan yang memadai dengan biaya Rp150 ribu per bulan. Salah satu caranya adalah dengan JENI, yang memiliki modul/media Java, kata Gatot.

Nantinya, kata Gatot, dengan program ini sejumlah universitas bisa menampung sejuta lulusan SLTA kurang mampu itu dengan uang kuliah Rp150 ribu per bulan tanpa uang pangkal, tetapi tetap dijamin kompetensinya teratas.

Sehingga pada 2008-2010 anak yang mengenyam pendidikan tinggi (saat ini hanya 490 ribu mahasiswa per tahun) bisa meningkat dari tahun ke tahun. Targetnya, bisa 1 juta, 1,5 juta.

Melalui JENI Depdiknas ini diharapkan anak-anak Indonesia di seluruh kecamatan bisa mempunyai pendidikan yang sama. Program JENI akan menjadi kegiatan berbasis Java bergengsi, baik sekala nasional maupun internasional, sekaligus mencari sumber daya yang handal melalui ajang komunikasi, promosi, edukasi, sharing knowledge sesama penggiat, pengguna dan penggemar teknologi Java.

Pemerintah mengharapkan Perguruan Tinggi Swasta di Indonesia juga membuka kelas baru bagi anak kurang mampu tersebut.

Matt Thompson, Director Technology Outreach and Open Source Programs Office Sun Microsystem, mengatakan sebenarnya program ini terdiri dari sembilan tingkat. "Bahkan nantinya akan menjadi 10 tingkat," tuturnya ketika ditemui wartawan pada gelaran JNF.

Sertifikasi Internasional Program JENI, ujar Matt, dikembangkan dengan mengacu pada program sejenis di Filipina. Program bernama JENI tersebut, ujar Matt, juga sedang dipelajari oleh Vietnam, Thailand, dan Malaysia. Sedangkan Brasil, sama seperti Indonesia, sudah mulai menerapkannya.

Harry Kaligis, General Manager Business Development Sun Microsystem Indonesia, mengatakan nantinya akan ada sertifikasi kelas internasional yang disubsidi oleh Sun Microsystem. Ujian untuk mendapatkan sertifikasi ini bisa diikuti oleh pemegang sertifikasi JENI.

Namun, Harry belum bisa memastikan berapa biaya sertifikasi tersebut. "Normalnya, jika tidak disubsidi, itu US$150. Kita sedang hitung supaya bisa sekitar US$50 saja. Pokoknya cukup signifikanlah," paparnya.

Mengutip data Asosiasi Piranti Lunak Telematika Indonesia, Harry mengatakan rata-rata ada kebutuhan 2.000-3.000 orang programmer dengan kemampuan Java per tahun.

"Di Indonesia memang banyak yang tahu Java. Tapi kalau kita bicara kualitas, ya belum sesuai dengan standarisasi dari Sun," ujarnya.

Salah satu poin keunggulan JENI, ujar Matt, adalah adanya sertifikasi dan kurikulum yang diakui secara global. Matt pun yakin lulusan program JENI akan menjadi sumberdaya bernilai tinggi di perusahaan.

Bahkan beberapa di antara mereka akan memiliki ide yang hebat dan memilih untuk menolak tawaran kerja dan mengembangkan ide itu menjadi usaha sendiri. "Kita lihat setelah program ini berjalan, jumlah perusahaan software asal Indonesia akan bertambah," katanya. (Win/OL-03)

J2EE 1.4 Tutorial for NetBeans IDE

J2EE 1.4 Tutorial for NetBeans IDE

J2EE 1.4 Tutorial for NetBeans IDE The J2EE™ 1.4 Tutorial for NetBeans™ IDE is a guide to developing enterprise applications for the Java 2 Platform, Enterprise Edition (J2EE) version 1.4. This tutorial examines several aspects of J2EE technology and how to quickly and easily code enterprise applications using NetBeans IDE. This tutorial takes select chapters from the J2EE 1.4 Tutorial on java.sun.com and adapts them for use in NetBeans IDE 4.1. You can also use this tutorial with NetBeans IDE 5.0. Each of the examples is set up as a NetBeans project. You just have to open the projects, occasionally resolve the location of a missing JAR file on the classpath, and you can build and deploy the project to the Sun Java System™ Application Server Platform Edition 8.1 without any additional configuration. The chapters also contain instructions on coding the examples using the IDE. The IDE greatly simplifies the process of developing J2EE applications by providing project and file templates that automatically generate all of the needed code. The IDE also automatically updates your deployment descriptors and interfaces as you code your modules.

NetBeans IDE 6.0 Java Quick Start Tutorial

NetBeans IDE 6.0 Java Quick Start Tutorial
Welcome to NetBeans IDE!

This tutorial provides a very simple and quick introduction to the NetBeans IDE workflow by walking you through the creation of a simple "Hello World" Java console application. Once you are done with this tutorial, you will have a general knowledge of how to create, build, and run applications in the IDE.

This tutorial takes less than 10 minutes to complete.

After you finish this tutorial, you can move on to the NetBeans IDE learning trails. The learning trails provide comprehensive tutorials that highlight a wider range of IDE features and programming techniques for a variety of application types. If you do not want to do a "Hello World" application, you can skip this tutorial and jump straight to the learning trails.

Senin, 01 Oktober 2007

yang paling ganas di kuartal pertama yang paling mengigit

1. babon
mengubah properti AM/PM pada jam menjadi tulisan BAbon
2. Aksika
membuat backup msvbvm60, dll. mematikan system restore, aktif di normal mode, safe mode with commad prompt
3. coolface
virus bangka yang ada di c++ dan berusaha membansi semua virus visual basic
4. killav
menyembunyikan semua file Ms. Word dan menganti dgn dirinya.
5. pendekar blank
menyembunykan folder c/windows/system32 dan membuat duplikatnya.
6. pacaran
mengubaj icon file nonvirus di pc korban manjadi file dengan tipe aplication sehingga dikira virus oleh penggunanya sehingga di hapus dan di gantikan oleh dirinya.
7. blue fantasy
otomatis menginfeksi dari flash disk, menyembunyikan folder dan mengantikan dengan file virus duplikat dengan icon folder.

software keamanan NEC mampu mendeteksi 10 perubahan sifat !!!!

SMartCatch 2.5 adalah software yang mampu menditeksi dan mengenali hingga 10 perubahan perilaku penggunanya. peranti ini sangat ideal untuk dipasang di perusahaan yang mengutamakan keamanan yang sangat ketat.software ini disebut-sebut dengan security berbasisi video yang paling pintar dan sangat cangih. akuratnya perangkat ini digunakan untuk menyorot suatu objek yang dianggap rawan, seperti pintu, atau daerah pojok. jika terjadi perilaku yang termasuk ke dalam 10 perilaku yang mencurigakan secara otomatis perangkat ini akan mengaktifkan alarm peringatan.selain itu juga ada aplikasi untuk melindungi data sensitif supaya tidak bocorke pihak luar lewat InfoCAge. jika aplikasi itu dipasang di pc, file yang di top-screet itu tidak bis di copy ke flash disk, di cetak di print dan di kirim lewat e-mail atau sekedar di pindah di destop sekalipun.

kesimpulannya peranti ini sangat cocok untuk dipasang di kantor yang sangat membutuhkan security yang sangat baik, untuk menghindari kecurian data/informasi maupun barang. !!!