Download Speak Java in one hour

Document related concepts
no text concepts found
Transcript

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"> &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