Selasa, 01 Mei 2012

Pemrograman Socket


Program untuk mengetahui IP.


Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama getIP.java

import java.net.*;

public class getIP
{
public static void main(String args[]) throws Exception
{
  InetAddress host = null;
  host = InetAddress.getLocalHost();
  byte ip[] = host.getAddress();
  for (int i=0; i
  {
    if (i > 0)
    {
      System.out.print(".");
     }
     System.out.print(ip[i] & 0xff);
  }
    System.out.println();
}
}


Program untuk mengetahui Host Name.

Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama getName.java

import java.net.*;

public class getName
{
  public static void main(String args[]) throws Exception
  {
    InetAddress host = null;
    host = InetAddress.getLocalHost();
    System.out.println("Nama komputer Anda: "+
    host.getHostName());
  }
}


Program untuk mengetahui Host Name melalui IP.

Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama IPtoName.java

import java.net.*;

public class IPtoName
{
  public static void main(String args[])
  {
    if (args.length == 0)
    {
      System.out.println("Pemakaian: java IPtoName ");
      System.exit(0);
    }
    String host = args[0];
    InetAddress address = null;

    try
    {
      address = InetAddress.getByName(host);
    }
      catch (UnknownHostException e)\
      {
        System.out.println("invalid IP - malformed IP");
        System.exit(0);
      }
      System.out.println(address.getHostName()); 
  }
}


Program untuk mengetahui IP melalui Host Name.


Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama NsLookup.java


import java.net.*;

public class NsLookup
{
  public static void main (String args[])
  {
    if (args.length == 0)
    {
      System.out.println("Pemakaian: java NsLookup ");
      System.exit(0);
    }

  String host = args[0];
  InetAddress address = null;

  try
  {
    address = InetAddress.getByName(host);
  }
  catch(UnknownHostException e)
  {
    System.out.println("Unknown host");
    System.exit(0);
  }
  byte [] ip = address.getAddress();
  for (int i=0; i
  {
    if (i > 0) System.out.print(".");
    System.out.print((ip[i]) & 0xff);
  }

  System.out.println();
  }
}


Program Server Client.


Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama simpleServer.java

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

public class simpleServer
{
  public final static int TESTPORT = 5000;
  public static void main(String args[])
  {
    ServerSocket checkServer = null;
    String line;
    BufferedReader is = null;
    DataOutputStream os = null;
    Socket clientSocket = null;
    
    try
    {
      checkServer = new ServerSocket (TESTPORT);
      System.out.println("Aplikasi Server hidup... ");
    }
    catch (IOException e)
    {
      System.out.println(e);
    }
    
    try
    {
      clientSocket = checkServer.accept();
      is = new BufferedReader (new InputStreamReader(clientSocket.getInputStream()));
      os = new DataOutputStream(clientSocket.getOutputStream());
    }
    catch (Exception ei)
    {
      ei. printStackTrace();
    }
    try
    {
      line = is.readLine();
      System.out.println ("Terima : " + line);
      if (line.compareTo("salam") == 0 ) {
      os.writeBytes("salam juga");
    }
    else
    {
      os.writeBytes("Maaf, saya tidak mengerti");
    }
    }
    catch (IOException e)
    {
      System.out.println(e);
    }

    try
    {
      os.close();
      is.close();
      clientSocket.close();
    }
    catch (IOException ic)
   {
      ic.printStackTrace();
    }
  }
}

Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama simpleClient.java

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

public class simpleClient
{
  public final static int REMOTE_PORT = 5000;
  public static void main (String args[]) throws Exception
  {
    Socket cl = null;
    BufferedReader is = null;
    DataOutputStream os = null;
    BufferedReader stdin = new BufferedReader(new
    InputStreamReader(System.in));
    String userInput = null;
    String output = null;

// Membuka koneksi ke server pada port REMOTE_PORT 
  try
  {
    cl = new Socket(args[0], REMOTE_PORT);
    is = new BufferedReader(new 
    InputStreamReader(cl.getInputStream ()));
    os = new DataOutputStream(cl.getOutputStream());
  }
    catch(UnknownHostException e1)
  {
    System.out.println("Unknown Host: " + e1);
  }
  catch (IOException e2)
  {
    System.out.println("Erorr io: " + e2);
  }

// Menulis ke server
  try
  {
    System.out.print("Masukkan kata kunci : ");
    userInput = stdin.readLine() ;
    os.writeBytes(userInput + "\n");
  }
  catch (IOException ex)
  {
    System.out.println("Error writing to server... " + ex);
   }

// Menerima tanggapan dari server
  try
  {
  output = is.readLine() ;
  System.out.println("Dari server: " + output);
  }
    catch (IOException e)
  {
    e.printStackTrace() ;
  }

// close input stream, output stream dan koneksi
  try
  {
    is.close();
    os.close();
    cl.close();
  }
    catch (IOException x)
  {
    System.out.println("Error writing...." + x);
  }
  }
}


Program Data Server Client.

Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama Staff.java

import java.io.*; 

public class Staff implements Serializable
  String nama; 
  String divisi; 
  int    umur; 

