90
COMPARING JVM WEB FRAMEWORKS Matt Raible http://raibledesigns.com @mraible © 2013 Raible Designs Photos by Trish McGinity © 2013 Raible Designs

Comparing JVM Web Frameworks - Devoxx France 2013

Embed Size (px)

DESCRIPTION

A comparison on JVM Web Frameworks. Includes strategies for choosing and results from research by InfoQ and devrates.com. Also, lots of pretty graphs. See blog post about this presentation at http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference and video recording at http://raibledesigns.com/rd/entry/video_of_comparing_jvm_web

Citation preview

Page 1: Comparing JVM Web Frameworks - Devoxx France 2013

COMPARING JVM WEB FRAMEWORKS

Matt Raiblehttp://raibledesigns.com@mraible

© 2013 Raible Designs

Photos by Trish McGinity © 2013 Raible Designs

Page 2: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Blogger on raibledesigns.com

Founder of AppFuse

Father, Skier, Cyclist

Web Framework Connoisseur

Who is Matt Raible?

Page 3: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Introductions

‣ Are you currently developing web applications for the JVM?

‣ Have you written web apps with Servlets or JSF?

‣ Experience with Grails, GWT, Rails, Spring MVC, Wicket, Tapestry or Play?

‣ Does anyone hate a framework? Love a framework?

3

Page 4: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

‣ History of JVM Web Frameworks‣ The Paradox of Choice‣ Methods and Metrics‣ Conclusion‣ Q and A

Session Agenda

4

Page 5: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

5

Page 6: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

6

Page 7: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

7

Page 8: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Comparing Web Frameworks

8

Page 9: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

9

Page 10: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

10

Page 12: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

History of Web Frameworks

12

Page 13: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Page 14: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Today

14

Page 15: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Too many web frameworks?

15

Page 16: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Remember SOFEA?

Page 17: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

SOFEA became a Reality

Page 19: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs 19

traditional web frameworks are still relevant

Page 20: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Paradox of Choice

20

Page 21: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Good Decisions Involve

21

1. Figure out your goal or goals

2. Evaluate the importance of each goal

3. Array the options

4. Evaluate how likely each of the options is to meet your goals

5. Pick the winning option

6. Modify goals

Page 22: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Maximizer vs. Satisficer

22

‣ maximizer - tries to make best possible choice‣ satisficer - tries to find first suitable choice

(Photo: Tori Cat at Flickr)

Page 23: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

How do you choose?

23

Page 24: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Real Problem

24

Page 25: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Real Problem

25

Page 26: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Real Problem

26

Page 27: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Page 28: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

‣ 2006: Choose based on the type of app you’re developing‣ 2010: Choose based on 20 different criteria (the Matrix)‣ 2013: Narrowed it to 5

- Community / Support

- HTML5

- REST

- Mobile

- Performance

- Page Speed28

How to Constrain Choices

Page 29: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

‣ Language‣ Platform ‣ Application Type

29

Predetermined Constraints

Page 30: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Choose the JVM

30

Page 31: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Get Fast Hardware

31

Page 32: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

IntelliJ

32

Page 33: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Goals

‣ Pure Web Frameworks‣ Full Stack Frameworks‣ SOFEA Frameworks

- API Frameworks

- JavaScript MVC Frameworks

33

Page 34: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Full Stack Frameworks

34

Page 35: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

API Frameworks

35

Page 36: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

JavaScript MVC Frameworks

36

Page 38: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Pure JVM Web Frameworks

‣ Apache: Wicket, Struts, Sling, Tapestry, Click‣ GWT: SmartGWT, GXT, Vaadin, Errai‣ JSF: Mojarra (RI), MyFaces, Tomahawk, IceFaces, RichFaces,

PrimeFaces‣ Spring MVC, Stripes, RIFE, ZK

38

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java

Page 39: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Frameworks I’ve Used

‣ Apache: Wicket, Struts, Sling, Tapestry, Click‣ GWT: SmartGWT, GXT, Vaadin, Errai‣ JSF: Mojarra, MyFaces, Tomahawk, IceFaces, RichFaces,

