![Page 1: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/1.jpg)
Choosing the Right Technology Stack for Your JavaTM Website.
Ian RobertsonSean LandisOverstock.com
![Page 2: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/2.jpg)
2
So you want to build a JavaTM Website
So many choices> Container> UI layer> Persistence layer> Build tools
![Page 3: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/3.jpg)
3
So you want to build a Java website
With so many considerations> Buy vs Build> Commercial vs Open Source> Standards-based vs proprietary> Standards-based vs Standards-based
The nice thing about standards is that there are so many to choose from. - Andrew Tanenbaum
![Page 4: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/4.jpg)
4
Understand your requirements> Staff skills and experience> Time and resource availability> Rapid Application Development vs. Rapid
Application Maintenance> Stability, Reliability, Scalability, *ility...> The need to interface with other technologies
(Database, JMS, AJAX, REST, etc)
![Page 5: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/5.jpg)
5
Don't let others define your requirements for youVendors, Industry Analysts and hypesters all are
willing to do soA product is not the same thing as a solutionA solution is not necessarily a solution for any of
your problemsBeware of vendor lock-in
That said, when there is a solution to your problem, it can be wonderful
Listen to others who have been where you're going
![Page 6: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/6.jpg)
6
Remember that things change> With time
Technologies, Companies, Employees and Requirements all come and go
> With scaleDon't get caught with your servers downBut don't let next years design keep you from
reaching next month!
![Page 7: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/7.jpg)
7
Beware of internal politics> Staff wants to do new cool technology A> Staff is afraid of technology B> Manager just read about technology C> Manager is afraid of technology D
● “I hear that Java is slow”> "Nobody ever got fired for choosing X"
● But people do get fired for failed projects, cost overruns, etc...
![Page 8: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/8.jpg)
8
Choosing a web UI framework
So Many Choices:JSP, Struts1, Struts2, Java Server Faces, Wicket,
Spring MVC, WebFlow, Tapestry, Jamon, Velocity, Jboss Seam, Restlet, JAX-RS, GWT, Cocoon, MyFaces, WebWork, Turbine, Rife, Echo, AppFuse, Stripes, ......
There is no one-size-fits-all solution; all frameworks have to make trade-offs
![Page 9: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/9.jpg)
9
UI Frameworks Trade-offs> Avoiding repetition (DRY)> Type safety> Accessibility to UI designers (non-programmers)> Performance> Ramp-up time for developers> Separation of layers
● does the business layer need to know about the UI Layer? (annotations?)
> Form handling capabilities
![Page 10: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/10.jpg)
10
Choosing a Container> JavaEE> Spring/Guice> Tomcat/Jetty> public static void main(String args[])
![Page 11: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/11.jpg)
11
JavaEE> Plenty of providers
● both commercial and open source> Swiss Army Knife - can do everything> Some restrictions
● Thread creation is not allowed● Nor is direct file access
![Page 12: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/12.jpg)
12
Dependency Injection (Spring, Guice)> Plenty of documentation> Large communities of support
● Easy to find developers who know it.> Most common needs can be met
![Page 13: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/13.jpg)
13
Tomcat> Primarily “just” a servlet container> A great choice if all you need is a web server> A good platform for non-standard requirements
(build your own)> Increasingly, Jetty is emerging as another popular
alternative for a light-weight server
![Page 14: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/14.jpg)
14
public static void main(String[] args)
> Gives total control, with higher development costs> Can make sense if its core to your business> Do not choose this lightly
![Page 15: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/15.jpg)
15
Persistence Layer
Here, at least, the answer has always been clear:Use JDBC
![Page 16: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/16.jpg)
16
Persistence Layer
Here, at least, the answer has always been clear:Use JDBCUse EJB/CMP/BMP
![Page 17: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/17.jpg)
17
Persistence Layer
Here, at least, the answer has always been clear:Use JDBCUse EJB/CMP/BMPUse JDO
![Page 18: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/18.jpg)
18
Persistence Layer
Here, at least, the answer has always been clear:Use JDBCUse EJB/CMP/BMPUse JDOUse Hibernate
![Page 19: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/19.jpg)
19
Persistence Layer
Here, at least, the answer has always been clear:Use JDBCUse EJB/CMP/BMPUse JDOUse HibernateUse JPA
![Page 20: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/20.jpg)
20
Persistence Layer
Here, at least, the answer has always been clear:Use JDBCUse EJB/CMP/BMPUse JDOUse HibernateUse JPAor maybe iBATIS...
![Page 21: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/21.jpg)
21
Build Tools> Ant: the assembly language of build tools
● Can do any task, but you have to do it your self, and there are problems scaling to large projects
> Maven: the BEPL of build tools● It's “easy”, except for the hard stuff
> The industry is still searching:● Ivy provides dependency management, but builds
on ant
![Page 22: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/22.jpg)
22
Build vs “Buy”
If it's not an important differentiator, you're probably better off using an off-the-shelf component (ideally open source)
If it's critical and there is a matching solution, use itBut don't be afraid to invent when needed
● Not as much work as some make it out to be, but requires design skill
● The bigger the shop, the more that custom-built components make sense
● Innovation requires this....
![Page 23: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/23.jpg)
23
Things to consider when “buying”> Support> Provider viability> Community> Size of user base> Trend
![Page 24: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/24.jpg)
24
Commercial vs Open source
Even if you don't plan to change the source, having access can be invaluable for debugging and diagnosis
OpenSource projects often have better support than their commercial counterparts
![Page 25: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/25.jpg)
25
Case Study – Overstock.com
Two separate use cases:● Public facing websites (i.e. www.overstock.com)● Internally-facing websites (customer service, item
creation, etc)
![Page 26: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/26.jpg)
26
Public-facing website requirements> Scalable – 2000 requests/second> Responsive - < .25 second page load time> Customizable – never say “we cannot do that” to
the business> Reliable – no site, no money> Maintainable – lots of developers, lots of changes
![Page 27: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/27.jpg)
27
Public-facing website non-requirements> Fast developer ramp-up> Support from a third party for a framework> Heavy form processing capabilitiesSite revenue allows making non-trivial investments
![Page 28: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/28.jpg)
28
Public-facing website stack> Java 6 SE> Hibernate> Tomcat> Jamon (templating engine)> Restlet (ReSTful backend web services)> Ehcache (taxonomy data, sales tax rates, etc)> Oracle Coherence (caching search results)> JMS (click tracking, order processing)> JMX (monitoring, cache invalidation, etc)
![Page 29: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/29.jpg)
29
What's not in the stack> Session – can limit scalability> EJB container – no need> JSP – not enough type safety> Spring – use a lightweight generic factory pattern
instead
![Page 30: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/30.jpg)
30
Internal website requirements
Quick to develop, maintainHeavy form processingSmall number of users, all trained on using the
application
![Page 31: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/31.jpg)
31
Internal website non-requirements> Highly scalable> Highly customizable> Ability to support parallel development
![Page 32: Choosing the Right Technology Stack for Your Java Website.€¦ · 3 So you want to build a Java website With so many considerations > Buy vs Build > Commercial vs Open Source > Standards-based](https://reader036.vdocument.in/reader036/viewer/2022071002/5fbf8b478e917816fa29d6dd/html5/thumbnails/32.jpg)
32
Internal website stack> Java 6 SE> Hibernate> Tomcat> Jboss Seam> Restlet (ReSTful backend web services)> JMX (monitoring, cache invalidation, etc)