SlideShare a Scribd company logo
©SkywideSoft Technology Limited
1
Framework Adoption for Java Enterprise
Application Development
• Clarence Ho
• Independent Consultant, Author, Java EE Architect
• http://www.skywidesoft.com
• clarence@skywidesoft.com
• Presentation can be downloaded from:
• http://www.skywidesoft.com/index.php/seminar
©SkywideSoft Technology Limited
2
• Enterprise Java Framework Overview
• What is an Enterprise Java Framework?
• Overview of popular Enterprise Java
Frameworks
• Spring vs Standard JEE Comparison
Outline - Part I
©SkywideSoft Technology Limited
3
• Enterprise Java Framework Adoption – Case Study
• Re-develop a legacy application in Java
• High level application architecture overview
• Main frameworks, libraries and tools adopted
and the decision process
• Main challenges and lesson learnt
Outline - Part II
©SkywideSoft Technology Limited
4
• Discussions and Chat
• Framework/Libraries/Tools selection – how to
choose the right one for your project?
• Other thoughts (e.g. Cloud computing, BYOD,
Big Data, HTML5, etc.)
• Q&A
Outline - Part III
©SkywideSoft Technology Limited
5
Enterprise Java Frameworks
©SkywideSoft Technology Limited
6
What is a software framework?
Source: Wikipedia
• A software framework is an abstraction in which
software providing generic functionality can be
selectively changed by user code, thus providing
application specific software.
• A software framework is a universal, reusable
software platform used to develop applications,
products and solutions.
• Software Frameworks include support programs,
compilers, code libraries, an application
programming interface (API) and tool sets that
bring together all the different components to
enable development of a project or solution.
©SkywideSoft Technology Limited
7
What is a software framework? (cont.)
Source: Wikipedia
1. Inversion of control - In a framework, unlike in libraries or normal
user applications, the overall program's flow of control is not
dictated by the caller, but by the framework
2. Default behavior - A framework has a default behavior. This
default behavior must actually be some useful behavior and not a
series of no-ops.
3. Extensibility - A framework can be extended by the user usually by
selective overriding or specialized by user code providing specific
functionality.
4. Non-modifiable framework code - The framework code, in
general, is not allowed to be modified. Users can extend the
framework, but not modify its code.
Frameworks contain key distinguishing features that separate them from
normal libraries:
©SkywideSoft Technology Limited
8
What is an application framework?
Source: Wikipedia
An application framework consists of a software framework used by
software developers to implement the standard structure of an application
for a specific development environment (such as a standalone program or
a web application).
Application frameworks became popular with the rise of multi-tiers
enterprise applications since these tended to promote a standard
structure for applications. Programmers find it much simpler to program
when using a standard framework, since this defines the underlying code
structure of the application in advance. Developers usually use object-
oriented programming techniques to implement frameworks such that the
unique parts of an application can simply inherit from pre-existing classes
in the framework.
©SkywideSoft Technology Limited
9
What is an enterprise application framework?
An application framework designed for the implementation of enterprise
class applications.
In addition to an application framework, an enterprise application
framework should supports the development of a layered architecture,
and provide services that can address the requirements on performance,
scalability, and availability.
Layers within an enterprise application:
- Persistence Layer
- Services (Business Logic) Layer
- Presentation Layer
- Integration Layer (Web Services, Message-based)
Services:
- Security
- Transaction (local and global transactions)
- Caching
- Batch processing
- Task scheduling and asynchronous task execution
- Management and monitoring
- Testing
- and many more …
©SkywideSoft Technology Limited
10
What is an enterprise Java framework?
An enterprise application framework designed for the
Java language.
Components:
- Dependency Injection
- AOP (Aspect Oriented Programming)
- Persistence
- Transactions
- Presentation Framework
- Web Services
- Messaging
- Testing
©SkywideSoft Technology Limited
11
Enterprise Java Frameworks
©SkywideSoft Technology Limited
12
JEE 6
Source: Pro Spring 3
• A collection of JCP (Java Community Process) standards
• Implemented by all JEE compliant application servers
Oracle Glassfish 3.1
Oracle WebLogic 12c
IBM WebSphere 8.5
JBoss Application
Server 7.1
Apache TomEE 1.5.2
©SkywideSoft Technology Limited
13
JEE 6 – Features/API Overview
Source: JavaOne Presentation by IBM
©SkywideSoft Technology Limited
14
JBoss Seam Framework
• Designed around JEE standards
• Mainly supported by JBoss Application Server
• Provide a micro-container for use with other AS or Tomcat
• Tightly integrates with other JBoss frameworks and libraries
©SkywideSoft Technology Limited
15
Jboss Seam Framework – Features/API Overview
Source: JavaOne Presentation by IBM
Hibernate
RichFaces
©SkywideSoft Technology Limited
16
Google Guice
• Reference implementation of JSR330 (Dependency
Injection for Java)
• Focus on DI only
• Not a full blown enterprise Java framework
©SkywideSoft Technology Limited
17
Spring Framework
• The most popular enterprise Java framework
• Support all major application servers and web
containers
• Support major JEE standards
• Integrates with other popular opensource frameworks
and libraries
©SkywideSoft Technology Limited
18
Spring Framework – Features/API Overview
Source: JavaOne Presentation by IBM
©SkywideSoft Technology Limited
19
JEE vs Spring – Features/API Overview
Source: JavaOne Presentation by IBM
* Similar patterns for validation, remoting, security, scheduling, XML binding, JMX, JCA, JavaMail, caching
* Spring also support EJB 3.1, but not CDI
©SkywideSoft Technology Limited
20
Enterprise Java Frameworks
©SkywideSoft Technology Limited
21
Spring Framework – Main Features
Feature Description Sub-proj.
IOC Container Configuration of application components and lifecycle management of
Java objects, done mainly via Dependency Injection
AOP Enables implementation of cross-cutting routines
Data Access Working with relational database management systems on the Java
platform using JDBC and object-relational mapping tools and with
NoSQL databases
Spring Data
projects
Transaction
Management
Unifies several transaction management APIs (JDBC, JPA, JTA, etc.) and
coordinates transactions for Java objects.
Model-view-
controller
An HTTP- and servlet-based framework providing hooks for extension
and customization for web applications and RESTful Web Services.
Authentication
& Authorization
Configurable security processes that support a range of standards,
protocols, tools and practices via the Spring Security sub-project
Spring
Security
Remote
Management
Configurative exposure and management of Java objects for local or
remote configuration via JMX
Messaging Configurative registration of message listener objects for transparent
message-consumption from message queues via JMS, improvement
of message sending over standard JMS APIs
Testing support classes for writing unit tests and integration tests
Source: Wikipedia
©SkywideSoft Technology Limited
22
Spring Framework – Latest Features (3.X)
Feature Description Version
Java-based Configuration Use Java classes to configure Spring’s ApplicationContext
(Spring JavaConfig was merged into the core Spring
Framework since 3.0).
3.0
Embedded JDBC
DataSource
Embedded database support (by using the <jdbc:embedded-
database id="dataSource" type="H2"> tag)
3.1
Validation with Type
Conversion and Formatting
Spring 3 introduce a new type conversion and formatting
system, and support of JSR303 Bean Validation API.
3.0
Persistence with Spring
Data JPA
Spring Data JPA’s Repository abstraction greatly simplifies the
development of persistence layer with JPA.
3.0
Spring MVC Improved support of RESTful-WS. 3.1
Spring Expression Language A powerful expression language that supports querying and
manipulating an object graph at run time.
3.0
Profiles A profile instructs Spring to configure only the
ApplicationContext that was defined when the specified
profile was active
3.1
Cache Abstraction A caching abstraction layer that allows consistent use of
various caching solutions with minimal impact on the code.
3.1
TaskScheduler Abstraction Provides a simple way to schedule tasks and supports most
typical requirements.
3.0
©SkywideSoft Technology Limited
23
Other Useful Spring Projects
Project Description Version
Spring Security Configurable security processes that support a range of standards,
protocols, tools and practices
3.1.2
Spring Data An umbrella project includes many modules that simplifies the
development of persistence layer with various data sources (e.g. JPA,
NoSQL, JDBC, Hadoop, etc.)
1.X
Spring Batch Provides a standard template and framework for implementing and
executing various kinds of batch jobs in an enterprise environment.
2.1.8
Spring Integration Provides an excellent integration environment for enterprise
applications.
2.1.3
Spring WebFlow Building on top of Spring MVC’s foundation, Spring Web Flow was
designed to provide advanced support for organizing the flows inside
a web application.
2.3.1
Spring Mobile An extension to Spring MVC that aims to simplify the development of
mobile web applications.
1.0.0
Spring Roo A rapid application development solution for Spring-based enterprise
applications
1.2.2
SpringSource Tool
Suite
An IDE tools with Eclipse and Spring IDE bundled, together witn
numerous tools for developing Spring applications.
3.0.0
©SkywideSoft Technology Limited
24
Enterprise Java Frameworks
©SkywideSoft Technology Limited
25
SpringBlog
Main Features
 Allow users to view and post blog entries
 Allow users to post comments on blog entries
 Allow users to upload attachment for blog entries
 Support AOP for filtering bad words
 Support multiple languages (English, Chinese)
 Support multiple databases (H2, MySQL)
 Support multiple data access frameworks (Hibernate, MyBatis)
 Provides RESTful-WS for retrieving blog entries
 Supports batch upload of blog entries from XML files
 Presentation layer
 Built with Spring MVC, JSPX and jQuery JavaScript library