  public Staff(String nama, String divisi, int umur) 
 { 
   this.nama=nama; 
   this.divisi=divisi; 
   this.umur= umur; 
  } 

  public void print() 
 { 
    System.out.println("Data Staff: "); 
    System.out.println("Nama : " + nama); 
    System.out.println("Divis: " + divisi); 
    System.out.println("Umur : "+ umur); 
  } 
}

Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama ObjectClient.java

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

public class ObjectClient
  private static int SRV_PORT = 5000; 
  private static ObjectOutputStream os=null; 

  public static void main(String argv[]) throws Exception{ 
   try
  { 
    //membuat soket client 
    Socket soketClient= new Socket("127.0.0.1", SRV_PORT); 
    
    //membuat stream untuk pengiriman obyek 
    os= new 
    ObjectOutputStream(soketClient.getOutputStream()); 
    
    //membuat obyek dan mengirimkannya lewat stream obyek 
    Staff pegawai= new Staff("Hendry","IT",30); 
    os.writeObject(pegawai); 
    
    System.out.println("Client mengirim data pegawai:"); 
    pegawai.print(); 
   } 
     catch(Exception e){ 
     e.printStackTrace(); 
   } 
 } 
}


Ketikan listing program dibawah ini pada notepad, kemudian save dengan nama ObjectServer.java

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

public class ObjectServer
  private static int SRV_PORT=5000; 
  private static ObjectInputStream is=null; 

  public static void main(String argv[]) throws Exception
  { 
    //membuat soket server dan menunggu koneksi 
    ServerSocket soketServer= new ServerSocket(SRV_PORT); 
    Socket soketClient= soketServer.accept(); 

    //membuat stream untuk baca obyek 
    is= new ObjectInputStream(soketClient.getInputStream()); 

    //menunggu dan membaca obyek yang dikirimkan   
    Staff pegawai= (Staff) is.readObject(); 
    
    System.out.println("Server menerima data Pegawai"); 
   pegawai.print();
 } 
}

Jumat, 06 April 2012

Kinerja Komputasi dengan Parallel Processing

Kinerja Komputasi dengan Parallel Processing

