1
Speak Java in one hour
An introduction in Java lingo
2
Wat is java?
Programmeertaal Jvm Platform
'Write Once, Run Anywhere'
3
Acronymen hel
Java
Struts
JSFJ2EE
ADFSeam
WebSphere
JSR
Apache
TopLink
Hibernate
JavaFXJDBC
JVM
JavaDoc
Java ME
Java EE
Java SE
NetBeans
Swing
EJBRMI
GlassFish
JMS
JMX
Spring
Maven
ant
NetBeans
Jre
JavaDesktop
Tomcat
Velocity
James Gosling
JPA
JAXB
Trinidad
MyFacesJDK
JavaBeans
JUnit
Drools
RichFaces
WebLogic
JBoss
JSP
Duke
AcegiAOP
Log4J
Applet
JAAS
EL
Servlet
Groovy
Stripes Tapestry
Wicket
Facelets
AWT
GWT
CocoonIceFaces
Java Web Start
iBatis
SDO
Tuscany
TestNg
AMISLucene
JDO
POJO
AjaxJCA
IIOP
JDom
JAXP
JAXB
war
ear
JNDI
SAAJ
JAX-RPC
SCA
JSTL
JIT
JCP
4
5
Java language
Object oriëntatie POJO
• Plain Old Java Object• properties• methods
Netwerk support Remoting
6
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); } }}
7
.java .class
jvm
OS
compiler
jit compilation
platform / libraries
bytecode
8
IDE
Code completion Syntax Highlighting Wizards Documentation Refactoring Unittest support Delivery support Compilation Classpath organization ...
Eclipse WSAD JDeveloper IntelliJ IDEA NetBeans WebLogic Workshop [Notepad] ...
9
10
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
11
12
Java family / Platform
Java SE : Standard Edition Java EE : Enterprise Edition Java ME : MicroEdition Java FX : Scripting & Mobile
13
14
History
JDK 1.0 January 23, 1996
JDK 1.1 February 19, 1997
J2SE 1.2 December 8, 1998
J2SE 1.3 May 8, 2000
J2SE 1.4 February 6, 2002
J2SE 5.0 September 30, 2004
Java SE 6 December 11, 2006
Java SE 7 2008
Many version updates
15
Java SE - Overview
16
Delivery
jar file java -jar MyApp
17
Toepassingen
applets Application in browser
GUI apps, Swing Command line Basis voor Java EE Java in the DB Webstart
automatic network distribution
...
18
19
History
20
Toepassingen
Web applications Multitier Distributed Transactional SOA Integration Web Services Messaging ...
21
Programming
Interfaces Implementation is provided by vendors and
only partially by Java EE (vendor specific) Extensible JavaBeans
22
Delivery
'Standard' directory structure jar war
/WEB-INF/web.xml
ear /META-INF/application.xml
rar ...
23
24
Architecture
Clients
Application Server
EJB Container
EJB
EJBEJB
Web Container
jsp
servlet
OtherSystems
Admin etc.
25
Architecture
26
Architecture
27
Architecture
28
JOnAS Architecture
29
WebSphere Architecture
30
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
31
32
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>"); }}
33
JSP
Web application Visual pre-compiled to servlet
34
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"> </td> <td width="550"> <h1>My name is Duke. What's yours?</h1> </td> </tr> <tr> <td width="150" </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>
35
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 "123456789" as number:<br>
<fmt:formatNumber value="123456789" /> <li> Format "123456789" as percent:<br>
<fmt:formatNumber type="percent">123456789</fmt:formatNumber> <li> Format "12345.67" as currency:<br>
<fmt:formatNumber value="12345.67" type="currency" /> <li> Format "12345.67" as currency, with special formatting:<br> <fmt:formatNumber value="12345.67" type="currency" groupingUsed="false" maxIntegerDigits="4" maxFractionDigits="0" /> </ul></body></html>
36
JDBC
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); } }}
Java DataBase Connectivity Interactie tussen java en database
37
EJB
Server-side component architecture Message Driven Beans Session Beans [Entity Beans] [JPA (Java Persistense API)]
Complicated and Complex Improved much with 3.0
38
Issues
Java (SE / EE) only provides the basics Reference implementation
J2EE is too complicated Long / slow adaptation process for new
technologies
39
Result
Framework 'hel'
Improvement of Java EJB 3.0
• Convention over configuration
Java Persistence JSF
40
41
Struts
Apache Framework de-facto Standard voor jsp development Action based Still alive ADF v9
42
JSF
Visual Component based Java EE Standard /WEB-INF/faces-config.xml
43
Available component libraries
ADF Faces JBoss RichFaces IceFaces MyFaces Tobago Trinidad Quipukit WebGalileoFaces ILOG JSF tools Jenia Woodstock ...
44
Hibernate
Framework voor de interactie tussen java and de database map java objects to db tables query en persist
~ ADF Business Components ~ Toplink
45
Ontstaan uit onvrede over complexiteit Java EE
Ease of development Non invasive Testability Inversion Of Control / Dependency Injection
46
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.
48
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
49
ADF
Visual and declarative development of J2EE applications
Onderdelen ADF Faces ADF Business Components ADF Model (binding)
50
SEAM
JBoss Unify and integrate (o.a)
AJAX, JSF, EJB3, BPM
51
52
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
53
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 ...
54
55
Java Community Process
Shapes and organizes the future of Java JSR http://en.wikipedia.org/wiki/Java_Community_Process
56
The future
Jaca SE 7 - 2008 Java EE 6 - 2008 Java FX Java everywhere Framework shakeout? Better Visual development
57