why

1. Java is an incomplete language

Java’s trademark was object orientation, but Java designers had an incomplete understanding of object orientation at the time, which directly resulted in the language design missing an essential part of object-oriented programming: messaging.

Object-oriented philosophy contains at least two important cornerstones: objectification and object messaging. Objectification means that in programming, people can follow their understanding of the world and run the simplified real world through program simulation. In the real world, all data is passed through messages, not simply through shared memory or anything else, which is as bad for programming as a language that doesn’t support functions.

The ancestor of object-oriented open source was Smalltalk, a language that was far ahead of its time in terms of design, but also so far ahead that it was born at the wrong time, and for commercial reasons, a flawed Java became a popular choice.

In a different environment, the gold buried in history should be rediscovered and applied, not by bringing Smalltalk back into fashion, but by embodying its design ideas in new languages, such as the nascent Go.

2. There are many aspects worthy of investment, such as Go

The emergence of Go is due to Google’s attention from many people. However, the simple design and broad development space of Go itself make Go Go to the present level.

Go is inherently object oriented (object orientation is an idea, not to mention inheritance, that’s just some designer’s theory) and also supports messaging, which I don’t think is as natural and pure as Erlang, but it does make sense, given the context in which it is designed. There are still plenty of flaws, but thanks to Google’s support, there’s more room for improvement than for tolerance.

Has recently been haven’t java-based far-reaching large components (Kafka, ES, Spark and so on as the foundation of many company system work now, the produce time is before for a long time), but based on the Go is booming trend just competent, whether the cloud data processing applications, or container of operational technology, Are becoming the new standard of fact.

(3) and.net

Microsoft is coming back, so. Net platform will become an important cornerstone of cloud development with the prosperity of Microsoft’s core business cloud platform.

Perhaps the only thing missing is a mature Java ecosystem, but if Microsoft can port the most important components of the Java ecosystem to the GitHub platform with the unlimited power of the community. Net, the developer switches to. Net platform is almost painless, after all, most developers don’t need to understand the internals of important components, just need the same interface protocol, that is, seamless migration; Some of the smaller tools, for Java, require the use of various open source libraries, but yes. For.net, its excellent standard library design does not require various external dependencies.

At the same time,.net has a world-leading development environment, which requires less rendering than Java.

conclusion

Java’s new growth space is limited by nascent environments such as Go, while the core domain is slowly being eroded. Net cannibalize, and Javaer’s space will end up being limited to the maintenance of older systems, which is bad for developers who may come out after a few years of maintenance and find the world has changed.