Enterprise Java Web Application Frameworks & Sample Stack Implementation

Similar documents
Rapid Application Development. and Application Generation Tools. Walter Knesel

OXAGILE RESUMES SUMMARY OF QUALIFICATIONS TECHNICAL SKILLS SENIOR JAVA SOFTWARE ENGINEER

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

Framework Adoption for Java Enterprise Application Development

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation

Portals, Portlets & Liferay Platform

CrownPeak Java Web Hosting. Version 0.20

Java (J2SE & J2EE) and Web Development Training Catalog

JAVA/J2EE DEVELOPER RESUME

Professional Profile Studies Senior Engineer October September 1998 Computer Engineering University of Deusto - Bizkaia (Spain)

applications. JBoss Enterprise Application Platform

Developing modular Java applications

<Insert Picture Here> Oracle Mobile Enterprise Application Platform Overview

Agile Best Practices and Patterns for Success on an Agile Software development project.

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

CURRICULUM VITAE / RESUME

GlassFish. Developing an Application Server in Open Source

This presentation is for informational purposes only and may not be incorporated into a contract or agreement.

<Insert Picture Here> Building a Complex Web Application Using ADF and Siebel

Java/J2EE or Web Developer. Formal Education. Technical knowledge. Spoken Languages

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

ENGINEER - DEVELOPER ADVANCED JAVA. 28 years old - 7 years of experience

The Oracle Fusion Development Platform

CloudCERT (Testbed framework to exercise critical infrastructure protection)

Experiences with Open-Source BPM/SOA-based Stack using Java EE Rok Povše, Matjaž B. Jurič

The Java EE 6 Platform. Alexis Moussine-Pouchkine GlassFish Team

Web Development in Java Part I

Requirements Design Implementation. Software Architectures. Components Software Component Architecture. DSSA: Domain-Specific Software Architectures

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

OpenShift is FanPaaStic For Java EE. By Shekhar Gulati Promo Code JUDCON.IN

Java Platform, Enterprise Edition (Java EE) From Yes-M Systems LLC Length: Approx 3 weeks/30 hours Audience: Students with experience in Java SE

LEAD JAVA/J2EE DEVELOPER/ARCHITECT CONSULTANT RESUME PITTSBURGH PA

ROBERTO GAMARRA Av. San Vicente de Paul 660, Bo. San José, Ciudad del Este, Alto Paraná 7000, Mobile:

EclipseLink. Solutions Guide for EclipseLink Release 2.5

Getting Started with Open Source Compliance

Customer Bank Account Management System Technical Specification Document

ORM IN WEB PROGRAMMING. Course project report for 6WW Erik Wang

SOFTWARE OUTSOURCING

SUMMARY CURRICULUM VITAE J. Andries

A Comparison of Open Source Application Development Frameworks for the Enterprise

<Insert Picture Here> Java EE 7. Linda DeMichiel Java EE Platform Lead

A Guide to Migrating Enterprise Applications to Spring

The Spring Framework: An Open Source Java Platform for Developing Robust Java Applications

Reusing Existing * Java EE Applications from Oracle SOA Suite

JSR-303 Bean Validation

SPRING INTERVIEW QUESTIONS

Java EE 7: Back-End Server Application Development

Przemysław Bielicki. Senior Software Developer / Scrum Master

Oracle Application Development Framework Overview

Accelerated Java EE Open Source Development with Eclipse CON1905

Performance Evaluation of Java Object Relational Mapping Tools

How To Write An Online Shopping Application In Java Ee

EBA Procurement Procedure for the Supply of Website Services 2016: Annex 1 System Architecture Document SYSTEM ARCHITECTURE DOCUMENT

1. Introduction What is Slice? Background Why Slice? Purpose of this Document Intended Audience...

Mind The Gap! Setting Up A Code Structure Building Bridges

RESIN APPLICATION SERVER JAVA EE 6 WEB PROFILE

