Archive

Archive for the ‘Pemrograman Java’ Category

Scala – Mirip Java dan Reliability Scale

19 August 2011 2 comments

Scala adalah bahasa pemrograman general purpose yang dirancang untuk mengungkapkan pola pemrograman umum secara cara ringkas, elegan, dan aman. Scala dapat dengan baik mengintegrasikan fitur bahasa berorientasi obyek dan fungsional, memungkinkan Programmer Java dan lainnya lebih produktif. Kode ukuran biasanya berkurang dengan faktor dua sampai tiga bila dibandingkan dengan aplikasi Java yang setara.

Banyak perusahaan yang telah bergantung pada Java untuk aplikasi bisnis penting meraka beralih ke Scala untuk meningkatkan produktivitas pengembangan mereka, skalabilitas dan kehandalan aplikasi secara keseluruhan.

Read more…

HaXe – Bahasa Pemrograman Lintas Platform

18 August 2011 Leave a comment

Mau cepat dan lebih lengkap? langsung saja ke: http://www.haxe.org

Minggu lalu saya tiba-tiba kenalan dengan bahasa pemrograman “baru”, setidaknya bagi saya, namanya HaXe. Coba baca-baca, dan ternyata menarik sekali. Nah, di sini saya coba posting sedikit tentang apasih HaXe ini.

Read more…

True SE: Web Portal + Search Engine trunojoyo.ac.id

3 January 2011 3 comments

Hampir semua universitas atau perguruan tinggi di Indonesia mempunyai situs, baik untuk level universitas, unit/fakultas, jurusan/program studi sampai dengan laboratorium, dosen, unit kegiatan mahasiswa bahwa blog. Begitu pula pada Universitas Trunojoyo. Makin lama makin banyak informasi yang tersedia pada website-website di bawah domain trunojoyo.ac.id, bukan hanya www.trunojoyo.ac.id.

Sayangnya, ada beberapa hal yang sangat menyusahkan pengunjung mendapatkan informasi secara lengkap dan terpadu dari website-website tersebut. Pertama, situs web utama, www.trunojoyo.ac.id tidak menyediakan akses ke berbagai situs lain yang berada di bawah domain yang sama. Pengunjung harus mengetahui setiap alamat (URL) yang perlu dikunjungi. Kedua, pengunjung tidak dapat mengetahui dimana saja informasi terkait tersedia. Misalnya beasiswa, jika pada situs web Fakultas Teknik terdapat pengumuman beasiswa XYZ, dimana informasi lebih detail atau terkait tersedia? di Fakultas lain atau di Universitas?

Read more…

Membaca Halaman Web per Byte dengan URLConnection

27 December 2010 Leave a comment

Pada dasarnya, stream atau aliran data di jaringan dibaca byte demi byte (karakter demi karakter, satu karakter memerlukan 1 byte memory, 8 bit).

Berikut ini adalah kode program yang dapat digunakan untuk membaca halaman web byte demi byte menggunakan kelas URLConnection:

//Download halaman web menggunakan URL & URLConnection
import java.io.BufferedInputStream;
import java.net.URL;
import java.net.URLConnection;

public class URLConnectionPage {
  public static void main(String[] args) throws Exception {
    URLConnection urlc = new URL("http://localhost").openConnection();

    BufferedInputStream buffer = new BufferedInputStream(urlc.getInputStream());

    int byteRead;
    while ((byteRead = buffer.read()) != -1){
      System.out.print((char) byteRead);
    }
    buffer.close();
  }
}

Jika anda tetap ingin membaca stream data web yang diterima baris demi baris, kode program di bawah ini dapat digunakan. Yang terjadi dibelakang layar tetap, yaitu membaca byte demi byte, perbedaan hanya dari sisi programan:

import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL unijoyo = new URL("http://www.trunojoyo.ac.id/");
        URLConnection yc = unijoyo.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}

Mendapatkan Properti Halaman Web

27 December 2010 Leave a comment

Halaman web, pada sisi client berupa tag HTML dan pendukungnya, menyediakan beberapa properti yang sangat berguna bagi suatu web crawler. Informasi seperti URL, tanggal modifikasi terakhir, jumlah karakter (termasuk white space), jenis content dan Expirenya disediakan oleh Web server.

