j2ee application development – past, present, future

17
Faxing Infrastructure J2EE Application Development – Past, Present, Future 06/05/2008 Solution Architect: Mark Reha

Upload: finian

Post on 08-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

J2EE Application Development – Past, Present, Future. 06/05/2008. Solution Architect: Mark Reha. Agenda. How did we get here? Review/observations of the J2EE Platform from 2002-2004 Review/observations of a J2EE Web Application from 2002-2004 Trends in 2004/2005 Where are we today? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: J2EE Application Development – Past, Present, Future

Faxing Infrastructure

J2EE Application Development – Past, Present, Future

06/05/2008

Solution Architect: Mark Reha

Page 2: J2EE Application Development – Past, Present, Future

2

Agenda

> How did we get here?• Review/observations of the J2EE Platform from 2002-2004• Review/observations of a J2EE Web Application from 2002-2004• Trends in 2004/2005

> Where are we today?• Review/observations of a J2EE Web Application from 2005-2007• Trends in 2007/present

> Where should we be headed?• Potential Road Map and R&D Technologies• Potential POC• What are my next steps?

> Closing• Questions• References

Page 3: J2EE Application Development – Past, Present, Future

3

How did we get here (from the post .COM era)?> The .COM era (1995-2001, peaking in 2000) was really humorous in some

regards when you look back at how we really built web applications, the technology stacks (or lack of) that were leveraged, and the functionality deployed in some of the web applications. Lots of money was spent. But this period laid the foundation for where we are today thru with very complex sites that were developed by some successful companies : Ameritrade, AOL, Amazon, DoubleClick, eBay, eToys, HotMail, PayPal, Yahoo.

> Sometimes it doesn’t hurt to look back to understand how we got to where we are so we better understand how to best move forward (for example: SOA, Mashups, Agile Frameworks, Agile Methodologies, etc. are all “lessons learned” from the .COM era period of time).

> I am not going to discuss details on development tools, testing tools, build tools, development methodologies, or BI/Reporting tools. These certainly could be discussed in future presentations if desired.

> The following slides represent my experience, opinions, observations, and trends (taking into account my limited experience at AAA).

Page 4: J2EE Application Development – Past, Present, Future

History of the J2EE Platform

J2EE Platform:• Java Platform Edition JPE announced in May 1998• J2EE 1.2 released in December 1999 (peak of the .COM era)• J2EE 1.3 released in September 2001 (end of .COM era)• J2EE 1.4 released in November 2003• EE 5 released in May 2006• EE 6 scheduled release for the end of 2008 (approval of JCP specification)

Lots of enterprises are still on J2EE 1.3 from 2002!

The Portlet Specification was not released until October 2003.

Page 5: J2EE Application Development – Past, Present, Future

J2EE Platform from post .COM era (2002-2004)

J2EE 1.3 – 1.4

WebJSP

Servlet

EJBSessionEntityMDB

JAX

-R

PC

JAX

-R

JAX

B

JMX

JAA

S

JMS

Mail

JTA

JCA

J2SE 1.3 – 1.4

AW

T

Sw

ing

Java 2D

Java 3D

JavaBe

an

JDB

C

JND

I

JNI

RM

I

Application ServerContainers and Services for UI, Business, Database

SecurityAdministration and Deployment

Value Add Services (Proprietary Frameworks etc.)

Client (mostly browser based)

Web ApplicationUI: HTML, CSS/DHTML, JavaScript, AJAX, Applets, Flash

Application Logic, Business Logic, Data Access LogicEnterprise Application Integration (EAI)

Govern

ance

Standards, B

est Practices/G

uidelinesA

rchitecture Review

Boards etc.

Design PatternsMVCDAO

CommandFactory

Business DelegateBusiness Façade

DecoratorValue Object

**

SD

LC

and

Develop

men

t Tools

XP, Scrum

, RU

P, Waterfall

Eclipse, IB

M W

SAD

/RA

D, N

etBeans, JB

uilder, IntelliJC

ode Analyzers (C

heckstyle, FindBugs), U

