The author | zhang xiao-nan

The Dragonwell JDK 8.1.1-GA release includes new features and updates!

InfoQ has released the 2019 China Java Trend Report, which reflects the unique development of Java in China and hopes that you will have a correct understanding of Java.

Two months ago, InfoQ published a 2019 Java Trends Report that looked at the current state of the development of the more than 20-year old language in terms of its technology adoption lifecycle. After the report was released, several things happened that we hadn’t thought of. One was that some developers were deeply skeptical of Java, with some saying, “Is It worth looking into Java now?” “, some say “Java is years behind other languages”; Second, some people think that the report is out of touch and does not show the development of Java in China.

For these two reasons, we have decided to plan and write the 2019 China Java Development Trend Report to reflect the unique development of Java in China. At the same time, we hope that people will have a correct understanding of Java: neither praise nor demonize it.

I am not ashamed to say that this report on The Development trend of Java in China is better than the English report, both in terms of the experts involved and the perspective presented. Experts from Alibaba, Tencent, Huawei, Meituan, Toutiao, Xiaomi, Red Hat… The report covers not only the Java, JVM, and Java EE frameworks, but also Java practice interviews and comments on Java trends. In addition, we also conducted a Java developer survey in the InfoQ community, and included developers’ Java usage in this trend report. All right, without further ado, let’s cut to the chase.

Experts who participated in the trend report

  • Xiaofeng Yang is a Java technology expert and OpenJDK Committer

  • Li Sanhong, head of Ali/Ant Java Technology, senior technical expert of Ali Cloud Intelligence

  • Ma Ge, Alibaba Apache Dubbo PMC and Spring-Cloud-Alibaba Architect

  • Tian Xiaoliang is the chief engineer of Huawei Cloud ServiceStage and Apache ServiceComb PMC

  • Shan Zhihao is head of TARS open source project at Tencent

  • Wu Ge is a senior technical expert at Meituan-Dianping

  • Chen Chuhui is the chief architect of Red Hat AppDev and an open source technical expert

  • Wang Shichong is a bytedance big data engineer and Scala programmer

  • Tao Zhang is a Kotlin expert, Android technology expert, and open source Lab blogger

  • Huang Fei, technology director of Xiaomi’s Internet business department

An overview of the Java technology adoption lifecycle

This overview of the Java technology adoption life cycle in China is the highlight of this trend report, with conclusions drawn from the experts. There is a surprising consensus among some experts, but there are also many who do not. It can be said that the golden sentence is frequent, the spark is scattered.

Technology uses life cycle division

  • innovators
  • Early adopters
  • Early public
  • The late mass

The technology adoption life cycle is a concept proposed by Jeffrey Moore, an American high-tech marketing guru, in his book Crossing the Chasm. Technology adoption life cycle is a model used to measure users’ acceptance of a new technology. It believes that a new technology, from the beginning to the final maturity, will inevitably go through the innovator, early adopter, early public, and late public stages.

Although there are cracks in every demographic, the biggest one is between early adopters and the early masses, the legendary “chasm”. Only by crossing this chasm and penetrating the early masses can a product enter the mainstream market.

Important conclusions

1. Java 13 is in the innovator stage, Java 11 is in the early adopter stage, and Java 8 is in the late public stage.

  • Java 11 is the most likely choice for future Java users;
  • If a company doesn’t have high requirements for large stack GC capabilities, delayed SLAs, etc., it won’t have the incentive to do upgrades, and it won’t necessarily have the technical power to solve real-world issues like version evaluation, compatibility fixes, etc.
  • The promotion of the new version of Java upgrade in China is still not enough. If many enterprises can not see the dividend of technology upgrade, it is bound to affect the enthusiasm of upgrade.

2. OpenJDK is in the innovator phase.

  • Although many domestic leading vendors are customizing OpenJDK, the scope of customizing OpenJDK is still limited, and the main use is Oracle JDK (according to the “JVM Ecosystem Report 2018” survey, 70% of developers choose to use Oracle JDK, 21% of developers use OpenJDK);
  • If not, OpenJDK may gradually replace OracleJDK in the future. At present, leading manufacturers in China are making some moves on OpenJDK. (It may be more positive for the domestic head vendors involved in OpenJDK, who define OpenJDK at an early public stage)
  • The competition between public and private clouds has a profound impact on the competition on OpenJDK.
  • OpenJDK is likely to be considered the next best thing.

