1 Mobile Tools for Java Platform The goal of the Mobile Tools for Java project is to The goal of the Mobile Tools for Java project is to extend existing Eclipse frameworks to support mobile extend existing Eclipse frameworks to support mobile device Java application development. device Java application development. MTJ will enable developers to develop, debug and deploy MTJ will enable developers to develop, debug and deploy mobile Java applications to emulators and real devices. mobile Java applications to emulators and real devices. Scope of the doc: Focus on 1 st release (+ potential future features)
66
Embed
1 Mobile Tools for Java Platform The goal of the Mobile Tools for Java project is to extend existing Eclipse frameworks to support mobile device Java application.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Mobile Tools forJava Platform
The goal of the Mobile Tools for Java project is to extend existing Eclipse The goal of the Mobile Tools for Java project is to extend existing Eclipse frameworks to support mobile device Java application development. frameworks to support mobile device Java application development. MTJ will enable developers to develop, debug and deploy mobile Java MTJ will enable developers to develop, debug and deploy mobile Java applications to emulators and real devices.applications to emulators and real devices.
Scope of the doc:Focus on 1st release (+ potential future features)
217.02.2006
Contents Eclipse High-Level Architect
ure Java Runtime Environments MTJ Ecosystem MTJ high-level layers MTJ Development by Milest
one Device fragmentation Pre-processing Automated & manual testing Build management
Device fragmentation Different characteristics of devices must be taken into account
Physical device characteristics, e.g. display resolution,-size and buttons, processing power and memory
Quirks in the OS, API and Java virtual machine implementations Variation comes also from APIs supported by each device
Flavours of Symbian (S60, S80, S90) and other mobile OS versions J2ME profiles and configurations CLDC 1.0/1.1 and MIDP 1.0/2.0 Optional APIs for Bluetooth, 3D, Multimedia, Web Services, etc. Proprietary APIs from device manufacturers and operators
In addition, there are other operator and market requirements Localisation, branding, billing, etc.
This diagram represents the major players in the wireless industry. Application- and Content providers have partnered with Network operators to design and develop Java solutions for consumers. Content aggregators license content from it’s creators and format it to be used with specific devices and networks.Content distributors create the revenue by providing the distribution channels.Network operators (carriers) and Infrastructure providers control the wireless network and own the customer information. Device manufactures drive the technical innovation through the new hardware.The application developers and content aggregators needs most tools against the device fragmentation.
LegendLegend
Information exchangeInformation exchange
Cash flow exchangeCash flow exchange
1017.02.2006
Device fragmentation, pre-processing Definition: Pre-processing changes the source code before it is compiled.
It allows conditional compilation and inclusion of one source file into another and is helpful when trying to maintain a single source for several devices, each having its own bugs, add-on APIs, etc. and it enables device optimization.
The Eclipse JDT could add support for pre-processing, alternative could be e.g. J2ME Polish, which can be integrated to Eclipse (licensing must be checked) or re-implementing the similar functionality.
One key feature is the device description database, that helps to create tasks or actions against similar devices. The device description database enables that developers can identify and group devices with an keyword, that can be used e.g. in pre-processing.
DeviceDevice
Emulator
Device
Emulator
Device
Real
Device
Real
Device1..n
1
Device Platform Device Platformi/f
Fragmentation Definition
Fragmentation Definition
1
Runtime Platform Definition
Runtime Platform Definition
Can be seen as one definition
1117.02.2006
Automated & manual testing Tdb.
1217.02.2006
Build management The build environment is heavily relying on Eclipse, but there are plans to
support also Ant. One planned extension to Ant is the Antenna –project, which provides a set of Ant tasks suitable for developing wireless Java applications targeted at the J2ME and Mobile Information Device Profile (MIDP).
The build management enables that the build process can be configured to suit for the active project needs. E.g. what build providers are used as default and how the building process works.
The target device management provides data about selectable devices and J2ME platforms (SDK Emulators) and enables that the Runtime Platform Definition. The selected default target Device Platform is then activated to the projects use.
The base wizards implement the corresponding Use-Case requirements.The base wizards implement the corresponding Use-Case requirements. One optional scenario may be that Symbian has created an template One optional scenario may be that Symbian has created an template
mechanism (that is in use currently in C++ side in Eclipse), that the MTJ mechanism (that is in use currently in C++ side in Eclipse), that the MTJ could convert to be used in the Java side. could convert to be used in the Java side.
1417.02.2006
Runtime Launch
1517.02.2006
Debugging
1617.02.2006
Code Editor The MTJ code editor is based on the Eclipse
JDT base functionalities.
JDT
The JDT (Java Development Tools) subsystem consists of integrated tools for developing, testing, and debugging Java (J2SE) applications. The JDT project is managed as part of the Eclipse Platform top level project.
The JDT Core component defines the non-UI infrastructure for compiling and analyzing Java code. The JDT UI component provides the user interface elements (wizards, views, editors) and infrastructure for editing, refactoring, browsing, and searching Java code. The JDT Debug component handles everything related to running and debugging Java programs.
JDT<<subsystem>>
Core Debug UI
1717.02.2006
Deployment and Runtime management The MTJ provides an Deployment and DevicePlatform frameworks 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
Plug-inPlug-inReal Device Real Device (Vendor X)Real Device Real Device (Vendor X)
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-in
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-inReal Device Real Device (Vendor Y)Real Device Real Device (Vendor Y)
1817.02.2006
Device Management The device management in this scope focuses to enable detecting,
visually showing, identifying and visually managing the available mobile devices.
There should be ability to group devices with similar configuration based on some criteria. This grouping could be used e.g. in the packaging / building / localization / deployment / branding processes.
The device model holds each device and
DeviceDevice
Emulator
Device
Emulator
Device
Real
Device
Real
Device
1..n
1
Device Platform Device Platformi/f
Fragmentation Definition
Fragmentation Definition1
Runtime Platform Definition
Runtime Platform Definition
Can be seen as one definition
1917.02.2006
Signing and Obfuscation Signing
MIDP 2.0 (JSR-118) includes enhanced mobile code and application security through a well-defined security manager and provisioning process. During the provisioning the MIDP applications are signed with an certificate, which ensures their security and makes them trustworthy.
Trusted MIDlet suites can be granted access to API's without explicit user authorization, and have wider access to device API's.
Obfuscation By using an Obfuscator tool, the source code can be made more difficult to
reverse-engineer and also there can be some code optimization benefits achieved at the same time.
Obfuscation can be done e.g. through an ANT task that activates an Obfuscator tool and it performs the obfuscation against the parameterized source code location.
2017.02.2006
Localization Localization (I18N/L18N) is a major issue in the wireless space, where a
single app deployed to a single carrier may need to support many languages and character sets.
Key requirements: The Localization architecture should be capable of supporting all languages. It should remove the need for application developers to decide which encoding
the application will support. The Localization architecture should be aware the UI differences in devices so
that the developers won’t have to (e.g. the width and length of a device screen).
The localization should enable that the service providers can extend the language supports during the deployment phase.
Allow local users to select their preferred languages as provided by the application. There should be visible UI simulation that enable to verify the UI immediately when the users switch the locale.
The localization should support at leas two approaches: By creating a resource file (.properties) and adding there the selected source
files localizable keys. By enabling such optimization to bind the localization directly to the application.
2117.02.2006
Application Flow The Application Flow creates kind a action diagram, where the visible and
invisible actions are drawn on a graphical editor. The AF-editor enables that developer can design e.g. mobile application UI flow.
2217.02.2006
GUI Editor The Eclipse Visual Editor provides an extensible GUI framework, that can
be used in the mobile IDE UI area. Why VE: The VE’s framework provides a lot of extension points to
different kind of GUI editors Benefits: The GUI editors would have common base framework and the
there is a need to implement only the delta of the different mobile GUI editors
Now existing: The base GUI framework. What is needed: The mobile screen engines with UI widgets to LCDUI
area. VE doesn’t provide any multimedia services yet.
23
Backup slides
More detail presentation about the top technical items
24
Backup slides – Device Fragmentation
2517.02.2006
Device Platform Device Platform
DeviceDevice
Emulator
Device
Emulator
Device
Real
Device
Real
Device
1..n
• 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 Platform Services make it possible to query available Device Platforms.• Based on Device Platform name it’s possible to get Devices or the Platform.
2717.02.2006
DeviceDeviceDeviceDeviceDP
DC
ProjectProject ProjectProjectDP
DC
Device fragmentation
APIsAPIs
DeviceDeviceDeviceDPDP
APIs
DCDC
DeviceDeviceDeviceDPDP
DCDC
APIsAPIs
DeviceDeviceDeviceDPDP
APIsAPIs
DCDC
DeviceDeviceDeviceDPDP
DCDC
APIsAPIs
DeviceDeviceManagementManagement
• Project can select smaller set of APIs that the targeted devices are supporting. By selecting smallest possible set of needed APIs, the number of suitable devices is bigger.• Although the Project has the default device, the Projects definitions can match to several devices.
• Device Services make it possible to query Devices that are possible targets to the Project’s application. Project uses it’s own definitions as parameters in the service call.
29
Backup slides - Wizards
Wizards internal architecture
3017.02.2006
Wizards architecture [template management]…
31
Backup slides - Runtime Launch
Runtime Launch internal architecture
3217.02.2006
Runtime Launch architecture The Runtime Launch architecture uses the
Device Platform to enable selection of available Devices.
Device Profile Device ProfileDP Service API Service APIAPI Device Configuration Device ConfigurationDC
Runtime Platform
JVM Impl. JVM Impl.
1
• Device instance defines the Runtime Platform Definitions that it’s capable to run on.• Runtime Platform consists of Device Configuration, Device Profile, Service APIs and JVM Implementation.• Device Configuration defines used configuration (i.e. CDC or CLDC) and it’s version.• Device Profile defines used profile (i.e. MIDP) and it’s version.• Service APIs are either APIs that are defined in Device Profile or API of optional Services that the Device’s OS is supporting.• Runtime Platform Definition is always based on defined Mobile SDK JVM Implementation.
3417.02.2006
Service API Service APIAPI
Runtime Platform (cont.)
JVM Impl JVM Impl
• Service API –object contains the standardize service name and it’s version, i.e. WMA 1.1, MMAPI 1.1 or Location API 1.0 .• Service API has also reference to JAR Library that implements the API.• Also Mobile SDK JVM Impl –object contains the JVM name and it’s version and reference to JAR Library that implements the JVM specification that is defined by the Runtime Platform’s Device Configuration Specification.
• Device Services make it possible to query Runtime Platforms of a Device.
36
Backup slides - Debugging
Debugging internal architecture
3717.02.2006
Debugging architecture …
38
Backup slides - Device Management
Device Management internal architecture
3917.02.2006
Device Management architecture
Each Mobile project may select the targeted devices, that the project is supporting. Mobile Project contains one or more Device Platforms, thus there is only one default mobile SDK active.
The Device Platform and Device instances definition is stored inside the EMF based Device model and the with extendable persistence component the definition is shared with in several projects.
The Runtime Platform Definition data is also stored and shared among projects and the Fragmentation Definition can enhance the task to find compatible device groups.
Also the pre-processing can use this to provide and define the device grouping inside the JDT.
Mobile Mobile ProjectProject Mobile Mobile ProjectProject
1..n
DeviceDevice
Emulator
Device
Emulator
Device
Real
Device
Real
Device
1..n
1
Device Platform Device Platformi/f
Fragmentation Definition
Fragmentation Definition1
Runtime Platform Definition
Runtime Platform Definition
Extended device definition
4017.02.2006
• 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.• The Device Management uses Device Platform and Device Description information.• The deeper interaction and dependency is described in the following two slides
• Device Platform Services make it possible to query available Device Platforms.• Based on Device Platform name it’s possible to get Devices or the Platform.
DeviceConfiguration Specificationnameconfiguration nameconfiguration version
Project
1..*1..*
11
Runtime Platform Definitionname
11
11
11
1..* +apis1..*
0..*
1
0..*
+javaRuntime1
Devicename : Stringdescription : String
1..*1..*
+runtimes
1..*
1..*
1..*
1..*
47
Code Editor
Code Editor internal architecture
4817.02.2006
Code Editor architecture tbd
4917.02.2006
DeviceDeviceDP
APIs
DC
ProjectProject ProjectProject
DP
APIs
DC
Project
1
Library Jar Library Jar
1..n
Library Jar Library Jar
1
1
• Mobile Project development is targeted to devices that have certain Device Configuration and Device Profile. Therefore MTJ’s Project has also Device Configuration and Device Profile defined.• It’s possible to select a set of Service APIs to the Project. Based on the selected set of APIs corresponding Jar –libraries are added to the project.• Project always has default device that matches to the Projects definitions. That default device also gives the needed Jar –libraries to the Project.
LEGEND:
DP
DC
DP
APIs
DC •Project’s defined Device Configuration
•Project’s defined Device Profile
•Service APIs that are selected to the Project
•Device’s Device Configuration
•Device’s Device Profile
•Service APIs that are supported by the Device
APIs
Mobile SDK Emulator
50
Backup slides - Deployment
Deployment Framework internal architecture
5117.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.
• 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
Plug-inPlug-inReal Device Real Device (Vendor X)Real Device Real Device (Vendor X)
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-in
Vendor YVendor Y
Real DeviceReal Device
Plug-inPlug-inReal Device Real Device (Vendor Y)Real Device Real Device (Vendor Y)
5317.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.
5417.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
UEI
UEI
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
XEI
XEI
Vendor Y Real Device Plug-inVendor Y Real Device Plug-inVendor Y Real Device Plug-inVendor Y Real Device Plug-in
Real Device Real Device (Vendor Y)Real Device Real Device (Vendor Y)
Vendor X Real DeviceVendor X Real Device
Plug-inPlug-in
Vendor X Real DeviceVendor X Real Device
Plug-inPlug-inReal Device Real Device (Vendor X)Real Device Real Device (Vendor X)
O B E X
O B E X
FTPFTP
HT
TP
/FT
P
se
rvic
eH
TT
P/F
TP
s
erv
ice O
TA
OTA
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-inXX XX
HT
TP
/FT
P
serviceH
TT
P/F
TP
service O
TA
OTA
Real Device Real Device (Vendor Z)Real Device Real 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
Deployment framework designIntegrating 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
5617.02.2006
Deployment framework Model Device Platform Device 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
5717.02.2006
Deployment framework Model (cont.)
DeploymentDeployment
MIDlet
Deployment
MIDlet
Deployment
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
58
Signing and Obfuscation
Signing and Obfuscating internal architecture
5917.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.
6017.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.
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.
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.