Your SlideShare is downloading. ×
0
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MTJ Taking Mobile Java Developers to the Next Level

1,103

Published on

EclipseCon 2009 presentation

EclipseCon 2009 presentation

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,103
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MTJ Taking Mobile Java Developers to the Next Level Christian Kurzke Architect, Motorola Developer Tools Eclipse MTJ Project Lead Craig Setera EclipseME founder
  • 2. Abstract <ul><li>This talk is targeted at </li></ul><ul><li>* J2ME developers who want to become more productive in their daily work </li></ul><ul><li>* Java developers who can now create mobile applications from within their favorite IDE </li></ul><ul><li>* Developers who want to extend and customize MTJ </li></ul><ul><li>Eclipse has long become the de-facto standard IDE for Java developers, and with the success of the newly released MTJ &quot;Mobile Tools for Java&quot; extensions, Eclipse is about to do the same in the Mobile Java application development space. </li></ul><ul><li>The DSDP Mobile Tools for Java (MTJ) project was created in 2005, and has since been providing extensions Eclipse to enhance the productivity of Mobile Application Developers. </li></ul><ul><li>In 2008 the MTJ project merged with the successful EclipseME mobile IDE project, resulting in a 0.9 release of MTJ in October 2008. </li></ul><ul><li>MTJ integrates with JavaME SDKs from all major device manufactures and include features such as: </li></ul><ul><li>* Build and package MIDlet Suite for deployment, </li></ul><ul><li>* Run the MIDlet in one specific emulated device, </li></ul><ul><li>* Debug the MIDlet in one specific emulated device. </li></ul><ul><li>Besides those device specific tasks, MTJ also enhances developer productivity by supporting common tasks such as: </li></ul><ul><li>* Built in pre-processor support for multiple target device support </li></ul><ul><li>* Support for scripted ANT and ANTENNA builds </li></ul><ul><li>* Packaging and Signing support </li></ul><ul><li>MTJ also helps the add-on developers. It provides a basic framework that can be used to customize some of MTJ main functionalities, such as the vendor-specific SDK integration and build process. </li></ul><ul><li>MTJ also has mechanisms which allow 3rd parties to package and distribute J2ME Libraries which can automatically be integrated into mobile development projects. </li></ul><ul><li>In this talk we will give a high level overview of the features of MTJ, and how it helps to increase the productivity of a Mobile Application Developers. This includes a hands on demo how to create, run and debug a J2ME application using MTJ. </li></ul><ul><li>At the end of the talk we will dive into more detail and explain how MTJ can be extended. We will demonstrate two common usecases: </li></ul><ul><li>* How to write simple adapters to add support for custom SDKs </li></ul><ul><li>* How to package 3rd party libraries to publish them o MTJ projects. </li></ul>
  • 3. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary
  • 4. MTJ for Mobile Application Developers <ul><li>Java is the most ubiquitous runtime platform for mobile devices: </li></ul><ul><ul><li>Java 2 ME: Available on most phones in the market today </li></ul></ul><ul><ul><li>Andoid (with the Dalvik Java-like programming language) </li></ul></ul><ul><ul><li>Sprint Titan (Eclipse eRCP) </li></ul></ul><ul><li>Eclipse is the leading IDE for Java development with support for the </li></ul><ul><li>end-to-end Development cycle of mobile applications </li></ul><ul><ul><li>Project creation wizards (with device profile and library support) </li></ul></ul><ul><ul><li>Build tools integration (pre-verify, package, sign)‏ </li></ul></ul><ul><ul><li>Runtime tools (Emulator control and on device deploy/debug)‏ </li></ul></ul>
  • 5. MTJ for Add-in Providers <ul><li>There are many existing Eclipse extensions (plug-ins) which can also be very useful for mobile developers. </li></ul><ul><li>Most JDT related plug-ins can be used already with MTJ (or can be easily adapted) </li></ul><ul><ul><li>Profilers, Static Analyzers, etc </li></ul></ul><ul><li>MTJ has Extension Points to allow 3 rd party plug-ins to register new libraries with are available to developers. </li></ul><ul><ul><li>Set up compile paths/packaging, etc </li></ul></ul><ul><li>Good time for Add-in providers to join API discussions. </li></ul><ul><ul><ul><li>Join us in the MTJ BOF session </li></ul></ul></ul><ul><ul><ul><li>Get involved in Mobile Industry Working Group </li></ul></ul></ul>
  • 6. MTJ for SDK creators, OEMs and mobile device manufacturers <ul><li>MTJ is filling the void of tooling for many common “mobile” software development tasks: </li></ul><ul><ul><li>Developers targeting a family of devices (touchscreen, keypad, etc) </li></ul></ul><ul><ul><li>Packaging, signing and deployment </li></ul></ul><ul><li>Using MTJ gives you a headstart and allows to focus on device specific “value add” plug-ins </li></ul><ul><li>MTJ has a very flexible interface to integrate mobile device specific SDKs, emulators and proprietary build/deploy tools </li></ul><ul><ul><li>Many off the shelf J2ME SDKs can be used with MTJ if they support the “Unified Emulator Interface” (UEI) </li></ul></ul><ul><ul><li>Other proprietary SDKs can be integrated by using the MTJ Device Import framework </li></ul></ul>
  • 7. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔
  • 8. What is special about Java development tools for mobile devices? <ul><li>Many mobile device SDK’s are command-line based: </li></ul><ul><ul><li>Special build tools to compact/pre-verify/sign applications </li></ul></ul><ul><ul><li>Start and control emulators, deploy debug etc. </li></ul></ul><ul><li>General Purpose “Java IDEs” do not support those custom tasks. Developers often have to do manual configuration/integration </li></ul><ul><li>A truly “integrated” development environment can significantly increase developer productivity! </li></ul>
  • 9. Developing for a “portfolio” of mobile devices <ul><li>More challenges for developers who target multiple devices. </li></ul><ul><li>Most devices support MIDP 2, but differences based on: </li></ul><ul><ul><li>Device Capabilities (Screen Size, input keys, optional JSRs) </li></ul></ul><ul><ul><li>Carrier Restrictions (access to certain JSRs, Signing) </li></ul></ul><ul><li>A good IDE will support the development, build, packaging, sign, deployment of applications to multiple phones </li></ul><ul><ul><li>Integrate Solutions such as Antenna, possibly J2ME Polish etc. </li></ul></ul>
  • 10. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔
  • 11. About IDEs and SDKs <ul><li>A Software Development Kit (SDK) includes: </li></ul><ul><ul><li>Build/Compile tools </li></ul></ul><ul><ul><li>Header files, libraries, anything needed for Compiling (and linking) </li></ul></ul><ul><ul><li>Other tools like: Packaging, signing, remote debugging, deployment tools, etc. </li></ul></ul><ul><li>An Integrated Development Kit (IDE) includes: </li></ul><ul><ul><li>An Editor, which interacts with the build environment to e.g.: </li></ul></ul><ul><ul><ul><li>Highlight compile errors in Source Code, manage build files </li></ul></ul></ul><ul><ul><li>Integration of SDK </li></ul></ul><ul><ul><ul><li>Allow “one click” build/package/deploy </li></ul></ul></ul><ul><ul><ul><li>Integrate with the Emulator </li></ul></ul></ul><ul><li>Eclipse is the IDE, and Mobile Tools for Java (MTJ) is the integration “glue” to phone SDKs </li></ul>
  • 12. The Unified Emulator Interface (UEI)? <ul><li>Defines the “interface” between a J2ME SDK and an IDE </li></ul><ul><li>“ de-facto” standard for J2ME emulator commandline calling conventions </li></ul><ul><ul><li>Published by SUN in 2006: https://uei.dev.java.net/ </li></ul></ul><ul><ul><li>No activity since the 1.0.2 version (April 2006) of the Specification </li></ul></ul><ul><li>Standardizes </li></ul><ul><ul><li>Directory Structure </li></ul></ul><ul><ul><li>Commands </li></ul></ul><ul><ul><li>Pre-Verifier Execution </li></ul></ul><ul><ul><li>Getting Information About the Emulator </li></ul></ul><ul><ul><li>Application Deployment </li></ul></ul><ul><ul><li>Debugging and Testing </li></ul></ul><ul><ul><li>Keytool Execution </li></ul></ul>
  • 13. High level overview of a typical J2ME development environment IDE (Eclipse) Desktop OS (Windows, Mac, Linux) Java Editor Extensions Eclipse MTJ <ul><li>Phone SDK </li></ul><ul><li>Emulator </li></ul><ul><li>Build tools </li></ul><ul><li>Runtime tools </li></ul>Unified Emulator Interface (UEI) <ul><li>Phone SDK </li></ul><ul><li>Emulator </li></ul><ul><li>Build tools </li></ul><ul><li>Runtime tools </li></ul><ul><li>Phone SDK </li></ul><ul><li>Emulator </li></ul><ul><li>Build tools </li></ul><ul><li>Runtime tools </li></ul>
  • 14. MTJ Legacy: EclipseME <ul><li>EclipseME is an Eclipse plug-in for JavaME development </li></ul><ul><ul><li>Focus on CLDC/MIDP (other profiles could be supported) </li></ul></ul><ul><ul><li>Provides all basic services (build, sign, obfuscate, etc.) </li></ul></ul><ul><ul><li>Provide some extensibility , but it is not its main focus </li></ul></ul><ul><li>First public releases in 2003 </li></ul><ul><ul><li>Around 600.000 downloads to date </li></ul></ul><ul><li>Created and maintained by Craig Setera </li></ul><ul><li>Not a “Eclipse Foundation” project, but still distributed under the EPL </li></ul><ul><li>By 2008 it was used by all major mobile device manufactures </li></ul><ul><ul><li>Nokia, Motorola, Sony Ericsson, etc. </li></ul></ul><ul><li>EclipseME uses Unified Emulator Interface to integrate with SDKs from Phone vendors, or the Wireless Toolkit (WTK) from SUN </li></ul>
  • 15. MTJ is the new EclipseME ( www.eclipse.org/dsdp/mtj ) <ul><li>Eclipse MTJ has evolved in parallel with EclipseME, stronger focus on extensibility for tools vendors </li></ul><ul><li>In Jan 2008 new leadership (Motorola) and renewed focus on “developer experience” lead to merge of EclipseME and MTJ </li></ul><ul><li>Now, MTJ is the “official” JavaME development tool plug-in for Eclipse </li></ul><ul><li>Provide all necessary support to develop MIDP-based applications </li></ul><ul><ul><li>Import SDKs (UEI and some proprietary formats supported) </li></ul></ul><ul><ul><li>Create Project / MIDlet Wizards </li></ul></ul><ul><ul><li>Edit MIDlet Suite Application Descriptor </li></ul></ul><ul><ul><li>Build MIDlet Suite Package </li></ul></ul><ul><ul><li>Run / Debug MIDlet </li></ul></ul>
  • 16. MTJ Roadmap EclipseME 1.7.8 MTJ 0.7 codebase MTJ 0.9 MTJ 0.9.1 MTJ 1.0 <ul><li>Adapt to Eclipse code standards </li></ul><ul><li>Setup build environment </li></ul><ul><li>Add Import from </li></ul><ul><ul><li>Netbeans </li></ul></ul><ul><ul><li>EclipseME </li></ul></ul><ul><li>Enhanced JAD Editor </li></ul><ul><li>Bug fixes </li></ul><ul><li>Library Support </li></ul><ul><li>MIDlet Localization </li></ul><ul><li>Multiple Device Support </li></ul><ul><li>MIDletTemplates </li></ul><ul><li>Re-structure code (increase flexibility) </li></ul><ul><li>Adapt code from MTJ 0.7 </li></ul><ul><ul><li>Signing / Keystore </li></ul></ul><ul><ul><li>Deployment & Debugging </li></ul></ul>Q3/2008 Q4/2008 Q2/2009 Refactor Galileo
  • 17. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔ ✔
  • 18. Demo <ul><li>Eclipse & MTJ in action </li></ul>
  • 19. Title
  • 20. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔ ✔ ✔
  • 21. Title <ul><li>Slides about Library packaging/distribution functionality </li></ul>
  • 22. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔ ✔ ✔ ✔
  • 23. MTJ as a Framework MTJ Library A Vendor Specific SDK UI Core Library Library N DeviceImporter DeviceEditor JADAttributes JADPages
  • 24. Title
  • 25. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔ ✔ ✔ ✔ ✔
  • 26. Eclipse Mobile Working Group The “Pulsar” Package <ul><li>Goal: </li></ul><ul><li>Lowering the “barrier to entry” for mobile developers </li></ul><ul><ul><li>Making it easier to find, install and integrate mobile SDKs </li></ul></ul><ul><ul><li>Help to “standardize” development experience between handsets </li></ul></ul>
  • 27. Title
  • 28. Agenda Who should attend this talk Why Java development for mobile devices is different Eclipse Mobile Tools for Java Overview MTJ for the Mobile Application Developer MTJ for the Add-on provider MTJ for the SDK Developer/Tools Vendor Eclipse Mobile Working Group (Pulsar) Summary ✔ ✔ ✔ ✔ ✔ ✔ ✔
  • 29. Summary Questions & Answers <ul><li>IDE’s can help manage the complexity of CLDC development </li></ul><ul><ul><li>Preprocessor for Device Properties etc. </li></ul></ul><ul><ul><li>Build for multiple targets </li></ul></ul><ul><ul><li>Pre verify </li></ul></ul><ul><ul><li>Sign </li></ul></ul><ul><ul><li>Deploy </li></ul></ul><ul><ul><li>EMULATE </li></ul></ul><ul><li>Mobile Tools for Java (MTJ) extends Eclipse for JavaME development </li></ul><ul><li>Eclipse Pulsar working group is creating a pre-integrated “Eclipse for J2ME Developers” Galileo package </li></ul>
  • 30. Backup
  • 31. MTJ as a JavaME Tool Import SDK <ul><li>Any UEI or Java SE-based SDK </li></ul><ul><li>User can select which device to be imported </li></ul><ul><li>Devices are added to Device Management list </li></ul><ul><li>User is able to select one as the default </li></ul>
  • 32. MTJ as a JavaME Tool Creation Wizards <ul><li>Select JAD Name </li></ul><ul><li>Select Current SDK & Device </li></ul><ul><li>Enable Preprocessing on that Project </li></ul>
  • 33. MTJ as a JavaME Tool JAD Editor
  • 34. MTJ as a JavaME Tool Run / Debug
  • 35. MTJ as a Framework <ul><li>Original objective of MTJ 0.9 is to provide a tool for JavaME developers </li></ul><ul><ul><li>Framework is not a primary focus, but a welcome “side effect” of proper design </li></ul></ul><ul><li>But… </li></ul><ul><li>There are some ways to customize MTJ in order to </li></ul><ul><ul><li>Support vendor specific JavaME SDK features </li></ul></ul><ul><ul><li>Enhance MIDlet environment with libraries </li></ul></ul>
  • 36. Similarities with Embedded Systems Development <ul><li>Mobile Development is very similar to embedded systems: </li></ul><ul><ul><li>Cross Compilers (even for Java, e.g. Pre-verifier, Dalvic compiler) </li></ul></ul><ul><li>Remote deployment </li></ul><ul><li>Remote debugging </li></ul><ul><li>Developer needs an Emulator </li></ul><ul><li>And/Or </li></ul><ul><li>Target interface </li></ul>

×