You are on page 1of 56

Speak Java in one hour

An introduction in Java lingo

Wat is java?

Programmeertaal
Jvm
Platform
'Write Once, Run Anywhere'

Acronymen hel

NetBeans

Duke
iBatis
JAX-RPC
GlassFish Struts
JVM IIOP
JBoss Hibernate
SAAJ
JAXB
Trinidad
JSR
POJO
TestNg
JavaDoc JavaDesktop JUnitApplet
NetBeans
war
JAXB
Wicket
JSP
J2EE Java SEDrools
JMS
Swing WebLogic JSF
JIT
ant
ear
JDBC
Servlet
MyFaces
JPA
JDK
Java JavaFX Tapestry
Stripes
Apache GWT
Tomcat
EL
Java ME RichFaces
SDO ADF
JCP
Seam
TopLink
JavaBeans
IceFaces
Log4J
Ajax
Cocoon
JDO
JSTL
Velocity
Groovy
JCA
JDom
Java EE JNDI WebSphere
Spring
AOP
SCA
AWT
Acegi
James
Gosling
Lucene
JMX
Jre
RMI
Maven
AMIS
JAAS
EJB
JAXP
Facelets
Java Web Start
Tuscany

Java language

Object orintatie
POJO

Plain Old Java Object


properties
methods

Netwerk support
Remoting

Example

import java.net.*;
import java.io.*;
public class google {

public static void main (String[] args) {


try {
String thisLine;
URL u = new URL("http://www.google.com");
DataInputStream theHTML = new DataInputStream(u.openStream());
while ((thisLine = theHTML.readLine()) != null) {
System.out.println(thisLine);
}
} catch (MalformedURLException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
}
}

bytecode
.java

compiler

.class

platform / libraries
jvm

jit compilation

OS

IDE

Code completion
Syntax Highlighting
Wizards
Documentation
Refactoring
Unittest support
Delivery support
Compilation
Classpath organization
...

Eclipse
WSAD
JDeveloper
IntelliJ IDEA
NetBeans
WebLogic Workshop
[Notepad]
...

JVM

Platform specific
Run bytecode
normally, but not necessary, generated from java
source code

The JVM is distributed along with a set of


standard class libraries which implement the
Java API (Application Programming
Interface) : JRE

10

11

Java family / Platform

Java SE : Standard Edition


Java EE : Enterprise Edition
Java ME : MicroEdition
Java FX : Scripting & Mobile

12

13

History

JDK 1.0

January 23, 1996

JDK 1.1
J2SE 1.2
J2SE 1.3
J2SE 1.4
J2SE 5.0
Java SE 6
Java SE 7

February 19, 1997


December 8, 1998
May 8, 2000
February 6, 2002
September 30, 2004
December 11, 2006
2008

Many version updates

14

Java SE - Overview

15

Delivery

jar file
java -jar MyApp

16

Toepassingen

applets
Application in browser

GUI apps, Swing


Command line
Basis voor Java EE
Java in the DB
Webstart
automatic network distribution

...

17

18

History

19

Toepassingen

Web applications
Multitier
Distributed
Transactional
SOA
Integration
Web Services
Messaging
...

20

Programming

Interfaces
Implementation is provided by vendors and
only partially by Java EE
(vendor specific) Extensible
JavaBeans

21

Delivery

'Standard' directory structure


jar
war
/WEB-INF/web.xml

ear
/META-INF/application.xml

rar
...

22

23

Architecture

Application Server
EJB Container
EJB
EJB
Clients

EJB

Web Container

Other
Systems

jsp
servlet
Admin etc.

24

Architecture

25

Architecture

26

Architecture

27

JOnAS Architecture

28

WebSphere Architecture

29

Vendors

Oracle iAS
IBM WebSphere
BEA WebLogic
JBoss
GlassFish
Geronimo
JOnAS
SAP Netweaver
Pramati
ATG Dynamo
Tomcat
Jetty

http://en.wikipedia.org/wiki/Comparison_of_application_servers#Java

30

31

Servlets

Web application
Plain java
No visual representation
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWWW extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<HTML>\n" +
"<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" +
"<BODY>\n" +
"<H1>Hello WWW</H1>\n" +
"</BODY></HTML>");
}
}

32

JSP

Web application
Visual
pre-compiled to servlet

33

Jsp Examples

<%@ page import="hello.NameHandler" %>


<jsp:useBean id="mybean" scope="page" class="hello.NameHandler" />
<jsp:setProperty name="mybean" property="*" />
<html>
<head><title>Hello, User</title></head>
<body bgcolor="#ffffff" background="background.gif">
<%@ include file="dukebanner.html" %>
<table border="0" width="700">
<tr>
<td width="150"> &nbsp; </td>
<td width="550"> <h1>My name is Duke. What's yours?</h1> </td>
</tr>
<tr>
<td width="150" &nbsp; </td>
<td width="550">
<form method="get">
<input type="text" name="username" size="25">
<br>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
</td>
</tr>
</table>
<%
if ( request.getParameter("username") != null ) {
%>
<%@ include file="response.jsp" %>
<%
}
%>
</body>
</html>

34

Jsp with tag Examples

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>


<html>
<head>
<title>JSTL: Formatting/I18N Support -- Number, Currency, and Percent
Example</title>
</head>
<body bgcolor="#FFFFFF">
<h3>Formatting numbers, currencies, and percentages using <tt>en-US</tt>
locale</h3>
<fmt:setLocale value="en-US" />
<ul>
<li> Format &quot;123456789&quot; as number:<br>
<fmt:formatNumber value="123456789" />
<li> Format &quot;123456789&quot; as percent:<br>
<fmt:formatNumber type="percent">123456789</fmt:formatNumber>
<li> Format &quot;12345.67&quot; as currency:<br>
<fmt:formatNumber value="12345.67" type="currency" />
<li> Format &quot;12345.67&quot; as currency, with special formatting:<br>
<fmt:formatNumber value="12345.67" type="currency"
groupingUsed="false" maxIntegerDigits="4" maxFractionDigits="0" />
</ul>
</body>
</html>

35

JDBC

Java DataBase Connectivity


Interactie tussen java en database

import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
try {
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@oracle:1521:orcl","scott","tiger");
Statement stmt = conn.createStatement();
ResultSet r = stmt.executeQuery ("SELECT * FROM STD");
while (r.next())
System.out.println(r.getString(2) + " " + r.getString(4));
r.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}

36

EJB

Server-side component architecture


Message Driven Beans
Session Beans
[Entity Beans]
[JPA (Java Persistense API)]
Complicated and Complex
Improved much with 3.0

37

Issues

Java (SE / EE) only provides the basics


Reference implementation

J2EE is too complicated


Long / slow adaptation process for new
technologies

38

Result

Framework 'hel'

Improvement of Java
EJB 3.0

Convention over configuration

Java Persistence
JSF

39

40

Struts

Apache Framework
de-facto Standard voor jsp development
Action based
Still alive
ADF v9

41

JSF

Visual
Component based
Java EE Standard
/WEB-INF/faces-config.xml

42

Available component libraries

ADF Faces
JBoss RichFaces
IceFaces
MyFaces
Tobago
Trinidad
Quipukit
WebGalileoFaces
ILOG JSF tools
Jenia
Woodstock
...

43

Hibernate

Framework voor de interactie tussen java


and de database
map java objects to db tables
query en persist

~ ADF Business Components


~ Toplink

44

Ontstaan uit onvrede over complexiteit Java


EE
Ease of development
Non invasive
Testability
Inversion Of Control / Dependency Injection

45

Spring Mission Statement

We believe that:

J2EE should be easier to use


It is best to program to interfaces, rather than classes. Spring
reduces the complexity cost of using interfaces to zero.
JavaBeans offer a great way of configuring applications.
OO design is more important than any implementation technology,
such as J2EE.
Checked exceptions are overused in Java. A framework shouldn't
force you to catch exceptions you're unlikely to be able to recover
from.
Testability is essential, and a framework such as Spring should
help make your code easier to test.

We aim that:

Spring should be a pleasure to use


Your application code should not depend on Spring APIs
Spring should not compete with good existing solutions, but should
foster integration.

46

Spring Projects

Spring Framework
Spring Web Flow
Spring Web Services
Spring Security (Acegi Security)
Spring Dynamic Modules For OSGi(tm) Service Platforms
Spring Batch
Spring Integration
Spring LDAP
Spring IDE
Spring Modules
Spring JavaConfig
Spring Rich Client
Spring .NET
Spring BeanDoc

48

ADF

Visual and declarative development of J2EE


applications
Onderdelen
ADF Faces
ADF Business Components
ADF Model (binding)

49

SEAM

JBoss
Unify and integrate (o.a)
AJAX, JSF, EJB3, BPM

50

51

Open Source

Huge impact on development with Java (EE)


Huge influence on Vendor products
Major adaptation
Struts, Hibernate, Spring, ...
MySQL, Subversion

Donations
ADF -> Trinidad

Apache
SourceForge
CodeHaus

52

Apache

Commons
Utility methods for text, collections, io, en/decoding, http, etc

Struts, JSP
MyFaces, JSF
Trinidad, JSF
Velocity, templating
Tuscany, SOA
Geronimo, AS
Lucene, searching
Tomcat, AS
Maven, build management
Harmony, Open Source Java SE
Synapse, ESB
...

53

54

Java Community Process

Shapes and organizes the future of Java


JSR
http://en.wikipedia.org/wiki/Java_Community_Process

55

The future

Jaca SE 7 - 2008
Java EE 6 - 2008
Java FX
Java everywhere
Framework shakeout?
Better Visual development

56

57

You might also like