3. Non-hotspot JDK production practices — Graal VM, IBM OpenJ9 in early adopter phase.

  • It is not yet known how compatible Graal VM will be and what its commercial terms will be.
  • Some of Graal VM’s technologies, such as the JIT engine developed in the Java language, may be the basis of future OpenJDK technologies;
  • At home, it is suspected that Graal VM and IBM OpenJ9 will be less likely to enter general production practice.

4. Lambda /Stream is in the late public stage and Vector API is in the innovator stage.

  • The Lambda syntax and the Stream API are also widely used in the day-to-day work of developers, and there is no trend to see syntax falling back;
  • Cutting edge features such as the Vector API have limited companies with capabilities, discouraging companies or scenarios that need them.

5. Kotlin is in the early mass, Scala and Groovy are in the late mass.

  • Groovy is fast becoming a thing of the past, gradually replaced by Kotlin;
  • It’s enough that Scala is king in the right areas, mainstream doesn’t matter;
  • Kotlin was pushed by Google, and Google’s support was largely successful, but it was doubtful about Kotlin’s future development space;
  • Many articles on the Web are trumpeting that Kotlin will eventually replace Java as the main language for the next GENERATION of JVM, but there is still no language that can replace Java.

6. Microservice framework: Spring Boot and Spring Cloud are entering the late public stage; ServiceComb is in the early adopter phase; Apache Dubbo is in the late public stage; Tars is in its early Volkswagen stage.

  • Microservice technology is between the early and late masses. The new microservice development framework needs technological breakthrough and innovation, otherwise it will be difficult to have a place.
  • Java is no longer the only option for microservices;
  • In today’s technologically diverse world, a microservices development framework that supports multiple languages is a must.

Technology adoption life cycle interpretation

In the previous chapter, we have thrown out the opinions and conclusions of the experts, but there is still a critical reason behind the conclusions, so this chapter will be presented in terms of Java/JVM, mainstream frameworks at different levels, and microservices.

Java/JVM

In fact, when it comes to Java releases, the experts are in complete agreement: Java 13 is in the innovator phase, Java 11 is in the early adopter phase, and Java 8 is in the late public phase.

In InfoQ’s Java Usage Version survey for developers, it’s no surprise that 88.7% of the developers who responded to the survey are using Java8. Of these, only 35% have plans to upgrade, and the remaining 65% have no plans to upgrade.

Yang xiaofeng thinks this is normal: Java8 will remain the mainstay of production for the foreseeable future, and it makes sense to put it in the late mass market stage. However, for many header vendors, Java11 or later is likely to see some scale production deployment. He believes that this trend will only happen in head companies, and that if a company doesn’t have such high requirements for large stack GC capabilities, delayed SLAs, etc., it won’t have the incentive to upgrade, nor will it necessarily have the technical power to solve real-world issues like version evaluation, compatibility fixes, etc. So the bottom line: Java11 is in the early adopter phase.

Huang fei added: it is because Java11 is in the early adopter stage, so the relevant data is less, encountered problems will have a relatively high learning cost, such as JFR for 11 support, JMC for Java11 analysis capability is weak.

As for Java 13, He said the new GC algorithm improvements and Socket implementation changes are very exciting, so Java 13 is among the innovators.

For The Java upgrade, Oracle announced that starting from Java 9 will be updated every six months a large version of Java – Java 11 is long-term Support (LTS) version, Java 9, 10 is a transition (non LTS), Therefore, Chen chuhui does not recommend that users use Java 9 and 10 in production. In his opinion, the relative risk of a minor release upgrade is relatively small, while a major release change may require a large number of code changes, which is why so many people are sticking with Java8 rather than Java 11, 12, or 13.

As for the reasons why developers are not motivated to upgrade Java, Li explains in more detail, and he thinks there are two reasons:

  • Agile infrastructure support for software upgrades and the importance of enterprise infrastructure is also a key reason for Java upgrades. The business development of Enterprises in China is fast, but in fact, many of the support and attention to the underlying architecture is not enough. Whether the underlying architecture is unified and strongly controlled within the enterprise, whether it can easily support the grayscale of different software versions, and pass effective pre-release testing, and cover the uncertainty caused by incompatible software upgrades, all these test the difficulty of software upgrades.

  • On the other hand, if the enterprise does not enjoy the dividend brought by the technology upgrade, including the improvement of performance, programming efficiency and other aspects, it is bound to affect the enthusiasm of the upgrade.