Kode program berikut memperlihatkan cara mengakses beberapa informasi penting tersebut. Detail dari apa yang disediakan oleh oleh URLConnection untuk keperluan ini dapat dilihat pada dokumentasi Java (J2SE):


//URLConnection.
import java.net.*;
import java.io.*;
import java.util.Date;

class URLConnectionInfo {

    public static void main(String args[]) throws Exception {
        int c;
        URL hp = new URL("http://localhost");
        URLConnection hpCon = hp.openConnection();
        System.out.println("Date: " + new Date(hpCon.getDate()));
        System.out.println("Content-Type: " + hpCon.getContentType());
        System.out.println("Expires: " + hpCon.getExpiration());
        System.out.println("Last-Modified: " + new Date(hpCon.getLastModified()));
        int len = hpCon.getContentLength();
        System.out.println("Content-Length: " + len);
        if (len > 0) {
            System.out.println("=== Content ===");
            InputStream input = hpCon.getInputStream();
            int i = len;
            while (((c = input.read()) != -1) && (--i > 0)) {
                System.out.print((char) c);
            }
            input.close();
        } else {
            System.out.println("No Content Available");
        }
    }
}

Mengakses Web Server dengan URL

27 December 2010 Leave a comment

Contoh di bawah ini mengakses web server menggunakan kelas URL dari paket .net. Sama sebagaimana contoh pemanfaatan kelas socket, kode ini menampilkan isi (dari sisi client) dari halaman HTML yang diakses:


import java.net.*;
import java.io.*;

public class GetURLPage {

    public static void main(String args[]) {

        try {
            URL url = new URL("http://localhost/");

            BufferedReader dis = new BufferedReader(new InputStreamReader(url.openStream()));

            String line;
            while ((line = dis.readLine()) != null) {
                System.out.println(line);
            }

            dis.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
} // akhir dari GetURLPage.java

Mengakses Web Server dengan Socket

27 December 2010 Leave a comment

Kode program singkat di bawah ini memperlihatkan cara mengakses suatu web site dan mengambil contentnya:


import java.io.*;
import java.net.*;

public class GetSocketPage {

    public static void main(String args[]) throws IOException {
        //bangun koneksi ke server web, port 80
        Socket sock = new Socket("trunojoyo.ac.id", 80);

        //siapkan saluran input & output
        BufferedReader dis = new BufferedReader(new InputStreamReader(sock.getInputStream()));
        PrintStream ps = new PrintStream(sock.getOutputStream());

        //kirim pesan GET ke server web
        ps.println("GET /index.html");
        String line;

        //baca baris demi baris file index.html, cetak ke screen
        while ((line = dis.readLine()) != null) {
            System.out.println(line);
        }

        //tutup koneksi ke server
        sock.close();
    }
} // akhir dari GetSocketPage.java

Hasil eksekusinya akan menampilkan halaman HTML dari web site yang disebutkan, termasuk kode javascript dan CSS yang terdapat dalam halaman HTML tersebut.

Java: Contoh Server + Client Multi-Thread

2 November 2010 2 comments

Contoh server MultiEchoServer ini dapat menerima koneksi dan berinteraksi dengan banyak client pada satu waktu.

/*
 * Program MultiEchoServer
 * server dengan fitur multithread menerima message dari client
 * dan mengirimkannya kembali ke client
 */
package netprog2010;

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class MultiEchoServer {

    private static ServerSocket serverSocket;
    private static final int PORT = 1234;

    public static void main(String[] args) throws IOException {
        try {
            serverSocket = new ServerSocket(PORT);
            System.out.println("Server berjalan, menunggu client...");
        } catch (IOException ioEx) {
            System.out.println("\nTidak dapat mensetup port!");
            System.exit(1);
        }
        do {
            //Menunggu koneksi dari client...
            Socket client = serverSocket.accept();
            System.out.println("\nClient baru diterima.\n");

            //Buat thread untuk menangani komunikasi dengan client ini
            //lewatkan socket yang relevan ke contructor dari  thread ini
            ClientHandler handler = new ClientHandler(client);
            handler.start();    //menjalankan thread yang telah dibuat
        } while (true);
    }
}

class ClientHandler extends Thread {

    private Socket client;
    private Scanner input;
    private PrintWriter output;

    public ClientHandler(Socket socket) {
        //Set up referensi ke socket yang beraosiasi...
        client = socket;
        try {
            input = new Scanner(client.getInputStream());
            output = new PrintWriter(client.getOutputStream(), true);
        } catch (IOException ioEx) {
            //ioEx.printStackTrace();
        }
    }

    public void run() {
        String received;

        do {
            //Terima pesan dari client pada input stream socket...
            received = input.nextLine();
            System.out.println(received);

            //Echo-kan pesan kembali ke client pada stream output socket...
            output.println("[" + received + "]");

            //Ulangi sampai client mengirimkan pesan 'QUIT'...
        } while (!received.equals("QUIT"));
        
        try {
            if (client != null) {
                System.out.println("Menutup koneksi...");
                client.close();
            }
        } catch (IOException ioEx) {
            System.out.println("Penutupan koneksi gagal!");
        }
    }
}

Sedangkan client untuk memanfaatkan server tersebut, pada kelas MultiEchoClient, diperlihatkan pada kode berikut:

/*
 * Program MultiEchoClient
 * Digunakan untuk membangun koneksi ke server MultiEchoServer
 * Mengirimkan pesan teks ke server dan menerima balasannya
 */
package netprog2010;

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class MultiEchoClient {

    private static InetAddress host;
    private static final int PORT = 1234;

    public static void main(String[] args) {
        try {
            host = InetAddress.getLocalHost();
        } catch (UnknownHostException uhEx) {
            System.out.println("\nHost ID tidak ditemukan!\n");
            System.exit(1);
        }
        sendMessages();
    }

    private static void sendMessages() {
        Socket socket = null;
        try {
            socket = new Socket(host, PORT);
            Scanner networkInput = new Scanner(socket.getInputStream());
            PrintWriter networkOutput = new PrintWriter(socket.getOutputStream(), true);

            //Set up stream untuk masukan dari keyboard...
            Scanner userEntry = new Scanner(System.in);
            String message, response;
            do {
                System.out.print("Masukkan pesan ('QUIT' untuk keluar): ");
                message = userEntry.nextLine();

                //Kirim pesan (message)ke server pada output stream socket...
                //Terima respon dari server pada stream input socket...
                networkOutput.println(message);
                response = networkInput.nextLine();

                //Tampilkan respon dari server...
                System.out.println("\nSERVER> " + response);
            } while (!message.equals("QUIT"));
        } catch (IOException ioEx) {
            //ioEx.printStackTrace();
        } finally {
            try {
                System.out.println("\nMenutup koneksi...");
                socket.close();
            } catch (IOException ioEx) {
                System.out.println("Gagal menutup koneksi!");
                System.exit(1);
            }
        }
    }
}

Selamat mencoba, semoga berfaedah :)

Java: Contoh Server + Client Single Thread

2 November 2010 Leave a comment

Kode dari server, pada kelas EchoServer, adalah sebagai berikut:

package netprog2010;

//Server yang meng-echoe kembali pesan dari client (TCP)
import java.io.*;
import java.net.*;
import java.util.*;

public class EchoServer {

    private static ServerSocket servSock;
    private static final int PORT = 1234;

    public static void main(String[] args) {
        System.out.println("Membuka port...\n");

        try {
            servSock = new ServerSocket(PORT);              //Langkah 1.
        } catch (IOException ioEx) {
            System.out.println("Tidak terhubung ke port!");
            System.exit(1);
        }

        do {
            handleClient();
        } while (true);
    }	// akhir dari metode main()