Komputasi Paralel merupakan salah satu teknologi paling menarik sejak ditemukannya komputer pada tahun 1940-an. Terobosan dalam pemorosesan parallel selalu berkembang dan mendapatkan tempat disamping teknologi-teknologi lainnya sejak Era Kebangkitan (1950-an), Era Mainframe (1960-an), Era Minis (1970-an), Era PC (1980-an), dan Era Komputer Paralel (1990-an). Dengan berbagai pengaruh atas perkembangan teknologi lainnya, dan bagaimana teknologi ini mengubah persepsi terhadap komputer, dapat dimengerti betapa pentingnya komputasi parallel itu.
Pemrosesan paralel dapat mempersingkat waktu eksekusi suatu program dengan cara membagi suatu program menjadi bagian yang lebih kecil agar dapat dikerjakan pada masing-masing prosesor secara bersamaan. Performa dalam pemrosesan paralel diukur dari beberapa banyak peningkatan kecepatan yang diperoleh dalam menggunakan teknik paralel. Pada proses kerja pemrosesan paralel yaitu membagi beban kerja dan mendistribusikannya pada komputer-komputer lain yang terdapat dalam sistem untuk menyelesaikan masalah. Sistem yang akan dibangun tidak akan menggunakan komputer yang didedikasikan secara khusus untuk keperluan pemrosesan paralel melainkan menggunakan komputer yang telah ada. Maksudnya sistem ini akan terdiri dari sejumlah komputer dengan spesifikasi berbeda yang akan bekerja sama untuk menyelesaikan suatu masalah.
Komputasi paralel adalah salah satu teknik untuk melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Oleh karena itu semakin banyak hal yang bisa dilakukan secara bersamaan dalam waktu yang sama, semakin banyak pekerjaan yang bisa diselesaikan. Pada komputasi paralel dibutuhkan saat kapasitas yang diperlukan sangat besar untuk memproses komputasi yang banyak. Di samping itu pemakai harus membuat pemrograman paralel untuk dapat merealisasikan komputasi. Pemrograman paralel memiki tujuan utama yaitu untuk meningkatkan performa komputasi.
Komputasi paralel merupakan salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer juga secara bersamaan. Inti dari komputasi parallel yaitu hardware, software, dan aplikasinya. Paralel prosesing merupakan suatu pemrosesan informasi yang lebih mendekatkan pada manipulasi rata-rata dari elemen data terhadap satu atau lebih penyelesaian proses dari sebuah masalah. Dengan kata lain komputasi parallel adalah komputer dengan banyak processor dapat melakukan parallel processing dengan cara membagi-bagi proses ke source-source yang dimiliki.
Paradigma pemrosesan parallel bergantung pada model SIMD (single instruction multiple data), dan paradigma functional dataflow yang memperkenalkan konsep model MIMD (Multiple Instrution Multiple Data). Suatu program parallel memerlukan koordinasi ketika sebuah tugas bergantung pada tugas lainnya. Ada dua macam bentuk koordinasi pada komputer parallel : asynchronous dan synchronous. Bentuk synchronous merupakan koordinasi pada hardware yang memaksa semua tugas agar dilaksanakan pada waktu yang bersamaan dengan mengesampingkan adanya ketergantungan tugas yang satu dengan yang lainnya. Sementara bentuk asynchronous mengandalkan mekanisme pengunci untuk mengkoordinasikan processor tanpa harus berjalan bersamaan.
Konsep keparalelan itu sendiri dapat ditinjau dari aspek design mesin paralel, perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan kepada algoritma untuk menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang sangat tinggi.
Kemampuan sistem paralel tergantung dari kemampuan pemrogram untuk membuat aplikasi terdistribusi ketika dijalankan pada sistem paralel. Jika node slave mempunyai prosessor lebih dari satu maka pemrogram harus memperhitungkan kemungkinan paralelisme 2 level : Paralelisme di dalam slvae node (intra-node parallelism) dan paralelisme antar slave node (inter-node parallelism). Inter-node parallelism menggunakan shared memory dalam node sehingga tidak melakukan pertukaran data secara explicit. Sedangkan inter-node parallelism melakukan pertukaran data lewat media yang menghubungkan antara node slave yang ada.

Jumat, 23 Maret 2012

Perkembangan Komputer


