The history of "turn" middleware to see the future of mobile app development

Source: Internet
Author: User

Today is 11 long vacation, oneself tidy up the bedroom, nearly exhausted, now only open computer, casually stroll blog, see Good blog, reprint a bit.

In the field of mobile development we find a very strange phenomenon: the average rookie novice after 3 months of training can get 8K or even tens of thousands of jobs, in Beijing a little bit of work experience in IOS development, requires 20,001 months of salary. Do not know whether people think: mobile application development has been hot in the market for so many years, why are many companies still facing the scarcity of mobile development talent problem? For the development of mobile development talent is always not the reason why the market demand, I think should not be simply attributed to the market supply and demand of the problem, its source of power or from the mobile application of the overall development model and development of inefficient internal causes. It is this strong market demand and low primary development efficiency combined to lead to the software development industry in the past few years the serious imbalance of talent, resulting in no way can also only raise wages way to rob talent. For this we have been looking for cost-effective application development solutions (low-cost inputs and high-quality outputs) to minimize application development complexity. The essence of application complexity is logic and control, logic determines the lower limit of code complexity, and control includes further optimization of application environment and equipment environment. We often complain about the fundamental reason why the application is not concise: it does not handle the coupling between logic and control. When it comes to decoupling of application complexity, the most common solution is to decouple logic and control through meta-language abstraction, which is what people often call middleware solutions. First popular: What is meta-language? Simply put, meta-language is the application of syntax and semantics of the configuration, the corresponding metadata is the specific description of these configurations. This means that the meta is both data and code. In order to be clear about this problem, let's briefly review the development history of middleware development technology:

The earliest and most basic application development method is meta-programming (META programming): That is, from the meta-language to the target language compiler, the metadata compiled into the target program code development process. The meta-programming pattern requires us to program for specific devices, each of which provides developers with a large number of API services based on the operating system, and the final application source code is compiled and linked to two processes to generate applications that can be run directly. Although the complexity of the development process is high, the execution efficiency of the meta-programming application is very high indeed. The development tools using meta-programming methods include: assembly language, C, PowerBuilder, VC, objective-c, etc. We can understand meta-programming by:

Meta-programming followed by meta-driver programming (Meta driven programming): It is the interpreter that implements the meta-language directly in the target language, which is the basic way to support middleware technology. The biggest benefit of meta-driven programming is that we no longer have to program for specific devices, the meta-language needs to be pre-compiled into intermediate code, the intermediate code for different types of devices can be fully adapted to the "runtime engine" to complete, thus achieving the "write once and run anyway" 's ability. Development tools that use meta-driven programming include: Java, Flex,. NET, and so on. We can understand the model of meta-driven programming by:

The more popular these years should be meta-interpretation programming (Meta Interpretive programming): It allows the meta-language to run directly in different target environments, which is what we call scripting language programming. Since the process of compiling and precompiling is omitted, the process of code syntax checking can only be done during run time, which in theory reduces the efficiency of application execution. However, with the continuous improvement of computer hardware performance, performance problems have been increasingly weakened, and meta-interpretation of the simple and powerful syntax of programming greatly improve the speed of application development, but also reduce the complexity of the program. Development tools that use meta-interpretation programming include: Javascript, Python, Lua, and more. We can understand the model of meta-driven programming by:

Why in the mobile internet era, many traditional application development rules are no longer applicable? Let's compare the differences between mobile devices and traditional computer architectures to see what important changes have occurred in the structure of mobile devices. First, the mobile device removes the operating system's cache, and in order to control any adverse effects that the individual application has on the system, the application is forced to exit immediately when the applied physical memory is insufficient. That's why a little memory problem in app development is the root cause of the flashback, and one of the reasons we need to optimize app stability through the underlying native programming in the project. In addition, because the individual application of mobile operating system design, so that the system-level runtime engine is nowhere to load, this will naturally subvert the meta-drive programming in the application of the feasibility of app development, so programmers will have to start again looking for mobile middleware technology solutions.

The first generation of mobile middleware programming (HTML5 Based app programming) is a cross-platform app development model based on HTML5 technology. In this model, it is common to use the embedded WebKit kernel to bridge the native extension code, build the Web UI with HTML5, and write business code with JavaScript in the Web page. Under this model, HTML5 technology is inherently cross-platform, and many traditional web developer programmers can be overly natural in technology. The first generation of mobile middleware model products include: PhoneGap platform, Digital Paradise middleware products, beacon middleware products. We can understand the model of the first generation of mobile middleware products by:

The development of the first generation of mobile middleware technology has attracted a lot of traditional web programmers, many people want to be able to enter the app development camp through HTML5 technology. But after a lot of attempts in a few years, we found that the mainstream app development work in the market is still to be handed out to native developers, a few years down with HTML5 developed high-quality apps in the App Store is still rare. The gap between HTML5 's interactive experience and native app development seems to be growing, although the high-speed development of hardware devices solves the problem of some HTML5 pages running efficiently, But the increase in UI interactivity of Android and iOS each time the big version of the upgrade makes HTML5 technology a bit more and more.

