MINGGU 11 Java Programming (MKB614C)

Slides:



Advertisements
Presentasi serupa
PENGANTAR TEKNOLOGI INFORMASI (A)
Advertisements

Pemrograman JAVA (TIB09) Database Metadata dan Transaksi Progdi Teknik Informatika – Universitas Bunda Mulia.
Nama Anggota Kelompok :  Marina KW ( )  Robby Cahyadi ( )  Asdi Atmin F ( )  Refi Zulkarami ( )
Kelas A & B Jonh Fredrik Ulysses STMIK PALANGKARAYA - JFU
JAVA Network Programming. Apa itu JAVA? ● Bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sejak tahun ● Dikembangkan.
Java Progamming Operasi I/O
Pemrograman Berorientasi Objek
Pemrograman Jaringan Socket Programming Aurelio Rahmadian.
Konsep Basis Data di Web
Komunikasi antar Proses
Java Database Connectivity (JDBC-1)
Java Database Connectivity dan Studi Kasus Online BookShop
Pemrograman Client Server
Pengenalan Pemrograman Jaringan Materi 1 Pemrograman Jaringan Dosen: Eko Prasetyo Teknik Informatika UMG 2012.
Java Database Connectivity (JDBC) JDBC adalah Application Programming Interface (API) yang dirancang untuk mengakses Database.
Pemrograman Database dengan JAVA
Pemrograman JAVA (TIB09)
Java Server Pages D4 LJ-PJJ Dasar Pemrograman Web Database Eru©Juli-2009 PENS – ITS.
JDBC Oleh: Idris Winarno.
Pemrograman Berbasis WEB
MINGGU 4 Java Programming (MKB614C)
Pengembang aplikasi memiliki kemampuan untuk memperbaiki beberapa parameter TCP, seperti buffer dan maksimum ukuran segmen maksimum Socket Programming.
Oleh : HILMY NUR R. – RYAN ABDI W. – KAISHA SATRIO N.H. – DENY SATRYA P. – F.X. YUDHA GAMMA C.H
Pertemuan II Kuliah Pemrograman Web Menggunakan JSP
UDP Socket Programming
- PERTEMUAN 8- NETWORK PBO. Pengantar Java mengijinkan anda untuk mempermudah mengembangkan aplikasi yang mengerjakan berbagai pekerjaan melalui jaringan.
Koneksi PHP ke Database MySQL
JDBC Java2 Advanced.
JDBC.
BAHASA PEMROGRAMAN 3 NETBEANS DATABASE PERTEMUAN KE 5
As’ad Djamalilleil Membangun Aplikasi Database Berbasis Client-Server Menggunakan JDBC dan MySQL – Bagian 2 As’ad.
SISTEM TERDISTRIBUSI CSG3L3 ~SPO~
Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.
Interaksi Client - Server
1 Pertemuan 10 PEMROGRAMAN MULTITHREADING Matakuliah: M0074/PROGRAMMING II Tahun: 2005 Versi: 1/0.
Socket Programming - 1 (TCP)
Jaringan.
Yuliana Setiowati Politeknik Elektronika Negeri Surabaya
Akses Database Menggunakan JDBC
Koneksi Java ke MySQL.
Networking Belajar bagaimana menerapkan sebuah MIDlet yang mempunyai kemampuan koneksi ke dalam jaringan Membuat koneksi HTTP, HTTP Redirects, HTTPS,
Java Database Connectivity Materi 5
Koneksi Database Java dan Access (ODBC)
7 DATABASE Client/Server Wiratmoko Y, ST C H A P T E R
Bahasa Pemrograman (Pemrograman Visual)
Pengembangan Aplikasi Berbasis Web
Pemrograman basis data internet dan client server
Pertemuan <<3>> Pengembangan Aplikasi Basis Data
Socket Programming - 1 (TCP)
As’ad Djamalilleil Membangun Aplikasi Database Berbasis Client-Server Menggunakan JDBC dan MySQL – Bagian 2 As’ad.
Process and Tread Saifudin Anshory Abd. Chariz Fauzan Wahyu Hartono
As’ad Djamalilleil Membangun Aplikasi Database Berbasis Client-Server Menggunakan JDBC dan MySQL – Bagian 1 As’ad.
BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER Oleh : Laseri, S.Kom.
JSP dan Database.
Java Database Programming
Java Database programming
JAva Threads.
TCP/IP TCP/IP adalah sekumpulan protokol yang terdapat di dalam jaringan komputer (network) yang digunakan untuk berkomunikasi atau bertukar data antar.
PIBJ (PEMROGRAMAN INTERNET BERBASIS JAVA)
Mengelola Query Basis Data
JAVA.
Oleh : Laseri, S.Kom BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER.
Komunikasi antar Proses
Oleh : Rahmat Robi Waliyansyah, M.Kom.
JDBC (Java Database Connectivity)
Java Database Connectivity (JDBC)
Bahasa Pemrograman Latihan Database.
Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0.
Create Read Update Database
TCP Socket Programming
Transcript presentasi:

