Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Speak Java in one hour
An introduction in Java lingo
1
Wat is java?
Programmeertaal
Jvm
Platform
'Write Once, Run Anywhere'
2
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
3
4
Java language
Object oriëntatie
POJO
•
•
•
Plain Old Java Object
properties
methods
Netwerk support
Remoting
5
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);
}
}
}
6
bytecode
.java
compiler
.class
platform / libraries
jvm
jit compilation
OS
7
IDE
Code completion
Syntax Highlighting
Wizards
Documentation
Refactoring
Unittest support
Delivery support
Compilation
Classpath organization
...
Eclipse
WSAD
JDeveloper
IntelliJ IDEA
NetBeans
WebLogic Workshop
[Notepad]
...
8
9
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
JDK 1.1
January 23, 1996
February 19, 1997
J2SE 1.2
J2SE 1.3
J2SE 1.4
J2SE 5.0
December 8, 1998
May 8, 2000
February 6, 2002
September 30, 2004
Java SE 6
Java SE 7
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"> </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>
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 "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>
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