Related
I'm getting a new phone and I am looking to do some programming on it. Python is my language of choice, so I was wondering what phones have support for Python interpreters.
I know, I know, "you program too much already", yeah my girlfriend says that all the time too, but I can't help it.
I'll probably do a lot of on-the-go style simple debugging, and I'd like to also get into programming some simple custom apps to streamline my smartphone workflow.
I see there is support on Android through SL4A and Py4A but I couldn't figure out which version of Python it resembles. I also see that PyS60 on Symbian is available, based on 2.5.4. Also, there's a string of Python-iPhone threads starting here which were very informative but not very current. Lastly I found a cool youtube video of a guy doing something geeky in python on his iPhone.
Yes I am still researching on my own but I figured someone on SO might be able to give me a pointer in the right direction. Which of these options is halfway decent?
Does anyone know which of these is easiest to get started with? How about which is most powerful for development using the native smartphone capabilities? Anything
With regards to Py4A, in view of discussion at the link below, my guess would be Py 2.7.1, 2.7.2.
http://code.google.com/p/python-for-android/issues/detail?id=10&q=python
The Nokia n900 comes with Maemo 5 Linux, and can easily run a full Debian Linux for ARM. It's not locked down in any way. I have one (in the shop, really hope they can fix it) and it's great.
Python? Basically like using it on any desktop Linux distribution.
I'm just beginning to teach myself Java coding, in hopes of building a few blackberry apps.
I assume I should:
learn the basics.
buy a blackberry app building book - learn the ropes
acuqire necessary software - here's where my questions begin...
Do I use Eclipse as the IDE? What about the Java API? Remember, I'm a complete newb, so my jargon may be somewhat...well...wrong. But, I think these two peices are initial steps, no?
And most importantly, should I even be trying to code on my Macbook Pro? Or should I stick to my IBM compatibable, and learn from there?
Thanks for your help!
I'll answer each of your questions separately.
Yes, you have the basics of how you should learn. More than anything, it is important to understand the concepts of the Java language before you go too far in development because understanding those concepts can be the difference between a successful application and a failure (which will, ultimately, discourage you and perhaps cause you to give up).
With respect to what IDE you can use to code, you can use Eclipse (my personal favorite), NetBeans, or, just a notepad. Oracle's Java Development Kit (JDK) is what provides the Java compiler that you actually need to build your code and get it to run. However, a solid IDE can ease the process as well as provide a large number of features to make your development much easier.
It does not matter where you develop. A major advantage of Java is that it is platform independent. You can code Java on a Mac and it will work on a PC and it will work on Linux, etc, etc. All you need is the proper JDK to build Java for that specific platform. So, don't worry about that and work on the machine that is best suited for your needs.
You may want to browse around StackOverflow for a bit and read up on some of the other beginner questions on Java. Other than that, I would highly going out and getting a good Java development book and reading the tutorials that are available online.
Hope that helps get you started. Good luck and welcome to StackOverflow!
Blackberry Development on Mac OS X
The new eclipse blackberry plugin for OS X does not have a simulator so if you want ot debug you will need to hook up an actual blackberry(or run the simulator from a windows vm).
Blackberry uses Java ME and some rim classes(net.rim namespace).
Documentation is here http://www.blackberry.com/developers/docs/6.0.0api/index.html
Note that just because a class with the same name as a regular(java SE) class is there does not mean it has all of the same functionality.
Also why do you want to develop for the blackberry specifically?
You can use Eclipse as an IDE, it would certainly do the job. I'm partial to Netbeans myself, and it would do the job too. XCode is Apple's own IDE, and from what I hear you can do Java development with it (it's been a while since I last used it). Finally, I hear from other sources that IntelliJ might be worth considering.
Particularly important to note is that all of these work fine on a Mac, so there's absolutely no need to move to a different platform (Windows, etc) unless you want to. I know from experience that both Eclipse and Netbeans both work on a PC, so you could consider those if you do decide to change to PC. XCode isn't released for PC on the other hand. I don't know about IntelliJ.
As for the Java API, all of these IDEs should install a copy of the Java Development Kit (JDK) when they are installed. This includes all of the API files, compilers, tools and documentation you should need to get started.
I'm in the middle of development of a client-server "socializing" that is supposed to run on several mobile devices. The project is pretty complex, involving networking, exchanging media, using geolocation services, and nice user UI.
In terms of development efforts, technical risks and extensibility what is the best platform to start with? Taking into the account that the goal is go "live" as fast as possible with the mobile version. And second goal is to cover most users (but first is more important).
iPhone (iPod iPad)
Android
BlackBerry
Java ME,
Symbian
I realize that there are limitations on every platform, and there are different aspects to take into the account (for example iPhone has better developer's community then Android, J2ME runs in a terrible sandbox but covers most devices).
Please share your pros and cons. I have the experience only with J2ME, unfortunately I can't evaluate other platforms.
If you're looking at native applications on the platforms you list, then the development effort required in order from least to most is:
iPhone
Android
Blackberry
Java ME
Symbian
Development effort is largely governed by language/libraries, tooling and fragmentation. Hence iPhone wins (good language & libraries, excellent tooling, little/no fragmentation). Symbian comes last (C++ with limited libraries, poor tools, large fragmentation). Android beats Blackberry on libraries and fragmentation, and Blackberry beats Java ME on fragmentation.
The counterpoint to this is market size, especially among your target user base - Java ME reaches far more devices than any other platform, whereas the Android installed base is still the smallest of the 5.
There's no one right answer, but if reach is important then Java is a good place to start, if time-to-market and user experience are the keys then iPhone makes sense.
It's also worth looking at how easy/difficult it would be to port across to other platforms. There are various cross-platform libraries around such as Airplay or J2ME Polish that might reduce the costs - provided you can implement your application on the cross-platform part.
I'd like to speak up for Maemo/Meego(Nokia's/Intel's mobile Linux). While it is in a state of transition and currently Maemo 5 has only one good phone(and a couple of cheap Chinese ones), but I feel that it will soon be big(I like many people believe that Meego will be Nokia's high end strategy and Nokia is the biggest phone maker in the world). Plus the N900 is the coolest phone around.
Also their it basically an open Linux device (pretty similar to standard desktop Linux). The ide QT Creator is great and cross-platform(comes with embedded visual designer and nice documentation broser) but you don't have to use it, there is some support for using your own text editor or ide.
There is no sort of signing key nonsense(I did a student project for the blackberry and have been quite annoyed by keys). Other things I didn't like about the blackberry: windows only eclipse plugins, our team had a lot of trouble figuring out how to add third party libraries to blackberry COD archives . Also some of the Classes are somewhat sparse in a lot of ways especially String/Char, probably since its ME based, I also didn't like the file read/write apis, it felt somewhat awkward, possibly since blackberry apps only recently got the ability to store files(before you could only store/retrieve objects to disk via the persistence layer)..
The preferred Languages are (Gobject C currently but less so for Meego) , Qt flavoured C++ and python. There libraries are nice and the qt ones are especially well documented. Since its a tiny linux box you can have on device debugging (there is also an emulator).
Note I haven't developed anything for Maemo/Meego but I've read a lot about and just fell in love.
I think that the best solution might be to start with a smartphone optimized web site. A native app can provide a richer interface, but a well designed web app can come close and will run on any device.
Have a look at the WPTouch for an example of a very good phone optimized web site.
In line with Roman A. Taycher, I'd like to raise my voice for windows Mobile/Windows Phone. It's has a large installed base, it has the tried and true Visual Studio toolset to develop with, it has the best emulator of them all (it actually emulates the ARM instruction set - you hear that, Apple?), and you can leverage your Win32 experience.
MS-haters - please don't bother responding. I've heard them all.
A cross-platform runtime such as Qt or HTML5 are good bets and are portable.
Qt supports many platforms including Symbian, Meego, Linux, Windows etc. It is highly regarded as one of the best programming frameworks around currently.
Qt creator is also a very highly regarded IDE.
HTML can be accessed on nearly everything of course and can there are plethora of tools out there.
While applications natively developed for a given platform typically win in terms of platform UI consistency and performance, you could try going for one of the available multi-platform frameworks, such as Rhodes (just to name one). Personally, I do not have any specific experience with Rhodes and only learned about it a couple of days ago (having a closer look is still on my todo list), so please judge the user experience that the framework offers on different devices on your own.
It sounds like you need Mobile Community Framework (MCF). It is cross-platform framework to develop network-centric, location- and proximity-aware applications on all modern smartphone platforms (iPhone, Android, Blackberry, Symbian, WinMo - almost all you mentioned, except J2ME). It provide native binaries for all these platforms. With MCF development time can be reduced, as you don't need to code all this network stuff by yourself, but you can just use simple API to send any amounts of data across enrypted connections, via Wi-Fi ad-hoc mode or via special proxy-server.
More info at http://www.uvamobiltec.com.
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 11 years ago.
I have very little idea about mobile platforms, though I am interested to program for them.
Would you please compare J2ME VS Android VS iPhone VS Symbian VS Windows CE.
I would like to know:
which one is better
which one should I choose and why
if there is any VM technology to test the programs
is there any IDE, debugging facilities?
Personally, I would like to code for open source, but any suggestions are welcome. I have preliminary knowledge on Java. I would also like to know, if there is anything else that you can recommend.
There's several of these questions floating around on SO already... the most popular seems to be this one: what mobile platform should I start learning?
Quicky from the accepted answer over there (I edited a bit):
I think 3-4 platform have a future. But depends what platform do you like and how you like freedom in distribute your applications :)
Windows Mobile
C++ or .NET
free distribution, just like normal applications or through market
You need a Windows PC to develop
proprietary
Android
Java
Open Source
through Android Market ($25 one-time fees) or like normal applications
The platform is completely open source
iPhone
Objective-C or Java (Developing iPhone Applications using Java)
through iPhone Market ($99/year fees)
You need Mac (Mac OS) for development
proprietary
Java
J2ME or JavaFX
largely open source
My personal thoughts are: Symbian's dead; Windows Mobile will die, but take a long time; Android will become the standard in the next few years; iPhone will remain trendy in coming years, but NOT take be the biggest player; Pre/WebOS will maintain a niche market, but not be wildly sucessfull, Blackberry will decline, but still be around forever. I'd probably put my time/money into Android or iPhone at this point.
You can find everything about J2ME VS Android VS iPhone VS Symbian VS Windows CE in the below survey image:
Admittedly I'm biased, but points in favor of Symbian are:
Is open source
Has by far the largest marketshare (45% or so) of smartphones
Runs on cheaper hardware than Android and iPhone (means volumes will go up significantly faster)
Runs Python, Ruby, Java and Web Runtime Widgets
From Symbian^4 will have a complete Qt stack.
For maximum portability among smartphones, I recommend Javascript, HTML, CSS. It's the only way to run on certain systems you don't mention (such as Palm Pre and Google's ChromeOS), and (with suitable restraint in using advanced features, if you can) it's the one and only way to write your app ONCE and have it run on an incredible variety of platforms. Especially with some server-side support (unless your volumes are huge you can get that for free with Google's App Engine), it's quite a powerful and effective solution for many needs.
Otherwise, you need Objective C and Cocoa for iPhone (excellent technologies, really well supported by Apple esp. if you have a Mac, but won't help for other smartphones AND nothing else besides ObjC or JS will run on the iPhone), etc, etc.
I think iPhone is ruling the hardware and sotfware development,android is interesting but too new,symbiam is dying because Nokia,windows Will survive cause of money with bull€&€& but they will. iPhone is too restrictive and damn expensive but is thecoolest now.Finally i think that for the NeXT 2 years iPhone will reign.
Windows CE has tottaly caputed OS market for rugged devices, companys like motorola, intermec, Dolphin (Honeywell).
Plus Windows CE and Windows Mobile has an enterprise grade database platform.
When comes to spending money, companys buy $1000+ plus devices and build real applications on them.... I see Windows CE being around for a long time and the chart above only show smartphones and no other device, Android and CE can be on in TV's, running gaming system or anything eles.
A detailed market research about Android and iPhone here
and smart phone market share in first quarter of 2010:
(source: nielsen.com)
Take a look at PhoneGap and Appcelerator Titanium if you want to develop for multiple mobile platforms. They both allow you to write programs that run on both Android and iPhone, and PhoneGap also has BlackBerry support. PhoneGap programs are allowed on the Apple App Store, but I'm not sure about Appcelerator Titanium.
My response may be late, but here goes:
I've been exposed via work and academia to both the iPhone and Android platforms for the last year. I find two glaring flaws with both platforms that will limit, if not prohibit, viable entry into the biggest mobile market -- the business enterprise. Oddly enough, the flaws are opposite sides of the same issue: enterprise compatibility.
iPhone - Because Apple exerts ultimate control over what app makes it to the App Store, AND the app must be available to anyone once approved, IMO, iPhones will never become the defacto business mobile device. I cannot envision a business that would willingly expose it's source code to Apple's scrutiny. Nor would I want my "internal use only" enterprise app available for download by anyone in the world. I find that scenario laughable.
Android - OTOH, because Google (and now Oracle, too) exert no control whatsoever on app development, anyone who wants to, regardless of ability, can slap any old app on the App Market whether it works or not. I would not want my app lost in the confusing mix of slap-dash, teenage tinkering, malicious mongering developers. Would you?
However, the tie goes to Android because developers are not compelled to submit their apps to public access in order for them to be distributed.
Any other platform is either niche or passe'.
That's my take on the issue.
RE: Is there any IDE, debugging facilities?
For Android development the best option is to use MOTODEV Studio, based on Eclipse platform. Is an integrated development environment with Eclipse 3.5 and Android Development Tools (ADT) plus automatic download and configuration of the latest Android SDK. You can also test applications on an integrated Android emulator within it.
Java ME has the Java Verified Program and the Specs all come from the Java Community Process (JCP) far more advanced and vendor neutral than the others.
You can also take a look at iSpectrum . With this you can code in Java for iPhone, so you can reuse a lot of your code produced for Android and/or J2ME, for example.
Android would rule the market few years down the line, just because its an open source. No person would want to spend much on apps in future . Iphone till date survives because its trendy to use Iphone(as they say!) because of its UI and people are willing to spend on Iphone apps, so i must say its not far to see a mobile platform(Android) which is trendy, easy to use, free et al.
I am new to J2ME and what I have now is Netbeans 6.7.1 IDE. Is there any basic guide for developing Mobile applications in Netbeans 6.7.1? Please provide me the links.
Netbeans.org itself has great tutorials for mobile development in Netbeans. And that is what you need:
http://netbeans.org/kb/trails/mobility.html
For examples this is a very good Quick Start for Netbeans J2ME development:
http://netbeans.org/kb/docs/javame/quickstart.html
I think this book best source for J2ME with Netbeans:
Kicking Butt with MIDP and MSA: Creating Great Mobile Applications (The Java Series)
Book Description:
The release of MIDP 2.0 and the introduction of the new Mobile Service Architecture (MSA) are generating momentum for the Java ME platform. As more and more Java-enabled mobile devices become available and more service providers become open to third-party development, the demand for customized applications will grow dramatically. Now, there's a practical, realistic guide to building MIDP 2.0/MSA applications that are robust, responsive, maintainable, and fun.
Long-time Java ME author Jonathan Knudsen offers real solutions for the complex challenges of coding efficiency, application design, and usability in constrained mobile environments. Experienced Java developers will master MIDP 2.0 and MSA programming through clear, carefully designed examples. Downloadable code is available for both NetBeans Mobility Pack and the Sun Java Wireless Toolkit. Kicking Butt with MIDP and MSA's wide-ranging content covers:
Pushing MIDP's limits, and exploiting MSA's full power
Using MIDlets, Forms, commands, core classes, and invocation
Building effective mobile user interfaces
Designing graphics with the Canvas, the Game API, SVG, and 3D
Providing storage and resources: record stores, FileConnection, and PDA PIM
Internationalizing mobile applications
Networking via WMA, Bluetooth, Web services, and SIP
Parsing XML documents
Implementing audio and advanced multimedia
Securing mobile applications with SATSA and the Payment API
Building advanced location-based applications
Designing applications for multiple devices
Creating end-to-end mobile application architectures
Tell what platform you are developing on so that the tools available for you can be given.
Also, you most definitely want an emulator so that can test your applications directly on your computer (Saves time).
Honestly, can't give much more advice than to know java well and to use google + stackoverflow. Those are what I did and ended up developing a commercial app in j2me just fine.