Introduction
The world of programming is huge and complex, so huge and complex that it can arguably be considered as an ecosystem on its own. There are numerous niches, product compatibilities, native programming languages, application program interfaces and platforms, among other possible variables that may be used for grouping and stratification. In this paper, the author focuses on one of the most commonly occurring problems in the realm of programming—compatibility. It is important to note, however, that the discussion was centered on one application development framework only and that is Apache Cordova (formerly known as Phone Gap, although some programmers still refer to it as such). As mentioned earlier, this realm is complex.
There are a lot of machines and devices that rely on coding and programming in order for them to be used and serve a specific set of functions. Desktop computers, for example, rely on a possibly completely different set of instructions in order for their programs to function. The same is true for mobile and or phone applications. It is worth noting, however, that there is an ongoing divergence in this field. More and more programs and application development frameworks are becoming cross-compatible—that is, usable across a variety, but in most cases, not all available platforms (e.g. frameworks that are utilizable for both desktop, web, and native mobile application functions). According to certain studies, this has been largely caused by the rapid expansion of the mobile and consumer electronics industry—that rely on a decent level of programming, that the world economy has witnessed in the opening of the twenty first century .
The programming industry should not be mistaken as a not for profit industry. The people behind the development of the vast array of web, native mobile, and the continuously diminishing number of desktop applications are essentially programmers. They either work privately (e.g. self-employed programmers) or for a bigger program development company to market their products to a consumer base—i.e. the people using their programs. This, in a way, makes their job security (for people employed in the industry) and profitability (for firms operating in the industry) dependent on what platform has recently emerged as the next big thing in the consumer market; or for more financially lucrative outcomes, the platforms that would emerge as the next big thing five, ten, or more years from the present. A good case in point would be the dramatic takeoff of smartphone and network-capable gadgets and devices’ sales beginning the first decade of the twenty first century.
According to a one year old report published in Tech Crunch, the 2.6 billion users of smartphones today could easily grow to 6.1 billion by the year 2020, as the world sees a tipping point in the sales of network-capable devices going in favor of smartphones over fixed line and other legacy forms of subscriptions in the coming years . This leads to the question on what the people and firms currently operating in this industry would most likely do in order to take advantage of this upcoming trend. The most probably answer is that they would most likely focus on the development of applications that would be compatible to the most dominant platforms at present and in the future. In this case, it should be safe to say that majority of the applications that would be available in the future would be mobile applications aimed at smartphone users.
This means that the application development frameworks and platforms would also be aimed at the smartphone market as well because one can only develop applications using an application development frameworks and or platforms that are designed for it. Apache Cordova is one of such frameworks. It is important to note the difference between a mobile application and a mobile application development framework or platform early at this point in order to avoid confusion.
Put simply, a mobile application is the outcome of an application development project—it is the one that the end users interact one, and the main product that the program development team or company sells for a profit, which is typically the main motivation for starting such projects. An application development framework or platform, on the other hand, is a prerequisite tool used to create an application. One important guide point here is that the development framework should be compatible with the proposed application; otherwise development would be impossible.
Lessons from Using Apache Cordova
This is a combination of both the positive and negative lessons that the author of this paper was able to collect from various studies featuring Apache Cordova (formerly Phone Gap).
Intelligent Design
Phone Gap, the former name of Apache Cordova, only became popular when it became the People’s Choice Award winner in a Web 2.0 Conference sponsored by O’Reilly Media. The main reason why Apache Cordova managed to bag this award was the fact that it was highly usable as an application development framework; meaning, it managed to help a lot of application developers create their crafts. Considering that Apache Cordova was originally meant for the iOS only (it was first developed in San Francisco at an iPhone Development Camp), its success was something farfetched. It later on attracted other mobile application platform developers to use it as a reference framework in their respective mobile program development engines—meaning their frameworks were made to be based on the Apache Cordova, which was a reasonable thing to do considering its success .
Fast forward to 2011, two years after its launch, Adobe Systems Incorporated, one of the multinational computer software giants based on the United States decided to acquire the program and started to use the name Apache Cordova (instead of the older Phone Gap). Following the acquisition, Adobe Systems injected capital to the development of a more cross-platform compatible version of Apache Cordova. Phone Gap used to be compatible with (and therefore require) Macintosh computers in order to create iOS applications and a similarly compatible Windows-installed computer in order to create a Windows-compatible mobile application. However, since the earliest iterations that the developers made under Adobe Systems, this limitation has been addressed.
According to a study published in the Global Journal of Computer Science and Technology, cloud computing and artificial intelligence have started to play bigger roles in the development of mobile and other types of applications as they have managed to bridge the inter-platform and operating system gaps that prevented program developers from collaborating on an otherwise futuristic and successful project . The authors of that paper said there are numerous ways how to use these newly emerging technologies to bridge the numerous gaps in the industry but in this case, what Adobe Systems did to improve released a much improved iteration of Apache Cordova can be a great example. Also, it is worth mentioning that between these two emerging technologies, cloud computing would most likely turn out to be the one that would create a bigger impact in the near to medium term as signs that it is being utilized by software and application development companies are already evident .
Referring back to the case of Apache Cordova, Adobe Systems managed to accomplish one of its major goals for the framework using cloud computing. Instead of relying on the native operating systems of computers (e.g. Windows and Macintosh) to create the service needed to program the applications via CSS, HTML, and JavaScript (among other commonly used programming languages), the new version of Apache Cordova create a feature where the application developers could upload the source code, regardless of the programming language used, of the program being developed into a cloud compiler—this is the part where the cloud computing aspect of this iteration jumps in. The purpose of the compiler is to integrate everything so that the cross operating system compatibility that was hindering the application development teams earlier could be addressed.
Since then, Apache Cordova could already be used to generate applications for a wider variety of supported platforms. Technically, however, this is something that could already be done by programmers with Apache Cordova even before the September 2012 iteration. However, it was just made easier. Compiling source codes processed in different programming languages is already a time-consuming process in itself. When one factors in that this has to be done in batches because of the fact that the developers do not use a common operating system in their programming tasks, the entire task of creating a fully working application becomes exponentially difficult. The 2012 iteration and the latest iterations of Apache Cordova have managed to address this.
Native Plugins Enabled
The enablement of the use and installation of native plugins for Apache Cordova users is one of its most loved features. The purpose of the plugins is basically to make the task of programming easier for the developers. Over time, application developers experience setbacks in their development projects, setbacks that according to them can be more easily addressed using plugins. It is important to note, however, that these plugins’ role can be fairly limited as well. According to Phone Gap’s website, “a Cordova plugin bridges a bit of functionality between the web view powering a Cordova application and the native platform the Cordova application is running on; plugins are composed of a single JavaScript interface used across all platforms, and native implementations following platform-specific Plugin interfaces that the JavaScript calls into; all of the core Cordova APIs are implemented using this architecture” .
Almost all plugins that may be associated with web browsers and other applications that make use of a Web View (as in the case of Apache Cordova) rely on JavaScript recognition capabilities. Without this set of capabilities, it would be impossible to make use of a plugin in Apache Cordova. As mentioned, there are tons of ideas related to how a specific plugin for Apache Cordova can be developed and how it can be used; it is comparable to the development and implementation of an application really, only that this time, its use would be limited to the application developers. To summarize the importance of the role of plugins for Apache Cordova users, however, it can be used as a tool to automate a host of processes, ones that could have taken a lot more time to finish without the plugin. Then again, the usability of a certain Apache Cordova plugin should largely depend on how the arguments during the coding processes of the plugin development were made.
Learning from Actual Use
In theory, Apache Cordova could easily be considered as one of the best, if not the best and most viable mobile application development framework out there. It is portable, it enables cross-platform development features, and in general, it makes the life, work, and responsibilities of application programmers easier —this is apparently, one of the most important features of an application development framework because it is the main reason why they are created in the first place. However, according to a report authored by Erickson (2015), seasoned Phone Gap (Apache Cordova) user (i.e. an application developer) things may not be as rosy as they seem when it comes to actual use. This is something that the author of this paper can vouch for because this is, in fact, true not just for Apache Cordova but for other application development frameworks and actual mobile applications as well. This is why the best way to evaluate something is to experience using it.
The first important actual use-based lesson is that the outcome of the developed application may look different in different platform. Web-based applications developed using Apache Cordova, for example, may behave differently when tested on actual devices than when they were being tested in Chrome. This is why it is important to establish the religious use of workspaces available in browser development tools for web-based applications as a complement to Apache Cordova. Being able to use a collection of devices and having tried the developed Apache Cordova-based application on them can prove to be a useful practice in the long run. This is, in fact, a standard practice that should be executed not only by Apache Cordova users but for those using other frameworks as well
Stick with the rules of the framework is what most Apache Cordova users would say. This, again, is a lesson that the author of this paper thinks should be universal. Application development frameworks exist for a reason—they should be followed. Their purpose is to standardize the process of developing an application. Application development outcomes can have varying outcomes and it can be extremely hard to arrive at a specifically targeted outcome without the use of a standardized framework such as Apache Cordova. Unfortunately, some developers would rather go and develop framework-less applications. This is not recommended because compatibility issues may arise especially when it is already time to rollout the final version of the application.
Another thing that Erickson (2015) recommended was to use Ionic for higher end phones because it uses the latest features such as Angular JS that allows the resulting application to have higher potentials animation, graphics, gestures, interactions, and performance-wise. Ionics is just one of the many Software Development Kits (SDKs) that may be used as a complement to Apache Cordova. In simplified terms, Ionics close the deal when it comes to app development by packaging different apps, especially HTML5-based ones, so that they can run in various mobile phone operating systems, something that cannot be fully done using Apache Cordova alone. It is important to note that Apache Cordova has a lot of other SDKs that it can be used in conjunction with.
Conclusions
In conclusion, Apache Cordova is one of the greatest application development tools out there. Sure, it has some flaws and cons but the advantages of a more fluid framework and the ability to bring out the best potential for the resulting applications all outweigh those. Through the help of its new operator Adobe Systems, Apache Cordova managed to outperform its peers in the application development framework niche. It managed to bridge the gap between different operating systems being used to program applications, making it one of the best cross-platform frameworks. It also enabled a higher level use of automations through the allowance of plugins. It is important to take these advantages-based remarks with a grain of salt however because the best way to evaluate a program is still through actually using it to develop an application. So far, however, the literatures reviewed in this paper lead to a consensus that suggests that Apache Cordova is a great tool for its purpose.
References
Erickson, K. (2015). Lessons Learned from 5 Years of PhoneGap/Cordova Development. Aging Coder.
Joorabchi, M., Mebah, A., & Kruchten, P. (2013). Real challenges in mobile app development. Empirical Software Engineering and Measurement.
Kumar, P., Mishra, S., & Rahman, Z. (2012). GSP Based Operating of Embedded System Cloud Computing, Mobile Application Development and Artificial Intelligence Based System. Global Journal of Computer Science and Technology.
Liu, F., Xiao, M., & Feng, W. (2015). Design of Cordova Based Message Push Module for Cross Platform Smart Home Application Summary. 2015 Fifth International Conference on Instrumentation and Measurement, Computer, Communication and COntrol, IEEE.
Lunden, I. (2015). 6.1 B Smartphone Users Globally by 2020, Overtaking Basic Fixed Phone Subscriptions. Tech Crunch, http://techcrunch.com/2015/06/02/6-1b-smartphone-users-globally-by-2020-overtaking-basic-fixed-phone-subscriptions/.
Mahesh, B., Kumar, M., Manoharan, R., Somasundaram, M., & Karthikeyan, S. (2012). Portability of Mobile Applications using PhoneGap: A Case Study. Software Engineering and Mobile Application Modelling and Development, 01-06.
Othman, M., Khan, A., Abid, S., & Madani, S. (2015). MobiByte: An Application Development Model for Mobile Cloud Computing. Journal of Grid Computing, 605-628.
Phone Gap. (2016). Plugin Development Guide. Phone Gap Documentation, http://docs.phonegap.com/en/3.0.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide.