23
EclipseME EclipseME Java Micro Edition Java Micro Edition The Eclipse Way The Eclipse Way Craig Setera Craig Setera [email protected] [email protected] April 19, 2006 April 19, 2006

EclipseME Java Micro Edition The Eclipse Way Craig Setera [email protected] April 19, 2006

Embed Size (px)

Citation preview

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

Q&AQ&A

Ask away…Ask away…