Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

MINGGU 11 Java Programming (MKB614C)

Presentasi serupa


Presentasi berjudul: "MINGGU 11 Java Programming (MKB614C)"— Transcript presentasi:

1 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 Page 1

2 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 Page 2

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

4 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

5 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

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

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

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

9 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

10 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

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

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

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

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

15 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

16 Server & Client

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

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

19 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

20 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

21 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

22 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:

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

24 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

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

26 Kelas JDBC driver untuk 4 RDBMS
Kelas Driver Source 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

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

28 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”));

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

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

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

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

33 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 "MINGGU 11 Java Programming (MKB614C)"

Presentasi serupa


Iklan oleh Google