The following are some of the technologies I use for building apps.
iPhone Objective C
Objective C is the native language of Apple computers and iPhones. Objective C is closely related to one of the earliest programming languages, the C programming Language.
Below is a typical section of code written in Objective C:-
CCModel *model = [CCModel getModel];
[model setIsBusy:NO];
[self updateTextFields];
Objective C is fast and flexible. Apps created in Objective C are efficient and very responsive. Objective C also allows easy intermixing of Objective C code with C code or C++ code, which allows developers to take advantage of the vast library of C and C++ sourcecode available on the Internet.
Android Java
Java is native language of Android phones.
Until Android, Java was mainly used to create desktop or server software. Large corporations often oscillate every few years between Java and Microsoft C#, depending on the preferences of the IT director.
Android changed this, by making Java sexy again. To adapt Java to a mobile phone environment, Android extensively redesigned some features of the language, especially the part of the language which controls the device screen.
Below is a typical section of code written in Android Java:-
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.desirableapps.DesirableApps.StayAwakeService");
context.startService(serviceIntent);
You can mix other languages, such as C and C++ with Java, but it is more difficult and less intuitive than mixing Objective C with Java. On the positive side, the popularity of Java means there is a lot of useful Java code available from the Internet, which reduces the need to use other languages.
PHP
PHP is a server language – I use PHP to create server code, for saving shared data, or for harnessing more powerful server computation power, when a task would be too slow if performed on a mobile device. PHP is fast, flexible, secure, well supported, easy to write, and easy to extend with components written in other languages, such as C++ – everything you want from a server language.
Below is some typical code written in PHP:-
validateField("email");
validateField("password");
if (strlen($status)) {
$reply = array("status" => "Missing Fields: " . $status);
$output = json_encode($reply);
echo $output;
return;
}
MySQL
MySQL is a relational database engine. Relational Databases simplify storing and retrieving data, by allowing the complexity of describing the retrieval or storage operation to be separated from actually using the data. Before the advent of relational databases like MySQL, code and data access were intertwined. By reducing complexity, relational databases dramatically improved software development efficiency, leading to the development of faster, more reliable and easier to maintain software.
Below is some SQL code used by MySQL:-
select password from Users where username = 'fred'
Why MySQL? Because its free, and does a good job. MySQL, together with SQLite, today dominate the database scene, at least outside of the corporate world. Large corporates still tend to use older databases such as Oracle or SQL Server, which offer advanced clustering capabilities (joining many database servers into one super fast database). But if you don’t want to pay for a team of database administrators, and just want something which works, then MySQL is a good choice – which is why I use it.
SQLite
SQLite is a very lightweight relational database engine. Unlike MySQL, SQLite does not need separate software processes to run – everything can be embedded in the software which uses the database.
Below is some SQL code used by SQLite (strangely similar to the MySQL code):-
select password from Users where username = 'fred'
This makes SQLite very suitable for in-app databases – databases used by the app for storing local data, or for reference book apps, in which it makes sense for a lot of data to be stored in the app, to give a good response time when you are searching for it.
SQLite can be used as a server database, but in my opinion, in most cases, MySQL is the better choice of server database. MySQL is better at handling simultaneous connections from a lot of different users.
Phonegap
Phonegap is a cross platform development language. Essentially it turns every mobile app into a website which lives on the phone, albeit with a set of useful extensions which make a Phonegap app work far more like a normal app than a website.
Below is some code written in Phonegap:-
MyKeyboard.addListener(function() {}, restoreScroll);
RemoteNotifications.register(handleNotificationCallback);
loadDiv( 'signup/welcome.html', 'fade', function() {
setTimeout(function() { updateRemoteToken(); }, 1000);
setTimeout(attemptLogin, 500);
});
Phonegap can be a real cost saver – instead of having to write different versions of the same app, for different types of phone, with Phonegap you can write your app once, and have it work on any phone with minimal changes.
The disadvantage is Phonegap is very slow, compared to Objective C or Android Java, and it isn’t very good at searching or displaying large lists of data. Too often when using Phonegap for development, I find you have to compromise features of your app to fit within the limitations of the Phonegap environment.
For apps which don’t need to push the phone to its limits, such as product brochure apps, Phonegap can be an excellent choice. But for the vast majority of apps, in my experience, the disadvantages outweigh the benefits.