Developing for mobile

Before starting to read this post, I have to warn you that I zapped so much informations about mobile development because I just wanted to firstly focus on my opinion about the differents ways to make an app (not a nap !)… I will never mention Windows Phone Development not because I don’t like Windows, just because I never did such apps for this OS.

Introduction

Nowadays, developping for mobile is… MANDATORY. Almost.

Whether it is for a website or a simple software, the companies needs to be responsive and to fit to the mobile generation. Indeed, if you’re not going to make an application, you may think that mobile developpement is none of your business and this is so wrong since if you need to create a web site, it has to be responsive…

why

Smartphones, tablets, smartwatches… The ways to communicate and to interact with each others have changed and keep going to change…

Anyway, today I’m here to talk about developing mobile applications not about developing responsive web sites.

android_vs_ios Android or iOS ?

And by developing mobile applications, I’m talking about Android and iOS development (mostly Android)

The differents ways…which one is the best ?

The classical way

Either on Android or iOS (and of course Windows Phone… ahem…), you can create your apps with « native » languages. This is called native development. I personnally think that using the term « native » is so wrong in so many levels within the context of developping Android app with Java. Actually, if you want to go really deep in native development in Android, you shall use C/C++ and then you’re really doing native…

Anyway, if you want to take this path, you will have to develop for each platform in differents languages :

  • Android : Java with the SDK or C/C++ with the NDK
  • iOS : Objective-C or Swift (since 2014)
  • WP : C#/.NET

Hybrid development

When the possibility to make web app appeared, it made cleary possible to develop with simple languages as HTML, CSS and JS. But why settle for the web app development ? Then came the hybrid development. The idea is simple : make a web app, wrap it with some cool stuffs (to allow the access of the smartphone’s functionnalities for example) and at the end « compile » to obtain a native app. A quick search with your favorite search engines will give you the most used hybrid frameworks.

Outsiders

I called them outsiders because if they offers you the possibility to develop in native language (C++ or C#), it doesn’t really work like native developpement and doesn’t offer the same opportunities. Those outsiders are Qt and Xamarin.

My feelings about that

Once upon a time, a programmer discovered Android Native Dev…

Three years ago, I learned on an expedited time frame the mobile development for Android during my studies. This year, still in the same context, I have the opportunity to work again on it and… wow… How things have changed ! Indeed, I should have expected that changes but… still !

I’m sad to hear that Eclipse plug-in (made by Google) called ADT has been abandonned in profit of a new IDE called Android Studio, developped by JetBrains. If you didn’t know, JetBrains develops a lot of IDE and each IDE are specific to a language e.g IntelliJ are made for Java development, PHPStorm for PHP dev, and so on. As all the IDE from JetBrains, Android Studio has a obviously similar interface (same editor, so same engine, etc.) but is really made for Android development. The nicest feature improved and given in this editor (even if the preview mode sometimes doesn’t work well) is the UI design mode with templates quickly available to get a nice interface quickly and be able to devote fully to the code. By the way, when you create a new project, to keep you focused on coding and not designing, you can choose the pre-made templates…

This is nice but it doesn’t make forget the heaviness of work : on one side the Java programming and XML coding on the other side… And also trying to not lose yourself in the different IDs of each elements… To be honest, developping in Java + XML sometimes upset me because it is tedious… Not difficult but tedious…

angry Me after a day of coding… one page of an application

Well, on the other side, native development in this context is great, you can focused on the code and not on the design or compatibilty problems. 🙂

I’ve just started iOS class…So… I will update or write another article for the iOS… Sorry 😕 (But I think that it is not so different than Android)

The biggest (and obvious) problem is still the obligation to develop in differents languages for each OS… And if you’re affraid to code redondantly for each OS… There’s a solution : Hybrid App.

Spirit of Webdesigner

The Motto of Hybrid Dev is quite a reminder of Lord of the Rings to me : One language to every OS. To be honest, I’ve invented this motto while I was writing this post, but it is clearly the aim of hybrid development.

As I always loved developing web sites with the magic trio HTML/CSS/JS, it is a waaaay easier for me to create some stunning apps ! Not too long ago, I chose to develop some projects with Ionic Framework which let me more freedom to code and design the app. For example, with the CSS, I could easily have customized buttons. Using Ionic brings you AngularJS and Cordova which means that you can make app easily, quickly and less expensive (in money but also in time). I could make you a pretty prototype within three hours ! 😮

So the difference ? What you want to do ! Because there are some limitations with the hybrid development… Aaaaand this is the perfect moment to have a glance at the third wheel : the Outsiders. tadaaaam

Cute

I had a glance at Qt (pronounced « Cute »).

Qt is mixing everything (C++, JS, QML…) and the result is quite nice ! You can develop in C++ with some style in QML, or just do your code in QML, or QML and JS… Everything’s possible. It is designed to be fully multi platform ! (not only Android, iOS but also Desktop software…). QML is a genuinely language, simple as ABC.

I did not practice a lot until today, but I’m pretty seduced by Qt. If Ionic won’t fit to my expectations, I’ll start to work with Qt.

The weak point of Qt (to me) is the size it takes on the hard drive (almost 10 Go…!). Beside this weak point, don’t forget that Qt exists for a long time as it has been originally created to make GUI with C++ and Python (PyQT).

There is also Xamarin, recently bought by Microsoft. Xamarin is based upon Mono (at least it was at the beginning) and it uses the C# language. I don’t know if it is interesting, but it is the actual trendy software to develop cross-platform applications…

Of course there are plenty softwares, editors, etc. such as Windev to develop cross-platform app… But I don’t think I’ll try all of them !

May this article will help you in your Quest of Making A Stunning App !