    private static void handleClient() {
        Socket link = null;                                     //Langkah 2.
        try {
            link = servSock.accept();                           // Langkah 2.
            Scanner input = new Scanner(link.getInputStream()); //Langkah 3
            PrintWriter output = new PrintWriter(link.getOutputStream(), true);

            int numMessages = 0;
            String message = input.nextLine(); 		// Langkah 4.

            while (!message.equals("QUIT")) {
                numMessages++;
                System.out.println("Pesan masuk [" + numMessages + "]: " + message);
                output.println("Pesan " + numMessages + ": " + message);
                message = input.nextLine();
            }

            output.println(numMessages + " pesan yang diterima.");
        } // akhir dari try
        catch (IOException ioEx) {
            //ioEx.printStackTrace();
        } finally {
            try {
                System.out.println("\nMenutup koneksi...");
                link.close(); // Langkah 5.
            } catch (IOException ioEx) {
                System.out.println("Gagal menutup koneksi!");
                System.exit(1);
            }
        } //akhir dari finally
    } // akhir dari handleClient()
} // akhir dari kelas TCPEchoServer

Sedangkan contoh client, diperlihatkan sebagai kelas EchoClient adalah

package netprog2010;

import java.io.*;
import java.net.*;
import java.util.*;

public class EchoClient {

    private static InetAddress host;
    private static final int PORT = 1234;

    public static void main(String[] args) {
        try {
            host = InetAddress.getLocalHost();
        } catch (UnknownHostException uhEx) {
            System.out.println("Host ID not found!");
            System.exit(1);
        }
        accessServer();
    } //akhir dari metode main()

    private static void accessServer() {
        Socket link = null; 				//Langkah 1.
        try {
            link = new Socket(host, PORT); 		//langkah 1.
            Scanner input = new Scanner(link.getInputStream()); 	//Langkah 2.
            PrintWriter output = new PrintWriter(link.getOutputStream(), true); //Langkah 2.

            //Set up stream untuk input dari keyboard
            Scanner userEntry = new Scanner(System.in);
            String message, response;

            do {
                System.out.print("Masukkan pesan (QUIT untuk keluar): ");
                message = userEntry.nextLine();
		output.println(message);        //Langkah 3.
		response = input.nextLine();    //Langkah 3.
		System.out.println("\nSERVER> " + response);
            } while (!message.equals("QUIT"));
        } catch (IOException ioEx) {
            //ioEx.printStackTrace();
        } finally {
            try {
                System.out.println("\nMenutup koneksi...");
                link.close(); 			//Langkah 4.
            } catch (IOException ioEx) {
                System.out.println("Gagal menutup koneksi!");
                System.exit(1);
            }
        }
    } //akhir metode accessServer
}  //akhir kelas TCPEchoClient

Semoga bermanfaat :)

Program Java: Membaca MAC Address

20 October 2010 1 comment

Bagaimana mendapatkan MAC addres dari suatu interface jaringan, Ethernet card misalnya? Java (1.6 ke atas) menghadirkan metode bernama getHardwareAddress() yang disediakan oleh kelas NetworkInterface dalam paket java.net. MAC Address yang dihasilkan masih dalam bentuk array BYTE, sehingga harus dikonversi ke bentuk HEXA agar sesuai dengan standard yang selama ini berlaku.

Silakan tulis dan coba kelas MACAddress di bawah ini:

/*
 * Program kecil untuk mendapatkan alamat hardware
 * dari suatu interface ber-IP address.
 * untuk mencoba program ini, pastikan interface aktif.
 */
package netprog2010;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class MACAddress {

    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getLocalHost();
            //InetAddress address = InetAddress.getByName("172.16.1.8");

            //Ambil NetworkInterface dari host dan baca alamat hardware (MAC)nya
            NetworkInterface ni = NetworkInterface.getByInetAddress(address);
            if (ni != null) {
                byte[] mac = ni.getHardwareAddress();
                if (mac != null) {
             
                    //Ekstrak setiap array dari mac dan konversi ke hexa
                    //mengikuti format 08-00-27-DC-4A-9E.
                    System.out.print("MAC Address dari interface " + address + " adalah ");
                    for (int i = 0; i < mac.length; i++) {
                        System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
                    }
                    System.out.println();
                } else {
                    System.out.println("Address tidak ada atau tidak dapat diakses.");
                }
            } else {
                System.out.println("Network Interface untuk alamat tersebut tidak ditemukan.");
            }
        } catch (UnknownHostException e) {
            //e.printStackTrace();
        } catch (SocketException e) {
            //e.printStackTrace();
        }
    }
}

Contoh hasil eksekusi adalah:

MAC Address dari interface d3tmj-PC/172.16.1.8 adalah 00-21-CC-4C-E3-9F

OK, semoga bermanfaat :)

Follow

Get every new post delivered to your Inbox.