According to the InfoQ developer survey, 56% of developers believe the new features and direction of Java will solve the current major business challenges, while 24% don’t. This also shows another aspect: Java is often mocked for evolving too slowly, but the industry’s slow adoption of new versions may reflect a disconnect between Java/JVM development and developers’ actual needs.

A custom or public release of OpenJDK

Since Oracle announced that Oracle JDK 8 and higher will no longer be free to deploy on the server at the start of 2019, OpenJDK has become an option for most Java users. According to the JVM Ecosystem Report 2018 survey, 70% of developers use the Oracle JDK and 21% use the OpenJDK. Chen Chuhui also introduced the domestic situation: at present, the most used by domestic developers is still Oracle JDK, followed by IBM JDK, and some enterprises use OpenJDK. Report link: snyk.io/blog/ jVM-ec…

For the division of the technology adoption life cycle of OpenJDK, experts have some differences in opinion. Yang Xiaofeng thinks that although many domestic leading manufacturers are customizing OpenJDK, the scope of customizing OpenJDK is still limited, which is consistent with the data results in the paper. So he puts OpenJDK in the innovator phase.

But for domestic vendors involved in OpenJDK, the view may be more positive. In Li sanhong’s opinion: If not, OpenJDK may gradually replace OracleJDK in the future. At present, leading manufacturers in China are making moves on OpenJDK. So he defined OpenJDK at an early public stage. Alibaba uses and open-source Dragonwell, a long-supported version of OpenJDK. Most of Alibaba’s applications are currently running on Dragonwell 8, and some are already running on Dragonwell 11.

According to Wu Ge from Meituan, meituan is currently testing MtJDK based on OpenJDK as the basic service of Meituan JDK. In addition, meituan will focus on the upgrade of Redhat and Amazon. Since Azul does not disclose the OpenJDK source code, Meituan does not develop based on Azul.

Huang Fei from Xiaomi also introduced the application of Xiaomi for OpenJDK: Xiaomi mainly use OpenJDK8 and version 11, currently OpenJDK is mainly used.

From the perspective of the existing OpenJDK camp, there are two categories at present. One is IT and cloud vendors, who provide the release and sale of OpenJDK version to the public — Amazon, Redhat, Azul, alibaba, Tencent are all producing their own OpenJDK version (except Microsoft distributed Azul). In addition, due to the strong technical demand, it is difficult for companies with customized OpenJDK to break through the scope of internal use of their OpenJDK products, such as Meituan and Xiaomi, which we interviewed and researched.

Yang xiaofeng has a point of view about such a division of camps: from the competitive pattern of OpenJDK releases, it will eventually evolve into a cloud pattern, and it will be the leading cloud vendors or their cooperating software vendors that persist. In other words, the competitive landscape of the public cloud, the private cloud, and so on has a profound impact on the competitive landscape of the OpenJDK. After all, making OpenJDK also needs to be profitable for enterprises, and without a broad user base and peer-to-peer benefits, it’s hard to support the long-term evolution of the underlying software.

We put the above point of view to li Sanhong, the representative of IT companies and cloud vendors, who was interviewed in this survey. In his opinion, When Java is charged, OpenJDK must be the trend of The Times, and Java will become more and more open. Deep participation in OpenJDK is to drive Java forward through the community. In addition, in the current trend of enterprise cloud, if the customer’s existing system is written in Java, cloud manufacturers must consider how to make the Java ecosystem better when providing services to customers, which is also in line with the demands of customers.

However, Yang xiaofeng also said: from the perspective of enterprise IT decisions, a considerable number of enterprises are more focused on long-term and credible support, timely security vulnerabilities and bug fixes. There are also significant enterprises that decide to take their own risk and go straight to the free, free OpenJDK distribution without purchasing support services or even considering upgrading the JDK, as demonstrated by the considerable share of historical releases like JDK 7 today.

Non-hotspot JDK production practices — Graal VM, IBM OpenJ9

Graal VM is listed as an early adopter, with Li saying that Graal VM has been widely used in The Oracle Cloud production environment and is TCK compatible. It is worth mentioning that statically compiled SVMS under Graal VM cause incompatibilities in some aspects of the Java language, which is a concern for the entire community. How to integrate SVM/ static compilation into the Java Language/JVM Specification? It’s worth watching.

