SlideShare a Scribd company logo
Multi-Configuration Support for MTJ (Mobile Tools for Java)  Feng (Marvin) Wang Gang (Allen) Ma Gustavo de Paula
Agenda DSDP MTJ Overview Device Fragmentation Problem Possible Solutions Java preprocessing Multi-Configuration Concepts & Use cases Code assist Demo
DSDP MTJ Overview Glue between the Eclipse IDE and the JavaME SDKs (emulators) MTJ does NOT provide the SDKs Each vendor provides their own SDKs MTJ provide the basic developer workflow Import JavaME SDK (each SDK has several devices associated to it) Create MIDlet Suite Project Build Project Create Deployment Package Eclipse Platform JDT MTJ SDK Extens. Vendor A JavaME SDK Vendor B JavaME SDK Vendor C JavaME SDK UEI Vendor Proprietary Protocol UEI
Device Fragmentation Problem 1 Billion JavaME Devices Hardware Software Carrier Display size, color Number of keys Accelerometer Different APIs APIs with optional  Components Proprietary APIs File name  Requirements Localization  MIDlet Requirements Hard to do Professional JavaME Development Fragmentation
Possible Solutions Standardize everything Almost  impossible  to happen Everyone wants to be different Applications want to use device specific features Live with the problem and adapt Old and good  preprocessing Not available in standard Java There are some external preprocessing solutions Device  Database There are databases on the internet (proprietary and GPL) MTJ can  import  databases
MTJ Approach:  Live with the Problem and Adapt Antenna  preprocessor MTJ Java Code Preprocessor Multi-Configuration Preprocessor Code Assist Each project can have  multiple runtimes Each runtime defines preprocessor tags (Symbols) Symbols  are used on the code assist
Antenna Preprocessor Antenna is a open source project created on 2002 ( http:// antenna.sourceforge.net / ) Defines several JavaME build related tools Build, Obfuscate, Package, Sign, Deploy and Preprocess Preprocessor defines  Preprocessor language Input    java code with preprocessor symbols Output    preprocessed java code  //#if ScreenWidth>100 && ScreenHeight>120 do something; //#else do something else; //#endif
Multi-Configuration   Concepts: Devices The DeviceImporter knows how to “ talk ” to one SDK Returns all Devices that one SDK have Each device has a  DeviceClasspath  associated to it ... and a list of  APIs Devices are persisted on the  DeviceRegistry
A  Symbol  is a pair <name; value> Symbols are organized in  SymbolSets Each SymbolSet has a name and a  list of Symbols i.e.: Symbols: <screen.width;240>, <screen.height;320> Symbol set: <MOTV3; <screen.width;240>, <screen.height;320>> SymbolDeviceFactory  can import devices  database  and same them on the workspace Multi-Configuration   Concepts: Symbols
A MTJ project has a list of MTJRuntimes Each project has a current  active Runtime Each Runtime has A Device A project symbol set (created based on the device properties) A list of workspace SymbolSets Multi-Configuration   Concepts: Runtimes
Multi-Configuration   Use Cases: Manage Configurations Create Project Wizard Add, Remove, Edit Select one to be the active
Multi-Configuration   Use Cases: New/Edit Configuration Select SDK/Device associated to this configuration SymbolSet associated to chosen Device Workspace level SymbolSets (imported from device database)
Multi-Configuration   Use Cases: Switch Configuration Switch active configuration or manage current configurations
Multi-Configuration   Use Cases: Build Project All configurations are build on the same time Export antenna build files to be called externally One build for each configuration JAR/JAD Code is preprocessed Build files and symbol files for each configuration
Content Assist   Preprocess Help user to input preprocess code in Java Editor Preprocess code format Directives Symbols  Operators Values All preprocess code starts is “//#” //#ifdef  mmedia //#ifdef nokia //#if  s60_ver==&quot;1.0&quot; import com.nokia.mmapi.v1 //#elif s60_ver==&quot;2.0&quot; import com.nokia.mmapi.v2 //#else import com.nokia.mmapi.def //#endif //#else import javax.microedition.mmapi //#endif //#endif
All available  directives  are presented Brief  description  of each directive Content Assist   Directives
All symbols provided by all  configurations registered  on the project are presented Each symbol has Name, Value, if active, provider information Content Assist   Symbols
Propose preprocess template for the user. Content Assist   Templates After apply:
Manage current templates Create new templates Edit current templates Content Assist   Templates
Demo & Thanks! DSDP MTJ Web site:  www.eclipse.org/dsdp/mtj DSDP MTJ Wiki:  http:// wiki.eclipse.org /DSDP/MTJ Newsgroup:  news:// news.eclipse.org/eclipse.dsdp.mtj Developer List:  http://dev.eclipse.org/mailman/listinfo/dsdp-mtj-dev
Wish list… Preprocess Resources Preprocess full java files Preprocess JAD file Sign based on configuration Improve error handling

More Related Content

PPT
SynapseIndia mobile apps deployment framework architecture
PDF
Android NDK: Entrando no Mundo Nativo
PPT
Mobile Java
PPTX
Intel XDK in Brief
PPTX
03 Beginning Android Application Development
PPTX
iOS Release Management
PDF
Android chapter02-setup2-emulator
PPT
Eclipse Plug-in Develompent Tips And Tricks
SynapseIndia mobile apps deployment framework architecture
Android NDK: Entrando no Mundo Nativo
Mobile Java
Intel XDK in Brief
03 Beginning Android Application Development
iOS Release Management
Android chapter02-setup2-emulator
Eclipse Plug-in Develompent Tips And Tricks

What's hot (20)

PPTX
Dload mobile development
PPT
Mobile development
PPTX
Android Native Apps Development
DOCX
Bhavin_Resume
ODP
PDE Good Practices
PPTX
PDE builds or Maven
KEY
OSGi, Eclipse and API Tooling
PPTX
Building Eclipse Plugins
PDF
PDF
Eclipse plug in development
PPTX
Multi-OS Engine Technology Overview
ODP
Q4.11: Porting Android to new Platforms
PPTX
Apache Cordova In Action
PPT
Intro to Android Programming
PPTX
AIDE - Android Integrated Development Environment presentation
PPT
DSDP Mobile Tools for Java Webinar
PDF
Xcode 6 release_notes
PDF
Developing and-benchmarking-native-linux-applications-on-android
PPTX
Android village @nullcon 2012
PPTX
Basic iOS Training with SWIFT - Part 1
Dload mobile development
Mobile development
Android Native Apps Development
Bhavin_Resume
PDE Good Practices
PDE builds or Maven
OSGi, Eclipse and API Tooling
Building Eclipse Plugins
Eclipse plug in development
Multi-OS Engine Technology Overview
Q4.11: Porting Android to new Platforms
Apache Cordova In Action
Intro to Android Programming
AIDE - Android Integrated Development Environment presentation
DSDP Mobile Tools for Java Webinar
Xcode 6 release_notes
Developing and-benchmarking-native-linux-applications-on-android
Android village @nullcon 2012
Basic iOS Training with SWIFT - Part 1
Ad

Viewers also liked (6)

PPT
DSDP Mobile Tools for Java Project
PPTX
Hands On Windows Azure Building A Twitter Clone
PPT
DSDP Mobile Tools for Java New and Noteworthy
PPT
Mobile Tools for Java - Current Project Status
PPTX
Online banking
PDF
Study of Online Banking Security Mechanism in India: Take ICICI Bank as an Ex...
DSDP Mobile Tools for Java Project
Hands On Windows Azure Building A Twitter Clone
DSDP Mobile Tools for Java New and Noteworthy
Mobile Tools for Java - Current Project Status
Online banking
Study of Online Banking Security Mechanism in India: Take ICICI Bank as an Ex...
Ad

Similar to Multi-Configuration support in MTJ (20)

PPT
Multi Configurations For Mtj
PDF
Eclipse Mobile Tools for Java Project
PPT
DSDP Mobile Tools for Java New and Noteworthy
PPT
MTJ Taking Mobile Java Developers to the Next Level
PPT
SynapseIndia mobile apps deployment framework internal architecture
PPTX
Java ME - 01 - Overview
PPT
SynapseIndia mobile apps architecture
PPT
SynapseIndia mobile build apps management
PDF
Intro to Java ME and Asha Platform
PDF
Introducing J2ME Polish
PDF
Installing And Configuring Java Me Tools
PPT
Java ME CLDC MIDP
PPT
ProSyst OSGi SDK
PDF
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
PDF
MoDisco EclipseCon2010
PDF
Java me introduction
PDF
Java me introduction
PDF
Java me introduction
PPT
Scmad Chapter 01
Multi Configurations For Mtj
Eclipse Mobile Tools for Java Project
DSDP Mobile Tools for Java New and Noteworthy
MTJ Taking Mobile Java Developers to the Next Level
SynapseIndia mobile apps deployment framework internal architecture
Java ME - 01 - Overview
SynapseIndia mobile apps architecture
SynapseIndia mobile build apps management
Intro to Java ME and Asha Platform
Introducing J2ME Polish
Installing And Configuring Java Me Tools
Java ME CLDC MIDP
ProSyst OSGi SDK
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
MoDisco EclipseCon2010
Java me introduction
Java me introduction
Java me introduction
Scmad Chapter 01

More from gustavoeliano (12)

PPTX
Introduction to Trusted Virtual Client
PPT
Modelo de Negociação Bilateral para Comércio Eletrônico
PPT
Bilateral Negotiation Model for Agent Mediated Electronic Commerce
PPT
Uma Arquitetura para Agentes Negociadores Baseada em Teoria dos Jogos
PPT
Client Server Development – Problems in Supporting Different Wireless Platform
PPT
Restructuring a Web Application, Using Spring and Hibernate
PDF
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
PPT
MOTODEV Studio for Testing A platform testing based on Eclipse
PPT
469-Porting the build system of a commercial RCP Application from Europa to G...
PPT
The Build System of Commercial RCP Application A Case Study
PPT
Re-structuring of a swing-based application into an Eclipse RCP
PPT
Building XML-based content for Eclipse Help a real experience
Introduction to Trusted Virtual Client
Modelo de Negociação Bilateral para Comércio Eletrônico
Bilateral Negotiation Model for Agent Mediated Electronic Commerce
Uma Arquitetura para Agentes Negociadores Baseada em Teoria dos Jogos
Client Server Development – Problems in Supporting Different Wireless Platform
Restructuring a Web Application, Using Spring and Hibernate
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
MOTODEV Studio for Testing A platform testing based on Eclipse
469-Porting the build system of a commercial RCP Application from Europa to G...
The Build System of Commercial RCP Application A Case Study
Re-structuring of a swing-based application into an Eclipse RCP
Building XML-based content for Eclipse Help a real experience

Multi-Configuration support in MTJ

  • 1. Multi-Configuration Support for MTJ (Mobile Tools for Java) Feng (Marvin) Wang Gang (Allen) Ma Gustavo de Paula
  • 2. Agenda DSDP MTJ Overview Device Fragmentation Problem Possible Solutions Java preprocessing Multi-Configuration Concepts & Use cases Code assist Demo
  • 3. DSDP MTJ Overview Glue between the Eclipse IDE and the JavaME SDKs (emulators) MTJ does NOT provide the SDKs Each vendor provides their own SDKs MTJ provide the basic developer workflow Import JavaME SDK (each SDK has several devices associated to it) Create MIDlet Suite Project Build Project Create Deployment Package Eclipse Platform JDT MTJ SDK Extens. Vendor A JavaME SDK Vendor B JavaME SDK Vendor C JavaME SDK UEI Vendor Proprietary Protocol UEI
  • 4. Device Fragmentation Problem 1 Billion JavaME Devices Hardware Software Carrier Display size, color Number of keys Accelerometer Different APIs APIs with optional Components Proprietary APIs File name Requirements Localization MIDlet Requirements Hard to do Professional JavaME Development Fragmentation
  • 5. Possible Solutions Standardize everything Almost impossible to happen Everyone wants to be different Applications want to use device specific features Live with the problem and adapt Old and good preprocessing Not available in standard Java There are some external preprocessing solutions Device Database There are databases on the internet (proprietary and GPL) MTJ can import databases
  • 6. MTJ Approach: Live with the Problem and Adapt Antenna preprocessor MTJ Java Code Preprocessor Multi-Configuration Preprocessor Code Assist Each project can have multiple runtimes Each runtime defines preprocessor tags (Symbols) Symbols are used on the code assist
  • 7. Antenna Preprocessor Antenna is a open source project created on 2002 ( http:// antenna.sourceforge.net / ) Defines several JavaME build related tools Build, Obfuscate, Package, Sign, Deploy and Preprocess Preprocessor defines Preprocessor language Input  java code with preprocessor symbols Output  preprocessed java code //#if ScreenWidth>100 && ScreenHeight>120 do something; //#else do something else; //#endif
  • 8. Multi-Configuration Concepts: Devices The DeviceImporter knows how to “ talk ” to one SDK Returns all Devices that one SDK have Each device has a DeviceClasspath associated to it ... and a list of APIs Devices are persisted on the DeviceRegistry
  • 9. A Symbol is a pair <name; value> Symbols are organized in SymbolSets Each SymbolSet has a name and a list of Symbols i.e.: Symbols: <screen.width;240>, <screen.height;320> Symbol set: <MOTV3; <screen.width;240>, <screen.height;320>> SymbolDeviceFactory can import devices database and same them on the workspace Multi-Configuration Concepts: Symbols
  • 10. A MTJ project has a list of MTJRuntimes Each project has a current active Runtime Each Runtime has A Device A project symbol set (created based on the device properties) A list of workspace SymbolSets Multi-Configuration Concepts: Runtimes
  • 11. Multi-Configuration Use Cases: Manage Configurations Create Project Wizard Add, Remove, Edit Select one to be the active
  • 12. Multi-Configuration Use Cases: New/Edit Configuration Select SDK/Device associated to this configuration SymbolSet associated to chosen Device Workspace level SymbolSets (imported from device database)
  • 13. Multi-Configuration Use Cases: Switch Configuration Switch active configuration or manage current configurations
  • 14. Multi-Configuration Use Cases: Build Project All configurations are build on the same time Export antenna build files to be called externally One build for each configuration JAR/JAD Code is preprocessed Build files and symbol files for each configuration
  • 15. Content Assist Preprocess Help user to input preprocess code in Java Editor Preprocess code format Directives Symbols Operators Values All preprocess code starts is “//#” //#ifdef mmedia //#ifdef nokia //#if s60_ver==&quot;1.0&quot; import com.nokia.mmapi.v1 //#elif s60_ver==&quot;2.0&quot; import com.nokia.mmapi.v2 //#else import com.nokia.mmapi.def //#endif //#else import javax.microedition.mmapi //#endif //#endif
  • 16. All available directives are presented Brief description of each directive Content Assist Directives
  • 17. All symbols provided by all configurations registered on the project are presented Each symbol has Name, Value, if active, provider information Content Assist Symbols
  • 18. Propose preprocess template for the user. Content Assist Templates After apply:
  • 19. Manage current templates Create new templates Edit current templates Content Assist Templates
  • 20. Demo & Thanks! DSDP MTJ Web site: www.eclipse.org/dsdp/mtj DSDP MTJ Wiki: http:// wiki.eclipse.org /DSDP/MTJ Newsgroup: news:// news.eclipse.org/eclipse.dsdp.mtj Developer List: http://dev.eclipse.org/mailman/listinfo/dsdp-mtj-dev
  • 21. Wish list… Preprocess Resources Preprocess full java files Preprocess JAD file Sign based on configuration Improve error handling

Editor's Notes

  • #2: Hello everyone, I am Wang Feng from Sybase. I will talk about the multi-configuration support for MTJ – the Mobile Tools for Java.
  • #16: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.
  • #17: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.
  • #18: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.
  • #19: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.
  • #20: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.
  • #22: Because preprocessing is very important for build for multi-target, so we add preprocess content assist support to Java editor. Which can help user to write preprocess block. The content assist can propose Antenna preprocess directives.