And how we’ve used them to save time and money for our clients in the past.
Every second new Software product development project I am involved with considers the use of a cross-platform framework. Their usage depends on a large number of parameters including cost, performance/UX, type of application(s) required, speed-to-market, required functionality etc.
The issue for Product Owners is to try to understand how credible each of the options is and where the tradeoffs lie if you decide to go with a cross-platform framework, over say iOS or Android.
We chose to speak with Vakoms CEO Andriy Shevchyk about cross-platforms because of his level of experience, but also that Vakoms doesn’t necessarily have an initial preference for going Native or Cross-platform framework. They are able to offer both options, which isn’t always the case for development firms of their size. They have been working with cross-platforms for 7 years and have delivered approximately 40 projects using cross-platform frameworks to date.
So without further ado let’s get to the interview:
Tristan: What is a cross-platform? Is there a difference between a cross-platform language and a cross-platform framework?
Andriy: Thanks for your question. It is important to make a distinction between cross-platform language and a cross-platform framework. Cross-platform language is a bit of a misnomer because, in fact, all programming languages are available on all platforms, so all programming languages (C++, JavaScript, python etc) are cross-platform languages.
245 DEV TEAMS SPECIALIZING IN JAVASCRIPT
However, if you want to develop, for example, a desktop application using C++ language it’s not very easy without a cross-platform framework. This is because if you develop the code for windows and then try to compile it to be run on Linux, it’s difficult, if not impossible. But there are C++ compilers for Linux.
So I think it only makes sense to ask what a cross-platform is, which cross-platform framework is best to use, not which ‘cross-platform languages’.
Tristan: So, which cross-platform frameworks and tools have you used on past projects?
Andriy: So, there are 3 cross-platform technologies, that we mainly use here at Vakoms.
Qt SDK
The first one is based on C++ and it’s called Qt SDK. It’s mainly based on C++ but there are also some snippets for python (so you are also able to create a Qt application with python).
Qt is a very wide framework which supports desktop (Window, MaC, and Linux) and they’ve also started supporting mobile platforms (iOS & Android), they also support some embedded platforms for example Rasberry Pi. They even have specific SDK builds for Rasberry Pi.
Yocto
Yocto as a cross-platform framework is also becoming very popular. It works best on Linux and it allows for customiZation of platforms, you can remove anything on each platform that isn’t required and leave only what you need. This is the reason why Yocto can be made very small and extremely efficient.
Xojo
There is another interesting framework called Xojo. We have applied Xojo to several of our past projects. I would say it’s even one level above all other frameworks.
I’ll explain what I mean by comparing it to Qt. For example, if you work using Qt you will only need to write the application once and then will need to compile the code on each platform that you want to support separately. However, with Xojo, it’s possible to write the code in Linux and then build Windows application using Linux code. This means you don’t need to switch to Windows or Mac, you can build all three builds for all three platforms on one platform. It’s actually quite amazing!
The code in Basic is translated & compiled into C++ for Windows and Objective-C for Mac but then, in the end, you get native applications. However, it is a problem that the main language for Xojo is Basic, nowadays it’s quite hard to find developers because no-one wants to work with Basic.
Xojo is very nice but not very popular yet. However, it is quite popular with (non-software) Engineers because it is very easy to write the code.
Tristan: I was wonder what your opinion of some of the other cross-platform frameworks I’ve heard of Xamarin, Ionic, React Native. Is Qt newer? How is Qt compared to these other ones?
Andriy: Qt is completely different, Qt is actually very old, the first release of Qt was in 1991 and so it’s has been developing since then.
If we talk about React Native, it is based on JavaScript. The React Native platform allows us to translate JavaScript into Native code using a special translator, which can make the performance of the applications a lot higher.
122 DEV TEAMS SPECIALIZING IN REACT NATIVE
However, Qt uses C++ which is already the native language, so we can just compile directly into the native application. So Qt doesn’t have this additional process, first translate (from JavaScript to some other language) and then compile. The result is that we get about the same level of performance as a native application
Tristan: What about Xamarin & Ionic, have you had any hands-on experience there?
Andriy: We have worked with Ionic, Ionic is quite popular because it is a cross-platform framework for mobile applications (iOS & Android). It actually uses quite a different approach, the applications are developed in Javascript in much the same way as a web application, but then it is wrapped within the Ionic framework.
In order to run an Ionic application, you just open the browser and then it runs the Javascript application in the browser. But of course, it applies a theme that makes it look like a native application. So the user of the application doesn’t know that the application is actually being run inside the web browser.
The angular framework is used inside of Ionic and this means it is very quick and easy to develop because the developers are coding in Angular. Once you have developed in Ionic, you’ll be able to run the app on iOS and Android phones, but of course, these applications run a little bit slower than native applications because you have to run the browser (which takes the resources of the mobile device).
But for example, if we use Qt, then a native application is built on the platform of choice.
The main advantage of Ionic is the speed to market, you only need to develop one application to run it on iOS and Android. It is very useful for startups before they are funded they can take an Ionic application to market. Then once they get more money, they can re-develop their application for native platforms separately.
Tristan: Can you recycle anything from these cross-platform frameworks and take it to Native? Or do you have to develop it from scratch?
Andriy: In most cases, you have to develop most of these native applications from scratch. However, you might be able to recycle quite a bit if you have an application that works with a backend, sometimes we can recycle part of the backend/ JavaScript parts. But this very much depends on the project.
Tristan: Would you say the Qt is overall your favourite cross-platform framework for developing web or phone applications?
Andriy: Qt has nothing to do with web development but can be used for all desktop platforms and mobile platforms. We have done one project where we developed the application only once and it could be compiled for iOS, Android, Windows and Linux. So four different platforms leveraging only one code base, it saved the client A LOT of time and money!
Tristan: So in terms of mobile & desktop you’d say that Qt is the number one preferred.
Andriy: Yes, it’s the preferred in our company. But overall in terms of the market, if we are talking about just mobile application frameworks; Ionic, AppGyver, PhoneGap are the most popular because clients know more about them than Qt.
Tristan: So Qt was best for this project you speak of because of its ability to support Desktop and Phone frameworks?
Andriy: Yep *nods head*.
Tristan: What about the web, what would be your preferred for the web?
Andriy: Hmmm, you know, the web is totally cross-platform. So for the web, you don’t need to do anything special. We develop applications for web browsers, not for platforms and most web browsers are cross-platform. For example, Mozilla and Chrome are available for all platforms. The only problem is Microsoft edge and Internet Explorer are available only for Windows but they are rapidly losing market share. They are still very popular in business but not for personal use, the market average is going down.
Tristan: The market often asks, if it’s possible to find developers who know these cross-platform frameworks. I suggest that maybe to code in these cross-platform frameworks you need experience in the programming languages that they are based on (i.e JavaScript, C++, Python) as well as experience compiling them.
Tristan: So, what are the limitations here, in terms of engineer availability?
Andriy: I would say it’s not a big problem to study these frameworks. So for example, if we need to develop an application in Ionic usually we need a JavaScript developer. Getting used to the specifics of Ionic is not a problem and can be learned very fast.
To develop in Qt, we just take a C++ developer and let them study the Qt framework for several weeks. This enables them to become competent in Qt development. So mainly we just hire a developer of the main language of a given framework.
Tristan: Regarding risks, have you run into any particular issues that were very hard to solve when developing using any of these cross-platform frameworks, that maybe weren’t predicted?
Andriy: Actually, there is one big risk that we are always afraid of. Usually, these cross-platform frameworks are released a bit later than the native frameworks, so if a new version of a native framework is released with some new features, then the respective cross-platforms will not immediately support these features.
So this is the biggest concern. Usually, when we plan to use a cross-platform framework we investigate a lot and try to foresee all of the features we will need. We need to understand whether all of the features required by the project are already available in the cross-platform framework.
But this is not as big a problem as it sounds because it is always possible to develop these features ourselves. However this requires more time and resources, but it’s kind of rare because all of these frameworks are so mature that all of these new features are quite minor.
For example, at the beginning the different versions of Android the differences were huge, but now almost everything is highly developed. So if they introduce new features they are relatively minor. Improvements come in their performance rather than feature set.
Tristan: So before you start implementation, would you run through and do a feasibility study to make sure you’re not going to run into issues.
Andriy: For sure, but we do it anyway, it does not depend on what technology you need.
Tristan: I guess the challenge is that many clients don’t see the value or they don’t see the necessity to do the R&D sprints sometimes. That’s what I am trying to get my clients to understand.
Andriy: One additional risk is that for some cross-platform frameworks, like Ionic, there can be noticeable performance issues. So we try to understand from the very start whether performance/user experience is critical to the project. If it is then we try to convince the client to use a native framework.
Tristan: Thanks for your time, for sharing your knowledge and experience with the YouTeam community and am sure this new information will be put to great use.
<End of Interview>
Do you know anyone considering developing an app using a cross-platform framework? Feel free to forward this information to them.
Did you know that you can find hundreds of cross-platform developers through the YouTeam Portal?
Don’t know where to hire dedicated developers? At the time of writing this article we had (available):
11 Qt Developers
24 Ionic Developers
12 Xamarin Developers
19 React Native Developers
About Vakoms
Vakoms is a software development company from Ukraine, operating in the IT market since 2010. They have a portfolio of more than 250 of successfully completed projects.
Core competencies:
– Web (websites, web apps, APIs, Big Data, Cloud)
– Mobile applications (iOS, Android, hybrid)
– 3D, Virtual Reality, Augmented Reality
– Embedded systems, Internet of Things
– Desktop applications (Windows, macOS, Linux, cross-platform)
– UX / UI
Vakoms is chosen from a variety of Eastern European software development companies by many startups because of individual approach and superior quality-to-price ratio. Keeping in mind that every business is unique, they offer different models of cooperation. Vakoms can either organically integrate into your team at any stage, or become your devoted partner developing a product from scratch.
Over 300 vetted dev teams from 32 countries. All available to start next week.