Related
I know there are guides for android developers to learn iphone programming, and they try and compare and contrast differences between the two platforms to help developers learn, but is there a guide for the opposite? A guide/introduction to android development for developers coming from an iphone dev background?
I dont think there is a guide that compare iphone and android developement (May be I am wrong). From my experience (I started on iphone, now working on both) you should be aware of these things
iphone OS targets some standard devices which has fixed resolution and screen size. So we can align widgets in places by giving absolute pixel values. But in the case of android, we have to target different kind of devices, by different vendors, with different screen size and resolution. So to design and program UI you will need to learn about the concept called layouts.
For iphone we know there is only one soft keyboard. Different android devices comes up with hard and soft keyboards. And let me tell you handling android soft keyboard event can be most frustrating(From my experience).
memory management in ios is tough to learn, there is no garbage collector there, but easy if you understood the concepts. There is garbage collector in android(java) so we dont have to think about memory.
For learning android some links I have bookmarked.(not comparisons between iphone and android)
http://www.devx.com/wireless/Article/39101
http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-androidwidget/index.html?ca=dgr-eclipse-1
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts
http://saigeethamn.blogspot.com/2010/05/table-of-contents.html
If you want to get something up and running quickly to get a feel of things, I found this short series of articles, Android for iOS developers to be pretty good. There are a couple of errors here and there and you'll have to get past the author's style but I had a quick and dirty port of a similar iOS app up and running in a few hours.
As an aside, the Android SDK is a bit of a faff to get running on Mac OS X. I skipped it and installed on a Windows PC but you'll want a good guide tailored for that as well. There are a lot of steps compared to "install xcode".
I am an experienced Flex and Air Developer and love Android having owned a G1, a milestone (Droid), a Nexus One, a Galaxy S and now a Nexus S. Understandably I am interested in developing Flex applications for Android.
I have just started working through the flex for android in 90 mins tutorial here:
http://coenraets.org/flexandroid90/FlexAndroid90Minutes.pdf
The very first step says that I have to create a Flex Mobile Project.
I was under the impression that the whole point of Air is that the same application could run on many different platforms. I was intending on creating an air app with different skins that could be swapped in and out depending on the platform it was running on. This seems to imply that I will have to compile my Air app once for desktop and once for mobile.
This isn't the end of the world but it's not quite how I expected it to work. I suppose that if I am creating mobile specific skins then I may as well create a mobile specific app.
Is it possible to create one Air app that will run on both mobile and desktop? Is this a good idea?
I don't think it is a good idea to write one app for the desktop and for mobile. The views are very different, and the user experience is very different.
Ultimately, this is one of those cases where separated presentation patterns really helps you. You can write all of your app and behavior separated from your view but slap a different view (desktop or mobile) on top of it for the right experience on the right platform.
Check out MVC, MVP or Presentation Model for different approaches, if you are not familiar.
Its a common problem, in the Java world we had the whole Java SE/EE/ME with JME being for mobile devices. Even the newest phones, some of which have, or soon will have, multiple cores are still much more limited devices than desktop/laptops. The overhead is just too great for the standard libraries, too much ram and cpu needed to load and run those libraries. So we have Flex Mobile, JME engines, and our Android favorite Dalvek.
I want to start develop mobile applications and sell it. There are many mobile platforms for which I can begin develop: Windows Mobile , Android, Iphone, Linux based Devices.
I want to find out from people who has such experience which platform more comfortable and more profitable for me to use.
There is no general advice on this.
The recommendation clearly depends on your experience and several other factors. What programming languages do you know? What kind of applications do you want to develop? Do you want to take the risk that your software isn't even put in the corresponding app-store (see apple)?
You have to take several things into consideration. I'll try to make a short overview:
Android:
needs Android SDK
Java as programming language
free marketplace (i.e. no prior control whether your app comes in)
develop on any system you want to
open plattform
furhter information
iPhone
needs iPhone SDK
Objective-C as programming language
prior evalutation of your app before storing it in the app-store
you need to have a mac in order to develop for iPhone
closed plattform
further information
Windows Mobile
developing with .Net-Framework
don't know a lot more about it, but further information can be found here
Other Linux-based devices
take a look at their specifications, they often have an own SDK
Also don't forget about Symbian for Nokia. They recently launched their OVI-Store. And oh, also Palm could become very interesting just after yesterday's news that HP bought it. It's also a nice plattform.
Which one of these is more profitable for you also depends on your skills. Good software will sell good, no matter which plattform you decide for. My recommendation clearly is: Take a look at the SDKs and the needed environments and then compare it with your skills. If you say, you have a good experience in Java development go ahead with android. If you want to do some mac-stuff choose the iPhone.
I'd say the markets with the highes potential clearly are the iPhone and Android markets. I don't know, how Palm will develop now but there could be a big potential in it in half a year or a year.
Currently, the most lucrative platform is the iPhone. The Android is not even close yet. The number #1 selling game on Android is Robo Defense, its entry in the Market says 50,000 to 250,000 downloads, and its price is $2.99. Assuming the price has been constant, that means the developer has roughly made between $100,000 and $500,000 (after the 30% commission has been taken out). And yet, I have developer friends on the iPhone that have made way more money than that, and those friends are not even close to have the best selling apps on the iPhone in their own category.
Part of the problem is the number of handsets out there: according to Gartner, the number of Android handsets won't overtake iPhone handsets till 2012. The second problem is conversion rates: according to Admob, Android users are only worth 60% of the iPhone users in terms of converting from free lite version applications to paid applications (supposedly, Admob has compared identical apps on both Marketplaces).
That conversion rate is believed to be attributed to two factors: the type of users Android has, and the fact that Android currently only uses Google Checkout for its Market transactions (when in fact, it probably should use Pay Pal, not Google Checkout). But that too, should change soon. With the Evvo (from Sprint) coming out, Android will be a great phone, and with it, it will start attracting some of the very top high end users. Also, the Android Market is starting to accept transactions using carriers as go-betweens, so that should help remove some of the steps that it takes an Android user from buying an app (at least, I hope that it will).
And do notice that I didn't even mention the Ovi store from Nokia. The Nokia sdks are still as fragmented as ever. The Ovi store is currently a mess. Its three-star rating system is useless. All apps average to two stars. They don't allow you to upload screenshots. And the Ovi store is so expensive to upload an app to, $50 for Ovi + $150 in certificate signing fees, so it doesn't encourage new developers to even try it out.
Also, I didn't mention Microsoft. Microsoft is a bit of wild card right now. I can't say much about it, except that LG who was supposed to have more Windows Mobile phones than anything else now has more Android Mobile phones than anything else. So Microsoft better get their ass into gear if they'd like to stay competitive in the Mobile arena.
I would recommend Android as it's a growing market. Android development is well documented and newbie-friendly.
You may find these threads useful too:
What mobile platform should I start learning?
https://stackoverflow.com/questions/598252/most-promising-mobile-platforms
Getting Started With Mobile Development
You didn't mention webOS in your original question, but it's worth a look. Has an open development model, like Android, but is based on HTML and JavaScript, so might be easier to get started with if you have experience in Web development.
Here's the Palm developer website
I'm currently developing a small non-commercial game for Android which is based on OpenGL ES. Except for some minor issues (slow as crap emulator being the biggest) I've really enjoyed it so far and would love to continue developing for it.
The question is: What are your thoughts on the future of Android as an environemnt for the game market? I read an article somewhere that said that the IPhone is the preferred platform for games, but since I don't own a Mac and won't bother with some complicated work around to get it to work on Windows I'm currently not interested in it.
So, what do you think? Is it worth spending alot of time (and potentially money) on a larger Android game project?
Short answer: it's too early to tell. Technically this platform is neither better nor worse for games developer than iPhone. Both have some support for 3d graphics, both have good support for multimedia - just the language differs ObjectiveC or Java.
The problem is not in the technical capabilities though, but in the popularity of the platform and purely business decision if Android is a good gaming platform. iPhone certainly is and many people are making money on it already. Will Android be as popular and will people be willing to buy the game for some money is a good question.
There is some difference Android and iPhone users and developers. Android is more open platform and more software is free (or even open source). For iPhone most apps cost 1$.
So the expectations in the audience is different. Android users expect more apps to be free and will (most likely) pay only when software you give them is really worth spending any money at all. iPhone users are willing to pay this $1 even to try an app out, after all they bought Apple product that was expensive to begin with.
Will that trend continue? Or will the audience types converge as more paid apps appear on Android market is an open question.
Finally -- there will be some millions of users of the Android platform eventually. So if you develop a kick ass game it will have its audience anyway. And if Android does not become a platform for games - that may even be beneficial for you, because you'll have no competition.
In my opinion it is worth it.
As #Marcin said, Android is more of a open platform then iPhone. And it's easier for developers to start with developing applications and putting them on the market.
But it means the market is populated with a lot of crap applications. And then, there are really shiny jewels too. They get good scores, are blogged/twitted about and are popular.
So, in my opinion, if you got an idea for a good game, go for it. If you put it on the market though, consider putting (at least a 'lite' version) in the free area (people in some countries are unable to even access the paid applications market).
the below part is completly my own opinion and you can simply skip it
There are some 'cool' games on mobile platforms that I love to play. As for me, there are few important things to watch for when developing such a game, that aren't this important in more 'traditional' gaming, on a console or PC:
it should be easy(fast!) to start and stop. If I play it at a bus, it could be just 1 stop. If it starts right away and then doesn't take 5 minutes to stop it, it's a +
one more thing about rapid start/stop. If I quit the game, then come back, give me a chance to continue where I stopped. No need to ask if I wanna save/load last game. Make it default, I can always start a new game if I want, can I?
controls - even that accelerometer-using games are fun at times, try to play it in a crowded place. like a bus. Touchscreen elements should be large enough so even the thick-fingers can use it. If they are - it's a +
for long time I was trying to realise why playing Bejeweled, or Puzzle Quest, was fun and enjoying, while many of their clones were simply irrytating. The diffrence was a tiny piece of user interface - in Bejeweled the pieces you got are both diffrent colors and shapes. They are much easier to "operate" (in a Bejeweled way) then, say, screen full of diffrent color triangles. If you make a game like this, make the diffrent pieces differ in many ways, not just one (diffrent shapes with same colors would suck even more; red triangles, yellow circles, blue squares and black skulls is a way to go - in my opinion)
it's a mobile device, connected to either WIFI or 3G network, you can use the internet to at least show/save highscores. But - remember - sometimes there's no network, we're in a diffrent country with roaming turned off or on the bottom of the ocean. Make the game work even there
Thanks for the replies!
I myself believe that the marketplace will gain momentum once there are more Android phones on the market, though my biggest fear is that it'll end up like Xbox Live Indie Games were 90% of the games are of below avarage quality, which of course affects it's reputation in the gamer community.
One thing I don't understand is why there isn't some kind of pre-approval before letting the application or game onto the market place. I understand that they want the people not the company to decide what should be allowed to be uploaded, but then they could let the users be the reviewers so that there is atleast some quality checks before release.
The iPhone has the advantage of a huge market (approximately 10x the android one at the moment) and even better most of those users have already given apple their credit card so they are ready to buy. Getting android users to spend .99 is hard. Depending on the game, you can make decent money (50-100/day) off of ads. The first is likely to change with more android phones and more android carriers(Verizon would be huge for the US market)
Technically Android is a bit slower (Java versus Object C) but with the NDK you can get decent performance. The iPhone has better opengl support (1.1 and 2.0 on the GS) while android is more of a 1.0.
There is an interesting article about Android as a games platform on Gamasutra.
Developing Games for Android
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am very interested in mobile application development. But which language or framework is more popular, useful and usable?
I know Java well. If you have any idea and/or experience, please help me to take my decision.
J2ME is much more popular than Android - many phones of many vendors (Nokia, Sony Ericson, Motorola, LG, Samsung and more) have it, and you can deploy application to them. The price is limited capabilities and no consolidated distribution channel (for the moment, Sun is talking about the Java Store).
On the other hand, Andriod has much more capabilities, its API is closer to the Java API, and it has more capabilities, but there is a limited number of phones. Also, you have the Android market as a distribution channel.
If you can describe what you have in mind, I can elaborate more.
Added Information
The J2ME market is quite large, but Android is rising fast - it is a true smartphone, a segment which has become more and more popular in the recent years. According to job trends, both are have roughly the same demand now:
I've dabbled in some J2ME programming, but right now I've written about 4 Android apps.
My observations:
The Android API is a lot of fun to use. J2ME is showing its age. For example, a JSON parser is built in. And you have access to SQLite. Android's SQLite access code is like an amalgam of lessons learnt from Ruby on Rails, REST and plain-old SQL.
In terms of deployment numbers, there are more J2ME apps than Android apps. However if you want to enter the smartphone market, Android is second in mindshare to iPhone (BlackBerry is reinventing itself, but its API is still looking like a J2ME++). Read this article.
The whole platform is open source. So learning it and mastering it is easy.
I think you're missing an important fact: Android is not only a platform, but also brings with it a fully fledged application framework which continues to grow and gets backing from some very big players (Open Handset Alliance). J2ME is just a stripped down version of the Java platform. That's a major difference.
Having worked with Android since over a year now, I can definitely say that is has grown into a very powerful system and decent tool support.
Only Android Can Catch the iPhone
There are something like 20 Android phones coming out before the end of the year.(*)
Networks like Verizon that ship only deliberately-crippled handsets will be hard-pressed to win sophisticated consumers. Their customers mostly make voice calls and text each other, to get fancy they might run Song ID or VZ Navigator.
I think the issue is: which phone owners actually d/l and use the apps? The walled-off Verizon customers, not so much. Right now, the action is in the iPhone, but I think Android might catch up.
(*) Here is just one.
I have to agree with others on shying away from J2ME development. I have a Motorola RAZR V3xx that I've used for a few years. It is as standard a J2ME-supporting phone as you're likely to get from most carriers. I decided to look into doing some J2ME development for the phone to give myself some helpful utilities.
Long story short, there is a reason you pretty much only see games on J2ME phones. Unless you are willing/able to shell out big bucks for signing certificates, you cannot even access the most useful APIs available on the phone. Things like File IO, PIM (contacts, calendar), Bluetooth, etc. are simply blocked unless you get your application signed using a carrier's (AT&T, T-Mobile, Sprint, Verizon, etc.) special certificate. And the cost of these certificates can easily exceed hundreds or thousands of dollars. Putting this simply out of the range of your average hobbyist.
I could go on, but a couple of sites have covered this topic in much greater detail Here and Here.
For me, this pretty much means I will be targeting the Android in the future. The iPhone is also a good place to be targeting. The current state of J2ME on handsets here in the U.S. is just not worth my time for pet projects. Which is disappointing, as most of these phones are capable of doing many useful things otherwise.
It depends on what you mean by 'popular'. If you are counting in terms of installed handsets, then J2ME wins hands down. As far as current installed handsets, Android has few mobile phone companies and only recent mobile phones (whereas J2ME has been around for the last six odd years).
However, that doesn't make working with J2ME a nice-to-have. Sadly, each manufacturer cripples it in some way, and not all phones with the J2ME badge are equal; some are more equal than others. MIDP, MIDP2.0, CLDC, CDC ... the list of acronyms goes on. And when you buy a phone, it has 'Java enabled' without actually saying what it is that it supports, so even the customer doesn't have a clue.
Despite its large installed base, J2ME remains fundamentally unpowered for the world's current generation of mobile phones; the upgrade path is usually non-existent (though it's the manufacturers to blame for that, unfortunately) and you can't even do things like access Bluetooth or contacts in any useful way; though extensions have been proposed for J2ME, they've never really lived up to the expectation of write-once-run-anywhere.
Whether Android goes down this route as well remains to be seen - the biggest concern is manufacturers are trying to 'do their own thing' (e.g. Motorolla's BLUR UI) which will further fragment the market.
Lastly, don't forget that it's in the handset manufacturer's interests for you to throw away your old phone and buy a new one every year (or two). Support, bug-fixes, and generally upgrading your old phone's software, though technically feasible, never happens. I had a P990, and despite a few rounds of updates, it remained as buggy as hell (which is why I ditched it for the iPhone when it came out).
So, from a programming perspective, Android is better than J2ME. For reaching many handsets, J2ME is better than Android. For general user interface and power, choose an iPhone.
Android and J2ME aren't exactly similar in their scope as platforms, in a way, it's like comparing apples and oranges.
When we talk about Android, we are talking about full-blown mobile OS, with much more extended capabilities than J2ME. It could be used for pretty much everything you can think about - system utilities, social network services, location-based apps, games, etc. Android has also richer UI kit and lots of available source code to learn from.
In Android you have access to many APIs, designed to be used in modern smartphones, and these APIs are being refined constantly, while J2ME has started to feel aged, and is concentrated mostly on graphics.
The penetration rate of J2ME is currently bigger than Android's, and by bigger I mean much, much bigger, but business analysis doesn't end just with number of handsets of the given platform.
If you have idea for a great app, you'd better do it for Android and/or iPhone OS - it will be easier for you and you'll be reaching to users that are more likely to need such app, and that are more likely to pay reasonable price for it.
Overall, I would recommend to start with the newer platform, even if only because it would be more interesting and a better learning experience for you.
While there is no shortage of 'feature-phones' supporting j2me in the wild, I suspect third party applications get very little market 'traction' because the users aren't looking to install new software on the phone.
Android is a breeze to develop for. I think you should try it.
There is no harm in getting the SDK and experimenting for a few hours..
J2ME is very popular because almost every phone can run these applications.
Android on the other side has just few phones and netbooks supported, but Android API/SDK is more powerful than J2ME. Android phones come with great hardware and you'll have the opportunity to work with all these "cool" touch screens, gps, accelerometers, etc. It's still in development, but I think it has a future.
From my point of view, Android is more and more better than the J2ME
Learn Android and enjoy... we have lot of fun while developing the Android apps
J2ME apps look and feel and development environment not effective compare with the Android
J2ME is the most popular. Because many mobile phones have a support for J2ME. J2ME's main advantage is that it belongs to the Java family, it is open source and widely supported by various kinds of devices.
Many mobile phones and other devices support J2ME due to its simplicity, easy to implement, etc.
The J2ME is the base for Blackberry,Android,etc.Because the others (other than J2ME) are developed after the J2ME.After eliminating the tough concepts in j2me,using some j2me concepts they build their environment like android,blackberry,etc.
J2ME is very old .It have many drawbacks,limitations,etc.
These drawbacks are overcomed in the latest technology like android,blackberry,etc.
J2me is good .It is old.It have many disadvantages,etc
Android overcome that disadvantages.Android keep on growing
The general java feature "platform independent" is failed sometimes,some scenarios in J2ME.
Android is new technology.It have many features,etc than J2ME.
Developing an application for android devices is simple,easy,etc.
We need ot get the pay liscence for developing application and deploying (applications) into the device.
The android SDK is obtained by free versions.
My opinion is Android is better than J2ME.