PrimeFaces‣ Spring MVC, Stripes, RIFE, ZK

39

Page 40: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Comparison Matrix

http://bit.ly/jvm-frameworks-matrix

40

Page 41: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Matrix Results

0

4.5

9

13.5

18

Grail

s

Sprin

g

Rails

GWT

Vaad

inTa

pestr

yW

icket

Stru

ts 2

Play

Strip

es JSF

Flex Lift

11.513.5141414.514.51515.515.5

17171717.5

41

Page 42: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Matrix Results

‣ Grails (17.5)‣ GWT (17)‣ Ruby on Rails (17)‣ Spring MVC (17)‣ Vaadin and Tapestry (15.5)‣ Wicket (15)

42

Page 43: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Weighted Matrix

43

Page 44: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Weighted Results

‣ Grails (90)‣ Play (87.5)‣ Spring MVC (85)‣ Ruby on Rails (82.5)‣ Vaadin (82.5)‣ GWT (80)

44

Page 45: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

‣ Developer Productivity: Lift gets a 11, Rails gets a 5, most Java-based frameworks get a 1 or less.

‣ Developer Perception: Every web framework gets a 1.  ‣ Learning Curve: Lift gets a 2.‣ Job Trends, yep, it's zero.

http://lift.la/my-take-on-matt-raibles-spreadsheet

* Matt's scale is 0-1 and my ratings are on Matt's scale, except mine goes to 11.

45

David Pollack’s Lift Ratings

Page 46: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Peter Thomas’s Perfbench

‣ Seam / JSF vs. Wicket Performance Comparison

- January 2009: Seam 2.1.1 and Wicket 1.3.5

- Average page response time in milliseconds

46

Page 47: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Peter Thomas’s Perfbench

‣ On the Seam / JSF side, the 20 sessions each take up about 800 KB adding up to around 16 MB total. On the Wicket side the 20 sessions add up to around 1.5 MB.

‣ + Lots of banter between Peter and Seam developers @ http://bit.ly/3X50Gc

47

Page 48: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Peter Thomas’s Perfbench

‣ Added Tapestry 5 and Grails in September 2009:

- Grails was far more productive than Tapestry 5.

- Grails still has some ways to go in terms of performance.

- Overall, Wicket is fastest, with Tapestry coming a close second.

- Wicket takes up the least amount of heap.

- Session usage of the Seam + JSF combination is significantly higher compared to the rest.

48

Page 50: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

World Wide Wait - Devoxx

50

Page 51: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

World Wide Wait - Devoxx

51

Page 52: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

World Wide Wait - Devoxx

52

Page 53: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

World Wide Wait - Devoxx

53

Page 55: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

devrates.com - by rating

55

Page 56: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

devrates.com - popular

56

Page 57: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Top JVM Frameworks

57

‣ Raible Matrix: Grails, GWT, Rails, Spring MVC

- Weighted: Grails, Play, Spring MVC, Rails, Vaadin

‣ Peter Thomas: Wicket‣ InfoQ: Spring MVC, Play, Grails, JSF, Struts‣ devrates.com:

- PrimeFaces, Grails, Tapestry, Vaadin, Wicket

Page 58: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Raible’s Recommendations

58

‣ Full Stack: Choose by language (JRuby, Groovy, Java or Scala)‣ Pure Web Framework: Spring MVC, Struts 2, JSF w/ PrimeFaces,

Tapestry, Wicket or Vaadin‣ JavaScript MVC: Ember, Angular JS, Backbone

- API Framework: Jackson + ?

Page 59: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Problem with GWT

59

Page 60: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Comparison Statistics

60

‣ Elimination Criteria

- At least 1 release in 2012

- At least 1 book on Amazon

- At least 10 jobs on dice.com

- At least 250 questions on Stack Overflow

‣ Remove Seam (development halted)

Page 61: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Jobs on Dice.com

0

75

150

225

300

Grails

JRub

y on R

ails Play Lift

