32
Lecture 1 - Introduction JAVA

Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents Staff Assignments Topics Readings

Embed Size (px)

Citation preview

Page 1: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

Lecture 1 - Introduction

ENTERPRISE JAVA

Page 2: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

2

Contents Staff Assignments Topics Readings

Page 3: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

3

Unit Staff

Dr John Casey Email: [email protected] Room 3008, building 183 Appointments can be made via email

Page 4: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

4

My Experience Oracle Certified Java Programmer (OCJP) Programmer

P2P, Sockets, Distributed Systems, Information Retrieval Motor Registry System – State of Tasmania Fines and Infringement Notices Database – State of

Tasmania PayGlobal – Victorian Country Fire Authority LifeLink - Births, Deaths and Marriages State of NSW …

Educator Deakin University, Melbourne Unitec

Page 5: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

5

Unit Objectives Exposure to a variety of new Java

technologies Develop your programming ability Ability to use online resources

Reading other peoples code Quickly discern what is good and what is bad Use API guidelines to find required function

Develop ability to learn new technologies Become fluent in Java and the open source

Java technology stack

Page 6: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

6

Who should do this unit? Students that are nearly ready to

graduate You already know how to program, and

want to learn some cool new technologies

You are inquisitive and you are ready to do a lot of work out of class to develop your career

You want to know what else is out there (open source frameworks etc.) – ninja programming techniques, design patterns etc.

Page 7: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

7

Who should not do this subject? Students that are still having problems

with syntax and logic Students that did well in lower level

programming subjects through sheer brute force

Students can do well if they are Motivated Have Self-Control and Perseverance Have a logical mind Enjoy programming

Page 8: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

8

Technologies Apache Lucene

Open source free text search engine Breaks documents into keywords, counts word

frequencies, builds an index Indexes keywords by document, weights query

matches based on term frequency Apache Struts

Model View Controller Separate business logic, database, screen and

control Based on JSP and Servlets

Page 9: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

9

Technologies Java Server Faces

Another Model View Controller framework Component based and event oriented Uses Facelets which is another presentation tech

(similar to JSP) Hibernate

Object-Relational Mapping between code and database

Auto generates code and database mappings based on either class files or database schema

Saves lots of time as you do not have to embed SQL in your application

Page 10: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

10

Technologies Spring Framework

Acts as a router for different system components

Looks at class / method properties using Java Reflection

Objects bound at runtime instead of at compile time Allows system components to be swapped Allows testing using mock objects

Handles transactions and data access layer

Page 11: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

11

Technologies Socket Programming

Synchronous and Asynchronous Sockets Java Enterprise Edition

Servers like Jboss Java Beans

Mule – Enterprise Service Bus Event-driven batching system

Reports BIRT Jasper Reports

Page 12: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

12

Assessments

Lab Exercises: 30% In class practical exercises due every week,

can be submitted by email up to one week late.

Assignment: 45% Two major assignments

Final exam: 25% Code and theory

Page 13: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

13

Foundations Web Application Development Servlets and CGI JSP JDBC

Page 14: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

14

Common Gateway Interface Allows web server to generate page content

using external program Web server re-directs I-O messages to external

command line program – usually written in Perl/Python/Bash script

Simple interface parameters supplied by HTTP GET request QUERY_STRING The part of the URL after ?

If you have lots of users - setting up the environment / process for your external CGI program can be slow...

Page 15: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

15

Servlets Java + CGI Servlets run inside the web server

Each servlet runs inside its own thread or its own process Much faster: web server no longer needs to setup an entire

environment each time a user makes a request Sandboxed environment

Jetty Tomcat JBoss Websphere Glassfish ...

Page 16: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

16

