+ All Categories

Slide 1

Date post: 01-Nov-2014
Category:
Upload: tess98
View: 2 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
57
May 9, 2007 11:10 a.m. – 12:10 p.m. Platform: cross-platform DB2 & Java for Dummies John Mallonee Highmark Inc. Session: G09
Transcript
Page 1: Slide 1

May 9, 2007 11:10 a.m. – 12:10 p.m.

Platform: cross-platform

DB2 & Java for Dummies

John MalloneeHighmark Inc.

Session: G09

Page 2: Slide 1

2

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 3: Slide 1

3

Disclaimer

• Dummies (noun, plural) – smart people who want to learn more about a technology with which they don’t have much experience.

• (alt.) risk takers who want to step beyond their current boundaries and become more knowledgeable and productive

Page 4: Slide 1

4

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 5: Slide 1

5

Java Basics

• What is Java?

• Quick example

• Java Terminology

• Compiling/Running Java programs

• Java Applications

• Java Editions

Page 6: Slide 1

6

Java Basics – What is Java?• Java is an object-oriented programming language created

by Sun Microsystems• Java contains a JDK (Java Development Kit) which contains

a compiler and a set of base classes (Java programs) which provide base-level functionality

• Java contains classes which provide a generic SQL interface to relational databases including DB2 (JDBC – Java Database Connectivity)

• Java is designed to be a write once, run everywhere (or most places) language

• Java is a pervasive language for creating open systems applications including web applications

Page 7: Slide 1

7

Java Basics – Quick Example

public class MyClass {

private String name;

public static void main(String[] args) {

name = args[0];

for (int i=0; i<5; i++) {

System.out.println(“name = “+name);

}

}

}

class

attribute

method

Page 8: Slide 1

8

Java Basics – Terminology • Source program - .java file• Compiled program - .class file – “executable” code for target

Java Virtual Machine (JVM)• Java Virtual Machine (JVM)

• software written for a specific operating system which can execute .class files

• implementation of the JVM specification• interprets Java Byte Code

• Java Runtime Environment (JRE) – contains JVM, core classes, and other files

• Java Development Kit (JDK) – components needed to develop in Java including a JVM and JRE

Page 9: Slide 1

9

Java Basics – Terminology • package – grouping of similar Java classes

• e.g. com.highmark.app.MyClass• equates to folders - /com/highmark/app/MyClass.class

• JAR – compressed file of Java classes• equivalent to mainframe library

• classpath – Java classes referenced by Java compile or Java runtime• equivalent to mainframe library concatenation

• API’s – Application Program Interface• interface to a Java class (specifies how to invoke)• may be generic with specific implementation classes

• Java specification versions through Java Community Process (JCP)

Page 10: Slide 1

10

Java Basics – Compiling/Running

• Source code is created – .java file

• Source is compiled to byte code – .class file created using javac program (e.g. javac MyClass.java)

• Compiled code is stored as a .class file (optionally in a JAR file) within the JVM

• Compiled class is initiated on the JVM using the java command (e.g. java MyClass)

Page 11: Slide 1

11

Java Basics – Compiling/Running

Source(.java)

Byte Code

(.class)

Java Virtual

Machine

Java Archive

(.jar)

archive

javac java

Page 12: Slide 1

12

Java Basics – Java Editions• Java SE – Java Standard Edition (formerly J2SE)

• Standard Java classes to perform low-level operations in any environment

• Includes desktop applications (e.g. visual objects)• Java EE – Java Enterprise Edition (formerly J2EE)

• Additional Java classes to support enterprise-wide applications

• Java ME – Java Micro Edition (formerly J2ME)• Scaled down set of Java classes to support Java

applications on limited-functionality devices (e.g. cell phones, PDA’s, embedded devices)

Page 13: Slide 1

13

Java Basics – Java Enterprise Edition• Java EE includes a broad list of components

• enterprise applications – e.g. Enterprise JavaBeans (EJB’s), Servlets, JavaServer Pages (JSP’s), Java Message Service (JMS) and more

• specification for implementation of enterprise components including the deployment environment (application server)

• base level classes and a set of API’s that can be implemented (e.g. DataSource for DB2)

Page 14: Slide 1

14

Java Basics – Application Types• Batch/Command (executable)

• Java class with main method• initiated via javac command (command line)• requires server with a JRE installed

• Web (executable)• Servlet – Java server application which understands

HTTP requests – web-oriented transaction• JSP – JavaServer Page – combination of HTML and

Java code or tags – compiles to create Servlet• requires an Java Enterprise Edition application server or

web server with servlet engine

Page 15: Slide 1

15

Java Basics – Other Java Classes

• Java Bean (non-executable)• class that contains attributes/fields and get and

set methods• like COBOL copybook for data record

• Other Java classes (non-executable)• Data Access Objects – DAO (SQL)• Business objects – methods with business logic• EJB’s – Session, Entity, Message beans• others – design patterns, special use, etc.

Page 16: Slide 1

16

Java Basics – Web Application

• Applications generally launched by a URL• Enterprise Application maps URL to a servlet• Servlet invokes business logic (other Java classes)• Business logic invokes DAO class• DAO class retrieves data from DB2 using

database API (e.g. JDBC, SQLJ – more later)• Display information is stored in request or session• Servlet redirects to JSP (servlet to build HTML)• JSP has tags to display data within HTML

Page 17: Slide 1

17

Java Basics – Web Application

WebServer

App Server

DB2 Connect

z/OS

DB2

JVM.class/.jar

Page 18: Slide 1

18

Java Basics – Web Application

Servlet(.class)

JavaServerPage(.jsp)

browserrequest(URL)

HTML

Data AccessObject (.class)

BusinessObject(.class)

DB2

Page 19: Slide 1

19

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 20: Slide 1

20

Java Development

• Developers typically use a development tool (IDE)• code highlighting, code assist, compiling, etc.• source code stored in source control repository• developers synchronize – replicate code to desktop

• Applications (Java EE) are unit tested on a desktop application server

• Server configurations are replicated in developer environment

• Development tool simulates server runtime environment

Page 21: Slide 1

21

Java Development (example)

Developer Desktop

IDE

Local TestServer

DB2 ClientDB2

SourceControl

Page 22: Slide 1

22

Java Runtime• Application components deployed to application server

• follows Java EE specification• manages database connections/drivers/pools

• Application runs within a JVM within the application server• JVM has the following

• JDK version – including base Java classes• specific classpath (concatenation of folders/JAR’s)• application dependent JAR’s• system property settings• application configuration files

• Configuration changes – requires application server to be “bounced” (restarted)

Page 23: Slide 1

23

Java Runtime – Deployment

EnterpriseApp

(.ear)

ApplicationServer

DeploymentProcesses

Classes(.jar)

Source ControlServer

Developer

SourceControl

Page 24: Slide 1

24

Java Runtime - Environment

Configuration(.xml)

Application Server

Application(.ear)

Common Classes (.jar)

Application(.ear)

Application logs

DataSource

DataSource

DB2Client

Page 25: Slide 1

25

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 26: Slide 1

26

DB2 Connection

• Basics

• Driver Types

• Static vs. Dynamic SQL

• Quick example

• Data Persistence

• Desktop vs. Server

Page 27: Slide 1

27

DB2 Connection – Basics

• Java applications connect to DB2 through the java.sql.Connection class

• DB2 driver (multiple types) implements the generic API of a Connection

• DataSource is configured in application server (more under Security)

• Java application uses one or more API’s to build SQL and retrieve/update data in DB2• JDBC – dynamic SQL• SQLJ – static SQL

Page 28: Slide 1

28

DB2 Connection – Basics

App(Java)

JDBC/SQLJ

DB Driver(JAR) DB2

DB2Connect

DB2Client

Application Server (Java EE) Server Mainframe

Page 29: Slide 1

29

DB2 Connection – Basics

• There are multiple ways to configure communication between open systems server and mainframe server• e.g. DB2 Connect thru DB2 Client

• DB2 can also reside on an open system server (DB2 UDB)

• Developer desktop may have a different path to the DB2 server (e.g. DB2 Client)

