SlideShare una empresa de Scribd logo
1 de 31
Modern Java Web Development By Zenyk Matchyshyn
Agenda Web frameworks classification Major frameworks in each class How to select a framework and typical combinations Rapid web development on Java Modern approaches to development 2
Web Frameworks Classification Web Frameworks can be classified into following categories: Request/Action Frameworks (Spring MVC, Struts 2, …) Component Frameworks (GWT, JSF, …) Server Side Frameworks (BlazeDS, Jax-RS, …) 3
Request/Action Frameworks Follows classic MVC pattern No notion of component Reusability of controllers and views Have similar structure and concepts Simple and straightforward Better suited for simple sites    Examples: Spring MVC, Struts 2 Non Java examples: Ruby on Rails, ASP.NET MVC 4
Component Frameworks Have components at its core Better suited for RIA applications and Forms applications More complex  Examples: GWT, JSF, Tapestry 5 Non Java examples: ASP.NET 5
Server Side Frameworks Divided into following groups: Web Services (SOAP and RESTful) Flex Server Side Ajax libraries, Serialization/Marshaling libraries 6
Web Services SOAP based Frameworks: Axis 1/2, Spring WS, JAX-WS  XML based RESTful (Jax-RS, Spring MVC, …): Frameworks:  Follows REST guidelines XML, JSON or other protocol 7
Flex Main frameworks: BlazeDS, WebORB, Granite DS, LiveCycle Data Services Provide serialization for AMF protocol Some have code generation Java is first class citizen in Flex world Main features: remoting, proxy service, pub/sub over HTTP and JMS  8
Ajax Libraries and custom serialization Direct Web Remoting (DWR) Custom serializators based on popular protocol (JSON, XML, YAML, …) Usually build on top of Servlet API or Action frameworks such as Spring MVC 9
Major Frameworks 10
Google Web Toolkit Current version – 2.2 Evolves, supported by Google Have forks: GWT-Ext, Vaadin, SmartGWT Good tooling: Google Plugin for Eclipse, visual designer Not just for RIA (Odnoklasniki!) Heavy Java orientation Debug and deployment sometimes complicated 11
Spring MVC Current version – 3.1 Led by SpringSource – doesn’t evolve Lots of view resolvers Tooling is supported on a Spring Framework level Lots of documentation, implementations and examples 12
Java Server Faces Current version – 2.0 Led by JCP (Oracle) Evolves, supported by big companies Painful, but standard Libraries -  Apache MyFaces, JbossRichFaces, Oracle ADF Tooling is limited Significant version differences 13
Struts 2 and Stripes Action/Request based frameworks Actively developed Struts 2 – Apache project, latest release – 20 Dec 2010 Struts 2 = Struts 1 + WebWork Struts 2 uses OGNL Stripes – latest release – 4 Jan 2011 Some success stories Books, tutorials available 14
Tapestry 5 and Wicket Tapestry 5 and Wicket are Apache projects Both are component based Tapestry 5 latest release 15 Nov 2010 Wicket latest release – 21 Jan 2011 Tapestry uses OGNL Wicket is more Java oriented 15
How to select a framework 16
Main factors Developer productivity Developer perception Learning curve Project Health Developer Availability Job Trends Templating Components Ajax Plugins or Add-Ons 17
Main factors – continued Scalability Testing I18n and i10n Validation Multi-Language support Quality of documentation Books REST support Mobile support Degree of risk 18
Comparison High traffic, internet facing, infinite scalability – Action/Request based framework Intranet based, few users, behind firewall – Component based framework Products, to be maintained for 5-10 years – largest community, most vendor support Legacy backend – same language as backend Done by Matt Raible - http://bit.ly/jvm-frameworks-matrix You should have yours! 19
Typical frameworks combinations Consider JavaScript libraries YUI/Ext JS/Dojo/jQuery + Action/Request based – gives separation of front end and server side GWT + Spring MVC – gives components and flexibility where necessary JSF + JAX-RS – gives components and REST access for JavaScript UI 20
Rapid web development 21
Spring Roo Generates typical combinations between database, models, controllers and views Supports Hibernate, GWT, Spring MVC, Spring Security, Maven, JPA and tons more… Waving can be turned off (remove Spring Roo) Actively developed http://www.springsource.org/roo 22
AppFuse Generates basic project using typical combinations Good place to learn best practices Can generate code based on DB schema Somewhat evolving http://appfuse.org 23
Custom Factories Use Maven! Use scripting! Use code generators – Skyway Builder, SpringFuse Most companies are doing it right Reuse experience 24
Modern Approaches to development 25
Tools Use Eclipse/Idea/NetBeans Maven works, just use the latest version and Maven Shell m2eclipse, jetty plugin or tomcat plugin Use JRebel for zero turnaround  Tomcat and Jetty – rocks! 26
Architecture Use JavaScript frameworks Use IoC frameworks (Spring, Guice, …) but keep classpath clean Keep session isolated Avoid JSP Minimize Controllers layer Use existing security solutions e.g. Spring Security Each module should have its own Maven artifact 27
Friends from neighborhood  JRuby on Rails great for prototyping JRubydeveloped by Oracle Groovy on Grails great for new small and medium projects Groovy developed by SpringSource Possible to use existing business login on other languages Learn and apply best practices from non Java frameworks 28
Future – Java EE 6 Web Profile Servlet 3.0: Web Fragments, Async API, programmatic methods to add servlets and filters, Annotations, Security enhancements   JSP 2.2 / EL 2.2 : method invocations, new properties  Web Beans Bean Validation Managed Beans 29
Community http://jug-lviv.blogspot.com/ http://dotnetug-lviv.blogspot.com/ http://www.rozrobka.com/ 30
Q/A ? 31