Rich Web Applications in Server-side Java without Plug-ins or JavaScript

DHANE Amir. Professional Experiences. Objectives. Senior Java/J2EE Developer/ SOA Architect. SOA Architect Since January 2014

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Research Article. ISSN (Print) *Corresponding author Lili Wang

JBoss JEE5 with EJB3.0 on NonStop. JAVA SIG, San Jose

ORACLE DATA SHEET KEY FEATURES AND BENEFITS ORACLE WEBLOGIC SERVER STANDARD EDITION

JBOSS ENTERPRISE APPLICATION PLATFORM MIGRATION GUIDELINES

Complete Java Web Development

Web and Enterprise Applications Developer Track

Why IBM WebSphere Application Server V8.0?

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Programma corso di formazione J2EE

Building Web Services with Apache Axis2

PG DAC. Syllabus. Content. Eligibility Criteria

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead

Java EE Introduction, Content. Component Architecture: Why and How Java EE: Enterprise Java

Net-WMS FP Net-WMS SPECIFIC TARGETED RESEARCH OR INNOVATION PROJECT. Networked Businesses. D.8.1 Networked architecture J2EE compliant

Software Development Interactief Centrum voor gerichte Training en Studie Edisonweg 14c, 1821 BN Alkmaar T:

GRAD Analytics Advanced price and promotional analysis interface. Reactive UI providing dimensional visibility to marketing analysis.

Web Service Development Using CXF. - Praveen Kumar Jayaram

Evaluating Presentation Layer Development Frameworks for EJB Applications in J2EE Architecture

Web Development in Java Live Demonstrations (Live demonstrations done using Eclipse for Java EE 4.3 and WildFly 8)

Grails: Accelerating J2EE Application Development

Nicholas S. Williams. wrox. A Wiley Brand

JBoss Enterprise Middleware

Maven or how to automate java builds, tests and version management with open source tools

Web Development with the Eclipse Platform

Introduction to Apache Roller. Matt Raible Apache Roller Committer June 2007

EDUCATION: Bachelor s degree in Engineering, Jawaharlal Nehru Technology University, India.

Modern Software Development Tools on OpenVMS

FEATURE MATRIX. ORACLE WEBLOGIC SERVER STANDARD EDITION 11g ORACLE WEBLOGIC SERVER ENTERPRISE EDITION 11g ORACLE WEBLOGIC SUITE 11g

Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader

SOA Fundamentals For Java Developers. Alexander Ulanov, System Architect Odessa, 30 September 2008

Converting Java EE Applications into OSGi Applications

Tutorial for Spring DAO with JDBC

Information Technology Services

Inside the Digital Commerce Engine. The architecture and deployment of the Elastic Path Digital Commerce Engine

This training is targeted at System Administrators and developers wanting to understand more about administering a WebLogic instance.

Transcription:

Enterprise Java Web Application Frameworks & Sample Stack Implementation Mert ÇALIŞKAN mcaliskan@stm.com.tr STM Inc. 2009

Who am I? The Software Plumber :) SCJP certified dude bla bla... Open Source Evangelist Founder & Author of various Open Source Projects Member of MyFaces Community OpenLogic Expert Community Member

Agenda The aim: Enterprise Java WebApp Framework Which stack to choose? The Stack Questions are welcome anytime..!

The aim: Enterprise WebApp Framework MVC pattern Quality & Competency of The Stack Performance & Scalability Learning Curve & Development Speed! don t let cutting edge turn into bleeding edge... release early & release often..! Community Factor & Open Source support (forumsmailing lists & etc.)

Which stack to choose? UI Controller/Dep.Inj. JSF Struts Spring Guice HiveMind Spring MVC WebWork ZK picocontainer XWork Wicket Tapestry GWT Echo3 Cocoon Model/Persistence Layer Hibernate ibatis Integration Toplink KODO Apache CXF Apache Axis2 Spring WS Eclipse JDeveloper IDE IntelliJ IDEA NetBEANS EclipseLink