Yang xiaofeng takes a more extreme view: at home, there is little doubt that Graal VM and IBM OpenJ9 will enter common production practice. Suspicions that they may not go to the next stage make it difficult to bridge the technology gap. As for the reason, he thinks that the main reason is that most domestic companies emphasize the speed of business innovation and do not have the patience and business necessity to do such a deep bottom update. And from a technical point of view, before the dynamic feature support and other requirements without a smooth solution, migration is very difficult, will bring high development and maintenance costs.

So for domestic ordinary enterprise users, there is no value of individual attention. A more realistic path for future technology adoption is for users to use an OpenJDK master branch that integrates Graal VM’s advanced technology. Similarly, IBM OpenJ9 has a number of unique technologies that, if incorporated into the OpenJDK main branch, can create universal production value that would otherwise be confined to user groups such as IBM middleware. In addition, the specific information of subscribing to Graal VM service may be explained in Code One this year, so you can pay attention to it.

Lambda /Stream, Vector API and other syntax and features

For syntax and features such as Lambda /Stream, interviews and research experts believe that they should be classified in the late public stage. Ma believes that these grammars and features are widely used in the day-to-day work of developers, and he doesn’t see any tendency for grammars to fall back. Wu said: Within Meituan, Lambda and Stream expressions have been extensively used.

As for the frontier version features such as the Vector API, Yang xiaofeng believes that only a few head companies are still in the prototype stage and should be classified as innovators.

Kotlin, Scala

For Kotlin and Scala, we also interviewed two experts in the Kotlin and Scala fields.

At Google I/O in May, Google made it official: Kotlin is the language of choice for Android application developers. Does this mean that the days when Java dominated Android development are over?

Although he is an expert in Kotlin, Zhang tao’s view is rational and objective. He said: Every few years, there is a language that claims to replace Java, but from the birth until now, it seems that no language can replace it. This is mainly due to the solid position of Java on the server side, and no language has the complete community, user base, and third-party library support that Java has.

Zhang Tao believes that Kotlin in China should be in the early stage of the public to the late stage of the public transition, in the next one or two years, most JVM platform developers will start to use Kotlin.

At the end of 2017, Zhang tao conducted a survey of nearly 1,000 Android developers to see if they were using Kotlin in their projects. Back then, it turned out that 30 percent had used Kotlin, 60 percent had heard of Kotlin, and more than 80 hadn’t. He believes that 90% of Android apps in China now include Kotlin code.

InfoQ spoke with Bytedance big data engineer and Scala programmer Shichong Wang and several other experts from the Scala community to learn more about Scala’s development in China. As for the argument that Scala is difficult to become mainstream, Wang said: Why does Scala have to be mainstream? It is enough that it is king in its own field, mainstream is not that important.

Wang puts Scala in the early or late mass audience: Scala will be a minority for the foreseeable future — a small number of people love it; A small number of teams or companies use it; Most people have heard of it at best. Scala is not a mainstream language, either at home or abroad. However, there are some companies with very high level teams that still use Scala deeply to do things.

Famous examples are Twitter, LinkedIn, Verizon, etc. In finance, there are Morgan Stanley, Standard Chartered, etc. (but they rarely publicize their technology choices as examples of those who have made a fortune in silence). Many silicon Valley startups also use Scala in their early days for rapid development. In China, with the exception of some teams at Xiaomi, Alibaba and Tencent, startups like GrowingIO and Shuidi, and some advertising agencies, most developers are using Scala to develop Spark. Without the typical big, charismatic company to dominate, Scala doesn’t do very well in terms of community.

Spring Boot/Cloud, Apache Dubbo, TARS, ServiceComb and other microservice frameworks

For the division of the technology adoption life cycle of microservice framework, we have interviewed and investigated experts from several big factories such as Ali, Tencent and Huawei, which have their own microservice framework solutions. However, there is consensus that Spring Boot and Spring Cloud are still the king of microservices frameworks — Spring Boot/Cloud is a late adopter with a large audience. According to InfoQ’s developer survey, 70% of developers chose Spring Boot/Cloud; Apache Dubbo was second with 20%. None of the other microservice frameworks have a high percentage.

Tian Xiaoliang said: Spring Cloud community is still thriving, but also began to create business opportunities for Cloud manufacturers, how to combine with Spring Cloud, has become one of the key issues for Cloud manufacturers to solve.