Komputer merupakan alat yang sekarang menjadi primadona manusia utuk membantu pekerjaannya. Mulai dari mengerjakan pekerjaan kantor sampai mendesain gambar dipermudah oleh komputer. Sehingga tak mengherankan lagi kalau manusia berlomba-lomba menciptakan kreasi baru di bidang komputer, baik dari sisi software maupun hardware.
Komputer berasal dari kata Compute yang berarti menghitung. Sehingga dengan asal kata ini kita dapat mengasumsikan bahwa alat ini pertama kali dibuat karena atas dasar kebutuhan manusia untuk menghitung sesuatu. Karena seiring dengan perkembangan kebutuhan manusia di bidang perhitungan yang semakin kompleks yang tidak cukup hanya dengan perhitungan penambahan, pengurangan, perkalian dan pembagian maka alat hitung (computer) terus dikembangkan. Alat-alat hitung yang mendasari munculnya komputer antara lain :
Abacus
Abacus, yang muncul sekitar 5000 tahun yang lalu di Asia kecil dan masih digunakan di beberapa tempat hingga saat ini, dapat dianggap sebagai awal mula mesin komputasi. Walaupun alat ini memang tergolong purba, tapi inilah sebuah manakarya manusia di bidang alat hitung.
numerical wheel calculator)
Alat yang diciptakan oleh Blaise Pascal ini mulai menggunakan prinsip-prinsip mekanik. Alat ini menggunakan roda bergerigi sehingga dapat melakukan operasi penjumlahan. Alat ini menginspirasi para ilmuwan pada masa itu sehingga terus dikembangkan menjadi alat hitung yang berbasis mekanik.
Mesin uap Babbage
Mesin uap Babbage, walaupun tidak pernah selesai dikerjakan, tampak sangat primitif apabila dibandingkan dengan standar masa kini. Bagaimanapun juga, alat tersebut menggambarkan elemen dasar dari sebuah komputer modern dan juga mengungkapkan sebuah konsep penting. Terdiri dari sekitar 50.000 komponen, desain dasar dari Analytical Engine menggunakan kartu-kartu perforasi (berlubang-lubang) yang berisi instruksi operasi bagi mesin tersebut.
Demikianlah sekelumit tentang kisah penciptaan alat hitung yang mengilhami manusia untuk selalu berusaha menciptakan kreasi baru dan penemuan baru dibidang alat yang dapat membantu mempermudah pekerjaan manusia.
Pada abad ke-20 dimulailah babak baru dalam dunia komputer (yang semula hanya alat hitung), telah berubah menjadi alat yang super komplit dengan berbagai perkembangan yang terus dilakukan. Bahkan pada akhirnya mungkin komputer dapat menggantikan para pekerja di pabrik, perkebunan bahkan mungkin pembantu rumah tangga.
Babak baru dunia komputer mulai tahun 1940-an sampai sekarang dapat dibagi menjadi 5 babak. Semula komputer pada tahun 1940-an merupakan salah satu persaingan teknologi antara sekutu Amerika Serikat dan Jerman. Untuk memenuhi ambisi mereka dalam saling mengalahkan dalam pertempuran, teknologi menjadi salah satu faktor penentunya. Babak perkembangan komputer akan kita bahas sebgai berikut :

 Evolusi komputer selepas tahun 1940 boleh dikelaskan kepada lima generasi.
  1. Generasi Pertama (1940 – 1959)
  2. Generasi Kedua (1959 -1964)
  3. Generasi Ketiga (1964 – awal 80-an)
  4. Generasi Keempat (awal 80-an)
  5. Generasi Kelima (masa depan)

