Smart Phones - What to get

Community Forums/General Help/Smart Phones - What to get

Nate the Great(Posted 2012) [#1]
I am looking for a good smartphone, preferably an android of some sort but I have no idea what to get. I can pretty easily compare normal features like speed and memory but I also would like to be able to write programs or apps for whatever I end up getting and I have no idea how to know which phones support writing apps and which ones don't. What languages (besides monkey) do people generally use to make apps for android and other smart phones? I am considering buying monkey but I also want to learn some Java and see all my options before I make any purchases.


So in short:
1. What smart phones are the best for dev testing?
2. What programming languages are my best options?
3. Pros and cons of different languages?
4. Does java work on smart phones?


Jason W.(Posted 2012) [#2]
I have not had time to develop on android, but I'll try to lead you in the right direction.

Go to www.xda-developers.com and post your questions there. This is the most active site android development.

Good luck!

Jason


Yasha(Posted 2012) [#3]
What programming languages are my best options?


Unlike PC development, Android and iOS are both really designed with the assumption that you will use the languages and frameworks provided by the developers (OK, true of PC too, but with more emphasis on phones).

This means that if you intend to work on Android, you must have a basic reading knowledge of Java, and if you intend to work on iOS, you must have a basic reading knowledge of Objective-C. Otherwise you simply won't be able to interface with what's provided.

You still can use other languages - I'm not terribly up to speed on Android development, but I assume porting any JVM language isn't too hard (e.g. you can use Scala to take some of the pain out of Java), and iOS projects can include static libraries compiled in advance, so for instance it is possible to write native Haskell code for iOS via GHC's LLVM backend. You have to really want this though, as the toolchains aren't designed with it in mind.

Even if you use a high-level->high-level language compiler (like Monkey), unless you want to be very limited in what you can do (e.g. produce a 2D Monkey game without the native UI), you still need a working command of the host language in order to link your code into the app framework (e.g. if you wrote an iOS app in Gambit Scheme, you'd need to integrate the C code manually because the Gambit compiler can't export Xcode projects).

So...


Pros and cons of different languages?


...Objective-C and Java have an unfair advantage as the platform languages you have to be able to use for at least a thin wrapper. Other than that, it's the same question as it is for PC.

So: if you intend to make a UI- and media-heavy app, suck it up and write a thin shell of app logic in the platform language and put most of your effort into the media/UI layer. If you intend to make a logic-heavy app (scientific calculator? I don't know), you can probably afford to look into alternative toolchains for a language that suits your needs, and write the large quantities of self-contained logic in that. But it won't be worth finding an alternative language unless you actually get to do most of your work in it; otherwise, you'll spend more time gluing components together than working in your language of choice.

Prepackaged solutions like Monkey don't have this problem, as long as what is packaged suits your needs. Monkey isn't the only tool available in this category (although offhand I couldn't name any others, except my own which isn't available yet).


Does java work on smart phones?


Android is powered by Java (or at least, a modified JVM). You can also use native code if you like, but it's not necessary, and officially not recommended (many people do though).

iOS does not officially support Java at the moment.

Last edited 2012


Captain Wicker (crazy hillbilly)(Posted 2012) [#4]
What programming languages are my best options?

AGK (App Game Kit)
http://www.appgamekit.com/

Last edited 2012


Nate the Great(Posted 2012) [#5]
Thanks for the link Jason W, I will check it out

@Yasha, I have really wanted to start getting into Java for a while but have kept putting it off so if Java is the recommended language, then I have no problem with that! I have been looking for an excuse to learn Java anyway! I guess Java it is for now at least.

@Captain Wicker - I have never heard of AGK but it actually looks like a nice piece of software, It looks promising but I would have to do a little more digging before shelling out $60 for it.


D4NM4N(Posted 2012) [#6]
1)
For iOS you should have a phone and tablet respectively (not so important which ones because they are quite samey, however 3x is getting dated) although ipad can run iphone apps The emulator is quite good at simulating the others, although we have had different results between the emulator and real devices, but on the whole the emulator is very good.
For Android, I would recommend getting a med-hi performance phone running 4.0 for your high end test device (and main phone of course ;) but also I would recommend getting a second hand one with 2.2 as your low end test. It is also handy to have a cheap tablet like a nexus, archos or kindle too. (PS Android 3 is ONLY for tablets, so for phones it goes 2.2, 2.3, 4.0....etc. Also, 80-85% of android world is now >= 2.2 and it moves all the time so i would not even allow <2.2 to see your apps)

I would say try both, start by buying some cheap crap devices from ebay or a mate who has upgraded and get going. While to be a successful android developer you should have at least 3 very different devices to test with, i would say the cost and hassle of android is a lot less than that on iOS, although if you are interested in returns then iOS tends to net a good app between 25-40% more depending on strategy than on android.
Start collecting :D
As a point of note, for iOS you also need a fairly decent Mac. We as a company have spent about $22000 on iOS dev as opposed to about $6000 on android. (iOS price is hiked massively simply because of the cost of the essential macbook pros). Of course those prices are retail prices, we get the vat back of course.

2) iOS is C/objC only, Android is Java/C++, however there are many programs and translators like monkey, unity, titanium etc that allow you to code in other languages (but they still need to translate it to native code). The downside of this is compiling-running on device is much slower and on some can make debugging difficult by being reduced to using a log or console echo.

3)
In my opinion obj-c is not nice and is different from everything (think what english is to german -vs- english to chinese). Java is a nice beginners language as it is high level, very similar to MAX in many ways, but also gets you used to using libs, workspaces, build paths etc.. C# is almost the same thing as Java, except slightly more organized. This puts practice into play if you ever want to go lower level to C / C++ etc.

4)
-Android yes, (and seamlessly).
-iOS. no*
-Windows mob, yes.
-Blackberry yes.
-Dumb-phones yes, (those old mobiles often have lightweight JVMs for simple games).


*EDIT: An iOSJVM exists but the man from apple.. he say no!! >:(

A little bit of searching reveals some tools that allow Java to Objective C or C translation, the output of which does appear suitable for building iOS apps in Xcode.

-so basically no.

Last edited 2012


Nate the Great(Posted 2012) [#7]
Thanks for the info D4NM4N, It appears Java is by far the best choice for android specifically but cross platform packages like Monkey and Unity and AGK seem to be on the rise. I suppose I will start off with Java at least for now because I am taking a class on it next semester anyway! Might as well try to stay a little ahead of the curve.

I wonder if people will be able to make games for google glass... It would definitely be harder without the use of a physical interface