Showing posts with label Pemrograman Java. Show all posts

TCP Sockets Programming Part2 - Class Socket

Socket(InetAddress address, int port)
Membuat sebuah stream socket dan koneksi ke suatu nomor port pada suatu komputer yang memiliki alamat IP.
Socket(String Host, int port)

Membuat stream socket dan juga koneksi ke suatu port komputer berdasarkan nama komputernya.

Socket(String host, int port, InetAddress localAddr, int localPort):

  • Membuat sebuah socket dan mengkoneksikannya ke port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host.
  • Melakukan bind socket ke alamat lokal dan port lokal. (Jika koneksi antara client dan server membutuhkan nomor port yang sudah ditentukan.

getInetAddress()
Untuk mendapatkan nama host yang dituju dan alamat Ipnya
getPort()
Untuk mendapatkan nomor remote host
getLocalPort()
Untuk mendapatkan nomor port localhost
getLocalAddress()
Untuk mendapatkan alamat local dimana socket digunakan
getInputStream()
Mengembalikan objek input stream dari socket
getOutputStream()
Mengembalikan objek output stream ke socket
setSoTimeout(int timeout)

getSoTimeOut()
  • Kedua method tersebut digunakan untuk memberi (set) dan mengambil (get) nilai opsi Socket untuk time out block (dalam milidetik) reading dari socket (SO_TIMEOUT). Jika dalam waktu timeout tidak mendapat suatu nilai maka, akan dilemparkan ke exception java.net.SocketTimeoutException.
  • Nilai default timeoutnya adalah 0, yang berarti tanpa batas.
setTCPNoDelay(boolean on)

getTCPNoDelay()
  • Kedua method ini digunakan untuk memberi dan mengambil nilai opsi Socket TCP_NODELAY
  • TCP_NODELAY yaitu untuk mengaktifkan atau menonaktifkan Algoritma Nagle (RFC 896)
  • Algoritma Nagle (RFC 896), yaitu algoritma yang membuat TCP lebih efisien dalam konsumsi bandwidth dengan cara memperlambat penulisan data dalam ukuran yang kecil sehingga data-data yang ada dapat terkirimkan dalam suatu paket dengan ukuran besar.
  • Nilai default opsi ini adalah aktif. Namun jika diinginkan adanya pengurangan network latency (waktu delay dalam pengiriman paket) dan meningkatkan unjuk kerja, maka opsi ini harus di nonaktifkan (di set dengan nilai false), namun akibatnya konsumsi bandwidth akan bertambah besar.
setSoLinger(boolean on, int linger)

getSoLinger()
Method tersebut akan mengaktifkan (true) atau menonaktifkan (false) opsi SO_LINGER dengan nilai waktu linger dalam milidetik. Opsi ini berpengaruh ketika socket ditutup, yaitu menentukan nilai waktu maksikum koneksi yang masih akan dipertahankan sampai socket koneksi benarbernar ditutup. Hal ini berguna untuk mengirim dan memberikan ACK (acknowledge) terhadap data yang belum terkirim.
setSendBufferSize(int size)
 
getSendBufferSize()
Method ini akan mengatur dan mengambil informasi tentang ukuran buffer SO_SNDBUF, yaitu buffer untuk mengiriman. Ukuran ini juga harus disesuaikan ukuran buffer pada level network.
setReceiveBufferSize(int size)

getReceiveBufferSize()
  • Method ini digunakan jika Anda ingin mengatur ukuran buffer SO_RCVBUF
  • SO_RCVBUF yaitu buffer yang digunakan untuk menampung paket yang masuk. Ukuran buffer ini juga digunakan untuk mengatur ukuran window yang diterapkan oleh TCP untuk flow controlnya (sliding window). Dalam pemanfaatan opsi ini, perlu dipastikan antara RCVBUF client dengan server ada sinkronisasi, sehingga sebelum server membind port yang akan digunakan ke socket (TCP) ataupun sebelum client membuka koneksi ke server, terlebih dahulu opsi ini harus di atur, jika Anda ingin mengaturnya.

Kelas-kelas Exception yang dibangkitkan Socket, ketika ada kesalahan :

SocketException
Kelas ini merupakan kelas yang diturunkan dari kelas IOException. Kelas exception ini dipanggil atau dipicu ketika ada kegagalan dalam pemakaian socket,
Contoh adalah kegagalan dalam protokol TCP.
BindException
Exception ini akan dipanggil ketika ada port lokal yang akan digunakan sudah terpakai oleh yang lain, atau ada kegagalan dalam permintaan untuk menggunakan alamat.

ConnectException
Exception ini akan dipanggil ketika sebuah koneksi ditolak oleh host yang dituju, oleh karena tidak ada proses yang siap menerima data pada port yang dituju.
NoRouteToHostException
Koneksi yang akan dibangun tidak dapat dipenuhi oleh karena melebihi waktu timeout yang tersedia atau host yang dituju tidak dapat dicapai (unreachable).

TCP Sockets Programming Part1

TCP socket adalah sebuah soket yang memiliki sifat antara lain :

  • Connection-oriented

Sebelum data dapat ditransmisikan antara dua host, dua proses yang berjalan pada lapisan aplikasi harus melakukan negosiasi untuk membuat sesi koneksi terlebih dahulu.

  • Full-duplex
Data dapat secara simultan diterima dan dikirim.
  • Reliable
Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan sebuah nomor urut paket dan akan mengharapkan paket positive acknowledgment dari penerima.
  • Byte stream
TCP melihat data yang dikirimkan dan diterima melalui dua jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan (kontigu).

Java Socket

Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai suatu "terminal" dari suatu hubungan antara dua mesin atau proses yang saling berinterkoneksi.

Socket biasa digunakan untuk pemrograman berbasis client-server yang dapat menggunakan socket TCP/I atau socket UDP

Pada J2SE telah disediakan package java.net

  • berisi kelas-kelas dan interface yang menyediakan API(Application Programming Interface), level rendah (Socket, ServerSocket, DatagramSocket) dan level tinggi (URL, URLConnection).
  • Memungkinkan programmer membuat program yang dapat mengakses server di Internet
  • Memungkinkan programmer membuat server Internet (jaringan) sendiri

INGAT:
Socket akan membangun komunikasi antar proses yang sama-sama aktif.


Java Socket class digunakan di server maupun di client
- Java program yang biasanya digunakan dalam socket client memperlihatkan beberapa kebiasaan yaitu :
  1. Membuat socket baru dengan constructor
  2. Socket membuat koneksi ke remote machine
  3. Sekali koneksi dibangun maka antara host yang satu dengan yang lainnya

RETHINGKING JAVA


-    Siapkan java sdk yang bisa didownload dari http://java.sun.com
-    Editor java bisa menggunakan teks editor apa saja: notepad? edit plus? Kawa? Netbeans? Jbuilder? JCreator?

-    Prinsip-prinsip dasar :
  • Satu buah file java harus berekstensi .java, satu file boleh terdiri dari banyak kelas, namun hanya bisa terdiri dari satu public class.
  • Nama file java harus sama dengan nama public class nya.  Misal nama public class adalah : public class HelloWorld, berarti nama filenya adalah HelloWorld.java
  • Ingat di Java case-sensitive, termasuk nama file dan folder nya.  Java sangat memperhatikan susunan folder/direktori, terutama untuk sebuah package.
  • Satu buah class sederhana minimal ada kata kunci class nama_class.  Sebuah class boleh tidak memiliki atribut dan method.  Sebuah aplikasi java harus berupa class, dan jika di compile dengan javac akan menghasilkan file berekstensi .class untuk masing-masing class yang ada.
  • Sebuah class hanya dapat dieksekusi jika di dalamnya ada method public static void main.  Jika tidak ada method main maka class tersebut hanya bisa dicompile dan tidak bisa dieksekusi.
  • Sintaks java rata-rata mirip dengan bahasa C.


-         Terdapat beberapa konvensi  (aturan) dalam java:
 nama variabel primitif biasanya ditulis dalam huruf kecil. Contoh : int
  • nama variabel berupa Object / Class ditulis dimulai huruf besar. Contoh : String,   Integer, Byte, Boolean.
  • nama method untuk mengambil data bisanya diberi awalan getNamaMethod(), sedangkan method untuk mengeset data biasanya diberi awalan setNamaMethod(tipedata variabelset).  Contoh:
§  Public void setNama(String nama);
§  Public String getNama()

  • nama variabel biasanya dimulai dengan huruf kecil dan jika lebih dari satu kata, disambung dan ditulis dengan huruf pertama huruf besar.  Contoh: int angkaRandom = 0, String namaMahasiswa
-         Ada 3 jenis modifier variabel dalam Java:
  • private : hanya dapat diakses oleh kelas itu sendiri
  • protected : hanya dapat diakses oleh kelas itu dan kelas turunannya atau masih dalam satu package.
  • public : dapat diakses oleh seluruh kelas yang ada.

-         Java mengenal operasi control flow :

  • Percabangan : if-else, switch-case
  • Perulangan : for, while-do, do-while
  • Penanganan Exception : try-catch-finally, throws

KONSEP OOP
  • Class : prototipe yang mendefinisikan atribut dan method secara umum.
  • Object : segala sesuatu yang dapat dilihat dan dirasa.  Sebuah instansiasi dari Class.
  • Object dapat memiliki atribut dan method.  Atribut / variabel / properties adalah apa yang dimiliki oleh sebuah object.  Sedangkan method / behaviour / event adalah apa yang dapat dilakukan oleh sebuah object.
  • Enkapsulasi : pembungkusan atribut dan method pada suatu object.  Manfaatnya adalah: modularitas dan information hiding.
  • Message : mekanisme yang digunakan oleh object java untuk berkomunikasi dengan object lain.  Sehingga dimungkinkan terjadi aplikasi terdistribusi dan berinteraksi melalui jaringan.  Contoh : Java-CORBA dan Java-RMI.
  • Inheritance : pewarisan atribut dan method dari class induk ke class anaknya, yang mengextends padanya.  Superclass adalah class induk, subclass adalah class anak.  Subclass akan mewarisi seluruh sifat super class, namun juga memungkinkan dapat juga memiliki atribut dan method yang lain, yang membedakannya dengan induknya.
  • Abstract : kelas yang hanya terdiri dari method yang abstract yang digunakan untuk mendukung inheritance.
  • Interface : kelas yang hanya terdiri dari kumpulan method-method saja tanpa implementasi coding.


                

ARSITEKTUR CLIENT-SERVER

Client/Server dapat diartikan sebagai kemampuan komputer untuk meminta layanan request data kepada komputer lain.  Komputer yang meminta layanan disebut sebagai client, sedangkan yang menyediakan layanan disebut sebagai server


Pengertian lain, client melakukan permintaan suatu informasi atau mengirim perintah ke server. Server akan menerima permintaan dan perintah client. Kemudian server akan memproses memproses berdasarkan permintaan tersebut, dan mengembalikan kepada client sebagai hasil pemrosesan yang sudah dilakukan.
Arsitektur Model Client/Server

Service Request adalah permintaan dari client baik berupa permintaan data  maupun perintah ke server. 
Service Response berupa balasan dari server atas permintaan dari client berupa hasil proses. 
Data yang diminta oleh client dapat diambil dari database pada sisi server yang sering disebut database server, seperi misalnya MySQL, PostgreSQL, Oracle, atau SQL Server.

Karakteristik Client-Server:
v  Client dan Server merupakan item proses (logika) terpisah yang bekerja sama pada suatu jaringan komputer untuk mengerjakan suatu tugas
v  Service : Menyediakan layanan terpisah yang berbeda
v  Shared resource : Server dapat melayani beberapa client pada saat yang sama dan mengatur pengaksesan resource
v  Asymmetrical Protocol : antara client dan server merupakan hubungan one-to-many. Client memulai komunikasi dengan mengirim request ke server. Server menunggu permintaan dari client. Kondisi tersebut juga memungkinkan komunikasi callback.
v  Transparency Location : proses server dapat ditempatkan pada mesin yang sama atau terpisah dengan proses client. Client/server akan menyembunyikan lokasi server dari client.
v  Mix-and-match : tidak tergantung pada platform
v  Message-based-exchange : antara client dan server berkomunikasi dengan mekanisme pertukaran message.
v  Encapsulation of service : message memberitahu server apa yang akan dikerjakan
v  Scalability : sistem C/S dapat dimekarkan baik vertikal maupun horisontal
v  Integrity : kode dan data server diatur secara terpusat, sedangkan pada client tetap pada komputer tersendiri

MIDDLEWARE
Software yang berfungsi sebagai lapisan konversi atau penerjemah. Juga sebagai konsolidator dan integrator. Middleware saat ini dikembangkan untuk memungkinkan satu aplikasi berkomunikasi dengan lainnya walaupun berjalan pada platform yang berbeda.

ARSITEKTUR SOFTWARE
-         Data, menyediakan struktur dan fungsi untuk manipulasi informasi, yang terdiri dari banyak objek data. Sebagai contoh : relational Database, file grafik, file suara atau multimedia data stream
-         Processing, terfokus pada pemrosesan objek data, yang biasanya disebut sebagai middleware.
-    Presentation, terfokus untuk membuat data tersedia untuk user dan menangani interaksi dengan user. Ada dua level :
Ø User interface
Ø Presentation management, menyediakan operasi dasar untuk membangun dan mengontrol user interface di bawah kontrol aplikasi. Meliputi : layanan tampilan, kontrol dialog dan API. Contoh : X-Windows, MS Windows

Pengertian Grafika Komputer dan Sejarahnya

1.1              Pengertian Grafika Komputer
Istilah grafika komputer pertama kali dikemukakan oleh William Fetter pada tahun 1960 untuk metode desain.
 Perhaps the best way to define computer graphics is to find out what is it not. It is not a machine. It is not computer, nor a group of computer programs. It is not the know how a graphic designer, a programmer, a writer, a motion picture specialist, or a reproduction specialist.
Computer graphics is all these – a consciously managed and documented technology directed toward communicating information accurately and descriptively”.
Berdasarkan definisi di atas, grafika komputer tidak hanya mengenai hardware, software maupun berbagai keahlian yang terkait dengan pengolahan grafis tetapi merupakan keseluruhan keseluruhan hal-hal tersebut.  Grafika komputer berkaitan dengan pengolahan dan pendokumentasian teknologi yang mengarah kepada komunikasi dan informasi secara akurat dan deskriptif.
Grafika komputer  (Computer Graphic) juga dapat diartikan sebagai seperangkat alat yang terdiri dari hardware dan software untuk membuat gambar, grafik atau citra realistik untuk seni, game komputer, foto dan animasi komputer dan lain-lain.
  
1.2              Sejarah Grafika Komputer
Sejarah grafika komputer telah dimulai sejak  jaman dahulu kala yaitu ketika bangsa Mesir, Roma dan Yunani berkomunikasi secara grafik. Beberapa lukisan terdapat pada batu nisan orang Mesir dapat dikatakan sebagai lukisan teknik.
Perkembangan grafika komputer secara sederhana dapat dibagi menjadi empat fase, yaitu:
1)                  Fase Pertama (1950) era grafika komputer interaktif
·                     Tidak begitu cepat karena teknologi, jumlah dan nilai komputer tidak mendukung.
·                     MIT berhasil mengembangkan komputer whirlwind dengan tabung sinar katode (Cathode Ray Tube-CRT).
·                     Sudah menggunakan pena cahaya (light pen) yaitu sebuah alat input bentuknya seperti pensil yang digunakan untuk memilih posisi, menunjuk sesuatu dan menggambar pada layar dengan pendeteksian cahaya yang datang dari titik-titik pada layar CRT.
·                     Telah ada alat pemrograman otomatis (Automatic Programming Tool)
2)                  Fase Kedua (1960) Jaman Penelitian/Riset Grafika Komputer Interaktif
·                     Jaman ini dapat dikatakan jaman penelitian/riset grafika komputer interaktif .
·                     Grafika komputer modern telah berhasil ditemukan oleh Ivan Sutherland dengan sistem penggambaran SKETCHPAD. Selain itu Sutherland juga mengembangkan teknik interaktif dengan sarana keyboard dan light-pen.
·                     Pertengahan tahun 1960, sejumlah projek penelitian dan produk Computer Aided Design/Manufacuring (CAD/CAM) telah muncul.
·                     Tahun 1964, perusahaan General Motors mengumumkan produk CAD yaitu CAD-1 atau Design Augmented by Computer.
·                     Tahun 1965, perusahaan Lockheed Aircraft mulai projek CADAM  dan perusahaan Bell Telephone Laboratory mengumumkansistem display jarak jauh yaitu GRAPHIC1.
3)                  Fase Ketiga (1970)
Grafika komputer interaktif telah digunakan oleh sektor industri, pemerintah dan ilmuawan untuk memperbaiki kualitas desain produk secara cepat dan mudah.
4)                   

             Fase Keempat (1980-1990)