Sprin

g Roo

Full Stack Frameworks, March 2013

61

Page 62: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Jobs on Dice.com

0

150

300

450

600

Sprin

g MVC

Strut

s 2

Wick

et

Tape

stry

Prim

eFac

es

Vaad

in

Pure Web Frameworks, March 2013

62

Page 63: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Jobs on Dice.com

0

75

150

225

300

Back

bone

Embe

r

Angu

lar

JavaScript MVC Frameworks, March 2013

63

Page 64: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Jobs on Dice.com

0

125

250

375

500

Jerse

y

Apac

he C

XF

REST

Easy

Dropwiza

rd

vert.x

JVM API Frameworks, March 2013

64

Page 65: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

LinkedIn Skills

0

3,750

7,500

11,250

15,000

Grails

Play

Sprin

g Roo

JRub

y on R

ails Lift

Full Stack Frameworks, March 2013

65

Page 66: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

LinkedIn Skills

0

3,750

7,500

11,250

15,000

Sprin

g MVC

Strut

s 2

Wick

et

Prim

eFac

es

Vaad

in

Tape

stry

Pure Web Frameworks, March 2013

66

Page 67: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

LinkedIn Skills

0

3,750

7,500

11,250

15,000

Back

bone

Angu

lar

Embe

r

JavaScript MVC Frameworks, March 2013

67

Page 68: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

LinkedIn Skills

0

3,750

7,500

11,250

15,000

Jerse

y

Apac

he C

XF

REST

Easy

vert.x

Dropwiza

rd

JVM API Frameworks, March 2013

68

Page 69: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Google Trends

69

Page 70: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Google Trends

70

Page 71: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Google Trends

71

Page 72: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Google Trends

72

Page 73: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Indeed Job Trends

73

Page 74: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Indeed Job Trends

74

Page 75: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Indeed Job Trends

75

Page 76: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Indeed Job Trends

76

Page 77: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Mailing List Traffic

AngularJSPlayLift

GrailsWicket

TapestryApache CXFDropwizard

StrutsJersey

Backbone.js

0 750 1500 2250 3000

516882

157432

730790828

10491623

2340

February 2013

* Frameworks not listed here use Forums, which don’t provide this data.

77

Page 78: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

StackOverflow

0

3,750

7,500

11,250

15,000

Grails Play Lift Spring Roo JRuby on Rails

Tagged Questions (March 28, 2013)

78

Page 79: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

StackOverflow

0

2,500

5,000

7,500

10,000

Spring MVC Struts 2 PrimeFaces Wicket Vaadin Tapestry

Tagged Questions (March 28, 2013)

79

Page 80: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

StackOverflow

0

2,000

4,000

6,000

8,000

Backbone.js Angular JS Ember.js

Tagged Questions (March 25, 2013)

80

Page 81: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

StackOverflow

0

750

1,500

2,250

3,000

Jersey Apache CXF RESTEasy Dropwizard vert.x

Tagged Questions (March 25, 2013)

81

Page 82: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Java Developers

82

“Java remains – in spite of the fragmented programming language landscape – a viable, growing language.”

http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/

Page 84: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

The Modern JVM Web Developer

‣ Starts with Fast Hardware‣ Uses IntelliJ IDEA‣ Leverages JavaScript, HTML5, and CSS3‣ Creates High Performance Web Sites‣ For Mobile Devices‣ In the Cloud‣ And cares about Security

84

Page 87: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

There is no “best” framework

87

Just lots of awesome choices...

Page 88: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Don’t listen to me!

88

Page 89: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Choose your own!

‣ Prioritize a list of goals that are important to your application.‣ Pick 3-4 frameworks and do a spike with each, developing the

same application.‣ Document and rank each framework against your list of goals.‣ Calculate and choose!‣ Don’t be a Picker.

89

Page 90: Comparing JVM Web Frameworks - Devoxx France 2013

© 2013 Raible Designs

Questions?

Contact Informationhttp://raibledesigns.com@mraible

Presentationshttp://slideshare.net/mraible

90