nit Test Fram

eworks (JU

nit, TestN

G)

Open SourceStruts 1.x (MVC)

JSTL (Tag Library)MyFaces/Sun JSF RI

Apache Commons (Utility)Apache Log4j (Logging)Hibernate(Persistence)

iBatis (Persistence)iText (PDF)

POE (MS Docs)Quartz (Timer Service)

Castor (XML Framework)Apache Xerces/Xalan (XML)Apache Axis (Web Services)

SSOOSCache/EHCache (Cache)

*

Integration/MiddlewareBusiness Rule Engine

ETLMessaging/MQ

FTPWeb Services

Proprietary Scripts etc.Screen Scraping

*

Utilities and Core ServicesLogging (Wrapper)Tracing (Wrapper)

Exception FrameworkBase Classes/FrameworksAlert (like HP Open View)

Cache (Wrapper)Static Data

Security/SSO*

Page 6: J2EE Application Development – Past, Present, Future

6

J2EE Platform Observations from 2002-2004> Leveraged lots of open source libraries to fill in the J2EE specification gaps (like Web MVC

Framework, XML, Web Services). Soon there would be competing and redundant technologies such as XML, Web Services, Logging, etc.. The Enterprise and Application Architect definitely had their work cut out for them. What technologies do we use?

> Some J2EE specifications were of little value to the enterprise (for example, Entity Beans (CMP or BMP) and Stateful EJB’s…..J2EE 1.2 only supported remote Session Beans!).

> Enterprise Integration was tightly coupled and reuse of enterprise assets not fully thought out or realized.

> Application Servers often provided proprietary (and competing) technologies and frameworks (Portlets, Web, Security, etc.).

> Lots of programming models to learn.> Governance was often over looked causing lots of inconsistencies in architecture and duplication of

code/frameworks.> Most development methodologies were still very “water fall”. XP was just taking off.> Development Tools needed improving.> Generally there was very high TCO for 1st generation (MVC-1) and 2nd generation (MVC-2)

applications.> De-facto Standard Application Servers: WebLogic, WebSphere, and some Oracle.> Increasing frustration with J2EE standard (some of it was justified and some was not).

Page 7: J2EE Application Development – Past, Present, Future

J2EE Web 1.0 Application Architecture (2002-2004)

J2EE Application Server (mostly commercial)

J2EE 1.3 – 1.4

J2SE 1.3 – 1.4

Utilities and Core Services

Logging/Tracing (Wrapper)Exception Framework

Base Classes/FrameworksAlert (like HP Open View)

Cache (Wrapper)Static Data

Security/SSO*

Open SourceStruts 1.x (MVC)

JSTL (Tag Library)MyFaces/Sun JSF RI

Apache Commons (Utility)Apache Log4j (Logging)Hibernate(Persistence)

iBatis (Persistence)iText (PDF)

POE (MS Docs)Quartz (Timer Service)

Castor (XML Framework)Apache Xerces/Xalan (XML)Apache Axis (Web Services)

SSOOSCache/EHCache (Cache)

*

Client (mostly browser based)

Object Model(s)Presentation Model

Application Domain Model

Data Domain Model

Web Application

PresentationHTML, CSS, JavaScript, AJAX

JSP, Servlets

Struts or Custom Framework

BusinessPOJO (plus JTA)

Session (Mostly Local Stateless)Message Driven Beans

Timer BeansWeb Services

Data AccessJDBC, SQL, SP

Hibernate/TopLink/iBatis

Business Rule Engine

EAIJCA

JMS/MQETL

RMI/CorbaXML/Web Services

Screen ScrapingTerminal

EmulationCustom Scripts

OLTP DB Legacy SystemsAnd

Legacy DB

Page 8: J2EE Application Development – Past, Present, Future

8

J2EE Web Application Observations from 2002-2004> End of the .COM era, continue the migration from MVC Model 1 to MVC Model 2 (mostly

due to the adoption of Struts 1.x in 2001/2002).> Early adopters of the MVC Model 2 design pattern built their own MVC web framework