·     Masa ini grafika komputer berkembang pesat. Banyak orang berlomba untuk menemukanteori dan algoritma baru. Penelitian pada dekade ini bertumpu pada penggabungan dan pengotomatisasian berbagai unsur dan pemodelan pejal (solid modelling).
·        Tahun 1990-an, teknologi model hibrid mula dikenalkan. Teknologi ini merupakan penggabungan objek pejal dengan permukaan.
1.3              Peranan Grafika Komputer 
                       Grafika komputer telah menunjukkan kemajuan yang pesat dalam pengembangan berbagai aplikasi untuk menghasilkan gambar. Walaupun pada awalnya aplikasi dalam sains dan engineering memerlukan peralatan yang mahal, perkembangan teknologi komputer memberikan kemudahan penggunaan komputer sebagai alat bantu aplikasi grafik komputer interaktif. Pada saat ini grafika komputer digunakan secara rutin dibidang ilmu pengetahuan, teknik, kedokteran, bisnis,  industri, pemerintahan, seni, hiburan, pendidikan, periklanan, dan lain sebagainya. Berikut contoh peranan grafika komputer dalam berbagai bidang: 
             
           1)     Desain
Dalam proses desain grafika komputer terutama digunakan pada sistem engineering dan arsitektur. Pada umumnya Computer Aided Design (CAD) digunakan untuk pembuatan desain mobil, bangunan, pesawat terbang, kapal, komputer, tekstil, dan lain-lain.
Pada beberapa aplikasi desain, objek ditampilkan dalam bentuk wireframe, dimana diperlihatkan keseluruhan bentuk, dengan bentuk internal dari objek tersebut. Penggunaan wireframe bermanfaat bagi designer untuk melihat isi dari objek tersebut.
Contoh perangkat lunak yang digunakan yaitu AutoCAD, 3D Studio Max, dan Maya.
            
             2)    Grafika Presentasi
