Upload
dima-maleev
View
1.416
Download
2
Embed Size (px)
Citation preview
Modern mobile development overview
Platforms, Trends, Specifics
Agenda
1.Introduction2.A bit of history3.High-level overview of the market. Who are the
biggest players? (as of now)4.Trends 5.JavaME/Windows CE legacy platforms6.BlackBerry platform7.Symbian platform8.iOS (iPhone OS)9.Android10.Windows Phone 7, MeeGO, ?11.Closing comments/QAs
A bit of history
• What used to be a mobile development?• Major players: JavaME, Symbian, Windows
Mobile, BlackBerry• How to blow your platform. User guide
o Be arroganto Don't tolerate your rivalso Disrespect userso Disrespect developerso Don't admit your faults o Stop evolvingo The world is changing - IGNORE
Drive the Evolution
• From enterprise to consumers• Growing community of loyal users• Show respect to devs and make devs
respect the platform• Excel the average app quality• Remove frustration• Choose your target audience carefully• Integration is the key - be social!• Show some uniqueness• Be innovative
The most important thing to remember
Money drives innovation
(vendor -> manufacturer -> consumer -> developer ->)
Short Q/A?
Who drives the evolution?Android, iPhone
Who strives for evolution?
BlackBerry, Symbian
Fresh meat Windows Phone 7, MeeGO,
WebOS
What constitutes a mature mobile development platform?
• Mature SDK and tools• Healthy developer community• Carefully chosen target audience • Effective means for app distribution• How can I make money with this
platform? • Continuous support from vendor
Java ME (J2ME)
• Developed by Sun in 1999• Set of specifications without the
implementation (profiles and JSRs)• Runtime environment designed to work
on embedded devices• Java 1.3 language• The platform is fragmented• Your options are limited - keep that in
mind• Still viable (2.1 billion mobile phones)• Entry level is low
What's in the box? MIDP 2.0
Core packages primitives, collections,
User Interface Package
Subset of Java AWT, game APIs
Networking Package Generic Connection framework
Persistence Package Record store
Application Lifecycle Package
Defines lifecycle for MIDlets
Audio Package Part of Mobile Media API
Public Key Package Key verification
Nightmares of JavaME
•Signing nightmare•Distribution nightmare•UI and UX nightmares•Media player nightmare•App size nightmare•Emulator nightmare•Stone Age nightmare
Java ME (J2ME), lessons learned
• Fragmentation is evil (especially when it's driven by design!)
• Bureaucracy kills the platform• You need means for unified app distribution • Good UI matters! • Be ready for changes• Java ME is a good training ground because
o it's easy to learn o intuitive to program (language, APIs)o provides little or no choice
• Java ME is still alive (Profile 3.0, 2009)
Recommendation
If you want to test how does it feel to be mobile developer, start with JavaME. It is easy to learn, intuitive to program and it will provide you with all basic flavors of mobile development. I don't think is has a future in outsourcing, though.
What about WinCE/WinMobile?
Do not disturb the dead.The advent of Windows Phone 7 meant the end of WinMobile era - it is silly to invest time
and money
BlackBerry platform
• Proprietary platform developed by RIM• Originally enterprise oriented• Based on JavaME specifications +
proprietary APIs• JavaME origin means presence of
some elements from Stone Age • Reveals its greatest value with BlackBerry
Enterprise Server• Tries to be consumer-friendly• Devices are produced by one manufacturer
so the fragmentation is limited
BlackBerry Enterprise Deployment
• Solution is secure and corporate-friendly
• Has unique synchronization capabilities
• Is backed with cellular operator support
• Provides means for developing stunning business applications
Pls, tell me more
• BlackBerry has far reacher set of APIs than JavaME• But because of ... you may run into trouble
o Stone Age issues in 2010 (old Java 1.3, missing APIs)
o Relatively poor UI and UXo Multiple compatibility issues (form-factors, input
methods, API problems)o Slower market adoptiono Platform doesn't enforce how the application
should look like• Nevertheless it is a mature and evolving platform• Key strengths are its integration capabilities and
multiple options when choosing application's format
Symbian as a platform• What is Symbian? Disambiguation is needed• A few key facts:
o As of now is backed only by Nokiao Has a long history of development and
supporto Has suffered from good deal of
fragmentationo Offers an enormous code library of
componentso Developing is done with a dialect of C++o Entry-level is higho Devices based on Symbian accounted for
43.5% of worldwide smartphone sales in 2010 Q2.
Confessions of a Symbian developer• I have to use an anemic subtype of C++. Give
me back destructors and STL (at least std::string)!!!
• How would you explain T-, R- and C- classes to your parents?
• I deal with ENORMOUS library which fails to be developer-friendly.
• I have to hand-code a lot of simple things again and again.
• Please, don't make me code UI again - my fingers hurt!
• Document-View, are you serious?• Why can't I use threads in my application?• Give me proper documentation!• Please, make Nokia stop producing devices.
OK, what's the keynote?
• Apart from complexity Symbian is a mature platform• Its key strengths:
o The large market shareo Continuous support from Nokiao It is feature-rich
• and weaknesses:o It may die in the next 2 years and may be replaced
with something differento It can't keep up with modern trendso Nokia can't produce decent hardwareo It is over-engineered and complexo The cost of development is high
• Resolution: do not invest in learning Symbian unless you absolutely have to
Android
• Android and the hype behind it• Perception of the platform• Target audience and positioning• Is Android open?• Consumers first, right Google?• Reasons behind criticism. One big reason.• Who makes money with Android?• Should you go Android?
Advantages of Android
1.It drives the innovation2.Productive development (in a sense)3.WebKit-powered browser4.Big community5.A lot of ways to position your app6.Integrate with everything7.A lot of passionate evangelists on the
Web
and now disadvantages
1.Fragmentation issues2.Sophisticated learning curve. The platform is
not hard to grasp, but it is overdesigned.3.Platform beyond us all!4.Apps don't sell5.Did I mention fragmentation issues?6.It is not consumer oriented. Period.
I'm an engineer, tell me about development1.Android is free to develop for. No investments
needed2.Lots of info on the Web, lots of books written3.Google documentation is really good4.SDK is packed with tools5.It is Java 5 (well, almost) - you can use any library on
the market (well, almost)6.Google got you covered in terms of UI, resources,
form-factors, security, debugging, testing and integration
7.Google enforces strict application model - you have to keep a lot of rules in mind
8.Framework is good but over-engineered - you need to learn things
What strategy does Google follow?1.Develop services (Search, GMail, Docs, Calendar...)2.Make consumers use them3.Sell ads4.HTML5 for the victory - start with Gears5.Develop power-features for Services6.Make businesses use the services7.Develop Chrome browser8.Light the hype fire over clouds + introduce AppEngine9.Embark for HTML510.Introduce Android. Tell the world it is open. Integrate
it with Services11.Port power-features of Services to HTML512.Android has WebKit integrated, remember?13.Start integrating business and consumer oriented
features14.Conquer tablets market
What strategy does Google follow?
By reaching this point you have:1.Enormous consumers' base– Hype over your innovations that lives on its
own– Next-gen development strategies that are
right at your door: HTML5, Clouds– People follow your advice and integrate with
EVERYTHING– Integration means massive exchange of
data– This all gives you freedom to...
What strategy does Google follow?
SELL MORE ADS
Android is a long term investment that will pay off brilliantly. Google doesn't need to
manufacture devices, it needs consumers' base.
Present and future trends
1.Cross-platform development (AppCelerometer, PhoneGap, ipFaces, etc)
2.Web development3.Scripting4.Mobile Advertising5.More business-oriented applications on the market6.Tighter integration with cloud storages7.Mobile payments (NFC)8.Media applications (HD is here)9.Augmented reality apps
Cross-platform development
• You use web apis instead of native sdko HTML, CSS, Javascript
• Major playerso PhoneGapo Rhodeso Appcelerometer Titanium (+Aptana)o IPFaceso JQuery Mobile
• Device-specific featureso Sensors, vibration, touch, orientationo Multimedia, camerao File IO o Phone APIs, etc
iOS• Apple sells high-end devices to consumer
and doesn't sell services• 2007 was a good year to start invasion• We know the original iPhone was a poor
replacement for a cell phone• But it was a great platform to run
applications• A brief overview of iOS versions - Apple had
enough time to polish their platform• iPhone 4 is a decent piece of hardware now• It brings value to consumers and to
businesses
Why is iOS platform valuable?• If I were to develop a business app I would start with
one for iPhoneo It has healthy ecosystem for building apps o Support of multiple Exchange accountso HTML 5 engineo Powerful WebViewo Pusho Remote wipeo Multitaskingo iAdo Gradual OTA updates
• same for consumer applications• All cross-platform frameworks support iOS
development• Android doesn't have that much of a business value
(as of Jan 2011)
General misconceptions about iOS development• Objective-C is a nightmare - Not true• and consequently hard to use API - Not true • XCode is the worst IDE ever - It could be much
better• Memory management routines are of evil - False.
They are much better designed in Objective-C than in C++. But you have to live with them
• It would take ages to develop an app - It depends• I will be rejected in the first place because Apple
is unreasonable - Read tips from Apple carefully
Q/A?