560 likes | 875 Views
Speak Java in one hour. An introduction in Java lingo. Wat is java?. Programmeertaal Jvm Platform 'Write Once, Run Anywhere'. Acronymen hel. NetBeans. Duke. iBatis. JAX-RPC. GlassFish. Hibernate. Struts. JVM. JBoss. IIOP. SAAJ. JAXB. Trinidad. JSR. POJO. Applet. TestNg.
E N D
Speak Java in one hour An introduction in Java lingo
Wat is java? • Programmeertaal • Jvm • Platform • 'Write Once, Run Anywhere'
Acronymen hel NetBeans Duke iBatis JAX-RPC GlassFish Hibernate Struts JVM JBoss IIOP SAAJ JAXB Trinidad JSR POJO Applet TestNg JavaDoc JavaDesktop JUnit NetBeans war JAXB Wicket JSP Drools J2EE Java SE JMS Swing WebLogic JIT JSF ant ear JDBC Servlet MyFaces Tapestry JPA JDK Java Stripes JavaFX Apache GWT Tomcat EL Java ME RichFaces SDO ADF JCP Seam TopLink JavaBeans IceFaces Log4J Ajax Cocoon JDO JSTL Velocity Groovy JCA JNDI WebSphere JDom Java EE Spring AOP SCA AWT Acegi James Gosling Lucene JMX Jre RMI Maven AMIS JAAS EJB JAXP Facelets Java Web Start Tuscany
Java language • Object oriëntatie • POJO • Plain Old Java Object • properties • methods • Netwerk support • Remoting
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); } } }
bytecode .java .class compiler platform / libraries jvm jit compilation OS
IDE • Code completion • Syntax Highlighting • Wizards • Documentation • Refactoring • Unittest support • Delivery support • Compilation • Classpath organization • ... • Eclipse • WSAD • JDeveloper • IntelliJ IDEA • NetBeans • WebLogic Workshop • [Notepad] • ...
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
Java family / Platform • Java SE : Standard Edition • Java EE : Enterprise Edition • Java ME : MicroEdition • Java FX : Scripting & Mobile
History Many version updates
Delivery • jar file • java -jar MyApp
Toepassingen • applets • Application in browser • GUI apps, Swing • Command line • Basis voor Java EE • Java in the DB • Webstart • automatic network distribution • ...
Toepassingen • Web applications • Multitier • Distributed • Transactional • SOA • Integration • Web Services • Messaging • ...
Programming • Interfaces • Implementation is provided by vendors and only partially by Java EE • (vendor specific) Extensible • JavaBeans
Delivery • 'Standard' directory structure • jar • war • /WEB-INF/web.xml • ear • /META-INF/application.xml • rar • ...
Architecture Application Server EJB Container EJB EJB Clients EJB Other Systems Web Container jsp servlet Admin etc.
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
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>"); } }
JSP • Web application • Visual • pre-compiled to servlet
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>
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>
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); } } }
EJB • Server-side component architecture • Message Driven Beans • Session Beans • [Entity Beans] • [JPA (Java Persistense API)] • Complicated and Complex • Improved much with 3.0
Issues • Java (SE / EE) only provides the basics • Reference implementation • J2EE is too complicated • Long / slow adaptation process for new technologies
Result • Framework 'hel' • Improvement of Java • EJB 3.0 • Convention over configuration • Java Persistence • JSF
Struts • Apache Framework • de-facto Standard voor jsp development • Action based • Still alive • ADF v9
JSF • Visual • Component based • Java EE Standard • /WEB-INF/faces-config.xml
Available component libraries • ADF Faces • JBoss RichFaces • IceFaces • MyFaces • Tobago • Trinidad • Quipukit • WebGalileoFaces • ILOG JSF tools • Jenia • Woodstock • ...
Hibernate • Framework voor de interactie tussen java and de database • map java objects to db tables • query en persist • ~ ADF Business Components • ~ Toplink
Ontstaan uit onvrede over complexiteit Java EE • Ease of development • Non invasive • Testability • Inversion Of Control / Dependency Injection
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.
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
ADF • Visual and declarative development of J2EE applications • Onderdelen • ADF Faces • ADF Business Components • ADF Model (binding)
SEAM • JBoss • Unify and integrate (o.a) • AJAX, JSF, EJB3, BPM