Más contenido relacionado

La actualidad más candente

Struts(mrsurwar) ppt
Struts(mrsurwar) pptStruts(mrsurwar) ppt
Struts(mrsurwar) pptmrsurwar
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Alexandre Morgaut
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training sessionHrichi Mohamed
 
ASP.NET MVC 5 - EF 6 - VS2015
ASP.NET MVC 5 - EF 6 - VS2015ASP.NET MVC 5 - EF 6 - VS2015
ASP.NET MVC 5 - EF 6 - VS2015Hossein Zahed
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionPawanMM
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootJosué Neis
 
Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Shiju Varghese
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCKhaled Musaied
 
Introduction to Struts 1.3
Introduction to Struts 1.3Introduction to Struts 1.3
Introduction to Struts 1.3Ilio Catallo
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkRaveendra R
 

La actualidad más candente (17)

Struts(mrsurwar) ppt
Struts(mrsurwar) pptStruts(mrsurwar) ppt
Struts(mrsurwar) ppt
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Asp 1a-aspnetmvc
Asp 1a-aspnetmvcAsp 1a-aspnetmvc
Asp 1a-aspnetmvc
 
ASP.NET MVC 5 - EF 6 - VS2015
ASP.NET MVC 5 - EF 6 - VS2015ASP.NET MVC 5 - EF 6 - VS2015
ASP.NET MVC 5 - EF 6 - VS2015
 
Asp.Net MVC3 - Basics
Asp.Net MVC3 - BasicsAsp.Net MVC3 - Basics
Asp.Net MVC3 - Basics
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 Introduction
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
Spring
SpringSpring
Spring
 
Introduction to Struts 1.3
Introduction to Struts 1.3Introduction to Struts 1.3
Introduction to Struts 1.3
 
Struts introduction
Struts introductionStruts introduction
Struts introduction
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 

Destacado

Be a Great Product Leader (HBS ICE 2012)
Be a Great Product Leader (HBS ICE 2012)Be a Great Product Leader (HBS ICE 2012)
Be a Great Product Leader (HBS ICE 2012)Adam Nash
 
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)Movel
 
How to Get the Most Out of Your Product Manager
How to Get the Most Out of Your Product ManagerHow to Get the Most Out of Your Product Manager
How to Get the Most Out of Your Product ManagerAdam Nash
 
Be A Great Product Leader (Dropbox / AirBnB 2013)
Be A Great Product Leader (Dropbox / AirBnB 2013)Be A Great Product Leader (Dropbox / AirBnB 2013)
Be A Great Product Leader (Dropbox / AirBnB 2013)Adam Nash
 
Design in Tech Report 2015
Design in Tech Report 2015Design in Tech Report 2015
Design in Tech Report 2015John Maeda
 
