1 Speak Java in one hour An introduction in Java lingo.

Post on 20-Dec-2015

235 views 1 download

Transcript of 1 Speak Java in one hour An introduction in Java lingo.

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"> &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>

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 &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>

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