EclipseME Java Micro Edition The Eclipse Way Craig Setera [email protected] April 19,...
-
Upload
dustin-chandler -
Category
Documents
-
view
214 -
download
0
Transcript of EclipseME Java Micro Edition The Eclipse Way Craig Setera [email protected] April 19,...
EclipseMEEclipseME
Java Micro EditionJava Micro EditionThe Eclipse WayThe Eclipse Way
Craig SeteraCraig [email protected]@users.sourceforge.net
April 19, 2006April 19, 2006
AgendaAgenda
Who Am I?Who Am I? About J2MEAbout J2ME
J2ME painJ2ME pain Other J2ME toolsOther J2ME tools Eclipse FeaturesEclipse Features EclipseMEEclipseME
BasicsBasics FeaturesFeatures Development and development challengesDevelopment and development challenges DemoDemo FuturesFutures
Who Am I?Who Am I?
15+ years software in industry15+ years software in industry 15+ years of Object Oriented 15+ years of Object Oriented
programmingprogramming Smalltalk, JavaSmalltalk, Java
Open source guyOpen source guy jMechanic, EclipseME, ZeeMEjMechanic, EclipseME, ZeeME
Cell Phone GeekCell Phone Geek
Why do I need something Why do I need something different for Mobile Devices?different for Mobile Devices?
Java™ 2 Platform, Micro Edition (J2ME™) Java™ 2 Platform, Micro Edition (J2ME™) is the programming model introduced to is the programming model introduced to standardize programming for embedded standardize programming for embedded devicesdevices
Specifications are designed as part of the Specifications are designed as part of the Java Community Process (JCP)Java Community Process (JCP)
J2ME is a family of specifications, designed J2ME is a family of specifications, designed as a series of layered APIsas a series of layered APIs ConfigurationConfiguration ProfilesProfiles Optional APIs Optional APIs
JVM
Configuration
Profile
Optional APIs
The Pain of Java METhe Pain of Java ME
Small subset of J2SE librariesSmall subset of J2SE libraries Some additional micro edition librariesSome additional micro edition libraries
PreverificationPreverification Classes must be pre-verifiedClasses must be pre-verified The same process as split verification in The same process as split verification in
J2SE MustangJ2SE Mustang
The Pain of Java METhe Pain of Java ME
Device FragmentationDevice Fragmentation Each device has its own constraintsEach device has its own constraints
Memory, processing speed, screen sizeMemory, processing speed, screen size Memory is severely constrainedMemory is severely constrained
Use of obfuscation to control library sizeUse of obfuscation to control library size Each device has its own set of quirksEach device has its own set of quirks
Most development is emulatedMost development is emulated Too many devices to develop for allToo many devices to develop for all
Emulators and devices often don’t match behavior (or Emulators and devices often don’t match behavior (or bugs)bugs)
Most real devices do not support debuggingMost real devices do not support debugging
The Pain of J2METhe Pain of J2ME
DeploymentDeployment Runtime deploymentRuntime deployment Execution code deploymentExecution code deployment
Some devices require new frameworksSome devices require new frameworks Example: IBM J9 environmentExample: IBM J9 environment
Connection environmentsConnection environments NetworkNetwork Direct connects (USB, serial, bluetooth, etc)Direct connects (USB, serial, bluetooth, etc) Over the air (OTA)Over the air (OTA)
What J2ME tools are out there What J2ME tools are out there already?already?
Eclipse Based ToolsetsEclipse Based Toolsets IBM® WebSphere® Studio Device DeveloperIBM® WebSphere® Studio Device Developer Nokia Developer’s Suite for J2MENokia Developer’s Suite for J2ME Other SDKs that extend these or existing Other SDKs that extend these or existing
functionalityfunctionality Non-Eclipse Based ToolsetsNon-Eclipse Based Toolsets
NetBeans with Mobility PackNetBeans with Mobility Pack Sun Java Wireless ToolkitSun Java Wireless Toolkit Borland jBuilder Mobile EditionBorland jBuilder Mobile Edition Other SDKsOther SDKs
What Makes Eclipse Unique?What Makes Eclipse Unique?
Incremental build supportIncremental build support Eclipse provides a compiler that understands Eclipse provides a compiler that understands
structural changesstructural changes Only compiles dependencies as necessaryOnly compiles dependencies as necessary Automatically compiles changed filesAutomatically compiles changed files
Plug-in abilityPlug-in ability Provides ability to extend all aspects of the Provides ability to extend all aspects of the
Eclipse platformEclipse platform Provides ability to add new “builders”Provides ability to add new “builders”
What is EclipseME?What is EclipseME?
HistoryHistory Needed Eclipse tools for programming Needed Eclipse tools for programming
my cell phonemy cell phone Couldn’t find anything at the time, thus Couldn’t find anything at the time, thus
EclipseME was bornEclipseME was born Sourceforge projectSourceforge project Started in July 2003Started in July 2003
29 released versions29 released versions Nearly 200,000 downloadsNearly 200,000 downloads
What is EclipseME?What is EclipseME?Basic FunctionsBasic Functions
Glue between Eclipse and J2ME toolkitsGlue between Eclipse and J2ME toolkits Plug-ins into Eclipse providing extensions to Plug-ins into Eclipse providing extensions to
the Java Development Tools (JDT)the Java Development Tools (JDT) A goal of seamless integration for Java ME A goal of seamless integration for Java ME
developmentdevelopment Incremental preverification Eclipse builderIncremental preverification Eclipse builder Emulator run and debug launch integrationEmulator run and debug launch integration
What is EclipseME?What is EclipseME?FeaturesFeatures
Multiple wireless toolkit supportMultiple wireless toolkit support Wireless toolkit preferences Wireless toolkit preferences Platform component and definition support Platform component and definition support Create new J2ME Midlet Suite ProjectCreate new J2ME Midlet Suite Project Create new MIDletCreate new MIDlet Java Application Descriptor (JAD) editorJava Application Descriptor (JAD) editor Automatic incremental preverificationAutomatic incremental preverification Eclipse launch support for EmulatorEclipse launch support for Emulator MIDlet debugging supportMIDlet debugging support JAR and obfuscated JAR packagingJAR and obfuscated JAR packaging Over the air deployment testing serverOver the air deployment testing server Export Antenna build filesExport Antenna build files Automatic MIDlet signing Automatic MIDlet signing
What is EclipseME?What is EclipseME?Extensible PlatformExtensible Platform
A minimal platform for extensionA minimal platform for extension Extension points for adding new wireless Extension points for adding new wireless
toolkit definitionstoolkit definitions Extension points for defining device Extension points for defining device
editorseditors EclipseME is more tool than platformEclipseME is more tool than platform
EclipseMEEclipseME“Professional” Open Source“Professional” Open Source
Good free supportGood free support Mailing listsMailing lists Bug trackerBug tracker Enhancement request trackerEnhancement request tracker
Polished functionalityPolished functionality Polished and accurate helpPolished and accurate help Polished and accurate web sitePolished and accurate web site
EclipseME DevelopmentEclipseME Development
Open-sourceOpen-source Eclipse Public LicenseEclipse Public License
Philosophies:Philosophies: Release early, release oftenRelease early, release often Open source can be professional and polishedOpen source can be professional and polished
Sourceforge hostedSourceforge hosted http://eclipseme.orghttp://eclipseme.org is hosted elsewhere for is hosted elsewhere for
added flexibilityadded flexibility 2 person team with benevolent dictator2 person team with benevolent dictator
EclipseME ChallengesEclipseME Challenges
““Keeping up with the Jones'”Keeping up with the Jones'” Eclipse tools are a moving targetEclipse tools are a moving target Wireless Toolkit vendors are a moving targetWireless Toolkit vendors are a moving target
Team ManagementTeam Management Balance is toughBalance is tough
It is tough to give the “good” work awayIt is tough to give the “good” work away It is tough to give up creative controlIt is tough to give up creative control It is tough to do everything with one personIt is tough to do everything with one person
The “real world” gets in the wayThe “real world” gets in the way Managing to find time for EclipseME can be Managing to find time for EclipseME can be
difficult sometimesdifficult sometimes
Why Open Source?Why Open Source?
Benefit from other projectsBenefit from other projects I’ve personally benefitted from other I’ve personally benefitted from other
open sourceopen source My employers have benefittedMy employers have benefitted
It is interesting and scratches an itchIt is interesting and scratches an itch If done well, it is good publicityIf done well, it is good publicity
Good for “networking”Good for “networking” Good for job offersGood for job offers
DemoDemo
Manage devicesManage devices Create Midlet suiteCreate Midlet suite Create midletCreate midlet Application Descriptor EditorApplication Descriptor Editor Debug midletDebug midlet Packaging supportPackaging support
Future of EclipseMEFuture of EclipseME
New FeaturesNew Features Addressing Device FragmentationAddressing Device Fragmentation
Preprocessing supportPreprocessing support Batch build for multiple device definitionsBatch build for multiple device definitions
Lots of new device supportLots of new device support Palm, Blackberry, etc.Palm, Blackberry, etc. Ongoing support for new versions of previous devicesOngoing support for new versions of previous devices
New toolsNew tools J2MEUnit, J2ME PolishJ2MEUnit, J2ME Polish Web Service stub generationWeb Service stub generation
Bugs, bugs and bugsBugs, bugs and bugs
Future of EclipseMEFuture of EclipseME
Eclipse Mobile Tools for Java ProjectEclipse Mobile Tools for Java Project An official Eclipse Foundation projectAn official Eclipse Foundation project Formed by Nokia and IBMFormed by Nokia and IBM EclipseME is involved in MTJEclipseME is involved in MTJ
I am on the Project Management CommitteeI am on the Project Management Committee I am providing architecture, design and I am providing architecture, design and
implementation directionimplementation direction MTJ is using EclipseME codeMTJ is using EclipseME code
EclipseME will eventually be replaced by MTJEclipseME will eventually be replaced by MTJ EclipseME users will be migrated to MTJEclipseME users will be migrated to MTJ EclipseME may still be a layer on top of MTJEclipseME may still be a layer on top of MTJ
ReferencesReferences
EclipseEclipse http://www.eclipse.orghttp://www.eclipse.org
EclipseMEEclipseME http://eclipseme.orghttp://eclipseme.org http://sourceforge.net/projects/eclipseme/http://sourceforge.net/projects/eclipseme/ EclipseME—Another IDE Option for J2ME Development EclipseME—Another IDE Option for J2ME Development
Jim WhiteJim White http://www.devx.com/wireless/Article/29233http://www.devx.com/wireless/Article/29233
Eclipse Mobile Tools for JavaEclipse Mobile Tools for Java http://www.eclipse.org/dsdp/mtj/http://www.eclipse.org/dsdp/mtj/
Thank You!Thank You!
Thanks to Jim White Thanks to Jim White For a great EclipseME articleFor a great EclipseME article For putting me in contact with Jeff For putting me in contact with Jeff
JensenJensen Thanks to Jeff Jensen for inviting meThanks to Jeff Jensen for inviting me Thanks to TCJUG for having meThanks to TCJUG for having me