• Driver type can vary depending on the connection (see Driver Types later).

Page 30: Slide 1

30

DB2 Connection – Basics

• Isolation Level• Connection class API – JDBC

• Java application can set for a transaction• SET TRANSACTION ISOLATION LEVEL

clause - SQLJ• Configuration of a default isolation for

DataSource in application server• NOTE: z/OS threads have different DB2

packages for each isolation level

Page 31: Slide 1

31

DB2 Connection – Driver Types

• Type 1 – driver code maps directly to native code of platform (e.g. JDBC – ODBC bridge for Windows)

• Type 2 – driver made up of part native code, part Java

• Type 3 – driver Java code uses generic database protocol – middleware supports database connectivity

• Type 4 – pure Java driver – no middleware

Page 32: Slide 1

32

DB2 Connection – Static vs. Dynamic SQL• Dynamic

• JDBC API – part of Java SE• Most pervasive• SQL parsed and optimized at run time• Statement vs. PreparedStatement (HINT: never use

Statement) to execute SQL• CallableStatement – API for stored procedures• Table qualifier specified in SQL

• Static• SQLJ API – separate from Java SE• Less adoption than JDBC• SQL parsed and optimized at development time

Page 33: Slide 1

33

DB2 Connection – Static vs. Dynamic SQL – Statements• Dynamic SQL – Statement

• SELECT * FROM TABLE WHERE COL1 = 123• SELECT * FROM TABLE WHERE COL1 = 789• Different SQL statements!

• Dynamic SQL – PreparedStatement• SELECT * FROM TABLE WHERE COL1 = ?• Same for all values of COL1!• Better performance, helps manage SQL

• So, use PreparedStatement

Page 34: Slide 1

34

DB2 Connection – Quick Example

int myKey = 123;

Connection conn = MyDataSource.getConnection( );

String sql = “SELECT COL_2, COL_3, COL_4, COL_5 “+ “ FROM TEST.TABLE WHERE COL1 = ?“;

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setInt(myKey);

ResultSet rs = stmt.executeQuery( );

Page 35: Slide 1

35

DB2 Connection – Quick Example