Komputer Generasi Pertama
Mungkin dapat kita katakan pada masa ini adalah masa komputer dinosaurus. Pada masa ini komputer berukuran sebesar ruangan dengan kemampuan komputasi yang sangat lambat. Sedangkan yang dapat mengoperasikan komputer jenis ini adalah orang-orang yang sudah terlatih.
Contoh komputer generasi pertama atau generasi dinosaurus komputer ini adalah ENIAC (Electronic Numerical Integrator and Computer) yang dibuat oleh kerjasama antara pemerintah Amerika Serikat dan University of Pennsylvania. Terdiri dari 18.000 tabung vakum, 70.000 resistor, dan 5 juta titik solder, komputer tersebut merupakan mesin yang sangat besar yang mengkonsumsi daya sebesar 160kW.
Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung dengan tim University of Pennsylvania dalam usha membangun konsep desin komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer. Von Neumann mendesain Electronic Discrete Variable Automatic Computer(EDVAC) pada tahun 1945 dengan sebuh memori untuk menampung baik program ataupun data. Teknik ini memungkinkan komputer untuk berhenti pada suatu saat dan kemudian melanjutkan pekerjaannya kembali. Kunci utama arsitektur von Neumann adalah unit pemrosesan sentral (CPU), yang memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu sumber tunggal. Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat oleh Remington Rand, menjadi komputer komersial pertama yang memanfaatkan model arsitektur von Neumann tersebut.
Komputer Generasi pertama dikarakteristik dengan fakta bahwa instruksi operasi dibuat secara spesifik untuk suatu tugas tertentu. Setiap komputer memiliki program kode-biner yang berbeda yang disebut “bahasa mesin” (machine language). Hal ini menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya.
Komputer Generasi Kedua
Pada awal 1960-an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan. Komputer-komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponen-komponen yang dapat diasosiasikan dengan komputer pada saat ini: printer, penyimpanan dalam disket, memory, sistem operasi, dan program.
Walaupun ukurannya berkurang drastis, tapi komputer pada generasi ke dua ini masih berukuran raksasa. Setidaknya masih seukuran dengan almari pakaian kita sekarang ini. Salah satu contoh penting komputer pada masa ini adalah IBM 1401 yang diterima secaa luas di kalangan industri. Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan komputer generasi kedua untuk memproses informasi keuangan.
Program yang tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya memberikan fleksibilitas kepada komputer. Fleksibilitas ini meningkatkan kinerja dengan harga yang pantas bagi penggunaan bisnis. Dengan konsep ini, komputer dapa tmencetak faktur pembelian konsumen dan kemudian menjalankan desain produk atau menghitung daftar gaji. Beberapa bahasa pemrograman mulai bermunculan pada saat itu. Bahasa pemrograman Common Business-Oriented Language (COBOL) dan Formula Translator (FORTRAN) mulai umum digunakan. Bahasa pemrograman ini menggantikan kode mesin yang rumit dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami oleh manusia. Hal ini memudahkan seseorang untuk memprogram dan mengatur komputer. Berbagai macam karir baru bermunculan (programmer, analyst, dan ahli sistem komputer). Industri piranti lunak juga mulai bermunculan dan berkembang pada masa komputer generasi kedua ini.
Komputer Generasi Ketiga
Walaupun transistor dalam banyak hal mengungguli tube vakum, namun transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak bagian-bagian internal komputer. Batu kuarsa (quartz rock) menghilangkan masalah ini. Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit) di tahun 1958. IC mengkombinasikan tiga komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir kuarsa. Pada ilmuwan kemudian berhasil memasukkan lebih banyak komponen-komponen ke dalam suatu chip tunggal yang disebut semikonduktor. Hasilnya, komputer menjadi semakin kecil karena komponen- komponen dapat dipadatkan dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer.
Pada masa komputer generasi ketiga ini sistem operasi didominasi oleh UNIX dan Windows. UNIX masih memenuhi pasaran untuk bidang komputer dengan spesifikasi besar, tapi Windows lebih berkecimpung di bidang komputer kecil-kecil, atau komputer kantor dan rumahan. Walaupun pada masa ini Windows masih berbasis text dengan DOS (Disk Operating System) dan berkembang menjadi Windows 3.1. yang masih sangat minim grafisnya dibandingkan dengan Apple Macinthos.
Komputer Generasi Keempat
Kalau pada masa generasi ke empat ini komputer sudah nggak aneh lagi kita bayangkan. Komputer pada masa ini adalah komputer yang kita lihat sekarang dengan berbagai keunikan dan kecanggihan.
Komputer generasi ke empat ini menggunakan microprocessor yang lebih kecil dan dapat bekerja lebih cepat. Untuk intel mulai dari intel i386 sampai dengan intel Pentium I, II, III, IV, Dual Core, Core 2 Duo, dan Quad Core. Kesemuanya ini berkembang sesuai irama perkembangan dunia teknologi informasi yang terus bergejolak seolah tak ada henti-hentinya untuk mengembangkan daya kreasi dan inofasi.
Komputer Generasi Kelima
Rencana masa depan komputer generasi ke lima adalah komputer yang telah memiliki Artificial Intelligence (AI). Sehingga komputer di masa depan dapat memberikan respon atas keinginan manusia.
Banyak kemajuan di bidang desain komputer dan teknologi semkain memungkinkan pembuatan komputer generasi kelima. Dua kemajuan rekayasa yang terutama adalah kemampuan pemrosesan paralel, yang akan menggantikan model non Neumann. Model non Neumann akan digantikan dengan sistem yang mampu mengkoordinasikan banyak CPU untuk bekerja secara serempak. Kemajuan lain adalah teknologi superkonduktor yang memungkinkan aliran elektrik tanpa ada hambatan apapun, yang nantinya dapat mempercepat kecepatan informasi. Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek komputer generasi kelima.
Lembaga ICOT (Institute for new Computer Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru paradigma komputerisasi di dunia. Kita tunggu informasi mana yang lebih valid dan membuahkan hasil.