33
Introduction to Java Development with IDS Jean Georges Perrin IIUG I04 Tuesday, October 3 rd 2006 • 09:00 – 10:00. Platform: IDS, Java

Introduction to Java Development with IDS Jean Georges Perrin IIUG I04 Tuesday, October 3 rd 2006 09:00 – 10:00. Platform: IDS, Java

Embed Size (px)

Citation preview

Introduction to Java Development with IDS

Jean Georges PerrinIIUG

I04

Tuesday, October 3rd 2006 • 09:00 – 10:00.

Platform: IDS, Java

2

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

3

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

4

Who am I?

• My Unix box usually answers…

5

Who am I (outside of a Unix box)?

• Jean Georges Perrin

• Development tools (xGL, Java EE, PHP)

• Works with Informix products since ’97

• IIUG board member since ’02

• Lives in Strasbourg, France

6

A little more…

• Application developer, started with Visual Basic, in the early 90s

• In the web since 1994

• Move to 4GL in 1997

• Goals:• Webizing all things I touched (business apps,

catalogs and i-4GL…)• Find the ease of use of Visual Basic

7

And you…

• Who knows 4GL?

• Who knows Java?

• Who thinks Java is difficult?

• Who knows .net?

8

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

9

Architecture

DataApplication JDBC Driver

10

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

11

Requirements

• #1 - IDS (from v7.x, but also works on OnLine and SE)• Where: www.iiug.org, www.informix.com

• #2 - Java (Java SDK v5.x)• Where: www.javasoft.com

• #3 - JDBC driver (IBM Informix JDBC 3.0)• Where: www.informix.com

• #4 - Option: Eclipse (v3.2.0)• Where: www.eclipse.org

12

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

13

Your very first cup of Java

• Hello, world… in Java

• Use of “javac”

• Use of “java”

• Code snippet:package org.iiug.test;

public class HelloWorld {

public static void main(String[] args) { System.out.println("Hello, world..."); }}

Source code is self organizing in packages

Modules are organized in classes

main {…} is MAIN … END MAIN

“Hello, world…” is always the same, in any language…

fglpc

fglgo

14

Java Pros & Cons

• Object Oriented (OO) development

• Event driven programming model

• User Interface (UI) & Business Logic (BL) tightly linked

• Open architecture, open standards

• General purpose development language

• Industry standard

• Looks like “hype” to developers

15

4GL Pros & Cons

• Procedural development

• “Controlled” events

• UI and BL somehow separated (.per & .4gl)

• Proprietary solution

• Business apps development language

• Not a standard in industry

• Hard to attract new developers

16

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

17

JDBC

• Types of driver (annoying theory)

• Standard way of talking to a database (forget about SQL/J)

• Use a URL, for IBM Informix:jdbc:informix-sqli://popeye:1526/stores_demo:informixserver=ol_popeye;user=informix;password=informix

18

Agenda

• Who am I?• Architecture• Requirements• Your very first cup of Java• JDBC• Your first application using the Command

Prompt• Your first application using Eclipse• Your first application using a framework

19

Your first application using the Command Prompt• Understand the role of the “CLASSPATH”

• Full source code (copy / paste):import java.sql.*;

public class MyFirstJDBCConnection {

public static void main(String[] args) { // Define my local variables Connection myConnection; Statement myStatement; ResultSet myResultSet; // Loading driver try { System.out.println(">> Loading the driver"); Class.forName("com.informix.jdbc.IfxDriver"); } // end try catch (ClassNotFoundException e) { System.out.println("ERROR: Failed to load IBM Informix JDBC driver."); return; } // end catch

20

Your first application (2) try { // Connection to database System.out.println(">> Connecting to the database"); myConnection = DriverManager.getConnection ("jdbc:informix-sqli://popeye:1526/stores_demo: informixserver=ol_popeye;user=informix;password=informix", "", ""); // Statement creation System.out.println(">> Creating the statement"); myStatement = myConnection.createStatement(); // Resultset creation & execution System.out.println(">> Executing the query"); myResultSet = myStatement.executeQuery ("SELECT fname, lname, customer_num FROM customer ORDER BY lname"); // Outputting the result System.out.println(">> Step 4 - Dumping data"); while (myResultSet.next()) { System.out.println ( myResultSet.getString("fname") + myResultSet.getString("lname") + " (" + myResultSet.getString("customer_num") + ")"); }

21

Your first application (3) // Cleaning System.out.println(">> Cleaning"); myResultSet.close(); myStatement.close(); myConnection.close(); } // end try catch (SQLException e) { System.out.println("ERROR: SQL exception: " + e.getMessage()); e.printStackTrace(); return; } // end catch } // end main} // end class

22

Declaring objects to use

• Code snippet:

• The “Connection” is the real connection to the database, it is (re)created each time.• Except when using “connection pooling”.

• The “Statement” is the real orders or queries to the database.

• The “ResultSet” contains a link to the data.

// Define my local variables Connection myConnection; Statement myStatement; ResultSet myResultSet;

Connection = DATABASE

Statement = STATEMENT

ResultSet = ARRAY OF RECORD / CURSOR

23

Loading the driver

• Code snippet:

• Drivers are uniquely named, for IBM Informix:

// Loading driver try { System.out.println(">> Loading the driver"); Class.forName("com.informix.jdbc.IfxDriver"); } // end try catch (ClassNotFoundException e) { System.out.println("ERROR: Failed to load IBM Informix JDBC driver."); return; } // end catch

com.informix.jdbc.IfxDriver

24

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

25

Your first application using Eclipse

• Create a project

• Add the library

• Create the class

• Run it

26

Agenda

• Who am I?

• Architecture

• Requirements

• Your very first cup of Java

• JDBC

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first application using a framework

27

Your first application using a framework• Goals of a framework• Ease of use• Small learning curve

• Database connectivity

• Business logic

28

BlueGazelle

• Open Source framework

• Soon to be downloadable from http://www.greenivory.com

29

BlueGazelle Source CodeDatabase myDatabase = null;Record myRecord = null;Record myRow = null;int count = 0;int i = 0;

try { myDatabase = Databases.connect("stores_demo"); myRecord = myDatabase.createRecordFromSelect("SELECT fname, lname, customer_num FROM customer ORDER BY lname"); count = myRecord.getCount(); for (i = 0; i < count; i++) { myRow = myRecord.getRecordAt(i); System.out.println(myRow.getString("fname") + myRow.getString("lname") + " (" + myRow.getString("customer_num") + ")"); } } catch (Exception e) { System.out.println("ERROR: Exception raised: " + e.getMessage()); e.printStackTrace();} // end catch

30

Conclusion

• Java offers a standard way of accessing data.

• Java is working in a distributed environment.

• Frameworks simplify the developers’ life.

31

And now…

• Go to my other presentation: “Introduction to PHP development with IDS”

• (Give me good marks so I can be selected as best speaker of the conference and beat Darryl, Lester and Art - previous speakers).

32

And now (seriously)…

• Download Eclipse (I guess you all have IDS already)

• Get a book (O’Reilly has quite a few great books)

• Join the development-tools forum on IIUG web site

• Get started with a few examples

33

Jean Georges PerrinIIUG

[email protected]

[email protected]

I04Introduction to Java Development with IDS