(bad in the long run but Struts was a young framework). Even Sun built their own for the Blueprints and PetStore Application.

> Lots of Silo based vertical applications.> Very tightly coupled “point to point” applications (with not a lot of reuse across the

enterprise and sometime with more then “one source for the truth” for data).> Still learning how to layer a web application properly (bad habits from MVC Model 1).> Lots of hard to maintain applications (due to MVC Model 1 and poor layering of software)

=> Mythical Man Month, “Plan to Throw One Away?”.> Most Web Frameworks each added their own tags so the handoff between the UI

designer and Developer was difficult (hard to reuse HTML and hard to keep in sync., some newer Web Frameworks prevent this problem).

> Some applications were built with anywhere from 1 to 3 object models (bad and hard to maintain).

> J2EE finally had a competitor in the enterprise => .NET 1.0 released in 2002.

Page 9: J2EE Application Development – Past, Present, Future

9

Trends from 2004-2005> Only 4 Years Ago: Remember this is not human time but Internet time

> Productive (and usable) development tools (Eclipse 3, JBuilder, IntelliJ, NetBeans) finally start to emerge. JBuilder was dying a slow death due to open source tools.

> Rod Johnson => Author of “J2EE Design and Development” from 2002/2003 that launched the concepts behind Spring, Dependency Injection, AOP, and a simpler programming model (POJO based). Spring 1.0 was released in March 2005!

> Finally a standards based Web Framework => JSF 1.0 was released in 2004 (although not formally part of EE platform/specification, that would not happen until 2006 in EE 5).

> XML everywhere (Configuration, BPEL, WSDL, Metadata, Data, etc)!> Web Services stack continues to mature.> AJAX starts to emerge, with lots of frameworks!> SOA starts to emerge (although conceptually this had been around for some time).> Other technologies start to become more popular in web application architectures:

• Portal Servers• Business Rule Engines (Blaze, iLog, Drools)• ORM Frameworks (Hibernate/TopLink)• Still more web frameworks

Page 10: J2EE Application Development – Past, Present, Future

EE 5 Platform (2005-present)

J2SE 5

AW

T

Sw

ing

Java 2D

Java 3D

JavaBe

an

JDB

C

JND

I

JNI

RM

I

EE 5

WebJSP

ServletJSF

JSTL

EJBSession (POJO)

Entity/JPAMDB

Some DI and AOP

JAX

-R

PC

JAX

-R

JAX

B

JMX

JAA

S

JMS

Mail

JTA

JCA

JAX

-W

S

StA

X

Loggin

gJava Language Enhancements

AnnotationsGenerics

Auto-boxingEnum’sFor loop

PrintLogging

**

Languages on JVMRuby

GroovyPythonScala

**

J2EE Platform EnhancementsJSF

JSTL Tag LibraryPOJO Programming Model

JPA (Persistence)JDO 2.0

DI and AOP FeaturesJAXB 2.0

JAX-WS 2.0WS-Metadata

StAX XML Parser**

Page 11: J2EE Application Development – Past, Present, Future

J2EE Web 1.5/2.0 Application Architecture (2005-present)

J2EE Application Server (now some open source)

EE 5

J2SE 5Java, Ruby, Groovy, Python, Scala

Utilities and Core Services

Logging/Tracing (Wrapper)Exception Framework

Base Classes/FrameworksAlert (like HP Open View)

Cache (Wrapper)Static Data

Security/SSO*

Open SourceStruts2 (MVC)

Apache Commons (Utility)iBatis (Persistence)

iText (PDF)POE (MS Docs)

Quartz (Timer Service)Apache Axis (Web Services)OSCache/EHCache (Cache)

*

Object Model

Application Domain Model

Web Application

Open JDK

SpringDI

AOPSpringMVC

WebFlowSecurity

PresentationHTML, CSS, JavaScript, AJAX

JSF, SpringMVC, JSP, Servlets, JSTLFacelets, Seam, Spring WebFlow

BusinessPOJO (via Spring or Session)

Message Driven BeansTimer BeansWeb Services