It s nothing new! not yet another java framework It s a stack demonstration with OSS Released on 01.2009 http://code.google.com/p/mesir 2000+ downloads

DOMAIN MODEL AddressBook id text creationdate contacts 1 0..* Contact id name email phone

THE STACK JSF VIEW FACELETS MAVEN ECLIPSE ORCHESTRA Apache CXF CONTROLLER SPRING with SecuRITY MODEL JPA HIBERNATE H.SEARCH H.VALIDATOR ENVERS

JSF-1 A standard (v1.2_13 and v2.0.1 FCS) A component oriented & event-driven framework Binding makes JSF Powerful Bind a bean s variable to component <h:inputtext value= #{person.name} /> Bind a method to the action component <h:commandbutton action= #{personsavepage.saveperson} /> Conversion & Validation no hassle with java.util.date extensible - write your own converter & validator

JSF-2 3rd Party Ajaxified Frameworks PrimeFACES - Crazy Turks RichFACES - JBoss IceFACES - Sun ADFFaces - Oracle IDE Support (Eclipse - NetBeans - JDeveloper) Everything s gonna be alright with JSF 2.0 :)

FACELETS ViewHandler created for JSF mixing JSF + JSP for JSF 1.x well balanced HTML : xhtml Templating Composite Components

SPRING-1 Dependency Injection & IoC with XML and annotations JEE ( JMS, EJBs, JCA...) AOP ORM Integration, DAO Support tx management, entitymanager

SPRING-2 DAO Spring JDBC Transaction management AOP Spring AOP AspectJ Integration ORM Hibernate JPA TopLink JDO OJB ibatis JEE JMX JMS JCA Remoting EJB Email Web Spring WEB MVC Framework Integration Struts Tapestry JSF JSPs Velocity FreeMarker JasperReports Excel Spring Portlet MVC

SPRING-3 <context:property-placeholder location="classpath:application.properties">... <context:component-scan base-package="tr.mesir" />... <tx:annotation-driven />... <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource" destroymethod="close"> </bean>... <property name="driverclassname" value="${database.driver}"/> <property name="url" value="${database.uri}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory" />

SPRING-4 @Service("addressBookService") public class AddressBookServiceImpl implements AddressBookService {... @Autowired private AddressBookDAO addressbookdao;... } @Repository public class AddressBookDAOImpl implements AddressBookDAO {... @PersistenceContext protected EntityManager entitymanager;... }

MyFaces ORCHESTRA Conversation Scoped beans & Conversation Scoped Persistence Contexts LazyInitializationException or NonUniqueObjectException Heavily built-on Spring Framework

JPA-1 Standard (Java EE 5.0) object/relational mapping and persistent management interface Support from different vendors hibernate - toplink - eclipselink - kodo... Enhanced Query Langugage (JPQL)

JPA-2 @Entity public class AddressBook extends BaseObject { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; } @OneToMany(cascade={CascadeType.ALL}) @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN) private List<Contact> contacts = new ArrayList<Contact>();

JPA-3 Some DAO code: public AddressBook loadbyid(long id) { return entitymanager.find(addressbook.class, id); } public void save(addressbook addressbook) { entitymanager.persist(addressbook); } public List<String> findalltitles() { return entitymanager.createquery("select ab.title from AddressBook ab").getresultlist(); }

HIBERNATE-1 Object / Relational Mapping framework No hassle with result set handling object conversion and SQL, well almost for SQL :) Support for any DB with dialects Oracle, MySQL, PostgreSQL, HSQL, DB2, Sybase and many more...

Hibernate Search Bringing full text search engine to the persistence domain model e.g. : amazon search Apache Lucene under the hood Lucene Directory File - DB - in mem JPA Triggered Event System Persist - Update - Delete

H.S. - How To Use Configuration Transparent with JPA (hibernate entity manager) (hibernate annotations) Annotation Based @Indexed @Field(store, index) @IndexedEmbedded...

