SynapseIndia Mobile Apps Deployment framework architecture
Deployment framework architecture MTJ IDE environment
U U E E II
U U E E II
SDK / Emulator (Vendor X)
• MTJ Editor context X X
Deployment Deployment Framework Framework
Interfac e
Extensio n point
• Deployment context
X X
ZZ O O TT A A O O B B E E X X
LEGEND:
U U E E II
SDK SDK // Emulator Emulator context context (Nokia, (Nokia, Win32 Win32 OS) OS)
X
Real Real Devic Devic ee
Interfac Interfac ee
S40 S40 S60 S60
• Existing SDK / Emulators • Existing emulator integrations • Deployment Interface • Eclipse Plug-in Extension point • New, open deployment plug-in, OBEX based • Mobile Devices
• The MTJ provides an Deployment framework that supports the existing SDK • Existing native Emulators and phones runtimes. deployment • The framework publishes an deployment interface, that capsulate (hides) the actual runtime environments and protocols. • The framework separates the different deployment low-level services to own components (like UEI, OTA, etc.) with supporting existing proprietary emulator and phone access (marked as X and Z). • It also provides a new development branch to the OBEX based deployment, which can be used e.g. towards to MAC OS environment. Thus this requires that the needed protocols / protocol wrappers are available. 2 17.02.2006
Mobile Vendor specific view Vendor Vendor X X
Eclipse Eclipse
SDK SDK Emulator Emulator
SDK SDK // Emulator Emulator (Vendor X)
Plug-in Plug-in Vendor Vendor Y Y Device Device
Platform Platform
MTJ MTJ
SDK SDK Emulator Emulator
SDK SDK // Emulator (Vendor Y) Y)
Plug-in Plug-in Vendor Vendor Z Z SDK SDK Emulator Emulator
Plug-in Plug-in Extensio n point
SDK SDK // Emulator Emulator (Vendor (Vendor Z) Z)
Plug-in Plug-in Vendor Vendor X X Real Real Device Device
Real Real Device Device (Vendor (Vendor X) X)
Plug-in Plug-in Vendor Vendor Y Y Real Real Device Device
Real Real Device Device (Vendor Y)
Plug-in Plug-in
• The MTJ provides an Deployment framework that supports the existing SDK Emulators and phones runtimes • The framework publishes a Device Platform -interface, that capsulate (hides) the actual runtime environments and protocols. • The framework separates the different vendors products to own plug-ins 3
17.02.2006
Mobile vendor specific view details
Different mobile vendors can use their existing emulators and add the deployment (emulator) specific plug-in to the MTJ environment. The emulator specific plug-in may be even in binary format, if it needs to protect some internal implementation or specification. The emulator specific plug-in uses the MTJ generic API and also contributes to the MTJ’s deployment frameworks extension point. The deployment framework could provide an template from such plug-in that helps to other vendors to tie up their specific solutions. The deployment framework supports also that the emulator is discovered by manual entering the location. There could be a dynamic plug-in, that ‘ties’ the discovered emulator to the deployment framework. The deployment framework can provide also other extension points, that enables others to extend e.g. the emulator specific properties, UI’s etc. The deployment framework provides a plug-in template for existing emulators, which can dynamically be attached to wrap the specific emulator.
4
17.02.2006
Deployment framework plug-ins MTJ plug-in wrapper Vendor U Vendor X X SDK SDK Emulator Emulator U E E II
Plug-in Plug-in
Vendor Vendor Y Y SDK SDK Emulator Emulator XX Plug-in Plug-in Vendor Vendor Z Z SDK SDK Emulator Emulator Plug-in Plug-in Vendor Vendor X X Real Real Device Device Plug-in Plug-in
Mobile vendors devices • Device Platform plug-ins have U U E E SDK / Emulator (Vendor X) II
E E II
X X E E SDK SDK / Emulator Emulator (Vendor (Vendor Y) Y) I
X X
X X SDK SDK // Emulator Emulator (Vendor (Vendor Z) Z)
O O B B E E X X
Real Real Device Device (Vendor (Vendor X) X)
Vendor Vendor Y Real Device Device Plug-in Plug-in Y Real HTTP/FTP HTTP/FTP service service
O TT A A
Real Real Device Device (Vendor (Vendor Y) Y)
Vendor Vendor Z Z Real Real Device Device Plug-in Plug-in Real Real Device Device (Vendor (Vendor Z) Z)
FTP FTP
several different implementations • Device Platform plug-ins are responsible of the communication protocols between MTJ environment and Emulators / Real Devices • The plug-ins also store all config data. F. ex. Emulator plug-in stores the Emulator SDK root directory itself • UEI = Unified Emulator Interface • XEI = Extended Emulator Interface (Nokia proprietary) • X = Proprietary Emulator Interface
HTTP/FTP service
FTP FTP O O TT A A
5
17.02.2006
Deployment framework design Integrating to the existing SDK Emulators: Deployment framework Enables adding a new SDK Emulator by manually entering the location or by local hard drive browsing (typical case for existing emulators). Hides the used targeted runtime environments behind a few deployment interfaces Simplifies the deployment process against the device / emulator variation Generalizes the deployment management by encapsulating the SDK Emulator dependencies to a separate plug-ins, thus enabling it to publish it’s own specific functionality. Integrating to new SDK Emulators, which do have a specific plug-in: Deployment framework If the SDK Emulator has own deployment plug-in and the plug-in does follow the Deployment framework extension rules, it’s automatically instantiated Deployment framework instantiates Deployment component and calls its methods via deployment interface Deployment component plug-in Implements the Deployment frameworks interface Contributes to the Deployment frameworks extension point May also extend some SDK Emulator specific services to the Deployment framework
6
17.02.2006
Deployment framework Model Device Platform
i/f
1..n
Device
Emulator
Real
Device
Device
1
Runtime Platform Definition
• Target environments are seen as Device Platforms by the MTJ environment. Device Platform contains one or more Device instances. • MTJ plug-in doesn’t know if the Devices are device emulators or real devices because the plug-in extension point API hides all implementation details. • Device instance defines the Runtime Platform that it’s capable to run on. 7
17.02.2006
Deployment framework Model (cont.) i/f
Deployment
MIDlet
CDC
MEGlet
Resource
Deploymen Deployment Deployment Deployment t
• Deployment interface is generic representation of a entity that is send from MTJ environment to Device Platform instances. • Realization of a deployment can be MIDlet, CDC, MEGlet or Resource deployment (or something else). So the realization is created from source application definitions and f. ex. MIDlet project deployment consists of Application JAR and JAD files. • Target Device Platform knows, what’s inside the received deployment and how to handle it. 8
17.02.2006
Signing and Obfuscation Signing and Obfuscating internal architecture 9
Signing architecture
There is a SecurityManager, that manages the keys and certificates in the IDE environment globally. Each project can configure the signing options and parameters against the actual needs. The Signing Provider implements the actual signing and it can be used through e.g. the Ant scripts.
10
17.02.2006
Obfuscating architecture
It is a well known fact that Java Class (bytecode) files can be easily reverse-engineered because Java compiler leaves a lot of such information into bytecode that helps the reverse-engineering task. Code obfuscation is one protection tool for Java code to prevent reverse engineering. Code obfuscation makes programs more difficult to understand, so that it is more resistant to reverse engineering. Obfuscation techniques fall into three groups: Layout Obfuscations
Control Obfuscations
Control Obfuscations change the control flow of the program.
Data Obfuscations
Layout Obfuscations modify the layout structure of the program by two basic methods: renaming identifiers and removing debugging information. Almost all Java obfuscators contain this technique.
Data Obfuscations break the data structures used in the program and encrypt literal.
The MTJ enables to use existing Obfuscator -products through an wrapper plug-in (Obfuscation Provider), that can be further tailored. 11
17.02.2006
Backup slides - GUI Mobile Visual Editor architecture
12
Visual IDE environment in general IDE IDE
Screen Screen Engine Engine
Graphica Graphica ll Editor Editor
Code Code // Resourc Resourc ee Editor Editor
Property Property Sheet Sheet
Outline Outline Viewer Viewer
UI, WYSIWYG
Launcher Launcher // Emulator Emulator
Source Source code, code, resource resource files, files, etc. etc.
Trace, profile, debug
Source files
The RAD IDE environment is having some clear elements, like the core IDE graphical and code editor, property sheet and outline viewer for IDE environment objects. Also the graphical editor uses the screen engine for creating the actual graphical UI presentation (like WYSIWYG). Also the mobile emulators / SDKs’ are providing the ability to launch the applications.
Eclipse Eclipse Platform Platform
13
17.02.2006
VE Internal Component Architecture Eclipse Eclipse Visual Visual Editor Editor Framework Framework JFC Editor
SWT Editor
Target VM
Java core
Java Element Model (JEM)
Common Diagram Model (CDE)
GEF
Local Local or or Remote Remote Java Java VM VM
BeanInfo VM
Java Code Generation Adapter
EMF
The Eclipse Visual Editor framework provides a flexible GUI framework, which can be quite easily extended to e.g. mobile domain. The current desktop version supports JFC and SWT GUI editors with full set of UI widgets. The actual screen rendering is done in separate rendering engine. Internally VE uses EMF in CDE and models the Java source in JEM.
Java source files
Eclipse Eclipse Platform Platform
14
17.02.2006
Mobile Visual Editor GUI Components Eclipse Eclipse MTJ MTJ IDE IDE
Custom UI Look & Feel
eSWT eSWT Screen Screen Rendering Rendering Engine Engine
Custom UI components
Custom UI Look & Feel
Custom UI Components MTJ eSWT eSWT UI UI MTJ components components MTJ eSWT eSWT UI UI MTJ components components
Custom UI Look & Feel
Eclipse Eclipse Platform Platform
CLDC CLDC Screen Screen Rendering Rendering Engine Engine
Screen Rendering Rendering API API Screen
Eclipse Eclipse VE VE
Screen Rendering Rendering API API Screen
BeanProx BeanProx yy Adapter Adapter
Custom UI Components
UI UI VE VE Model Model
CDLC UI UI base base CDLC Look & & Feel Feel Look
MTJ CDLC CDLC UI UI MTJ components components
Custom Mobile proxy components
Mobile eSWT proxy components
Mobile CLDC proxy components GEF GEF EditorPart EditorPart
MTJ project scope
MTJ MTJ Screen Screen Engine Engine
MTJ MTJ Mobile Mobile Extension Extension
Legend
Existing in Eclipse
Custom Screen Rendering Engine
Common Common Screen Screen Rendering Rendering Engine Engine
BeanInfo BeanInfo Adapter Adapter
Screen Screen Rendering Rendering Context Context 15
17.02.2006
Backup slides – Milestone Plan
16
MTJ Milestone Plan ď Ž
tbd
17
17.02.2006