Slide 1

Slide 1 text

1 Agenda Ÿ  To all attendees with a mobile phone connection: please answer this survey: http://tinyurl.com/singasug Ÿ  Nik TJ and Michael I : web frameworks in Java Ÿ  Salah C. and Srikanth N : Spring MVC live coding session N

Slide 2

Slide 2 text

2 Nik Trevallyn-Jones Ÿ  Contract Consultant Ÿ  Been teaching and Consulting on Spring since 2008 Ÿ  Has Taught Spring to more than 1000 students in 6 years Ÿ  OpenSource Contributor to several Spring projects –  Spring HATEAOS, Spring ROO… M

Slide 3

Slide 3 text

3 Michael  Isvy Ÿ  Training Manager at Pivotal (APJ region) 2008 - Spring - Tomcat 2009-2012 -  Spring -  Tomcat -  Cloud Foundry -  GemFire… 2013 onwards -  Spring, Cloud Foundry -  Tomcat, Redis, Hadoop -  GemFire N

Slide 4

Slide 4 text

4 Hadoop / Pivotal HD GemFire /SqlFire Apache Tomcat N

Slide 5

Slide 5 text

5 Web frameworks in Java mvc M

Slide 6

Slide 6 text

6 Disclaimer: framework versus standard Ÿ  JSF is part of Java EE specification Ÿ  Technically JSF is not exactly a web framework but rather a specification and an implementation –  We’ve used the word “framework” here to keep things simple N

Slide 7

Slide 7 text

7 2000: Servlet/JSP public class MyServlet extends HttpServlet {" " " public void doGet(HttpServletRequest req, HttpServletResponse resp) {" …" } public void doPost(HttpServletRequest req, HttpServletResponse resp) {" … } " } Not a POJO Request params parsed manually Form validation done manually No I18N support … Verbose XML config M

Slide 8

Slide 8 text

8 2003: Apache Struts public class UserAction extends Action {" " " public void execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) {" …" } " } Not a POJO Request params parsed manually Form validation done manually Verbose XML config … public class UserForm extends ActionForm {" " private String name; public String getName() { return name; } public void seName(String name) { this.name = name; }" } No Internationalization support N

Slide 9

Slide 9 text

9 2003: Apache Struts Ÿ  Java community formed a consensus Ÿ  Quickly became the way to go for Java web frameworks Ÿ  So what happened next? 9 N

Slide 10

Slide 10 text

10 2004: JSF Ÿ  Struts was created by Craig McClanahan –  Also one of the key founders of Servlet, JSP, JSTL and Tomcat Ÿ  Craig wanted to create a component-oriented Web framework –  Event/Listener model M

Slide 11

Slide 11 text

11 2004: JSF Ÿ  Problem: view layer was good but some major limitations –  Form validation very limited –  Couldn’t disable JavaScript –  No support for “GET” methods… Ÿ  Specification versus framework –  For it to succeed, JSF should have been a framework, not a specification ▪  Frameworks can be updated every month ▪  Java EE Specs are updated once every 2 years M

Slide 12

Slide 12 text

12 2005: The JSF / Struts 1 & 2 story Original plan What happened Struts JSF Struts 2 Struts WebWork Struts 2 M

Slide 13

Slide 13 text

13 2005: Spring MVC without annotations Ÿ  Spring MVC was similar to Struts –  But more modern ▪  Easier to extend ▪  Well integrated for Dependency Injection public class UserController extends SimpleFormController { 
 private UserService service; public ModelAndView onSubmit(Object command) { //... } } N Not a POJO Request params parsed manually Form validation done manually Simpler XML config … No Internationalization support

Slide 14

Slide 14 text

14 2008: Spring @MVC Ÿ  Annotations are the way to go for Spring @MVC! public class UserController extends SimpleFormController { 
 private UserService service; public ModelAndView onSubmit(Object command) { //... } } @Controller public class UserController { @Autowired private UserService service; @RequestMapping(value="/users/", method=RequestMethod.POST) public ModelAndView createUser(User user) 
 { //... } } N Now POJO based!! No XML needed for controllers anymore!!

Slide 15

Slide 15 text

15 Popularity of Java Web frameworks in 2014 http://pages.zeroturnaround.com/RebelLabs-AllReportLanders_TheCuriousCodersGuidetoJavaWebFrameworks.html N

Slide 16

Slide 16 text

16 Let’s talk about CSS and Javascript Ÿ  Back in 2008, there were plenty of small CSS frameworks –  None of them really did the job Ÿ  Now there is Bootstrap! M

Slide 17

Slide 17 text

17 What is Bootstrap? Ÿ  Originally called “Twitter Bootstrap” Ÿ  Available from 2011 Ÿ  Typography, forms, buttons, charts, navigation and other interface components Ÿ  Integrates well with jQuery M

Slide 18

Slide 18 text

18 Most popular project on github! M

Slide 19

Slide 19 text

19 Let’s talk about JavaScript Ÿ  Back in 2008, there were too many JavaScript frameworks Ÿ  Now there is jQuery! M

Slide 20

Slide 20 text

20 Spring @MVC and the View Layer Ÿ  Spring @MVC is neat and elegant on the controller side –  Form submission, Validation, File upload, testing… Ÿ  Spring @MVC is view-agnostic –  No much tooling for integration with CSS/JavaScript frameworks –  It’s your job to create the custom tags you need ▪  But that’s not hard! N

Slide 21

Slide 21 text

21 Form fields: Without custom tags
${lastNameLabel}
CSS div Label Form input Error message (if any) JSP M

Slide 22

Slide 22 text

22 Using custom tags Ÿ  First create a tag (or tagx) file <%@ taglib prefix="form" uri="http://www.spring…org/tags/form" %> <%@ attribute name="name" required="true" rtexprvalue="true" %> <%@ attribute name="label" required="true" rtexprvalue="true" %>
${label}
inputField.tag Custom tags are part of Java EE N

Slide 23

Slide 23 text

23 Using custom tags Ÿ  Custom tag call Folder which contains custom tags … JSP file 1 line of code instead of 9!! N

Slide 24

Slide 24 text

24 Some tags already exist! Ÿ  Dandelion for DataTables (nice addition to Spring @MVC) –  dandelion.github.com JSP file M

Slide 25

Slide 25 text

25 Dandelion is based on jQuery Datatables and Bootstrap Ÿ  Click, sort, scroll, search, next/previous… Ÿ  PDF and Excel exports… M

Slide 26

Slide 26 text

26 Survey results!!

Slide 27

Slide 27 text

27 Conclusion Ÿ  Once  upon  a  2me,  Java  community  was  unified  around  Struts!   Ÿ  JavaScript  and  CSS:  you  now  have  good  frameworks!   Ÿ  Spring  @MVC  now  is  the  most  popular  Web  framework  for  Java   Ÿ  Create  your  own  custom  tags  for  the  View  layer   Ÿ  Use  Dandelion  for  your  DataTables   N