380 likes | 482 Views
Introduction to Java Development with IDS. Jean Georges Perrin IIUG GreenIvory.com JGP.net. Tuesday, October 3 rd 2006 • 09:00 – 10:00. Platform: IDS, Java. Agenda. Who am I? Architecture Requirements Your very first cup of Java JDBC Your first application using the Command Prompt
E N D
Introduction to Java Development with IDS Jean Georges Perrin IIUG GreenIvory.com JGP.net Tuesday, October 3rd 2006 • 09:00 – 10:00. Platform: IDS, Java
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
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
Who am I? • My Unix box usually answers…
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
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
And you… • Who knows 4GL? • Who knows Java? • Who thinks Java is difficult? • Who knows .net?
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
Architecture Application JDBC Driver Data
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
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.1) • Where: www.eclipse.org
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
Your very first cup of Java fglpc • Hello, world… in Java • Use of “javac” • Use of “java” • Code snippet: fglgo Source code is self organizing in packages Modules are organized in classes main {…} is MAIN … END MAIN package org.iiug.test; public class HelloWorld { public staticvoid main(String[] args) { System.out.println("Hello, world..."); } } “Hello, world…” is always the same, in any language…
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
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
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
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
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
Your first application using the Command Prompt • Understand the role of the “CLASSPATH” • Full source code (copy / paste): import java.sql.*; publicclass MyFirstJDBCConnection { publicstaticvoid 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
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") + ")"); }
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
Declaring objects to use // Define my local variables Connection myConnection; Statement myStatement; ResultSet myResultSet; • 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. Connection = DATABASE Statement = STATEMENT ResultSet = ARRAY OF RECORD / CURSOR
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
Connecting to the database • Code snippet: // 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 & Execution • Code snippet: // 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");
Looping around • Code snippet: // 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") + ")"); }
Cleaning • Code snippet: • Not only cleaning • Exception Handling! // 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
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
Your first application using Eclipse • Create a project • Add the library • Create the class • Run it
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
Your first application using a framework • Goals of a framework • Ease of use • Small learning curve • Database connectivity • Business logic
BlueGazelle • Open Source framework • Soon to be downloadable from http://www.greenivory.com
BlueGazelle Source Code • Code snippet: Database 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 FROMcustomer 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
Conclusion • Java offers a standard way of accessing data. • Java is working in a distributed environment. • Frameworks simplify the developers’ life.
Eclipse Java SE 5 Zend Framework? Java J2EE PHP 5 Java EE 5 4GL PHP OO in PHP 4 Complexity & Features Difficult Level of complexity / feature of languages over time Easy 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
And now… • Come to see me in San Jose (May 2007) • Full Java Educational Seminar (you need to stand me for 3 hours) • “Introduction to EJB3 dev. with IDS and Viper” • I think I have a session or two on XML • (Give me good marks so I can be selected as best speaker of the conference and beat Darryl, Lester and Art - previous speakers and enter Hall of Fame).
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 • Come back to me
Introduction to Java Development with IDS Thanks for your patience Come back to me… jgp@iiug.org jgp@jgp.net