Data AccessJDBC, SQL, SP

JPA/Hibernate/TopLink/iBatis

Client (not just browser based anymore)

Struts2 Framework

Rails/Grails Framework

GWT Framework

Business Rule Engine

SOAESB, BPM

WS-*UDDIWSDLXML

OLTP DB Legacy SystemsAnd

Legacy DBOr DW

EAIJCAETL

JMS/MQ

Page 12: J2EE Application Development – Past, Present, Future

12

J2EE Web Application Observations from 2005-2007> Move away from Struts 1.x or proprietary frameworks to newer web frameworks like JSF (plus

Facelets, Seam, and Ajax4Jsf) or Struts2 or SpringMVC (with WebFlow).> Move toward annotation based configuration (versus mass of XML configuration files).> Less Open Source required (due to maturity of EE specification, Spring, and open source application

servers like JBoss, Glassfish, Tomcat 5/6). Apache Foundation, Spring, Craig McClanahan (JSF), Rod Johnson(String/EJB3), Gavin King(Hibernate/JPA) were really influencing and pushing the Java/J2EE platform forward.

> Spring getting lots of traction in the industry (dependency injection (simple but powerful!), POJO based for simpler programming model, AOP (for security, transactions, tracing, etc), wrappers for integration with EJB, WS, etc.).

> A single Object Model now really could be achieved (no Struts FormBeans and maturity of mapping capabilities in ORM frameworks (that better supported legacy database schemas)).

> NetBeans IDE is becoming a viable and powerful IDE (Eclipse finally has some competition). Eclipse Foundation followed suite and also released Eclipse Europa. No need to buy a J2EE IDE now.

> Rather then reinvent we must reuse in the Enterprise, move from vertical applications to Enterprise wide applications => SOA and leverage full Web Service stack, ESB, BPM.

> New EE web applications can be built much quicker and with much less code. My last project, using JSF and Spring and iBatis, was built with 50% less code, delivered on time (actually over delivered by adding more features requested from our customer), and was 25% under budget.

> Google influence => Google Web Toolkit, Google Docs, Google Maps, etc.> Sun and Microsoft finally working together (WS-* in 2006) => that is a good thing for everybody!

Page 13: J2EE Application Development – Past, Present, Future

13

Trends from 2007-present> Web 2.0 => What is it? How do we really get there? Build new applications?

Adopt/integrate new technologies into existing applications? What technologies do we use?

> New programming languages running on the JVM: Ruby, Groovy, Scala, PHP, Python> New agile web frameworks: Ruby on Rails, Groovy on Rails, GWT.> New web technologies starting to emerge: HTML 5, Adobe Flex, JavaFX.> Must consider other devices like Smart Phones: Apple iPhone (rapidly achieved 20-25%

market share), BlackBerry (44% market share), Palm (14% market share)) with technologies like Google Android, JavaME, or build pure web based applications.

> Low cost solutions starting to be accepted by large enterprises: For example, JSF/Struts2/SpringMVC + Spring + Hibernate on Tomcat/JBoss/Glassfish.

> Java 7 and EE 6 => Move toward modularity via Profiles, continued maturity of EE specification with Common Annotations, Servlet 3.0, WS-RS (REST), JPA 2.0, etc.

> Multi-core processors: Some new JSR’s being developed and some support in Java 7> Grid Technology: All major DB vendors (Oracle and IBM) now have them in their stack.> “Real” Data Warehouse (not just a big relational database) => Teradata, IBM, Oracle.> Offline Applications (integration with Google Gears and Sun JavaDB)

Page 14: J2EE Application Development – Past, Present, Future

14

Where should we be headed?> Potential J2EE Road Map (1-3 years):

• We really need to Deprecate the Web 1.0 Frameworks (Struts and NO pure JSP with Scriplets)• Invest in Agile Web 1.5 Frameworks:

• JSF(+Seam+Facelets), Struts2(+Tiles), SpringMVC, AJAX and COMET• We can then use more Agile Programming Models in all tiers (and likewise do proper unit testing)• Agile Programming Models are all found in Struts2, Spring, EE 5 (EJB3, JSF, and JPA), SCA• UI Work Flow (like Spring WebFlow)• Technology can help us be more agile and productive but we also need to make sure we have a solid

suite of Standards, Best Practices/Guidelines along with solid Development Tools (including unit test and static code analysis tools) and a Development Methodology for all new web applications

• R&D in Agile Web 2.0 Frameworks: • GWT, Ruby on Rails, Groovy on Rails• These frameworks all show very good promise• But are they ready for the Enterprise today? Maybe not.

• R&D in a Portal Solution => 268 Portlets, WSRP, low cost JBoss Portal Server• R&D in Web 3.0/RIA => HTML 5, Adobe Flex, JavaFX, Google Gears, Java 6/7 “Applets”• UI Code reuse strategy (just like we promote the reuse of business services):

• JSF libraries (ICEFaces, Apache Tomahawk)• WSRP for Portlets• jMaki for pure client side widgets (DOJO, Yahoo Widgets, etc.)

• Mobile Strategy => iPhone, BlackBerry, Palm or what?• Low Cost Platform Strategy => Tomcat, JBoss, Sun Glassfish, IBM Geronimo

Page 15: J2EE Application Development – Past, Present, Future

15

Where should we be headed?> Need a complete suite of J2EE Standards, Best Practices/Guidelines, and Ref Arch> Potential Proof of Concept Projects:

• JSF and/or Struts2 and/or SpringMVC• Core technology demonstration• Integrate Struts 1.x with JSF or Struts2 or SpringMVC

• GWT (very interesting programming model and high scalability potential) • Ruby on Rails and/or Groovy on Rails• Port Vignette PortalBean to 168/268 Portlet

• Also look into Vignette Struts or JSF Portal Framework• Eliminate the use of proprietary API’s• Integrate with Spring + SOA

• Alternative and low cost Portal Server (or Portlet like framework, why Portlets?)• Vignette seems to be a very difficult and complex environment (both runtime and

development)• Vignette is proprietary and costly (VPS + VCM + WebSphere)• We should look into other alternatives (and have a Road Map as well)

• Low cost J2EE platform strategy (How much can we save the business?)• Low cost J2EE development tools strategy (How much can we save the business?)• Mobile platform strategy (How does it fit in and with what technologies?)

Page 16: J2EE Application Development – Past, Present, Future

16

What are my next steps?> Java/J2EE Platform:

• Possible J2EE Platform Standards: • J2EE Web Application Framework Standard• J2EE Business/Services Tier Standard• J2EE Data Access Standard (Persistence Framework, Etc)• J2EE Development Tool Standard• J2EE Utilities Standard• J2EE Low Cost Platform Standard• J2EE Portal Server Standard

• Establish a J2EE Reference Architecture:• J2EE Taxonomy• J2EE Best Practices and Design Patterns• J2EE Reference Architecture

• Socialize the Java/J2EE Standards via presentations and EA Sharepoint Site

> Work with Scott to align .NET and J2EE from standards, reference architecture, best practices, etc. to form a common approach to documenting our application vision via the PARIS portal site

> Align J2EE EA with CSAA.com (and any other J2EE Projects)

Page 17: J2EE Application Development – Past, Present, Future

17

Closing

> Thank you> Resources Leveraged for this Presentation:

• Experience in Java since 1997 and J2EE/web applications since 2000• Daily review of JavaSite Portal at www.javasight.com• Subscriber to the weekly Java Posse Podcast• J2EE Books (anything by WROX or Rod Johnson)• Sun SDN (JavaOne Presentations from 2008)• Burton Group that backs my vision/suggestions:

• The Rebel Frameworks: J2EE Open Source Alternatives and Supplements• Web Application Frameworks: Evolving to Support the Interactive Web• Rich Internet Applications: Creating an Effective Web Experience• VantagePoint 2006-2007: Back to Basics• VantagePoint 2007-2008: Think Big; Take Small Steps <= really good read!

> Questions?