Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Java Programming (MKB614C) MINGGU 11 Java Programming (MKB614C) Minggu 11 Page 1 Pokok Bahasan: Multithreading, Networking & Database Tujuan Instruksional.

Presentasi serupa


Presentasi berjudul: "Java Programming (MKB614C) MINGGU 11 Java Programming (MKB614C) Minggu 11 Page 1 Pokok Bahasan: Multithreading, Networking & Database Tujuan Instruksional."— Transcript presentasi:

1

2 Java Programming (MKB614C) MINGGU 11 Java Programming (MKB614C) Minggu 11 Page 1 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

3 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 Minggu 11 Page 2 Java Programming (MKB614C)

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

5 Membuat Task & Thread Membuat task: 1.Kelas task harus mengimplement interface Runnable ( java.lang.Runnable ). 2.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

6 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

7 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)

8 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.

9 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); }

10 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

11 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 }

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

13 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.

14 ServerSocket ServerSocket membutuhkan port untuk menerima koneksi dari client (listen). Port yang terssedia mulai dari 0 sampai 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();

15 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 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);

16 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

17 Server & Client

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

19 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());

20 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

21 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

22 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

23 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: html?ssSourceSiteId=ocomen

24 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.

25 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

26 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());

27 Kelas JDBC driver untuk 4 RDBMS RDBMSKelas DriverSource MySQL com.mysql.jdbc.Driver MySQL Connector/J mysql-connector-java 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 jdbc41.jar (NOT COMPLETED) Driver versi 4.1 JDK 1.8

28 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: –PostgreSQL: jdbc:postgresql://host:port/database

29 Tahapan mengeksekusi SQL query dengan JDBC 1.Meload JDBC driver 2.Membuat koneksi 3.Membuat statement. Object Statement digunakan untuk mengeksekusi SQL (string). Object Statement merupakan konkrit/instant dari interface java.sql.Statement. Syntax pembuatan object Statement: S tatement statement = connection.createStatement(); 4.Mengeksekusi statement. Syntax untuk mengeksekusi SQL query: ResultSet resultSet = statement.executeQuery (“select id, name from myusers"); 5.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”));

30 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");

31 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(?, ?,...)}");

32 Contoh CallableStatement Contoh untuk store procedure/function studentFound di halaman 1200 – 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);

33 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();

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


Download ppt "Java Programming (MKB614C) MINGGU 11 Java Programming (MKB614C) Minggu 11 Page 1 Pokok Bahasan: Multithreading, Networking & Database Tujuan Instruksional."

Presentasi serupa


Iklan oleh Google