©SkywideSoft Technology Limited
26
SpringBlog
Application Layered Architecture
©SkywideSoft Technology Limited
27
Enterprise Java Frameworks Adoption
©SkywideSoft Technology Limited
28
Case Study – Project Overview
Source: Wikipedia
• Application Description
• A Transfer Agency System within an Asset
Management Company
• Handle customer interactions and transaction
processing on subscription/redemption of
various funds, as well as business actions (e.g.
dividend, split, merge, etc.)
• Integrating with numerous peripheral systems
(IVRS, document workflow, online e-commerce
web site, financial system, fund A/C system,
reporting platform, etc.)
• Running on AS400, written in RPG
• Character based UI, terminal emulation
©SkywideSoft Technology Limited
29
Case Study – Project Overview
Source: Wikipedia
• Mission
• Technology migration
• OS: Open Platform (Unix/Linux)
• Database: RDBMS
• Application Server: JEE Compliance
• Language: Object-Oriented Programming
• Integration: Messaging, Web Services
• Benefits
• Openness, scalable, ease of maintenance
• Align with corporate direction
©SkywideSoft Technology Limited
30
Case Study – System Architecture
Source: Wikipedia
Backend (Vendor Package)
Core processing (A/C, Txn, Allocation)
Middle end (In-house Developed)
Data interface, Integration, EOD, Extra processing
Oracle
MQ
Swift
Interface
WebSphere
Oracle Solaris
IVRS
Document
Workflow
Online
E-commerce
Browser
Client
RESTful-WS
Scheduling
Reporting
(BO)
ETL
Peripheral
Systems
Data
Warehouse
©SkywideSoft Technology Limited
31
Case Study – Framework Adoption
Source: Wikipedia
• Data Access Layer
• Hibernate (corporate standard)
• Business Logic Layer
• Spring Framework (corporate standard)
• Presentation Layer (interim solution)
• Spring Webflow
• Java Server Faces (JBoss Richfaces)
• Batch Processing (new and propose)
• Spring Batch
• Web-service Based Integration (interim solution)
• RESTful-WS (Jersey)
• Security (corporate standard)
• Spring Security (integration with Siteminder)
©SkywideSoft Technology Limited
32
Case Study – Tools and Library Adoption
Source: Wikipedia
• Reporting (Business Objects) Integration
• Use BO’s Java SDK
• Developed a simple RAO (Report Access Object) layer
• PDF Processing
• iText
• Job Scheduling
• Integration with Autosys via RESTful-WS
• Other Libraries
• Apache Commons
©SkywideSoft Technology Limited
33
Case Study – Challenges
Source: Wikipedia
• Introducing a middle-end system
• Added a layer of complexity
• Integration with numerous peripheral systems (with
different formats and integration method)
• Large number of batch jobs (~30 EOD jobs, many intra-
day jobs)
• Maintenance and support
• Complex support/deploy/troubleshooting procedure
• Front end
• No corporate standard at that moment
• Lack of skills
©SkywideSoft Technology Limited
34
Case Study – Lesson Learnt
Source: Wikipedia
Problem Cause If I have a 2nd Chance
Batch processing Hibernate is not batch
processing friendly
Use JDBC to read all data,
Hibernate for update only
Reporting platform
integration
Tightly coupled to BO (if
BO was stopped, middle-
end not able to start)
Use message queue for
loosely coupled integration
Presentation layer Performance problem
Difficult to maintain
Lack of skills
Use Spring MVC, JSP, jQuery
Testing Numerous performance
problem
Perform load testing asap
(even too late in SIT)
©SkywideSoft Technology Limited
35
The Power of Enterprise Java Frameworks
©SkywideSoft Technology Limited
36
Other Thoughts
Use JEE or Open Source Frameworks?
 Considerations
 Maturity
 Reliable and proven
 Developer skill (easy to learn and hire developers)
 Resources (forums, communities, tutorials, sample
codes, etc.)
 Spring and Hibernate are the most popular choices