MINGGU 11 Java Programming (MKB614C) Pokok Bahasan: Multithreading, Networking & Database Tujuan Instruksional Khusus: Siswa memahami konsep multithreading di-Java Siswa memahami pemrograman networking di-Java Siswa memahami pemrograman database di-Java Java Programming (MKB614C) Minggu 11 Page 1

Java Programming (MKB614C) Agenda Konsep Thread Membuat Task & Thread Thread pool Thread synchronization Synchornization using lock Client/Server Kelas InetAddress Serving multiple clients Sending & receiving object JDBC PreapredStatement CallableStatement Retrieving Metadata Java Programming (MKB614C) Minggu 11 Page 2

Konsep Thread Sebuah program dapat memiliki sejumlah task yang dijalan secara concurrent Multi CPU Single CPU

Membuat Task & Thread Membuat task: Syntax untuk membuat object Thread Kelas task harus mengimplement interface Runnable (java.lang.Runnable). Task harus dijalankan melalui object Thread (java.lang.Thread) Syntax untuk membuat object Thread Thread thread = new Thread(task); LISTING 30.1 TaskThreadDemo.java page 1100

Kelas Thread Kelas Thread adalah kelas yang mengimplementasi interface java.lang.Runnable, digunakan untuk mendefinisikan dan mengendalikan kelas Thread. LISTING 30.2 FlashText.java page 1105

Thread pool Thread pool digunakan untuk mengelola eksekusi task secara efisien. Interface yang digunakan untuk thread pool: Executor (java.util.concurrent.Executor): interface untuk menjalankan task dalam pool thread ExecutorService (java.util.concurrent.ExecutorService): interface untuk mengelola dan mengendalikan task (subinterface Executor)

Thread pool kelas Executors Executor objek dibuat/diinstantiate menggunakan method static dari kelas Executors (java.util.concurrent.Executor): newFixedThreadPool(int t) : digunakan untuk membuat thread pool dengan jumlah thread yang tetap (int t). newCachedThreadPool() : digunakan untuk membuat thread pool, dimana setiap tread tidak pernah idle dan siap dieksekusi. Thread yang idle lebih dari 60 detik akan dihapus dari pool. Cache pool sangat efisien digunakan untuk task pendek.

Thread synchronization Thread synchronization adalah untuk mengkoordinasi ekesekusi dari sejumlah thread yang berjalan sendiri-sendiri, sehingga hanya satu thread yang mengeksekusi bagian krusial dari program LISTING 30.3 ExecutorDemo.java page 1107 Thread synchronization dapat dilakukan dengan 2 cara: Keyword synchronized: Contoh LISTING 30.3 kelas Account method deposit public synchronized void deposit(int amount) Statement synchronized: Contoh LISTING 30.3 kelas AddAPennyTask method run synchronized (account) { account.deposit(1); }

Synchornization using lock Untuk mempermudah pembacaan source code program, mekanisme synchronization thread dapat dilakukan secara explisit dengan mengimplement interface Lock (java.util.concurrent.locks.Lock) dan Condition (java.util.concurrent.locks.Condition). Kelas ReentrantLock (java.util.concurrent.locks.ReentrantLock) mengimplementasi interface Lock

Locking mekanisme pada Listing 30.3 Kelas Account method deposit lock.lock(); // Acquire the lock try { int newBalance = balance + amount; // This delay is deliberately added to magnify the // data-corruption problem and make it easy to see. Thread.sleep(5); balance = newBalance; } catch (InterruptedException ex) { finally { lock.unlock(); // Release the lock

Thread yang belum dibahas Interaksi antar thread Blocking queues Semaphores Avoiding Deadlocks Thread States Synchronized Collections Parallel programming

Client/Server Jaringan komputer digunakan untuk mengirim dan menerima “pesan”, antar komputer. Java menyediakan kelas: ServerSocket (java.net.ServerSocket) untuk membuat server socket Socket (java.net.Socket) untuk membuat client socket dan merespon koneksi client.