Be a Great Product Leader (Zynga 2016)
Be a Great Product Leader (Zynga 2016)Be a Great Product Leader (Zynga 2016)
Be a Great Product Leader (Zynga 2016)Adam Nash
 
A Product Manager's Job
A Product Manager's JobA Product Manager's Job
A Product Manager's Jobjoshelman
 

Destacado (7)

Be a Great Product Leader (HBS ICE 2012)
Be a Great Product Leader (HBS ICE 2012)Be a Great Product Leader (HBS ICE 2012)
Be a Great Product Leader (HBS ICE 2012)
 
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
Scaling AngularJS: Enterprise SOA on the MEAN Stack (Responsive Web & Mobile)
 
How to Get the Most Out of Your Product Manager
How to Get the Most Out of Your Product ManagerHow to Get the Most Out of Your Product Manager
How to Get the Most Out of Your Product Manager
 
Be A Great Product Leader (Dropbox / AirBnB 2013)
Be A Great Product Leader (Dropbox / AirBnB 2013)Be A Great Product Leader (Dropbox / AirBnB 2013)
Be A Great Product Leader (Dropbox / AirBnB 2013)
 
Design in Tech Report 2015
Design in Tech Report 2015Design in Tech Report 2015
Design in Tech Report 2015
 
Be a Great Product Leader (Zynga 2016)
Be a Great Product Leader (Zynga 2016)Be a Great Product Leader (Zynga 2016)
Be a Great Product Leader (Zynga 2016)
 
A Product Manager's Job
A Product Manager's JobA Product Manager's Job
A Product Manager's Job
 

Similar a Modern Java Web Development

Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
Developing Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsDeveloping Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsSathish Chittibabu
 
Spring Basics
Spring BasicsSpring Basics
Spring BasicsEmprovise
 
spring framework ppt by Rohit malav
spring framework ppt by Rohit malavspring framework ppt by Rohit malav
spring framework ppt by Rohit malavRohit malav
 
Sprint Portlet MVC Seminar
Sprint Portlet MVC SeminarSprint Portlet MVC Seminar
Sprint Portlet MVC SeminarJohn Lewis
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricksSimon Sturmer
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationJonathan Abrams
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseMatt Raible
 
What's New in AppFuse 2.0
What's New in AppFuse 2.0What's New in AppFuse 2.0
What's New in AppFuse 2.0Matt Raible
 
Sails Framework Instroduction
Sails Framework InstroductionSails Framework Instroduction
Sails Framework InstroductionLeo Berdu
 
Web Component Development with Servlet and JSP Technologies Unit 01
Web Component Development with Servlet and JSP Technologies Unit 01Web Component Development with Servlet and JSP Technologies Unit 01
Web Component Development with Servlet and JSP Technologies Unit 01Prashanth Shivakumar
 
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)Daniel Bryant
 

Similar a Modern Java Web Development (20)

Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Jsf 2.0 Overview
Jsf 2.0 OverviewJsf 2.0 Overview
Jsf 2.0 Overview
 
Spring notes
Spring notesSpring notes
Spring notes
 
Developing Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring toolsDeveloping Agile Java Applications using Spring tools
Developing Agile Java Applications using Spring tools
 
GlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and FutureGlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and Future
 
Spring Mvc
Spring MvcSpring Mvc
Spring Mvc
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
spring framework ppt by Rohit malav
spring framework ppt by Rohit malavspring framework ppt by Rohit malav
spring framework ppt by Rohit malav
 
Vishnu(java)
Vishnu(java)Vishnu(java)
Vishnu(java)
 
Sprint Portlet MVC Seminar
Sprint Portlet MVC SeminarSprint Portlet MVC Seminar
Sprint Portlet MVC Seminar
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricks
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig Presentation
 
MVC - Introduction
MVC - IntroductionMVC - Introduction
MVC - Introduction
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
What's New in AppFuse 2.0
What's New in AppFuse 2.0What's New in AppFuse 2.0
What's New in AppFuse 2.0
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Sails Framework Instroduction
Sails Framework InstroductionSails Framework Instroduction
Sails Framework Instroduction
 
Web Component Development with Servlet and JSP Technologies Unit 01
Web Component Development with Servlet and JSP Technologies Unit 01Web Component Development with Servlet and JSP Technologies Unit 01
Web Component Development with Servlet and JSP Technologies Unit 01
 
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
 