H.S. - Example @Entity @Indexed public class AddressBook extends BaseObject { @Field(index=Index.TOKENIZED, store=store.no) private String title; } @OneToMany(cascade={CascadeType.ALL}) @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN) @IndexedEmbedded private List<Contact> contacts = new ArrayList<Contact>();...

H.S. - Example @SuppressWarnings("unchecked") public List<AddressBook> findbyword(string searchword) throws ParseException { // Since contacts list is declared as @IndexedEmbedded inside AddressBook, // we can search through the name or email of a contact also. MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "title", "contacts.name", "contacts.email" }, new StandardAnalyzer()); Query query = parser.parse(searchword); } FullTextQuery ftq = getfulltextentitymanager().createfulltextquery( query, AddressBook.class); return ftq.getresultlist();

HIBERNATE VALIDATOR-1 Reference implementation for JSR 303: Bean Validation DRY (Don t Repeat Yourself) express your domain constraints once..! property2ddlschema annotation-based @NotNull @NotEmpty @Length(min=, max=)... @Email @Pattern @Valid... custom validators

HIBERNATE VALIDATOR-2 @Field @NotEmpty(message="Name should not be empty") @Length(min=4, max=40) private String name; @Field @NotEmpty(message="Email should not be empty") @Email private String email;

HIBERNATE ENVERS-1 Versioning for JPA entities A part of Hibernate with Hib.3.5 Simple to implement with annotations @Audited... Querying on Revisions, Entity at Revisions

HIBERNATE ENVERS-2 Entities R e id= 1 data= x id= 4 data= p v i id= 2 data= a id= 3 data= x s i o id= 1 data= y id= 2 data= b n s id= 2 data= c id= 4 data= r

HIBERNATE ENVERS-3 @Entity @Indexed @Audited public class Contact extends BaseObject { } @Field @Versioned private String name;

Apache CXF-1 open-source services framework annotation driven JAX-WS & JAX-RS compliant soap + rest xml + json

Apache CXF-2 @Component("addressBookWebService") @WebService public class AddressBookWebService { @Autowired private AddressBookService addressbookservice; } @WebMethod public List<String> alladdressbooktitles() { return addressbookservice.findalltitles(); } spring configuration: <jaxws:endpoint id="addressbookws" implementor="#addressbookwebservice" address="/addressbook" />

Apache CXF-3 http://localhost:8080/mesir/ws/addressbook/alladdressbooktitles

MAVEN Stop building the build and focus on building the application...! A uniform build system... Project Object Model (POM) Guidelines for best practices while doing development (TDD - Cont. Int. & etc.)

MAVEN - The POM-1 <project...> <modelversion>4.0.0</modelversion> <groupid>tr.mc</groupid> <artifactid>mesir</artifactid> <packaging>war</packaging> <version>1.0-snapshot</version> <name>mesir</name> <url>http://code.google.com/p/mesir</url> <description>skeleton project for java based web applications</description>............ </project>

MAVEN - The POM-2 <dependencies>... <dependency> <groupid>org.springframework</groupid> <artifactid>spring</artifactid> <version>2.5.6</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-test</artifactid> <version>2.5.6</version> <scope>test</scope> </dependency>... </dependencies>

MAVEN - The POM-3 <repositories> <repository> <id>mesir-repo</id> <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url> </repository> <repository> <id>jboss</id> <url>http://repository.jboss.com/maven2</url> </repository> <repository> <id>apache-snapshot</id> <url>http://people.apache.org/repo/m2-snapshot-repository</url> </repository> </repositories>

ECLIPSE-1 Universal toolset for Development Open Source IDE Extensible architecture based on plugins Specified mostly on Java but development language is independent... CDT - PHP - Cobol Plugins used while developing mesir: subclipse m2eclipse

ECLIPSE-2

Thank you... http://www.jroller.com/mert http://www.twitter.com/mertcaliskan