among enterprise
©SkywideSoft Technology Limited
37
Other Thoughts
Emerging Technologies
 Cloud Computing, Big Data (NoSQL), Mobile (BYOD),
HTML5, …
 So far, no JEE standards for those emerging technologies
yet!!!
 JEE 7 (Sep 2013) will include some HTML5 technologies
(e.g. WebSockets)
 NoSQL
 Hibernate OGM (Object-Grid mapping)
 Spring data projects (commons, MongoDB, Apache
Hadoop, Redis, Neo4j)
©SkywideSoft Technology Limited
38
Other Thoughts
Experience sharing
 No matter what framework you use (or use JEE), still
need to make a lot of decisions
 It doesn’t matter whether a framework/library is JEE
standard or not. Most important is that it’s the one most
suitable for your environment
 A good ALM (application life-cycle management)
platform and workflow is another key to success
 Source code control and issue tracking
 Code review
 Continuous build, code style check, automated
test, …
 Learn, learn, learn. Research, research, research
©SkywideSoft Technology Limited
39
Enterprise Java Frameworks Adoption

More Related Content

What's hot (20)

PDF
10 Things You Should Know About MDD
Johan den Haan
 
DOC
Resume (1)
Shezimol S
 
DOC
Saurabh_Asthana_Resume
Saurabh Asthana
 
PPT
Udvikling af apps til mobile enheder med IBM Worklight, Christina Møller, IBM
IBM Danmark
 
PPTX
Introduction to CodeFactory
LifeCycle Delivery
 
PDF
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
PixelCrayons
 
PDF
Profile_Ahmad2
Mohammad Owais Ahmad
 
PDF
Ibm innovate ci for system z
Rosalind Radcliffe
 
DOC
Resume joseph gregory java
Joseph Gregory
 
PPTX
Software development training for technical recruiters
Obi Mba Ogbanufe
 
DOC
Anupam chaturvedi resume latest
Anupam chaturvedi
 
PDF
Bluemix DevOps Meetup
Kyle Brown
 
DOCX
Amit Gupta_CV
Amit Gupta
 
DOC
Jesy George_CV_LATEST
Jesy George
 
PPTX
Sakeesoft
Ravi Thakur
 
PDF
Introducing Java 8
PT.JUG
 
PPTX
Web 2.0 Development with IBM DB2
Vladimir Bacvanski, PhD
 
PDF
Automate and customise application services and deployment
Christina Hoh
 
PDF
manu_resume
Manu VS
 
PDF
Oracle ADF Architecture TV - Deployment - Deployment Options
Chris Muir
 
10 Things You Should Know About MDD
Johan den Haan
 
Resume (1)
Shezimol S
 
Saurabh_Asthana_Resume
Saurabh Asthana
 
Udvikling af apps til mobile enheder med IBM Worklight, Christina Møller, IBM
IBM Danmark
 
Introduction to CodeFactory
LifeCycle Delivery
 
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
PixelCrayons
 
Profile_Ahmad2
Mohammad Owais Ahmad
 
Ibm innovate ci for system z
Rosalind Radcliffe
 
Resume joseph gregory java
Joseph Gregory
 