Servlet Codepublic class testServlet extends HttpServlet {

public testServlet() {

super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = new PrintWriter(response.getWriter());

response.setContentType("text/html");

out.println("<html>Hello World! this is my first Java servlet.</html>");

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

Page 17: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

17

Java Server Pages Mix HTML and Java Code Oracle/Sun’s answer to ASP and PHP Blocks of static HTML + blocks of dynamically

generated HTML Simplifies the creation of dynamic web

applications You do not need to output lots of messy dynamically

generated HTML code from your Java code Two basic elements HTML markup and JSP

scriptlet code blocks

Page 18: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

18

Java Server Pages Java code executed in place: there is no need

to define a main method or other entry point Code runs in sequential order – top to bottom

Can also define methods – more on this later Tomcat / Servlet containers effectively

compile JSP pages into a Servlet Java Code blocks wrapped in <% %> brackets

<HTML> <BODY>

<% java.util.Date date = new java.util.Date(); %>

Hello!  The time is now <%= date %>

</BODY> </HTML>

Page 19: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

19

JSP -> Servlet<%@ page errorPage="myerror.jsp" %>

<%@ page import="com.foo.bar" %>

<html> <head>

<%! int serverInstanceVariable = 1;%>

<% int localStackBasedVariable = 1; %>

<table> <tr><td>

<%= toStringOrBlank( "expanded inline data " + 1 ) %>

</td></tr>...

Page 20: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

20

Generated Code...import …

class _myservlet implements Servlet, HttpJspPage {

int serverInstanceVariable = 1;

… public void _jspService(HttpServletRequest request, HttpServletResponse response ) throws ServletException, java.io.IOException {

ServletConfig config = …; // Get the servlet config Object

page = this;

PageContext pageContext = …; // Get the page context for this request

JspWriter out = pageContext.getOut();

HttpSession session = request.getSession( true );

try {

out.print( "<html>\r\n" );

out.print( "<head>\r\n" );

int LocalStackBasedVariable = 1;

out.print( "<table>\r\n" );

out.print( " <tr><td>" );

out.print( toStringOrBlank( "expanded inline data " + 1 ));

out.print( " </td></tr>\r\n" );

} catch ( Exception _exception ) { ...

} } }

Page 21: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

21

JSP Methods Method definition<%! public String sayHello()

{

return "Hello this is a method";

}

%>

Method call<%= sayHello() %>

Page 22: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

22

JSP Directives <%@ page import="java.util.*" %> <%@ page

import="java.util.*,java.text.*" %>

<HTML> <BODY> Going to include hello.jsp...<BR> <%@ include file="hello.jsp" %> </BODY> </HTML>

Page 23: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

23

Builtin JSP Objects HTTPServletRequest request

Read different key / value pairs Header attributes Cookies ... + lots more

HTTPServletResponse reponse Write different key / value pairs

JspWriter out Default output stream / writer for a JSP page

Page 24: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

24

JDBC – Java Database Connectivity A common interface which allows a Java Program to access a SQL /

relational database technology programmatically JDBC classes and factory methods abstract common SQL database

functions such as: Connect / Disconnect Statements

Select Insert Update Delete DDL ( create table etc …)

ResultSets PreparedStatements ResultSetMetaData

Classes and Factory methods live in the java.sql.* package

Page 25: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

25

What is JDBC? API written in such a way to provide an abstracted

interface to allow applications written using JDBC to access and interact with many different database products

JDBC uses a Driver based model which allows a Java application to access any database server for which a JDBC driver exists

Makes database / application development easier as programmers do not need to familiarize themselves with the database libraries provided by different vendors. ie. low level API’s provided by the likes of IBM (DB2),

Microsoft (SQL Server) and Oracle. Hides many unnecessary details

Page 26: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

26

Oracle Database

Custom Oracle API gives programmatic access to database server

Program once compiled can only talk to an Oracle database

Very fast compared with all the translation that needs to happen with JDBC

SQL Server, Sybase, MySQL etc. all have their define their custom own APIs / protocols

Page 27: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

27

DataSource Factory method for defining and obtaining access

to a database Connection object Allows programmer to specify data about a

database connection Vendors often provide their own variations of the

generic Java DataSource Sets up information related to database:

Port Hostname Schema And Database name

Page 28: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

28

ExampleSQLServerDataSource ds = new SQLServerDataSource ();

ds.setIntegratedSecurity(false);

ds.setServerName("hyperdisc.unitec.ac.nz");

ds.setPortNumber(1433);

ds.setUser("patelc08");

ds.setPassword(“xxxxxxxx");

ds.setDatabaseName("patelc08sqlserver1");

ds.setInstanceName("dbo");

Connection conn = ds.getConnection();

Page 29: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

29

Connection Java wrapper around database session / connection Provides metadata about database connection

SQL dialect (vendor MS, Oracle etc.) Transaction isolation level

Factory methods for creating Statement objects Connection methods need to be explicitly closed in

a finally { //… } block otherwise you may end up needing to restart your database a lot

Factory methods to create prepared statements – which are a pool of pre-compiled SQL statements stored on a database server

Page 30: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

30

Statements etc Statement Java wrapper around SQL DML/DDL

Data Manipulation Language1. Insert2. Delete3. Update4. Select Data Definition Language1. Create table2. Drop table3. etc.

Page 31: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

31

ResultSets Wrapper around a database’s SQL result set Allows a programmer to scroll forward through

the result set using a database defined cursor Can also scroll backwards and forwards

through the result set and to arbitrary positions depending on the JDBC driver and database technology

Provides meta data about the results such as column name and data type

How many results were returned etc.

Page 32: Lecture 1 - Introduction ENTERPRISE JAVA. 2 Contents  Staff  Assignments  Topics  Readings

32

Readings http://struts.apache.org/primer.html http://www.ibm.com/developerworks/libr

ary/j-struts/