Más de zenyk

Semasearch Spring - 2015
Semasearch   Spring - 2015Semasearch   Spring - 2015
Semasearch Spring - 2015zenyk
 
Проект Каскад
Проект КаскадПроект Каскад
Проект Каскадzenyk
 
Ecois.me and uMuni
Ecois.me and uMuniEcois.me and uMuni
Ecois.me and uMunizenyk
 
Semasearch Intro
Semasearch IntroSemasearch Intro
Semasearch Introzenyk
 
Rapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache HadoopRapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache Hadoopzenyk
 
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті державиSEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті державиzenyk
 
Introduction to Clojure - EDGE Lviv
Introduction to Clojure - EDGE LvivIntroduction to Clojure - EDGE Lviv
Introduction to Clojure - EDGE Lvivzenyk
 
Puppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE LvivPuppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE Lvivzenyk
 
Spring for Apache Hadoop
Spring for Apache HadoopSpring for Apache Hadoop
Spring for Apache Hadoopzenyk
 
Hadoop Solutions
Hadoop SolutionsHadoop Solutions
Hadoop Solutionszenyk
 
Emotional Intelligence
Emotional IntelligenceEmotional Intelligence
Emotional Intelligencezenyk
 
Lviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQLLviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQLzenyk
 
Amazon Clouds in Action
Amazon Clouds in ActionAmazon Clouds in Action
Amazon Clouds in Actionzenyk
 

Más de zenyk (13)

Semasearch Spring - 2015
Semasearch   Spring - 2015Semasearch   Spring - 2015
Semasearch Spring - 2015
 
Проект Каскад
Проект КаскадПроект Каскад
Проект Каскад
 
Ecois.me and uMuni
Ecois.me and uMuniEcois.me and uMuni
Ecois.me and uMuni
 
Semasearch Intro
Semasearch IntroSemasearch Intro
Semasearch Intro
 
Rapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache HadoopRapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache Hadoop
 
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті державиSEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
 
Introduction to Clojure - EDGE Lviv
Introduction to Clojure - EDGE LvivIntroduction to Clojure - EDGE Lviv
Introduction to Clojure - EDGE Lviv
 
Puppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE LvivPuppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE Lviv
 
Spring for Apache Hadoop
Spring for Apache HadoopSpring for Apache Hadoop
Spring for Apache Hadoop
 
Hadoop Solutions
Hadoop SolutionsHadoop Solutions
Hadoop Solutions
 
Emotional Intelligence
Emotional IntelligenceEmotional Intelligence
Emotional Intelligence
 
Lviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQLLviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQL
 
Amazon Clouds in Action
Amazon Clouds in ActionAmazon Clouds in Action
Amazon Clouds in Action
 

Último

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Modern Java Web Development

  • 1. Modern Java Web Development By Zenyk Matchyshyn
  • 2. Agenda Web frameworks classification Major frameworks in each class How to select a framework and typical combinations Rapid web development on Java Modern approaches to development 2
  • 3. Web Frameworks Classification Web Frameworks can be classified into following categories: Request/Action Frameworks (Spring MVC, Struts 2, …) Component Frameworks (GWT, JSF, …) Server Side Frameworks (BlazeDS, Jax-RS, …) 3
  • 4. Request/Action Frameworks Follows classic MVC pattern No notion of component Reusability of controllers and views Have similar structure and concepts Simple and straightforward Better suited for simple sites Examples: Spring MVC, Struts 2 Non Java examples: Ruby on Rails, ASP.NET MVC 4
  • 5. Component Frameworks Have components at its core Better suited for RIA applications and Forms applications More complex Examples: GWT, JSF, Tapestry 5 Non Java examples: ASP.NET 5
  • 6. Server Side Frameworks Divided into following groups: Web Services (SOAP and RESTful) Flex Server Side Ajax libraries, Serialization/Marshaling libraries 6
  • 7. Web Services SOAP based Frameworks: Axis 1/2, Spring WS, JAX-WS XML based RESTful (Jax-RS, Spring MVC, …): Frameworks: Follows REST guidelines XML, JSON or other protocol 7
  • 8. Flex Main frameworks: BlazeDS, WebORB, Granite DS, LiveCycle Data Services Provide serialization for AMF protocol Some have code generation Java is first class citizen in Flex world Main features: remoting, proxy service, pub/sub over HTTP and JMS 8
  • 9. Ajax Libraries and custom serialization Direct Web Remoting (DWR) Custom serializators based on popular protocol (JSON, XML, YAML, …) Usually build on top of Servlet API or Action frameworks such as Spring MVC 9
  • 11. Google Web Toolkit Current version – 2.2 Evolves, supported by Google Have forks: GWT-Ext, Vaadin, SmartGWT Good tooling: Google Plugin for Eclipse, visual designer Not just for RIA (Odnoklasniki!) Heavy Java orientation Debug and deployment sometimes complicated 11
  • 12. Spring MVC Current version – 3.1 Led by SpringSource – doesn’t evolve Lots of view resolvers Tooling is supported on a Spring Framework level Lots of documentation, implementations and examples 12
  • 13. Java Server Faces Current version – 2.0 Led by JCP (Oracle) Evolves, supported by big companies Painful, but standard Libraries - Apache MyFaces, JbossRichFaces, Oracle ADF Tooling is limited Significant version differences 13
  • 14. Struts 2 and Stripes Action/Request based frameworks Actively developed Struts 2 – Apache project, latest release – 20 Dec 2010 Struts 2 = Struts 1 + WebWork Struts 2 uses OGNL Stripes – latest release – 4 Jan 2011 Some success stories Books, tutorials available 14
  • 15. Tapestry 5 and Wicket Tapestry 5 and Wicket are Apache projects Both are component based Tapestry 5 latest release 15 Nov 2010 Wicket latest release – 21 Jan 2011 Tapestry uses OGNL Wicket is more Java oriented 15
  • 16. How to select a framework 16
  • 17. Main factors Developer productivity Developer perception Learning curve Project Health Developer Availability Job Trends Templating Components Ajax Plugins or Add-Ons 17
  • 18. Main factors – continued Scalability Testing I18n and i10n Validation Multi-Language support Quality of documentation Books REST support Mobile support Degree of risk 18
  • 19. Comparison High traffic, internet facing, infinite scalability – Action/Request based framework Intranet based, few users, behind firewall – Component based framework Products, to be maintained for 5-10 years – largest community, most vendor support Legacy backend – same language as backend Done by Matt Raible - http://bit.ly/jvm-frameworks-matrix You should have yours! 19
  • 20. Typical frameworks combinations Consider JavaScript libraries YUI/Ext JS/Dojo/jQuery + Action/Request based – gives separation of front end and server side GWT + Spring MVC – gives components and flexibility where necessary JSF + JAX-RS – gives components and REST access for JavaScript UI 20
  • 22. Spring Roo Generates typical combinations between database, models, controllers and views Supports Hibernate, GWT, Spring MVC, Spring Security, Maven, JPA and tons more… Waving can be turned off (remove Spring Roo) Actively developed http://www.springsource.org/roo 22
  • 23. AppFuse Generates basic project using typical combinations Good place to learn best practices Can generate code based on DB schema Somewhat evolving http://appfuse.org 23
  • 24. Custom Factories Use Maven! Use scripting! Use code generators – Skyway Builder, SpringFuse Most companies are doing it right Reuse experience 24
  • 25. Modern Approaches to development 25
  • 26. Tools Use Eclipse/Idea/NetBeans Maven works, just use the latest version and Maven Shell m2eclipse, jetty plugin or tomcat plugin Use JRebel for zero turnaround Tomcat and Jetty – rocks! 26
  • 27. Architecture Use JavaScript frameworks Use IoC frameworks (Spring, Guice, …) but keep classpath clean Keep session isolated Avoid JSP Minimize Controllers layer Use existing security solutions e.g. Spring Security Each module should have its own Maven artifact 27
  • 28. Friends from neighborhood JRuby on Rails great for prototyping JRubydeveloped by Oracle Groovy on Grails great for new small and medium projects Groovy developed by SpringSource Possible to use existing business login on other languages Learn and apply best practices from non Java frameworks 28
  • 29. Future – Java EE 6 Web Profile Servlet 3.0: Web Fragments, Async API, programmatic methods to add servlets and filters, Annotations, Security enhancements JSP 2.2 / EL 2.2 : method invocations, new properties Web Beans Bean Validation Managed Beans 29