While more and more enterprises are turning to ServiceComb for microservice transformation, and it has been successful, it has not reached the early mass market stage. In ServiceComb, the microservice framework and Service Mesh can be used together, giving users a flexible choice.

Java is still the most popular language, but companies are finally able to choose other languages for microservices development. At the same time, providing Spring Cloud components can be integrated into the ServiceComb to help Spring Cloud users smooth the transition to multiple languages, and Java is no longer the only option for microservices.

Apache Dubbo was not named that way at the beginning. Dubbo was originally an internal system of Alibaba. In 2010, Dubbo project was restructured, and in early 2018, Dubbo project officially entered the Apache incubator. In My opinion, Apache Dubbo is in the late public stage, but the latest Apache Dubbo ECO System is a Cloud Native solution based on Apache Dubbo. In the innovator’s camp.

For Apache Dubbo, Huang fei said: it can be one of the leaders in the RPC middleware field. Apache Dubbo service registration and discovery, service governance is relatively perfect, support grayscale publishing, intelligent load balancing strategy, visual service governance and operation and maintenance tools for developers to get started. It’s fair to say that Dubbo/Dubbox has a head start in the RPC framework/microservices space and in some ways has an edge.

TARS is called TAF(Tencent Application Framework) in Tencent. It is the most extensive micro-service development Framework with the largest number of Application products in Tencent, and has been widely used in Tencent for more than ten years. In the middle of 2017, Tencent officially open source TARS, a year after the open source became the Linux Foundation open source project. Due to the late open source relative to other microservices, missed a lot of community development dividends.

As for TARS, according to Shan, different mainstream microservice frameworks can meet different application pain points, while TARS is native focused on multilanguage and high performance. He argues that TARS is already widely used by big Internet companies, having crossed the gap from the early adopter stage to the early mass stage.

Java Application Practice

InfoQ: Is there an OpenJDK distribution that your enterprise uses? How do you see the development of OpenJDK in China? (If not, why and what to do next?)

Alibaba’s Li Sanhong: At present, most of alibaba’s applications are running on Dragonwell 8, and some are already running on Dragonwell 11. We are gradually promoting the upgrade from Java8 to Java11 to fully enjoy the technology dividend.

Meituan wuge: at this stage, meituan is mainly using Java8, with a small amount of Java7. Some of the core teams are experimenting with Java 11. The main development version of JDK used in Meituan is Oracle JDK. Our JDK versions on the server are mainly Meituan’s own MtJDK and Oracle JDK. Meituan is currently testing MtJDK based on OpenJDK as a base service for Meituan JDK.

MtJDK is built on OpenJDK and is currently maintained for patches and security. Testing and application within specific lines of business at this stage. MtJDK will be heavily customized for JDK startup performance and enhanced isolation between applications in conjunction with future upgrades to base services such as Serverless.

Xiaomi is mainly using OpenJDK8 and version 11. At present, OpenJDK is mainly used, the main business concern is whether this version is long-term support; Whether there are more efficient and easy to use features, such as GC algorithm upgrade from CMS and G1 to ZGC; Whether the open source community is active; And whether there is sufficient information and discussion about the problems encountered. As the most widely used language, Java has made great progress in recent years, both in terms of syntax ease of use and performance. By absorbing the ideas of functional programming, lambda expressions, Parallem stream, Var variables, etc., improve the efficiency of developers and the simplicity of the code. ZGC is certainly a major improvement and solves some of Java’s natural GC problems.

InfoQ: What is your enterprise’s current strategy in terms of supporting Java technology stacks? What are the plans and goals? What are the relevant core pain points or business requirements?

Tencent shan zhihao: the leading developer in Tencent is C++, and there are a lot of node.js, Golang, Java, PHP, Python developers, and of course a few Rust, C# developers. We use C++ and Golang on the back end for a large number of users, Java is widely used in the front end and big data, and in the delivery of external ToB.

Because Tencent’s developers use a variety of development languages, and different development languages have different advantages in different fields, so the current problem to be solved is the interoperability of multi-language development services, a set of micro-service development framework supporting multi-language is a necessity, TARS is also born under such a multi-language background.

Meituan Wuge: The Strategy of The Java technology stack of Meituan is to promote the technology upgrade on the basis of stability. The core pain point of Java is dependency upgrade. When a JAR package is upgraded, it must be upgraded one service at a time, and the overall upgrade cannot be automated. Therefore, meituan is working on solving the problem of dependency upgrade.