while (rs.next( )) {

String col2 = rs.getString(“COL_2");

Date col3 = rs.getDate(“COL_3”);

Timestamp col4 = rs.getTimestamp(“COL_4”);

int col5 = rs.getInt(“COL_5”);

}

Page 36: Slide 1

36

DB2 Connection – Data Persistence• There are multiple ways to persist data to and retrieve data

from the database in Java• SQL issued by Java

• Data Access Object (DAO)• SQL is coded by developer• can use JDBC or SQLJ calls

• Hibernate – open source project• EJB – entity beans

• EJB 2.0 vs. EJB 3.0

• Mainframe transactions accessed by Java• Stored Procedures• other API’s

Page 37: Slide 1

37

DB2 Connection – Desktop vs. Server• DB2 drivers – DB2 client on developer desktop

• DB2 connection – different path than from server

• Security – developer requires DB privileges (more under Security)

• Server configuration – IDE, plug-in, etc.

• configured by developer on desktop

• configured by DBA or server administrator on server

Page 38: Slide 1

38

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 39: Slide 1

39

Security

• Application vs. database

• Dynamic vs. Static SQL

• Runtime vs. developer

• Web applications

Page 40: Slide 1

40

Security – Application vs. Database• Java applications typically authenticate to DB2

using an application-level id

• Users authenticate to application instead of to DB2

• Application id is stored in a DataSource or a property file (encrypted, secured)

• DB2 privileges are assigned to application id for dynamic SQL

• Single application id helps with SQL caching

Page 41: Slide 1

41

Security – Application vs. Database

Application

Ap

pS

ecu

rity

UserDirectory

DB2

User1

User2

User3Id file

Id = AppUser

Da

taS

ou

rce

Id & password(one location)

Page 42: Slide 1

42

Security – Dynamic vs. Static SQL

• JDBC – dynamic SQL

• privileges assigned to application id

• privileges assigned at table level

• SQLJ – static SQL

• package created at development time

• privileges assigned at package level to application id

Page 43: Slide 1

43

Security – Server vs. Developer

• Developers generally require individual privileges for testing of dynamic SQL

• Alternately, secondary authid can be used

• Password for application id is unknown to developers (as it should be)

• Developer configures DataSource in local test server or local file with personal id and password

• Personal id and password sent to DB2

Page 44: Slide 1

44

Bullet Points

• Java Basics

• Java Development/Runtime Environment

• Java and DB2

• Security

• Development/Management Issues

Page 45: Slide 1

45

Development/Management Issues

• Performance

• Logging/tracing

• Environment

• Security

• Support

Page 46: Slide 1

46

Development/Management Issues – Performance• Dynamic SQL

• developers don’t always know DB2

• SQL cache – use PreparedStatement

• Distributed thread priority on z/OS can be lower than native z/OS processes

• Managing/monitoring dynamic SQL

• Generated SQL – EJB entity beans, Hibernate – developers don’t always directly control SQL

Page 47: Slide 1

47

Development/Management Issues – Logging/tracing• Logging/tracing from open server to z/OS

• more levels of logging/tracing• log4j – common debug log method for Java• JDBC trace in DB2 Client

• Dynamic SQL challenges• SQL not known until run time• Don’t use Statement – use PreparedStatement• PreparedStatement – host variable values not

displayable in log (Hint: implement a DebugStatement)

Page 48: Slide 1

48

Development/Management Issues – Environment• Various servers – Java, DB2 Connect, z/OS• Version levels – JDK, DB2 (Client, database),

driver classes, Java EE, open source…• DB2 connection/settings• Differences between desktop and server• Releasing DB2 resources by application – close

connections, statements• Restarting application server (e.g. changed

configuration, changed JAR files)

Page 49: Slide 1

49

Development/Management Issues – Security• Dynamic SQL vs. Static SQL (see Security)• Multi-tiered security – security privileges managed

at multiple levels (e.g. web layer, database layer)• Developer access vs. server runtime (application

id)• DataSource configuration vs. id/password file

• DataSource – proliferation of DataSources managed by server admins, not Security

• File – API to obtain id and password can expose to developers

Page 50: Slide 1

50

Development/Management Issues – Support • Mainframe developers learning Java

• Java developers not knowing about DB2 (can you say “dynamic SQL”?)

• Mainframe DBA’s supporting Java developers

• Multi-tiered infrastructure support

• How can I learn?

Page 51: Slide 1

51

Development/Management – How can I learn?• Sun site

• JDK download• Examples• API documentation• NetBeans or other IDE – www.netbeans.org

• IBM site• DB2 Express or Cloudscape• Examples• DataSource

Page 52: Slide 1

52

Summary

• There is a lot of new terminology to learn• The runtime environment is very different from the

mainframe• There are more components to connect a Java

application to DB2 on the mainframe• Database authentication is different for dynamic

vs. static applications• There are issues with managing a Java and DB2

environment, but hopefully…

Page 53: Slide 1

53

You’ve learned something!

Page 54: Slide 1

54

References

• Sun Java website – http://java.sun.com

• DB2 Isolation Levels in Java - http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db2.doc/db2prodhome.htm (search ‘isolation level java’)

• Dynamic SQL - http://www.redbooks.ibm.com/redbooks/pdfs/sg246418.pdf

• SQLJ - http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/ad/t0007588.htm

Page 55: Slide 1

55

References

• DB2 Universal Java Driver - http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0512kokkat/

• DB2 Explain Tables - http://www.os2ports.com/docs/DB2/db2d0/db2d0219.htm#HDRAPPEXP (Appendix K)

• DB2 Express - http://www-128.ibm.com/developerworks/kickstart/database.html

• Cloudscape - http://www-128.ibm.com/developerworks/db2/zones/cloudscape/

Page 56: Slide 1

56

References

• Java and DB2 - http://www-128.ibm.com/developerworks/db2/zones/java/bigpicture.html

• DB2 Connect - http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0503katsnelson/

Page 57: Slide 1

57

John MalloneeHighmark Inc.

[email protected]

Session: G09DB2 & Java for Dummies


Recommended