2. 2 17.02.2006
Deployment framework architecture
• The MTJ provides an Deployment framework that supports the existing SDK
Emulators and phones runtimes.
• 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.
MTJ IDE environmentMTJ IDE environment
ZZ
SDK / Emulator context
(Nokia, Win32 OS)
SDK / Emulator context
(Nokia, Win32 OS)U
E
I
U
E
I
Interfac
e
Interfac
e
S40S40
S60S60
Deployment
Framework
Deployment
Framework
Extensio
n
point
Interfac
e
SDK / Emulator (Vendor X)SDK / Emulator (Vendor X)U
E
I
U
E
I
O
B
E
X
O
B
E
X
O
T
A
O
T
A
U
E
I
U
E
I
RealReal
DevicDevic
ee
RealReal
DevicDevic
ee
XX
XX
XX
LEGEND:
• MTJ Editor context
• Deployment context
• Existing SDK /
Emulators
• Existing emulator
integrations
• Deployment
Interface
• Eclipse Plug-in
Extension point
• New, open
deployment plug-in,
OBEX based
• Mobile Devices
• Existing native
deployment
3. 3 17.02.2006
Mobile Vendor specific view
EclipseEclipseEclipseEclipse
SDK / Emulator (Vendor X)SDK / Emulator (Vendor X)
Vendor XVendor X
SDK EmulatorSDK Emulator
Plug-inPlug-in
Vendor XVendor X
SDK EmulatorSDK Emulator
Plug-inPlug-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
MTJMTJ
Plug-inPlug-in
MTJMTJ
Plug-inPlug-in
Device
Platform
Device
Platform
Extensio
n
point
SDK / Emulator (Vendor Y)SDK / Emulator (Vendor Y)
Vendor YVendor Y
SDK EmulatorSDK Emulator
Plug-inPlug-in
Vendor YVendor Y
SDK EmulatorSDK Emulator
Plug-inPlug-in
SDK / Emulator (Vendor Z)SDK / Emulator (Vendor Z)
Vendor ZVendor Z
SDK EmulatorSDK Emulator
Plug-inPlug-in
Vendor ZVendor Z
SDK EmulatorSDK Emulator
Plug-inPlug-in
Vendor XVendor X
Real DeviceReal Device
Plug-inPlug-in
Vendor XVendor X
Real DeviceReal Device
Plug-inPlug-in
Real DeviceReal Device (Vendor X)Real DeviceReal Device (Vendor X)
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-in
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-in
Real DeviceReal Device (Vendor Y)Real DeviceReal Device (Vendor Y)
4. 4 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.
5. 5 17.02.2006
Deployment framework plug-ins
Vendor Z Real Device Plug-inVendor Z Real Device Plug-inVendor Z Real Device Plug-inVendor Z Real Device Plug-in
SDK / Emulator (Vendor X)SDK / Emulator (Vendor X)
Vendor X SDK EmulatorVendor X SDK Emulator
Plug-inPlug-in
Vendor X SDK EmulatorVendor X SDK Emulator
Plug-inPlug-in
U
E
I
U
E
I
U
E
I
U
E
I
SDK / Emulator (Vendor Y)SDK / Emulator (Vendor Y)
Vendor Y SDK EmulatorVendor Y SDK Emulator
Plug-inPlug-in
Vendor Y SDK EmulatorVendor Y SDK Emulator
Plug-inPlug-in
X
E
I
X
E
I
X
E
I
X
E
I
Vendor Y Real Device Plug-inVendor Y Real Device Plug-inVendor Y Real Device Plug-inVendor Y Real Device Plug-in
Real DeviceReal Device (Vendor Y)Real DeviceReal Device (Vendor Y)
Vendor X Real DeviceVendor X Real Device
Plug-inPlug-in
Vendor X Real DeviceVendor X Real Device
Plug-inPlug-in
Real DeviceReal Device (Vendor X)Real DeviceReal Device (Vendor X)
O
B
E
X
O
B
E
X
FTPFTP
HTTP/FTP
service
HTTP/FTP
service
O
T
A
O
T
A
FTPFTP
SDK / Emulator (Vendor Z)SDK / Emulator (Vendor Z)
Vendor Z SDK EmulatorVendor Z SDK Emulator
Plug-inPlug-in
Vendor Z SDK EmulatorVendor Z SDK Emulator
Plug-inPlug-in
XX XX
HTTP/FTP
service
HTTP/FTP
service
O
T
A
O
T
A
Real DeviceReal Device (Vendor Z)Real DeviceReal Device (Vendor Z)
• Device Platform plug-ins have
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
MTJ plug-in wrapper Mobile vendors devices
6. 6 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
7. 7 17.02.2006
Deployment framework Model
Device PlatformDevice Platform
DeviceDevice
Emulator
Device
Emulator
Device
Real
Device
Real
Device
Runtime Platform
Definition
Runtime Platform
Definition
1..n
1
• 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.
i/f
8. 8 17.02.2006
Deployment framework Model (cont.)
DeploymentDeployment
MIDlet
Deploymen
t
MIDlet
Deploymen
t
CDC
Deployment
CDC
Deployment
• 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.
MEGlet
Deployment
MEGlet
Deployment
Resource
Deployment
Resource
Deployment
i/f
10. 10 17.02.2006
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.
11. 11 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
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.
Control Obfuscations
Control Obfuscations change the control flow of the program.
Data Obfuscations
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.
13. 13 17.02.2006
Visual IDE environment in general
Eclipse PlatformEclipse PlatformEclipse PlatformEclipse Platform
IDEIDEIDEIDE Screen EngineScreen EngineScreen EngineScreen Engine
Launcher /Launcher /
EmulatorEmulator
Launcher /Launcher /
EmulatorEmulator
GraphicaGraphica
l Editorl Editor
GraphicaGraphica
l Editorl Editor
Code /Code /
ResourcResourc
e Editore Editor
Code /Code /
ResourcResourc
e Editore Editor
PropertyProperty
SheetSheet
PropertyProperty
SheetSheet
OutlineOutline
ViewerViewer
OutlineOutline
ViewerViewer
Source code, resource files, etc.Source code, resource files, etc.Source code, resource files, etc.Source code, resource files, etc.
Source files
UI,
WYSIWYG
Trace,
profile,
debug
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.
14. 14 17.02.2006
VE Internal Component Architecture
Eclipse PlatformEclipse PlatformEclipse PlatformEclipse Platform
Eclipse Visual Editor FrameworkEclipse Visual Editor FrameworkEclipse Visual Editor FrameworkEclipse Visual Editor Framework
Java
core
Java
core
JFC
Editor
JFC
Editor
SWT
Editor
SWT
Editor
Java
Element
Model
(JEM)
Java
Element
Model
(JEM)Common
Diagram
Model
(CDE)
Common
Diagram
Model
(CDE)
GEFGEF EMFEMF
Local orLocal or
RemoteRemote
Java VMJava VM
Local orLocal or
RemoteRemote
Java VMJava VM
Target
VM
Target
VM
BeanInfo
VM
BeanInfo
VM
Java source files
Java Code
Generation
Adapter
Java Code
Generation
Adapter
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
15. 15 17.02.2006
Mobile Visual Editor GUI Components
MTJ Screen EngineMTJ Screen EngineMTJ Screen EngineMTJ Screen Engine
Screen Rendering ContextScreen Rendering ContextScreen Rendering ContextScreen Rendering Context
Eclipse MTJ IDEEclipse MTJ IDEEclipse MTJ IDEEclipse MTJ IDE
Eclipse VEEclipse VEEclipse VEEclipse VE
Eclipse PlatformEclipse PlatformEclipse PlatformEclipse Platform
MTJ Mobile ExtensionMTJ Mobile ExtensionMTJ Mobile ExtensionMTJ Mobile Extension
GEFGEF
EditorPartEditorPart
GEFGEF
EditorPartEditorPart UI VE ModelUI VE ModelUI VE ModelUI VE Model
BeanProxBeanProx
y Adaptery Adapter
BeanProxBeanProx
y Adaptery Adapter
Custom
Mobileproxy
components
Custom
Mobileproxy
components
Mobile
eSWTproxy
components
Mobile
eSWTproxy
components
Mobile
CLDCproxy
components
Mobile
CLDCproxy
components
ScreenRenderingAPIScreenRenderingAPIScreenRenderingAPIScreenRenderingAPI
BeanInfoBeanInfo
AdapterAdapter
BeanInfoBeanInfo
AdapterAdapter
CLDC ScreenCLDC Screen
RenderingRendering
EngineEngine
CLDC ScreenCLDC Screen
RenderingRendering
EngineEngine
eSWT ScreeneSWT Screen
RenderingRendering
EngineEngine
eSWT ScreeneSWT Screen
RenderingRendering
EngineEngine
Custom Screen
Rendering
Engine
Custom Screen
Rendering
Engine
Common Screen Rendering EngineCommon Screen Rendering EngineCommon Screen Rendering EngineCommon Screen Rendering Engine
ScreenRenderingAPIScreenRenderingAPIScreenRenderingAPIScreenRenderingAPI
MTJCDLCUIMTJCDLCUI
componentscomponents
MTJCDLCUIMTJCDLCUI
componentscomponents
MTJeSWTUIMTJeSWTUI
componentscomponents
MTJeSWTUIMTJeSWTUI
componentscomponents
CustomUI
components
CustomUI
components
LegendLegend
Existing inExisting in
EclipseEclipse
MTJMTJ
projectproject
scopescope
CDLCUIbaseCDLCUIbase
Look&FeelLook&Feel
CDLCUIbaseCDLCUIbase
Look&FeelLook&Feel
CustomUI
Look&Feel
CustomUI
Look&Feel
MTJeSWTUIMTJeSWTUI
componentscomponents
MTJeSWTUIMTJeSWTUI
componentscomponents
CustomUI
Look&Feel
CustomUI
Look&Feel
CustomUI
Look&Feel
CustomUI
Look&Feel
CustomUI
Components
CustomUI
Components
CustomUI
Components
CustomUI
Components