Red Hat Chen Chuhui: Red Hat mainly uses the popular Java technology stack. Most projects will use Java for development, mainly because Java is mature, there are many mature technical frameworks can be used directly, at the same time there are a lot of similar code can be reused, and it is easy to find technical personnel familiar with Java. In this way, the speed and efficiency of development will be higher, and the cost will be lower.

InfoQ: Tell us about microservices practices in your organization? If so, what percentage of the overall system architecture? If not, are there plans to do so?

Alibaba: Most applications have implemented the micro service architecture, the proportion of micro service applications is more than 80%.

Tencent Shan Zhihao: As early as before 2008, Tencent has begun to practice the “big system, small” massive service philosophy, a large number of services have followed the concept of micro-service development. Because Tencent needs to support rapid iteration and agile research and development, so the proportion of microservices is more than 95%. The core business modules are 100% microservices because they have to support huge traffic from huge numbers of users. The microservices developed by TARS within Tencent have exceeded hundreds of thousands of nodes, which is one of the largest microservice clusters in the world in terms of scale.

Wu Ge of Meituan: Meituan began to evolve its micro-service architecture in 2015, and 100% of its core system has been micro-service.

Red Hat Chen Chuhui: Microservices have been implemented and account for no more than 30% of the overall system architecture.

Huawei Tian: All services in Huawei Cloud use the microservice architecture, but not all services use some kind of microservice solution — such as ServiceComb, Istio or Spring Cloud. Each service mainly practices its own microservice design pattern. However, almost all application services use Huawei Cloud Container Engine (CCE) Kubernetes cluster.

InfoQ: What are the main microservices frameworks you are using? How to judge the technology development in this field in China? Do you think the battle for the mainstream microservices framework is over?

Ali Baba: Since the beginning of 2015, The application architecture of Alibaba Group has gradually derived from SOA to microservices. The microservice framework used is mainly Spring Boot/Spring Cloud and Apache Dubbo (HSF). Covering all Java middleware core infrastructure, more than 90% of internal systems, and Alibaba Cloud merchant applications.

At the same time, based on Spring Cloud API, Alibaba has derived and opened source a new set of micro-service framework – Spring Cloud Alibaba, and is moving towards the next generation of “Cloud native” architecture. More and more applications are experimenting with cutting-edge technologies such as Serverless and Service Mesh. In the future, there will be more options in different languages and platforms, and it won’t matter who is the king or the dominant framework.

Shan Zhihao of Tencent: Different mainstream microservices frameworks can meet different application pain points, such as SpringCloud and Dubbo focusing on Java, TARS focusing on multilanguage and high performance, Make full use of the advantages of C++ with high performance, Go performance and efficiency, Java omnipotent, Python rich basic libraries especially AI, node.js and PHP convenient and comprehensive for the Web and so on.

At present, the open source microservice frameworks of Chinese and American daco (TARS of Tencent, Dubbo of ali, BRPC of baidu, gRPC of Google, Thrift of Facebook, SpringCloud of Pivotal) can basically cover the pain points of all users. Enterprises can choose the development framework directly from the open source community to solve their pain points.

Meituan Wug: Using OCTO and Pigeon, we are developing Service Mesh. In China, Dubbo, Spring Cloud and Google gRPC are mainly used as the basis for secondary packaging, and the selection of mainstream framework is relatively mature.

Chen Chuhui of Red Hat: Mainly adopts Spring Cloud microservice framework, and also researches Service Mesh (Istio). Because existing microservices frameworks require a lot of developer involvement and a lot of development, Istio is the favorite right now. But because Istio is not mature enough, everyone is still in the pre-development stage.

Tian Xiaoliang, Huawei: Many of Huawei’s cloud services and internal projects use The ServiceComb microservice solution, such as the Consumer Cloud, which runs thousands of microservice instances around the world to serve mobile phone users. In addition, Huawei cloud’s audio and video service runs thousands of microservice instances to provide services such as video calling and audio and video decoding. We also provide solutions to the community (through ServiceComb) and business users (through ServiceStage).

InfoQ: How do you see Service Mesh’s development status and prospects in China?

