Swift 4

This change is separate. Everyone who has already experienced the feeling of “In Swift 2 it was and is missing in Swift 3 ?!” can feel deja vu, but now changes are expected, rather, for the better.

So:

  • Applications written in Swift 4 will become smaller.
  • Swift 4 will get native encoding / decoding support to / from JSON. Before Swift 4, you had to write a lot of code yourself, or use third-party code generators. Now this code is generated by the compiler. Special thanks for it!
  • A return to the convenient model of working with strings, which was implemented in Swift 2 and removed in Swift 3. Together with this change, strings will better support Unicode (“to make your favorite applications correctly show all your emoji”), and work with them will be accelerated.
  • Projects that use both Swift and Objective-C will be built in 40% faster due to improvements in Xcode 9 and its build system.
  • Apple (as usual) promises a simple migration to Swift 4, and also support for different codebases (3.2 and 4.0).

 Hybrid”, “not quite native” application

We’ll clarify: the term in the heading is not even very true in essence. The applications that we get as a result are the most native in the sense that they run on the same iOS, on the same hardware as any other iOS software, just the development process itself allows you to use not only the technologies offered by Apple and programming languages. If a person can write, in let’s say, JavaScript, and doesn’t want to understand Swift, then Apple will not help him (except, of course, a good tutorial on Swift), but the option to write an application in JavaScript, and then run it on iOS, as if it were written in Xcode exists, and is quite in demand.

Ionic

Ionic is one of the most famous cross-platform development frameworks. It is built on the basis of Apache Cordova, which provides access to various functions of the device, such as geolocation, push notifications, camera and others, and allows developers to create applications for iOS and Android with web technologies such as HTML, CSS and JavaScript.

In addition to the framework, Ionic boasts an entire ecosystem that makes it easy for new developers to explore and enter it. Ionic Cloud provides developers with various tools for managing, deploying and scaling applications on Ionic. Ionic Creator is a visual editor that allows to quickly prototype and create mobile applications using drag & drop method. Finally, there is Ionic View – a free application for iOS and Android that allows developers to easily share their Ionic application with users, testers and customers without having to deploy the application in the application store of a specific mobile platform. Developers simply send users an invitation from the Ionic View application, and once it is accepted, the user can download and run the specific application in their copy of Ionic View – as if the application was installed on his phone from the application store.

But the applications written with the help of Ionic use WebView, and as a result we get the most natural web application, with its usual (usually not the most impressive) speed. Due to this, it is difficult to consider it suitable for creating heavy applications, such as games, or programs with heavy graphics. Development with Ionic requires a good knowledge of Angular, at least if you want to “squeeze” as much as possible out of the framework.

Phonegap / Cordova

PhoneGap was originally created by Nitobi. In 2011, Adobe bought Nitobi and the PhoneGap brand. After this Adobe transfers one of the versions of PhoneGap (Cordova) to the Apache Foundation, leaving for itself the PhoneGap brand and its product. As a result, Cordova can be seen as an engine under the PhoneGap (as well as some other hybrid frameworks). PhoneGap, in return, adds its own additional functions to Cordova’s capabilities.

PhoneGap is in many ways very similar to Ionic. It also gives developers the ability to create cross-platform applications using web technologies, and is also built on the basis of Apache Codova. However, PhoneGap is not tied to any specific Javascript framework, so developers have more choices on what and how they will create their applications. PhoneGap has desktop application, mobile application, and cloud service called PhoneGap Build, which allows you to build and deploy the application.

But, same as Ionic, PhoneGap uses WebView (which works pretty slowly on iOS), so things aren’t always brilliant with the speed of applications built on the basis of this framework.

Xamarin

Founded in 2011 Xamarin company, which has released all the Xamarin product family, was bought by Microsoft after five years of its existence. Today, Xamarin products present a very interesting approach to developing cross-platform mobile applications on the market: applications are written in C #, then Xamarin compiles it into a native application for iOS or Android and at the same time Xamarin uses Mono as the underlying technology, which provides the cross-platforming. Xamarin developers say that ready applications use the native platform API for which the application is compiled, so the behavior of them application is not different from the behavior of any other application on the same platform. Development, by the way, can be done using Visual Studio (which is not surprising).

Despite the fact that most of the project code can be used without modification on each of the supported mobile platforms, however, some fragments will need to be written specifically for the version of the application for iOS and Android.

React native

The React Native project was born on Facebook, and is built on the basis of React. Our JS application is made on the built into iOS engine: it runs the code and performs all manipulations with native OS widgets. React Native is comparable to Xamarin, while applications created using React Native are very similar to native iOS and Android applications (because they actually operate on native UI elements).

The React syntax is quite simple, which makes it easy to learn the framework, and the Standard library of UI components in the React Native distribution contains many useful components, but the biggest difference between React Native and other JavaScript frameworks is the possibility of using code for Objective-C and Swift (more often for better performance or finer interaction with the mobile platform). In practice, this means that developers can use their own existing libraries in their React Native applications.

Web, pure web

The often underestimated ability to use the web page as a separate application is anyway possible: if there are no special communication problems, and the application has simple functionality (displaying a data table, or a constantly updated list), then there is no reason not to use the good old web viewing information from the server.

The difference between opening the same page in the browser will be in the design of the screen: the browser controls (including the address bar) will be hidden, and the contents of the page will be displayed on the entire screen of the device. Of course, for us is waiting rather a long time to open such an “application” (which is associated with the response speed of a remote web server), but in general, it is not a problem at all.

The development of applications for mobile platforms has its own specialty: first you think that it’s not worth the effort and time, then people begin to use your application, and use it, literally carrying it with them, and here you understand that all of this was deeper, and dragged you more than you could imagine.