Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof 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