ServerSocket ServerSocket membutuhkan port untuk menerima koneksi dari client (listen). Port yang terssedia mulai dari 0 sampai 65536. Port 0 sampai 1024 dicadangkan untuk layanan khusus seperti port 25 untuk smpt, port 80 untuk web. Syntax untuk membuat objek ServerSocket ServerSocket serverSocket = new ServerSocket(port); Untuk menerima koneksi dari clientdibutuhkan Socket. Syntax untuk membuat objek Socket saat menerima koneksi dari client Socket socket = serverSocket.accept();

Socket pada client Socket pada client membutuhkan 2 parameter, yaitu serverName dan port (Server listen) Syntax untuk membuat objek Socket pada client Socket socket = new Socket(serverName, port); Catatan: serverName untuk akses kelokal dapat menggunakan localhost atau 127.0.0.1. Untuk koneksi ke-IP server tertentu dapat digunakan InetAddress sebagai pengganti serverName Syntax untuk membuat objek Socket pada client menggunakan InetAddress Socket socket = new Socket(InetAddress, port);

Transmisi data melalui Socket Setelah Server & Cliient terhubung/terkoneksi, barulah data dapat dikirim dan diterima dari kedua arah. Untuk menerima dan mengirim data dibutuhkan object: InputStream (java.io.InputStream) OutputStream (java.io.OutputStream) Syntax penggunaan InputStream & Output Stream InputStream input = socket.getInputStream(); OutputStream output = socket.getOutputStream(); Java menyediakan library IO untuk memudahkan penerimaan dan pengiriman data, dengan me-wrap InputStream dan OutputStream kedalam object: DataInputStream DataOutputStream Buffered Reader PrintWriter

Server & Client

Aliran data Server & Client LISTING 31.1 Server.java page 1143 LISTING 31.2 Client.java page 1145

Kelas InetAddress InetAddress (java.net.InetAddress) adalah kelas yang mewakili alamat Internet Protocol (IP) IP Address 32 bit IPv4 (java.net.Inet4Address) 128 bit IPv6 (java.net.Inet6Address) Untuk mendapatkan IP dari client Socket socket = serverSocket.accept(); InetAddress inetAddress = socket.getInetAddress(); System.out.println("Client's host name is " + inetAddress.getHostName()); System.out.println("Client's IP Address is " + inetAddress.getHostAddress());

Serving multiple clients Server dapat melayani sejumlah client, setiap client ditangani/dihandle oleh 1 thread. Source code server dalam menangani koneksi dari client while (true) { Socket socket = serverSocket.accept(); // Connect to a client Thread thread = new ThreadClass(socket); thread.start(); } LISTING 31.4 MultiThreadServer.java page 1149

Sending & receiving object Java Client/Server mendukung pengiriman object dengan menggunakan object ObjectOutputStream (java.io.ObjectOutputStream) & ObjectInputStream (java.io.ObjectInputStream) Object yang dikirim harus dalam serializable. Contoh: LISTING 31.5 StudentAddress.java page 1152 LISTING 31.6 StudentClient.java page 1153 LISTING 31.7 StudentServer.java 1154

Pemrograman Java Database Java menyediakan Library untuk mengakses sql database. java.sql javax.sql javax.sql.rowset javax.sql.rowset.serial javax.sql.rowset.spi Asumsi siswa memahami: Relational Database Management System (RDBMS) SQL

JDBC Java Database Connectivity (JDBC) adalah Java API standar industri untuk menghubungkan pemrograman Java dengan berbagai sql database. Arsitektur JDBC: Type 1: JDBC-ODBC Bridge plus ODBC Driver (Removed in JDK 8 Removed in JDK 8) Type 2: A native API partly Java technology-enabled driver  Type 3: Pure Java Driver for Database Middleware  Type 4: Direct-to-Database Pure Java Drive Class driver dari masing-masing tipe JDBC harus diload sebelum koneksi ke-database dilakukan. Sumber: http://www.oracle.com/technetwork/java/overview-141217.html?ssSourceSiteId=ocomen

Type 1 & Type 2 Type 1 JDBC-ODBC: JDBC mengakses database melalui ODBC. (Removed in JDK 8) Type 2 (Native API): JDBC mengakses langsung database melalui API client yang disediakan oleh RDBMS seperti Oracle, Sybase, Infomix, DB2, Microsoft SQL Server, dll.

Type 3 & Type 4 Type 3 Pure Java Driver: JDBC mengakses database melalui middleware menggunakan protokol yang disediakan vendor middleware tsb. Type 4 Direct-to-Database: JDBC mengakses database langsung ke RDBMS server

Meload JDBC Driver Driver JDBC harus diload dengan meload class Driver yang akan digunakan. Syntax meload class Driver secara umum: Class.forName("JDBCDriverClass"); DriverManager.registerDriver (new JDBCDriverClass())); Contoh meload/meregister Driver JDBC Oracle: Class.forName ("oracle.jdbc.OracleDriver"); DriverManager.registerDriver (new oracle.jdbc.OracleDriver());