Bidang lain yang berhubungan dengan grafika komputer adalah grafik presentasi yang dapat berupa cetakan, slide, dan transparansi.  Grafik presentasi biasanya digunakan untuk melengkapi laporan keuangan, sains, data ekonomi, dan lain-lain.  Bentuk grafik presentasi tersebut adalah chart, bar chart, pie chart, dan lain-lain. 

                3) Computer Art
Metode grafika komputer digunakan dalam aplikasi commercial art dan fine art.
Seniman menggunakan bermacam-macam perangkat lunak grafik, dan kadang
dilengkapi dengan perangkat keras khusus.
Contoh  perangkat lunak yang digunakan yaitu Corel Draw, Adobe Photoshop, Adobe Ilustrator, Macromedia, dan sebagainya.
4)                  4) Film
Pada pembuatan film layar lebar, komputer banyak digunakan untuk menunjang proses pemodelan, visualisasi, dan editing. Misalnya dalam proses special effect, film animasi.
5)                  5). Televisi
Grafika komputer dalam tayangan televisi juga dapat berupa iklan, tampilan tiap acara, dan lainnya.
6)                  6). Video Musik
Produksi video musik tidak terlepas dari grafika komputer, diantaranya pembuatan promosi, cover atau kemasan video, serta animasi yang mengiringi setiap lagu. Proses editing video dan audio dilakukan dengan menggunakan komputer.
7)                  7). Game
Berbagai game dapat dijalankan pada komputer PC, video player dengan monitor  TV, dan ada yang menggunakan perangkat keras khusus.  Alat input interaktif seperti mouse dan joystick diperlukan untuk aplikasi game.
8)                  8). Pendidikan
Komputer sebagai alat bantu pendidikan (Computer Assisted Instruction) sudah cukup dikenal. Komputer juga digunakan pada aplikasi-aplikasi bukan pengajaran untuk menunjang sistem pendidikan, seperti mengolah data, mencatat kehadiran, dan sebagainya.
Aplikasi bidang pengajaran dengan komputer sebagai alat bantunya, diantaranya: 
Drill and Practice (latih dan praktek)
CAI menggantikan pengajar untuk memberikan latihan kepada siswa.
Tutorial (penjelasan)
Sistem komputer digunakan untuk menyampaikan materi ajaran.
Simulasi 
Digunakan untuk mengkaji permasalahan yang rumit pada bidang biologi, transportasi, ekonomi, dan lain-lain.
Aplikasi bidang bukan pengajaran dengan alat bantu komputer, diantaranya :
Computer Assisted Testing (Ujian Berbantuan Komputer) 
Komputer digunakan untuk sarana ujian.
Computer Assisted Guidance (Pengarahan Berbantuan Komputer)   
Komputer digunakan sebagai sarana untuk mencari informasi yang diperlukan.
Computer Managed Instruction
Komputer digunakan untuk merencanakan pelajaran, evaluasi belajar, serta memantau prestasi siswa.
9)                  Visualisasi
Ilmuwan, ahli kedokteran, analis bisnis, dan lain-lain sering menggunakan  banyak informasi suatu masalah dalam mempelajari perilaku proses tertentu. Informasi tersebut berisi ribuan data untuk memberikan gambaran hasil suatu evaluasi. Data tersebut diproses sehingga mendapatkan hasil dalam bentuk visual.
10)              Image Processing
Image processing (pengolahan citra) merupakan teknik untuk memodifikasi atau
menginterpretasi gambar yang ada, seperti foto dan rangkaian gambar film. Dua
macam prinsip pengolahan citra adalah :
·                     Meningkatkan kualitas gambar.
·                     Memberikan persepsi dari informasi visual, seperti pada robotic.
Untuk melakukan pengolahan citra, pertama-tama membuat digitasi dari foto atau membuat foto menjadi file image. Selanjutnya metode digital dapat digunakan untuk memodifikasi gambar sehingga mendapatkan kualitas yang baik.
11)              Graphical User Interface (GUI)
Graphical interface (antarmuka grafik) banyak digunakan dalam setiap aplikasi.
Komponen utamanya adalah window manager, dimana pengguna dapat mengatur tampilan dari window. Interface juga menampilkan menu dan icon untuk mempercepat pemilihan yang dilakukan oleh pengguna.