With the development of technology, there is an improved model for the first generation of mobile middleware programming technology, and its structure is as follows :

The changes in the improved model are mainly embodied in two aspects: the first is to further enhance the native expansion capability. In addition to the expansion of local capabilities such as files, cameras, and contacts, it also enhances the ability to extend the native UI framework and extend the capabilities of third-party services, as well as the addition of extension modules in the improved model to provide an open platform for developers to extend their own development of native components. While the improved model greatly enhances the native interaction capabilities of HTML5 and native, the biggest technical bottleneck can still be solved, that is, the building of the underlying UI is only possible through web pages. Developers still need to simulate native interactions through web rendering, except that the native extensions can be called via JavaScript in the web. The products of the first generation mobile middleware model are as follows: Appcan, Apicloud, Hbuilder and so on.

HTML5 technology is the core power of the first generation of mobile middleware technology, but with the development of IT technology, it has become the biggest bottleneck of the development of mobile middleware technology. No matter how hard the improvement model of the first generation middleware is, it can't change WebView's single-threaded model, change DOM/CSS's complex and inefficient typesetting and rendering level, change the browser through embedded Cavas, WebGL and timers to achieve the animation's failure on the user experience effect. Many people are still dreaming of HTML5 will become the future of the app, to know that HTML5 this web age technology itself is not for the mobile internet era, HTML5 in the bones of the mobile interconnection is not a gene, it and the future of the app is actually gradually drifting away.

Facebook launched the react native mobile development middleware technology at the beginning of 2015, completely out of the HTML5 of the fabric, and really turned on a set of paths for rendering the UI through custom native controls, which we can call programming for the second generation of mobile middleware (Meta Extended App programming). We can understand the model by:

Facebook's "Learning once, write anywhere" in react native products is itself a reusable idea. Everyone is tired of all kinds of programming languages, and if there is a language that can really unify the mobile development world, it's good for everyone. First of all, the framework of the follow-up can be recognized by the public, single from the source, the framework of the source code has a lot of design ideas and implementation of the way is worth learning. React Native Products Although there is a great lack of practicality, but its biggest value is for mobile middleware technology to provide a new development ideas. Perhaps a lot of people have not noticed, in mid-2015 when a Deviceone mobile middleware product officially released, it react native product architecture to carry out a comprehensive inheritance and improvement, not only to achieve the cross-platform mobile development of "Write once, run Anywhere "capability (while supporting iOS, Android, WINDOWS10), as well as the full opening of the native development expansion platform. Let's look at the improved model for this second generation of mobile middleware:

In the Deviceone model, all the UI component functional components have been abstracted into a freely extensible cross-platform component, even WebKit itself in the model only degenerate into a normal UI component, the app developer can freely choose JS Script, Lua scripts and even Python scripts to write business logic so that expensive native developers can focus more on the underlying technology innovation and component encapsulation, allowing application developers to focus more on the business needs of specific projects, to achieve the separation of native development and application development, which is to make logic and control fully decoupled.

With the rapid development of the mobile internet era, the demand for "low cost and high quality" app development technology is becoming more and more urgent. Fred Brooks's "No Silver Bullet" theory, which he described in the myth of Man and month, has had a deep impact on the IT community: he believes that there is no technology that enables software development to increase an order of magnitude in terms of productivity, reliability, and simplicity. But in my opinion it is not necessarily so pessimistic, everything is not so absolute, any principle has its assumptions and scope, if beyond this range, the principle may be invalidated. For example: If we go beyond the scope of the Big bang, we lose any reference, so even the concept of time will disappear, not to mention Fred Brooks's theory? Although the "No Silver bullet" theory is generally accepted within the scope of software engineering, it is not possible to infer that the demand for "low cost and high quality" is no solution. The development of app development technology is not a simple linear description, nor limited to the scope of software engineering theory. As Kevin Kelly said in "Out of control", it technology should be closer to nature's own development laws. The symbol of Industrial age is the pinnacle of mechanical design capability, and the new biological civilization represented by it technology should make design return to nature again. The advent of React native and device one allows us to see the new Hope for app development, which may be the turning point in the development of mobile middleware technologies we have long awaited. Everything destroy nothing, React native through the way to expand the label to achieve the HTML5, and device one then in support of cross-platform and also further realize the central, in accordance with this way of thinking to further develop the future of mobile middleware technology will be what? Once we can use distributed, down-to-top decentralized control systems to stimulate the development of a large number of individuals (developers), can maximize the overall system of self-learning and self-increment, when the system evolution and then in turn affect and change the individual, then the productivity of software development, reliability, Simplicity can make a breakthrough in every iteration, even opening up new growth at an exponential rate ...

The history of "turn" middleware to see the future of mobile app development

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.