Migrating traditional Java EE applications to mobile Serge Pagop Sr. Channel MW Solution Architect, Red Hat [email protected] Burr Sutter Product Management Director, Red Hat [email protected] 2014-04-16 Agenda • Migration motivations • Traditional Java (2) EE technologies usage • Migration approaches • Migration of layers • Modernize to Java EE 6 technologies – Plan for mobile • REST fits well with the mobile strategy • Which Mobile application model to choose? • Mobile Gateway architecture – Mobile + JBoss EAP Runtime • Demo and Q&A
2 Motivations
•Innovation, integration, cost reduction, modernization •Market Demand, Time to market, Go-To Market strategy •Complexity, performance, stability, security •Vendor lock-in, lack of functionalities, standards compliance •Multi-tenancy, Ready for the Cloud •Penetrate New Market Segment •Increase developer productivity
3 Motivations – MOBILE VS. DESKTOP - Projection
Source: visual.ly 4 Traditional Java (2) EE technologies usage Current situation
5 Traditional Java (2) EE technologies usage Current situation
• Persistence layer • Standards are JDBC, CMP, BMP, JPA, JDO • Non-Standards are Hibernate, iBatis, ... • Business layer • Standards are Enterprise JavaBeans 2.x / 3.0 • Non-Standards are Spring Framework, JBoss Seam, Google Guice, ... • Communication layer • Standards are JAX-WS, JAX-RPC, RMI • Non-Standards are legacy Web Service Frameworks
6 Traditional Java (2) EE technologies usage – Cont. Current situation
• Presentation layer • Standards are JSP+Servlets, JSF 1.2/2.0 • Non-Standards are: Struts, Tapestry, GWT, Wicket, ...
7 Migration approaches
• Complete migration • Layer-oriented migration • Module-oriented migration
First Action Item: Migration Assessment
8 Migration assessment
• Looks at all facets of applications and infrastructure • Helps to understand the risks, savings, and anticipated costs • Enables stakeholders to scope the engineering time and effort required to migrate applications
● Free open source tool for Java EE migration assessment ● Analyzes code and generates report with known issues ● Provides an estimate of effort required to make changes 10,000 Foot View Report ● Offers suggestions for replacement code http://www.jboss.org/migration ● Highlights vendor specific implementations
9 Complete migration – Big Bang style
• Unique new development • Migration of the entire application in a new system • High Complexity because of new development
10 Layer-oriented migration
• Based on layer oriented approach: each layer needs a specific handling • Complexity is defined through • Multiple migration with associated test and acceptance processes • Migration of a layer affects overlying layers
11 Module-oriented migration
• Defined as Migration On Demand • Migration of technical modules will be taken in consideration • Complexity is defined through • A mix of technologies of new and old ones • Delimitation of technical modules
12 Persistence layer migration
Current-Situation Future-Situation SQL/JDBC Data Access JPA 2.0 Challenges ● SQL Queries ● Domain model introduction with relationship ● DAO / Repository Pattern ● Detached entity objects handling ● Providing Value Objects ● Adaption of entity objects with unique identity EJB 2.x Data Access JPA 2.0 Challenges ● CMP 2.x - Entity classes and XML descriptors ● Domain model introduction with relationship ● BMP 2.x - CRUD callback methods ● Detached entity objects handling ● Adaption of entity objects with unique identity ● Data Access Objects introduction Hibernate Data Access JPA 2.0 Challenges ● O/R Mapping via XML ● No challenges (Hibernate is JPA provider in JBoss EAP) ● Using Hibernate APIs ● May be some challenges with proprietary Hibernate features JDO Data Access JPA 2.0 Challenges ● Domain model approach similar to JPA (based on ● JDO and JPA have similarities annotation or configuration)
13 Business layer migration
Current-Situation Future-Situation EJB 2.x components EJB 3.1 Challenges ● Stateless and Stateful Session Beans ● No challenges ● EJB 2.x Pattern and communication ● Eliminate J2EE Pattern ● Eliminate proprietary infrastructure code EJB 2.x components CDI 1.0 Challenges ● Stateless and Stateful Session Beans ● No challenges ● EJB 2.x Pattern and communication ● Eliminate J2EE Pattern ● Eliminate proprietary infrastructure code Spring – lightweight DI Framework CDI 1.0 Challenges ● Based on XML or annotation ● No challenges ● Strong integration support (JDBC template, Tx template, ● May be some challenges with Spring Add-On JMS template, Mail template) ● Different semantics in the field of scopes ● Supports other annotations (@Resource, @Inject)
14 Communication layer migration
Future-Situation – Introduction of a new communication interface JAX-RS - Challenges ●New fresh start ●Provide distinct URI for each resource you wish to expose ●Expose REST services by injecting EJBs into JAX-RS annotated POJOs ●Use nouns in the URIs ●Use links in your responses ●Make service stateless ●Define what actions should be able to perform on each resource ●Map the actions to an appropriate HTTP verbs (@DELETE, @GET, @POST, @PUT, @HEAD) ●Use JSON via JAXB as interchange data format
15 Presentation layer migration
Standard like JSP with Servlet or JSF 2.0/2.1 and non-standard web frameworks like Struts, Mobile-First strategy Tapestry, GWT, … do not have a creating pages, UI components migration path in a mobile that address the constraints of strategy mobile, then progressively enhances the experience to other screen spaces, features, and more Client side needs a clean / fresh start
16 Modernize to Java EE 6 technologies Future situation to enable mobile capabilities
17 REST fits well with mobile strategy
• REST is flexible and adequate for Client-Server communication • Communication happens over HTTP using REST styles • JSON over HTTP/HTTPs should be used for data-interchange • Stateless, Cacheable, Lightweight, Scalable • Using HTTP verbs (DELETE, GET, POST, PUT) • Using Web technologies and security standards • Fully supported in JBoss EAP (Java EE 6 compliant environment) by a JAX-RS implementation (RESTEasy)
18 REST fits well with mobile strategy Securing endpoints - Possibilities
• JBoss EAP 6.2 – Basic Auth • RealmUsersRoles with *-users.properties and *-roles.properties files • Database login module - users and roles from a database system • LDAP login module – users and roles from a LDAP server • JBoss EAP 6.3 – PicketLink • Identity Management (IDM)
19 Which Mobile application model to choose?
Mobile Web Native Shell Native App
Native Code HTML5 HTML5
Apple apple apple
Android android