Kelas JDBC driver untuk 4 RDBMS Kelas Driver Source MySQL com.mysql.jdbc.Driver MySQL Connector/J mysql-connector-java-5.1.35-bin.jar Oracle oracle.jdbc.OracleDriver Oracle 11: ojdbc6.jar Disertakan dalam paket Oracle Install Client sesuai dengan versi Oracle PostgreSQL org.postgresql.Driver Tergantung versi JDK postgresql-9.4-1201.jdbc41.jar (NOT COMPLETED) Driver versi 4.1 JDK 1.8

Membuat koneksi Koneksi ke-database dilakukan dengan memanggil method statik getConnection(databaseURL) di kelas DriverManager (java.sql.DriverManager). Return dari method tsb berupa konkrit/instant dari interface java.sql.Connection Syntax membuat koneksi Connection connection = DriverManager.getConnection(databaseURL); Connection connection = DriverManager.getConnection(databaseURL, username, userpassword); Database URL untuk spesifik RDBMS MySQL: jdbc:mysql://hostname/dbname Oracle: jdbc:oracle:<drivertype>:@<database> PostgreSQL: jdbc:postgresql://host:port/database

Tahapan mengeksekusi SQL query dengan JDBC Meload JDBC driver Membuat koneksi Membuat statement. Object Statement digunakan untuk mengeksekusi SQL (string). Object Statement merupakan konkrit/instant dari interface java.sql.Statement. Syntax pembuatan object Statement: Statement statement = connection.createStatement(); Mengeksekusi statement. Syntax untuk mengeksekusi SQL query: ResultSet resultSet = statement.executeQuery (“select id, name from myusers"); Memproses result. Hasil query ditampung dalam object resultSet. Untuk mengakses row hasil query digunakan loop, seperti berikut: while (resultSet.next()) System.out.println(resultSet.getInt(“id”) + " " + resultSet.getString(“name”));

PreapredStatement PreparedStatement: interface yang memungkinkan pembuatan parameter pada SQL statement. PreparedStatement (java.sql.PrepareStatement) merupakan interface subinterface dari interface java.sql.Statement. PreparedStatement didapat dari method object Connection dengan syntax: PreparedStatement preparedStatement = connection.prepareStatement(sql); Contoh: PreparedStatement preparedStatement = connection.prepareStatement ("insert into myusers (id, name) " + "values (?, ?)"); Parameter diset dengan method sesuai tipe datanya, contoh: preparedStatement.setInt(1, 1); preparedStatement.setString(2, "Ahmad");

CallableStatement CallableStatemet (java.sql.CallableStatement): sub interface dari interface java.sql.PrepareStatement. CallableStatement digunakan untuk menjalankan SQL Stored Procedure/Function. CallableStatemet didapat dari method object Connection dengan syntax mirip dengan PreparedStatement: CallableStatemet callableStatemet = connection.prepareStatement ("{? = call functionName(?, ?, ...)}");

Contoh CallableStatement Contoh untuk store procedure/function studentFound di halaman 1200 – 1201. CallableStatement callableStatement = connection.prepareCall( "{? = call studentFound(?, ?)}"); Parameter diset sebagai berikut: callableStatement.setString(2, firstName); callableStatement.setString(3, lastName); Output diset sebagai berikut: callableStatement.registerOutParameter(1, Types.INTEGER); Untuk mendapatkan hasil eksekusi callableStatement.execute(); int r = callableStatement.getInt(1);

Retrieving Metadata Database metadata berisi informasi terkait database yang diakses seperti URL, username, JDBC Driver. Object dari interface java.sql.DatabaseMedatadata didapat dari fungsi getMetadata() object Connection. Contoh pembuatan object DatabaseMedatadata: DatabaseMetaData dbMetaData = connection.getMetaData();

Praktek koneksi Java JDBC ke MySQL JavaJDBCLectures.mwb JavaJDBCLecturesScript.sql mysql-connector-java-5.1.35-bin.jar LISTING 32.4 TestCallableStatement.java page 1201 LISTING 32.5 TestDatabaseMetaData.java page 1203