Alibaba: MY personal view on Service Mesh is optimistic but cautious. On the one hand, as a practitioner, I am always curious about technology. On the other hand, there is some idealism in the design of this technique, such as performance loss and stability, and the typical problems in distributed scenarios, such as data consistency, distributed transactions, etc., are not addressed or improved. As far as I know, many Chinese Internet companies, such as Alibaba, Ant Financial and Meituan, have started to pilot Service Mesh in production environment, which sounds a good thing. Cutting-edge technology always needs someone to explore, if successful, predecessors trees, descendants cool. Whether it succeeds depends on whether the market is willing to pay for it.

In the future, Service Mesh will shine in cross-language scenarios. Service Mesh is mainly developed based on the pain points of cloud platform and multi-technology stack scenarios, and there will be no explosive growth in the short term. However, with the increasing number of cloud-native architecture based systems, Service Mesh will continue to evolve in the future and eventually become the network infrastructure Service under the cloud-native architecture.

Service Mesh is still in its early stages of development, and its conceptual design has determined that performance and maintainability will be its most prominent weaknesses. But there are some enterprises including Tencent has tasted new, also have a small amount of peripheral unimportant non-core business in the above run. Service Mesh has a beautiful architectural concept, but the performance is a real concern and the community ecology will take at least three years to develop.

Huawei’s Tian Xiaoliang: In the general environment, the challenge for traditional enterprises is still how to transform their business system to microservices to build their own business platform, in which microservices framework is a means. In the search for faster microservitization, developers will avoid learning steep development frameworks and use Service Mesh instead. Developers will combine lightweight SDKS (such as interconnecting monitoring systems, configuration management, and AI platforms, rather than microservices frameworks) with Service Mesh to implement their business systems, freeing them from heavy architecture work. This development process will take 2-3 years in my opinion.

Moreover, in my opinion, it is not the Service Mesh but the underlying Serverless platform supported by the Service Mesh. The complexity of the Service Mesh technology is not perceived by the users. Otherwise, you will face more onerous infrastructure operation challenges than the development framework. So Service Mesh is actually tied to the development of Serverless. The popularity and use of Serverless will certainly help Service Mesh evolve.

InfoQ: How do you feel about the overall development of Java today?

Yang Xiaofeng: In the foreseeable future, Java is still the core technology stack of enterprise software, big data, e-commerce and so on. However, the current Java/JVM capabilities in the cloud era have certain limitations, such as the cloud emphasizes no server, microservices and other scenarios, Java/JVM has certain weaknesses. In addition, the slow adoption of new versions of Java itself shows that there is a certain disconnect between Java innovation and actual requirements — on the one hand, a lot of innovation can lead to compatibility and version confusion; Some of the value of innovation is offset by the significant increase in development and maintenance costs associated with the benefits of innovation. But will Java ever be replaced? Probably not. Java doesn’t have a real competitor in terms of community, tools, libraries, etc., but the biggest threat is if the new wave of demand is related to you. We can look at the trend of new Java projects on GitHub, to some extent to support Java’s solid fundamentals and not to be ignored concerns.

Li Sanhong, Alibaba: From a technical point of view, Java (JDK) development over the last 20 years has been trying to do the best balance between Productivity and Performance. Java is a statically typed language, but it provides a large number of Dynamic features for productivity, such as Bytecode Instrument, Dynamic Class Loading, Metaprogramming(Annotation, Reflection, etc.), These form the cornerstone technology of Java in the field of operation and maintenance, production monitoring and so on. At the same time, due to the existence of a large number of dynamic features of Java, it has been criticized in the aspects of cloud native, Serverless computing Memory Footprint, Startup. This is an issue that the entire Java community, including Alibaba Dragonwell, is trying to address.

Alibaba’s Ma: Java is still capable of taking the top spot in the programming language rankings, but its overall weight has dropped slightly. Personally, this trend will continue in the future. This is due both to the short – and medium-term effects of the new languages, and to the fact that there has been no significant reduction in the complexity of Java programming, such as I/O processing, concurrent/parallel computing, and class loading. The interaction between Java and the operating system is still inadequate, and although Java 9 begins to provide a number of apis, not enough people understand and use them. Java is significantly inferior to GO in this respect.

At the language level, Java is converging into the mainstream non-Java languages, and the key to addressing this gap are syntax changes, such as Lambda expressions in Java 8 and local variable types (var) in Java 10. Personally, I think this is a good thing. In the future, there will be no separation between the two sides and mutual penetration, which will be a benign development for each other’s languages.