Software development training for technical recruiters
Obi Mba Ogbanufe
 
Anupam chaturvedi resume latest
Anupam chaturvedi
 
Bluemix DevOps Meetup
Kyle Brown
 
Amit Gupta_CV
Amit Gupta
 
Jesy George_CV_LATEST
Jesy George
 
Sakeesoft
Ravi Thakur
 
Introducing Java 8
PT.JUG
 
Web 2.0 Development with IBM DB2
Vladimir Bacvanski, PhD
 
Automate and customise application services and deployment
Christina Hoh
 
manu_resume
Manu VS
 
Oracle ADF Architecture TV - Deployment - Deployment Options
Chris Muir
 

Similar to Framework adoption for java enterprise application development (20)

DOC
Spring Book – Chapter 1 – Introduction
Tomcy John
 
PPTX
Introduction Java Web Framework and Web Server.
suranisaunak
 
PDF
The Power of Enterprise Java Frameworks
Clarence Ho
 
PDF
Comparison of spring and other frameworks.!
Sibu Stephen
 
PDF
Spring presentecion isil
Willy Aguirre
 
PDF
Spring presentecion isil
Willy Aguirre
 
PPTX
Introduction to j2 ee frameworks
Mukesh Kumar
 
PDF
Spring Framework Tutorial | VirtualNuggets
Virtual Nuggets
 
DOC
The Complete Spring Tutorial
cribes
 
PDF
Hire A Java Developer Having Experience In The Top 10 Java Frameworks (1).pdf
RahimMakhani2
 
PPTX
java web framework standard.20180412
FirmansyahIrma1
 
ODP
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Codemotion
 
PDF
Enterprise java unit-1_chapter-1
sandeep54552
 
PPTX
Spring Framework Rohit
Rohit Prabhakar
 
PDF
JEE 8, A Big Overview
Jasmine Conseil
 
PPT
Spring Framework
Preetam Palwe
 
ODT
Spring framework
Shivi Kashyap
 
PPT
Java Persistence API (JPA) - A Brief Overview
Craig Dickson
 
PPTX
Spring framework Introduction
Anuj Singh Rajput
 
PPT
Spring ppt
Mumbai Academisc
 
Spring Book – Chapter 1 – Introduction
Tomcy John
 
Introduction Java Web Framework and Web Server.
suranisaunak
 
The Power of Enterprise Java Frameworks
Clarence Ho
 
Comparison of spring and other frameworks.!
Sibu Stephen
 
Spring presentecion isil
Willy Aguirre
 
Spring presentecion isil
Willy Aguirre
 
Introduction to j2 ee frameworks
Mukesh Kumar
 
Spring Framework Tutorial | VirtualNuggets
Virtual Nuggets
 
The Complete Spring Tutorial
cribes
 
Hire A Java Developer Having Experience In The Top 10 Java Frameworks (1).pdf
RahimMakhani2
 
java web framework standard.20180412
FirmansyahIrma1
 
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Codemotion
 
Enterprise java unit-1_chapter-1
sandeep54552
 
Spring Framework Rohit
Rohit Prabhakar
 
JEE 8, A Big Overview
Jasmine Conseil
 
Spring Framework
Preetam Palwe
 
Spring framework
Shivi Kashyap
 
Java Persistence API (JPA) - A Brief Overview
Craig Dickson
 
Spring framework Introduction
Anuj Singh Rajput
 
Spring ppt
Mumbai Academisc
 
Ad

Recently uploaded (20)

PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Ad

Framework adoption for java enterprise application development

  • 1. ©SkywideSoft Technology Limited 1 Framework Adoption for Java Enterprise Application Development • Clarence Ho • Independent Consultant, Author, Java EE Architect • http://www.skywidesoft.com • [email protected] • Presentation can be downloaded from: • http://www.skywidesoft.com/index.php/seminar
  • 2. ©SkywideSoft Technology Limited 2 • Enterprise Java Framework Overview • What is an Enterprise Java Framework? • Overview of popular Enterprise Java Frameworks • Spring vs Standard JEE Comparison Outline - Part I
  • 3. ©SkywideSoft Technology Limited 3 • Enterprise Java Framework Adoption – Case Study • Re-develop a legacy application in Java • High level application architecture overview • Main frameworks, libraries and tools adopted and the decision process • Main challenges and lesson learnt Outline - Part II
  • 4. ©SkywideSoft Technology Limited 4 • Discussions and Chat • Framework/Libraries/Tools selection – how to choose the right one for your project? • Other thoughts (e.g. Cloud computing, BYOD, Big Data, HTML5, etc.) • Q&A Outline - Part III
  • 6. ©SkywideSoft Technology Limited 6 What is a software framework? Source: Wikipedia • A software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software. • A software framework is a universal, reusable software platform used to develop applications, products and solutions. • Software Frameworks include support programs, compilers, code libraries, an application programming interface (API) and tool sets that bring together all the different components to enable development of a project or solution.
  • 7. ©SkywideSoft Technology Limited 7 What is a software framework? (cont.) Source: Wikipedia 1. Inversion of control - In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the caller, but by the framework 2. Default behavior - A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops. 3. Extensibility - A framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality. 4. Non-modifiable framework code - The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code. Frameworks contain key distinguishing features that separate them from normal libraries:
  • 8. ©SkywideSoft Technology Limited 8 What is an application framework? Source: Wikipedia An application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment (such as a standalone program or a web application). Application frameworks became popular with the rise of multi-tiers enterprise applications since these tended to promote a standard structure for applications. Programmers find it much simpler to program when using a standard framework, since this defines the underlying code structure of the application in advance. Developers usually use object- oriented programming techniques to implement frameworks such that the unique parts of an application can simply inherit from pre-existing classes in the framework.
  • 9. ©SkywideSoft Technology Limited 9 What is an enterprise application framework? An application framework designed for the implementation of enterprise class applications. In addition to an application framework, an enterprise application framework should supports the development of a layered architecture, and provide services that can address the requirements on performance, scalability, and availability. Layers within an enterprise application: - Persistence Layer - Services (Business Logic) Layer - Presentation Layer - Integration Layer (Web Services, Message-based) Services: - Security - Transaction (local and global transactions) - Caching - Batch processing - Task scheduling and asynchronous task execution - Management and monitoring - Testing - and many more …
  • 10. ©SkywideSoft Technology Limited 10 What is an enterprise Java framework? An enterprise application framework designed for the Java language. Components: - Dependency Injection - AOP (Aspect Oriented Programming) - Persistence - Transactions - Presentation Framework - Web Services - Messaging - Testing
  • 12. ©SkywideSoft Technology Limited 12 JEE 6 Source: Pro Spring 3 • A collection of JCP (Java Community Process) standards • Implemented by all JEE compliant application servers Oracle Glassfish 3.1 Oracle WebLogic 12c IBM WebSphere 8.5 JBoss Application Server 7.1 Apache TomEE 1.5.2
  • 13. ©SkywideSoft Technology Limited 13 JEE 6 – Features/API Overview Source: JavaOne Presentation by IBM
  • 14. ©SkywideSoft Technology Limited 14 JBoss Seam Framework • Designed around JEE standards • Mainly supported by JBoss Application Server • Provide a micro-container for use with other AS or Tomcat • Tightly integrates with other JBoss frameworks and libraries
  • 15. ©SkywideSoft Technology Limited 15 Jboss Seam Framework – Features/API Overview Source: JavaOne Presentation by IBM Hibernate RichFaces
  • 16. ©SkywideSoft Technology Limited 16 Google Guice • Reference implementation of JSR330 (Dependency Injection for Java) • Focus on DI only • Not a full blown enterprise Java framework
  • 17. ©SkywideSoft Technology Limited 17 Spring Framework • The most popular enterprise Java framework • Support all major application servers and web containers • Support major JEE standards • Integrates with other popular opensource frameworks and libraries
  • 18. ©SkywideSoft Technology Limited 18 Spring Framework – Features/API Overview Source: JavaOne Presentation by IBM
  • 19. ©SkywideSoft Technology Limited 19 JEE vs Spring – Features/API Overview Source: JavaOne Presentation by IBM * Similar patterns for validation, remoting, security, scheduling, XML binding, JMX, JCA, JavaMail, caching * Spring also support EJB 3.1, but not CDI
  • 21. ©SkywideSoft Technology Limited 21 Spring Framework – Main Features Feature Description Sub-proj. IOC Container Configuration of application components and lifecycle management of Java objects, done mainly via Dependency Injection AOP Enables implementation of cross-cutting routines Data Access Working with relational database management systems on the Java platform using JDBC and object-relational mapping tools and with NoSQL databases Spring Data projects Transaction Management Unifies several transaction management APIs (JDBC, JPA, JTA, etc.) and coordinates transactions for Java objects. Model-view- controller An HTTP- and servlet-based framework providing hooks for extension and customization for web applications and RESTful Web Services. Authentication & Authorization Configurable security processes that support a range of standards, protocols, tools and practices via the Spring Security sub-project Spring Security Remote Management Configurative exposure and management of Java objects for local or remote configuration via JMX Messaging Configurative registration of message listener objects for transparent message-consumption from message queues via JMS, improvement of message sending over standard JMS APIs Testing support classes for writing unit tests and integration tests Source: Wikipedia
  • 22. ©SkywideSoft Technology Limited 22 Spring Framework – Latest Features (3.X) Feature Description Version Java-based Configuration Use Java classes to configure Spring’s ApplicationContext (Spring JavaConfig was merged into the core Spring Framework since 3.0). 3.0 Embedded JDBC DataSource Embedded database support (by using the <jdbc:embedded- database id="dataSource" type="H2"> tag) 3.1 Validation with Type Conversion and Formatting Spring 3 introduce a new type conversion and formatting system, and support of JSR303 Bean Validation API. 3.0 Persistence with Spring Data JPA Spring Data JPA’s Repository abstraction greatly simplifies the development of persistence layer with JPA. 3.0 Spring MVC Improved support of RESTful-WS. 3.1 Spring Expression Language A powerful expression language that supports querying and manipulating an object graph at run time. 3.0 Profiles A profile instructs Spring to configure only the ApplicationContext that was defined when the specified profile was active 3.1 Cache Abstraction A caching abstraction layer that allows consistent use of various caching solutions with minimal impact on the code. 3.1 TaskScheduler Abstraction Provides a simple way to schedule tasks and supports most typical requirements. 3.0
  • 23. ©SkywideSoft Technology Limited 23 Other Useful Spring Projects Project Description Version Spring Security Configurable security processes that support a range of standards, protocols, tools and practices 3.1.2 Spring Data An umbrella project includes many modules that simplifies the development of persistence layer with various data sources (e.g. JPA, NoSQL, JDBC, Hadoop, etc.) 1.X Spring Batch Provides a standard template and framework for implementing and executing various kinds of batch jobs in an enterprise environment. 2.1.8 Spring Integration Provides an excellent integration environment for enterprise applications. 2.1.3 Spring WebFlow Building on top of Spring MVC’s foundation, Spring Web Flow was designed to provide advanced support for organizing the flows inside a web application. 2.3.1 Spring Mobile An extension to Spring MVC that aims to simplify the development of mobile web applications. 1.0.0 Spring Roo A rapid application development solution for Spring-based enterprise applications 1.2.2 SpringSource Tool Suite An IDE tools with Eclipse and Spring IDE bundled, together witn numerous tools for developing Spring applications. 3.0.0
  • 25. ©SkywideSoft Technology Limited 25 SpringBlog Main Features  Allow users to view and post blog entries  Allow users to post comments on blog entries  Allow users to upload attachment for blog entries  Support AOP for filtering bad words  Support multiple languages (English, Chinese)  Support multiple databases (H2, MySQL)  Support multiple data access frameworks (Hibernate, MyBatis)  Provides RESTful-WS for retrieving blog entries  Supports batch upload of blog entries from XML files  Presentation layer  Built with Spring MVC, JSPX and jQuery JavaScript library
  • 28. ©SkywideSoft Technology Limited 28 Case Study – Project Overview Source: Wikipedia • Application Description • A Transfer Agency System within an Asset Management Company • Handle customer interactions and transaction processing on subscription/redemption of various funds, as well as business actions (e.g. dividend, split, merge, etc.) • Integrating with numerous peripheral systems (IVRS, document workflow, online e-commerce web site, financial system, fund A/C system, reporting platform, etc.) • Running on AS400, written in RPG • Character based UI, terminal emulation
  • 29. ©SkywideSoft Technology Limited 29 Case Study – Project Overview Source: Wikipedia • Mission • Technology migration • OS: Open Platform (Unix/Linux) • Database: RDBMS • Application Server: JEE Compliance • Language: Object-Oriented Programming • Integration: Messaging, Web Services • Benefits • Openness, scalable, ease of maintenance • Align with corporate direction
  • 30. ©SkywideSoft Technology Limited 30 Case Study – System Architecture Source: Wikipedia Backend (Vendor Package) Core processing (A/C, Txn, Allocation) Middle end (In-house Developed) Data interface, Integration, EOD, Extra processing Oracle MQ Swift Interface WebSphere Oracle Solaris IVRS Document Workflow Online E-commerce Browser Client RESTful-WS Scheduling Reporting (BO) ETL Peripheral Systems Data Warehouse
  • 31. ©SkywideSoft Technology Limited 31 Case Study – Framework Adoption Source: Wikipedia • Data Access Layer • Hibernate (corporate standard) • Business Logic Layer • Spring Framework (corporate standard) • Presentation Layer (interim solution) • Spring Webflow • Java Server Faces (JBoss Richfaces) • Batch Processing (new and propose) • Spring Batch • Web-service Based Integration (interim solution) • RESTful-WS (Jersey) • Security (corporate standard) • Spring Security (integration with Siteminder)
  • 32. ©SkywideSoft Technology Limited 32 Case Study – Tools and Library Adoption Source: Wikipedia • Reporting (Business Objects) Integration • Use BO’s Java SDK • Developed a simple RAO (Report Access Object) layer • PDF Processing • iText • Job Scheduling • Integration with Autosys via RESTful-WS • Other Libraries • Apache Commons
  • 33. ©SkywideSoft Technology Limited 33 Case Study – Challenges Source: Wikipedia • Introducing a middle-end system • Added a layer of complexity • Integration with numerous peripheral systems (with different formats and integration method) • Large number of batch jobs (~30 EOD jobs, many intra- day jobs) • Maintenance and support • Complex support/deploy/troubleshooting procedure • Front end • No corporate standard at that moment • Lack of skills
  • 34. ©SkywideSoft Technology Limited 34 Case Study – Lesson Learnt Source: Wikipedia Problem Cause If I have a 2nd Chance Batch processing Hibernate is not batch processing friendly Use JDBC to read all data, Hibernate for update only Reporting platform integration Tightly coupled to BO (if BO was stopped, middle- end not able to start) Use message queue for loosely coupled integration Presentation layer Performance problem Difficult to maintain Lack of skills Use Spring MVC, JSP, jQuery Testing Numerous performance problem Perform load testing asap (even too late in SIT)
  • 35. ©SkywideSoft Technology Limited 35 The Power of Enterprise Java Frameworks
  • 36. ©SkywideSoft Technology Limited 36 Other Thoughts Use JEE or Open Source Frameworks?  Considerations  Maturity  Reliable and proven  Developer skill (easy to learn and hire developers)  Resources (forums, communities, tutorials, sample codes, etc.)  Spring and Hibernate are the most popular choices among enterprise
  • 37. ©SkywideSoft Technology Limited 37 Other Thoughts Emerging Technologies  Cloud Computing, Big Data (NoSQL), Mobile (BYOD), HTML5, …  So far, no JEE standards for those emerging technologies yet!!!  JEE 7 (Sep 2013) will include some HTML5 technologies (e.g. WebSockets)  NoSQL  Hibernate OGM (Object-Grid mapping)  Spring data projects (commons, MongoDB, Apache Hadoop, Redis, Neo4j)
  • 38. ©SkywideSoft Technology Limited 38 Other Thoughts Experience sharing  No matter what framework you use (or use JEE), still need to make a lot of decisions  It doesn’t matter whether a framework/library is JEE standard or not. Most important is that it’s the one most suitable for your environment  A good ALM (application life-cycle management) platform and workflow is another key to success  Source code control and issue tracking  Code review  Continuous build, code style check, automated test, …  Learn, learn, learn. Research, research, research