Which Framework to Use

Embed Size (px)

Citation preview

  • 8/13/2019 Which Framework to Use

    1/27

    CHOOSING A JAVA WEB FRAMEWORK:A COMPARISON

    Richard Pack, Lead U er I!"er#ace Archi"ec"

    $S%&'()

  • 8/13/2019 Which Framework to Use

    2/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 2

    Learn how to choose a Java technology-basedWeb Framework Enable you to:

    Categorize and understand what type of UI youre building

    Understand the features and nomenclature of Model View Controller MVC!

    "eigh the trade#offs

  • 8/13/2019 Which Framework to Use

    3/27

  • 8/13/2019 Which Framework to Use

    4/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 4

    C rre!" Fra.e/+rkAc"i+! Fra.e/+rk 6WR JSPWid*e" O1e!E.cee S/i!*We-

    A!4i0 Ech+ J ca O1e!7a4a $a1e "r3

    Ara!ea E81re + JWAA O7F $eaSer40e"

    A r+ra #0e7i4e JWar1 P "e#i8 $hi!Wire

    Bari" F+0i . 9Wic Re "0e" $ri.1a"h J !c"i+!

    Barrac da GW$ 9 e!+ RIFE $ r-i!e

    Be!"+ Gr++43;Grai0 9 +!ic RSF Ver*e

    Bi h+1 He0.a Maca/ Sea. VRa1"+r

    Ca!3a.+ Jac< ard Mak .-a Sh+ck War#are

    Ca a!dra Ja##a Ma4erick S.i0e We-O!S/i!*

    Chi-a Ja110e Me0a"i SOFIA We-W+rk

    Chr3 a0i JA$O Me!"a/ai S1ri!* MVC Wicke"

    C0ick JF+r. 0ar Mi00 "+!e S"reck /i!*S

    C+c++! JOSSO M3Face S"ri1e 7+10+!

    6i!a.ica JP -0i h Nach+ S"r " K

    6+4e"ai0 JSF Ni**0e

    S"r " = >"e.10a"e

    Over 100 Frameworks

  • 8/13/2019 Which Framework to Use

    5/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 5

    $he Cri"eria$he "radi"i+!a0 e"

    $he He00+ W+r0d "e "? Wha" d+e i" "ake "+ /ri"e He00+ W+r0d2

    Per#+r.a!ce? Fi0"er +r er40e"2

    Vie/ dec+ra"i+! "30e? 6+e i" e $e.10a"e +r Ja4aSer4er@ Pa*e JSP@ +#"/are;$a*0i- , Ja4a "ech!+0+*3

    c+!"r+0 +# -0+ck 2

    S1eed +# 6e10+3.e!"? Wha" d+e i" "ake "+ hi1 i"2

    S1eed +# 6e4e0+1.e!" % Par"? Ne/ % /ha" i "he 0ear!i!* c r4e2? E8i "i!* % h+/ . ch "i.e d+e i" "ake "+ add i.10e #ea" re 2? A*i0e % i cha!*i!* #ea" re ea 32

  • 8/13/2019 Which Framework to Use

    6/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 6

    $he Cri"eria$he "radi"i+!a0 e" % c+!"i! ed

    Vali a!ion "oes i! #ave lo!s of $uil %in vali a!ors&

    'n!erna!ionali(a!ion / Mul!ilin)uali(a!ion *#a! s!+le of ,ro,er!ies& Var+in) sco,es&

    "ocumen!a!ion-oo mar %a$ili!+Scala$ili!+

  • 8/13/2019 Which Framework to Use

    7/272008 JavaOne SM Conference | java.sun.com/javaone |

    S+ /h3 i "hi i.1+r"a!"

    6i##ic 0" #+r "he "akeh+0der "+!der "a!d a!d e

    E!d 1 /ri"i!* 0+" +# !+!%re a-0ec+de

    N+ !i#ied A9a8 "ra! 1+r"6irec" 1er i "e!ce "+ Re< e ",Se i+! +r C+!"e8"

    Li.i"ed 6+c .e!"a"i+!

    Wri"i!* -+i0er10a"e c+de

    N+ !i#ied e4e!" .+de0

    6i##ic 0" #+r "radi"i+!a0 /e-de i*!er

    C+!#i* ra"i+! -ec+.e di##ic 0" "+.a!a*e /he! "he a11 *r+/

    N+ /a3 "+ r ! a de- **er i! "he"e.10a"e

    A-i0i"3 #+r "he 4ie/ "+ -e ed a"he c+!"r+00er

    JSP +#"/are;JS$L -ec+.e a!i*h".are "+ read /he! "he 1a*e*r+/

    $e.10a"e .a3 ha4e a "ee10ear!i!* c r4e

    S1eed +# de10+3.e!"

  • 8/13/2019 Which Framework to Use

    8/27

  • 8/13/2019 Which Framework to Use

    9/272008 JavaOne SM Conference | java.sun.com/javaone |

    S/ee" S1+"

    N+" a +!e i>e #i" a00 *a.e? S+.e re< ire.e!" .a3 ha4e di4er*i!* i.10e.e!"a"i+! /hich

    crea"e "rade%+##

    6i##ere!" #ra.e/+rk #+r di##ere!" a*e ce!ari+? Vie/ Read +!03 E8 % "+re#r+!", -0+*, +!0i!e -a!k, c+r1+ra"e /e- i"e? Wri"e +!03? B+"h 4ie/ a!d /ri"e? Hi*h03 I!"erac"i4e

  • 8/13/2019 Which Framework to Use

    10/272008 JavaOneSM Conference | java.sun.com/javaone | 10

    $he Cri"eria$he ad4a!ced e"

    AJA7 11+r"? I!"e*ra"ed +r a#"er "he #ac"? 6+e i" re03 +! e8"er!a0 "++0

    Vie/ 0a!* a*e? Ja4a 1r+*ra..i!* 0a!* a*e, EL, OGNL,

    M 0"i10eC+.. !i"3

    ? Ac"i4e, c+!"i! a0 de4e0+1.e!"

    Ma" ri"3P 00 -a ed +r P h -a ed

    %"ier 11+r" % EJB;S1ri!* a!dhi-er!a"eFrie!d03 URL : URL .a11i!*

    C0ie!";Ser4er Ja4aScri1"@1r+*ra..i!* 0a!* a*e

    ? I "here "i*h" c+ 10i!* -e"/ee! "he0a!* a*e

    6+e a!+"her 1ar" +# "he c+.1a!3

    e "he #ra.e/+rk26+ 3+ r de4e0+1er ha4ee81erie!ce /i"h i"2C0ie!" e4e!" dri4e!2 Aka 6+e i"

    11+r" Ser4ice 2

    6+e i" ha4e a! Arche"31e

  • 8/13/2019 Which Framework to Use

    11/272008 JavaOne SM Conference | java.sun.com/javaone | 11

    Gr++43;Grai0

    U a*e "31e: Vie/ ; Wri"e? E8"e! i+! "+ "he Ja4a

    1r+*ra..i!* 0a!* a*e

    Pr+ :? H+"%de10+3? Si.10e c+!#i* ra"i+!? C0+ re? I!"e*ra"e S1ri!* a!d Hi-er!a"e

    C+! :? S0+/ c+.1ared "+ !a"i4e#ra.e/+rk

    ++ #oovstatic &t#in. dojoTable(/indin.sc#ipt/indin., pa#ams

    def id = "01pa#ams id2"

    def #es = ne &t#in./ ffe#( """

    dojo #e4 i#e("dojo topic" 5

  • 8/13/2019 Which Framework to Use

    12/272008 JavaOne SM Conference | java.sun.com/javaone | 12

    Gr++43;Grai0

    AJA7 11+r"2 N+

    Vie/ La!* a*e Ja4a, Gr++43

    P h +r P 00 P h

    Ma" ri"3 D+ !*

    C+.. !i"3 S.a00, - " *r+/i!*

    $ier F;W 11+r" De

    Frie!d03 URL N+" - i0" i!

  • 8/13/2019 Which Framework to Use

    13/272008 JavaOne SM Conference | java.sun.com/javaone | 13

    G++*0e We- $++0ki" GW$

    U a*e $31e: Vie/ ; Wri"e? M+di#ied Ja4a 1r+*ra..i!* 0a!* a*e 11+r"

    Pr+ :? Si.10ici"3, S/i!*;SW$ Like? L+" +# - i0" i! c+.1+!e!"? S"r+!* -i!di!* -e"/ee! Ja4a a!d Ja4a cri1" 1r+*ra..i!* 0a!* a*e? Pr+9ec" Arche"31e

    C+! :

    ? Hard "+ c+!"r+0 c c0a e? B i0" i! c+.1+!e!" are #air03 -a ic S+04ed /i"h GW$%E8"? C rre!"03 !+ 11+r" #+r Ja4a (;Ja4a & 1r+*ra..i!* 0a!* a*e

  • 8/13/2019 Which Framework to Use

    14/272008 JavaOne SM Conference | java.sun.com/javaone | 14

    G++*0e We- $++0ki" GW$

    p blic class 6ail implements 7nt# 8oint, 1

    p blic void on6od le9oad( 1 top8anel add(men /a# 5 #i.ht8anel add(list 5 main8anel add(table 5

    indo enable&c#ollin.( false 5 indo set6a#.in( ";p3" 5

    Doc 8anel o te# = ne Doc 8anel( 5 o te# add(top8anel, Doc 8anel T? 5 o te# add(left8anel, Doc 8anel 7@&T 5 o te# add(main8anel, Doc 8anel 7 T7 5

    ?isto# add?isto# 9istene#( this 5

    oot8anel .et( add(o te# 5

  • 8/13/2019 Which Framework to Use

    15/272008 JavaOne SM Conference | java.sun.com/javaone | 15

    G++*0e We- $++0ki" GW$

    AJA7 11+r"2 De

    Vie/ La!* a*e Ja4a *e!era"ed

    P h +r P 00 P 00

    Ma" ri"3 D+ !*

    C+.. !i"3 S.a00

    $ier F;W 11+r" N+

    Frie!d03 URL De , /i"h +.e /+rk

  • 8/13/2019 Which Framework to Use

    16/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 16

    S"r " =

    U a*e $31e: Vie/ ; Wri"e, Hi*h03 I!"erac"i4ePr+ :? Fir " c0a AJA7 11+r"? S1ri!* c+!"ai!er i!"e*ra"i+!? POJO a c+!"r+00er , d+e ! " re< ire i!heri"a!ce? FreeMarker a!d Ve0+ci"3 11+r"

    C+! :? S"i00 e LO$S +# 7ML c+!#i* ra"i+!

    ? S"i00 0ea4e "he #0+/ .a11i!* "+ 7ML

  • 8/13/2019 Which Framework to Use

    17/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 1

    S"r " =

    p blic class 9o.in@ction implements 8#epa#able 1

    p blic 9o.in@ction(9o.in&e#vice se#vice 1 this se#vice = se#vice5 2

    p blic &t#in. e3ec te( 1 #et #n @ction &A 7&&5 2

    p blic &t#in. lo.in( 1 se#vice lo.in( n, p 5 #et #n e3ec te( 5 2

  • 8/13/2019 Which Framework to Use

    18/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 18

    S"r " =

    AJA7 11+r"2 De

    Vie/ La!* a*e JSP, OGNL

    P h +r P 00 P h

    Ma" ri"3 D+ !*

    C+.. !i"3 Medi .

    $ier F;W 11+r" De

    Frie!d03 URL N+" - i0" i!

  • 8/13/2019 Which Framework to Use

    19/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 1

    $a1e "r3

    sa)e !+,e Vie / *ri!e i)#l+ 'n!erac!ive7ros

    ses anno!a!e M9 !em,la!es o!% e,lo+ :Version 5; Sim,le confi)ura!ion su,,or! an lo!s of i!

    Cons "ocumen!a!ion oesn?! use real orl ,ro$lems @o =7' $ac ar s com,a!i$ili!+ $e! een major versions

  • 8/13/2019 Which Framework to Use

    20/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 20

    $a1e "r3

    ++Fava ont#olle#

    p blic abst#act class &i.nCn e3tends /ase8a.e 1

    B8e#sist ( p blic abst#act &t#in. .etAse# ame( 5 p blic abst#act void setAse# ame(&t#in. se# ame 5

    p blic C9in si.nin/ tton9istene#(C e4 est cle c cle 1++b tton clic listene#

    2

  • 8/13/2019 Which Framework to Use

    21/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 21

    $a1e "r3

    AJA7 11+r"2 E8"e! i4e

    Vie/ La!* a*e OGNL, Pr+1

    P h +r P 00 P 00

    Ma" ri"3 Ma" re

    C+.. !i"3 Lar*e, Ac"i4e

    $ier F;W 11+r" De

    Frie!d03 URL De

  • 8/13/2019 Which Framework to Use

    22/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 22

    Wicke"

    U a*e $31e: Hi*h03 I!"erac"i4ePr+ :? A!!+"a"ed H$ML $e.10a"e? E8ce00e!" d+c .e!"a"i+!? C+.1+!e!" ca! -e e8"e!ded? E4er3"hi!* i d+!e i! Ja4a 1r+*ra..i!* 0a!* a*e

    C+! :? E4er3"hi!* i d+!e i! Ja4a 1r+*ra..i!* 0a!* a*e

  • 8/13/2019 Which Framework to Use

    23/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 23

    Wicke"

    ++Definition p blic class 9o.in e3tends eb8a.e 1

    p blic 9o.in( 1 add(lo.in8anel 5 2 p blic void on& bmit( 1 lo.in( 5 set esponse8a.e( ne ?ome8a.e( 5 22

    < ic et:panel>

    ++ Asa.eadd( ne 9o.in8anel( "lo.in" , lo.in 5

  • 8/13/2019 Which Framework to Use

    24/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 24

    Wicke"

    AJA7 11+r"2 E8"e! i4e

    Vie/ La!* a*e OGNL

    P h +r P 00 P 00

    Ma" ri"3 M+dera"e

    C+.. !i"3 Medi ., Ac"i4e

    $ier F;W 11+r" De

    Frie!d03 URL De

  • 8/13/2019 Which Framework to Use

    25/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 25

    S ..ar3

    N+" a00 #ra.e/+rk are e< a0U!der "a!d a!d + "0i!e 3+ r !eedFi!d a #e/ "ha" 0++k 0ike "he3 .ee" "h+ e !eed

    U e "he cri"eria a!d e4a0 a"e6+! " "ake .3 /+rd #+r i", "r3 a He00+ W+r0d +# 3+ r +/!

  • 8/13/2019 Which Framework to Use

    26/27

    2008 JavaOne SM Conference | java.sun.com/javaone | 26

    F+r M+re I!#+r.a"i+!

    $he e 0ide? /// h31eric +r*;c+!#ere!ce ; 0ide

    Ja4a Fra.e/+rk S/ee" S1+"A /// 4ir" a c+.;#i0e ;Ja4aWe-Fra.e/+rkS/ee"S1+" 1d#

    $he Fra.e/+rk? *rai0 c+deha +r*;? c+de *++*0e c+.;/e-"++0ki";? "r " a1ache +r*;

    ? "a1e "r3 a1ache +r*A /icke" a1ache +r*

    http://www.hyperic.org/conferences/slideshttp://www.virtuas.com/files/JavaWebFrameworkSweetSpots.pdfhttp://grails.codehaus.org/http://code.google.com/webtoolkit/http://struts.apache.org/http://apache.tapestry.org/http://wicket.apache.org/http://wicket.apache.org/http://apache.tapestry.org/http://struts.apache.org/http://code.google.com/webtoolkit/http://grails.codehaus.org/http://www.virtuas.com/files/JavaWebFrameworkSweetSpots.pdfhttp://www.hyperic.org/conferences/slides
  • 8/13/2019 Which Framework to Use

    27/27

    CHOOSI ! " J"#" W$% F&"'$WO&() "CO'*"&ISO&+chard *ack

    ,S- ./0