In addition, I am looking forward to the changes GraalVM makes to Java. Traditional Java applications must rely on the JVM process to load the bytecode and then interpret it for execution. There is no guarantee that all the code can be programmed at runtime, and there is a performance overhead associated with runtime compilation, which affects the start/stop time of the JVM. Simply put, this approach is not Native enough and may not be cloud Native friendly. If a future community version of GraalVM is as “accessible” as OpenJDK, the changes to Java will be disruptive.

Meituan Wu Ge: The current Java has developed into a behemoth, the basic language will not have too much breakthrough, more is reference and compatibility. As GC algorithms evolve and compilers evolve, there’s still room for a fight against next-generation language challenges like Go.

Tencent’s Dan zhihao: There’s no doubt that the Java language is still vibrant, but it’s lost its edge in some areas, such as the Go language, which is now more vibrant in the cloud native space. The complex world is bound to see the coexistence and replacement of multiple languages. Looking back at the historical development process, it takes ten years for a language to be used by the public in its early stage. A developed language that survives after ten years of sharpening must have strong vitality and different enterprises will build its ecology. As mentioned above, different languages will continue to develop in their own advantages, forming strong barriers to competition.

Bytedance: The Scala language currently has two big target platforms to run on — JVM and JS, so Scala as a language and ecology doesn’t dare to fully invest in a single target platform. While the JVM itself continues to evolve, Java has been overtaken by multiple languages on the same platform, such as Kotlin, Clojure, and Groovy.

Introduction to Report Participants

Xiaofeng Yang is a Java technology expert and OpenJDK Committer.

Sanhong Li, a senior technical expert of Ali Cloud Intelligence, joined Ant Financial in 2014 and is now the head of Alibaba/Ant Java Technology. She has more than 10 years of Java development experience. Active in the Java technology community, in the Java virtual machine field has a number of technical patents.

Marcy (@Mercyblitz) is the author of Spring Boot Programming Ideas, Apache Dubbo PMC and Spring-Cloud-Alibaba Architect.

Tian Xiaoliang, chief engineer of Huawei Cloud ServiceStage and Apache ServiceComb PMC, has 7 years of working experience in the cloud computing field, and has many years of practical experience in PaaS, hybrid cloud, DevOps, microservices and APM.

Shan Zhihao, member of Tencent technical Committee and Tencent Open Source Office, is responsible for the open source ecology of TARS microservice framework and donated the project to the Linux Foundation. Expert advisor of cloud Native Industry Alliance, DevOps standard expert, presidium of GOPS Conference.

Wu Ge, a senior technical expert of Meituan-Dianping, is now mainly responsible for the system architecture of The Xiaoxiang Business Unit of Meituan-Dianping. Chen Chuhui, red hat AppDev chief architect, open source technology professionals, familiar with a variety of open-source middleware, famous international software company for a long time, 20 years working experience in middleware, is rich in telecom operators, the government, enterprises and financial industry system integration, IT project management experience, has a wealth of practical experience.

Shichong Wang is a bytedance big data engineer and Scala programmer. His translated book is Reactive Design Patterns. The focus is on implementing reactive architectures built on Scala and related applications. Previously, I was engaged in the development of real-time data flow analysis system for small and medium-sized enterprises. Winner of the 4th Ali Middleware performance competition, third place of the 1st Ali Cloud PolarDB performance competition.

Zhang Tao, who goes by the name Kymjs, is an Android technology expert, a blogger at Open Source LABS, and a Kotlin technology promoter. He started using Kotlin four years ago. I’ve led teams, I’ve done architecture, I’ve written applications, I’ve worked with open source communities. She has worked in Hujiang, Ele. me and Ctrip successively. Now she is in charge of mobile development and management in a lifestyle store.

Huang Fei, technical director of Mi Internet Business Department, has rich experience in Internet commercialization, is responsible for the research and development of Mi Internet advertising business engine and algorithm architecture engineering, and has many years of practical experience in high-concurrency distributed recommendation system.

Special thanks: Thanks to Mr. Yang Xiaofeng for participating in the preliminary planning of this report and giving professional advice and guidance during the report writing process.

“Alibaba Cloud Native wechat Official account (ID: Alicloudnative) focuses on micro Service, Serverless, container, Service Mesh and other technical fields, focuses on cloudnative popular technology trends, cloudnative large-scale practice, and becomes the technical official account of cloudnative developers who understand cloudnative best.”