
It is easy to forget the significance of technology, as soon as it passes through the collective consciousness through a comet and goes out as a fiery death beyond the horizon. For example, Cobol - once this language was cult for a whole era, and now it can be compared only with rotten fish. Nowadays, any hipster programmer will tell you that Cobol is a complete crap, an old and useless language. Java can be the next victim of "relevant" judgments.
Peak sales of books on Java - far in the past. Strong Java utilities are no longer sexy enough for magazine covers. Java is already 19 years old, and progressive developers are passionate about such the latest and most current technologies like Node.js, Objective-C, Dart, Go, etc., wondering: “Java? Is this Web 1.0 era artifact still alive? ”
A quick search on Dice.com shows that working in Java is in bulk. If for iOS there are about 2500 offers, for Java it is more than 17000. Of course, one cannot completely rely on these numbers. But the fact that the market for Java on Dice.com is potentially seven times larger than for the most fashionable iOS suggests that “old Java” feels pretty good.
Maybe this is because Java offers a more attractive business plan than giving away 30 percent of Apple’s revenue and crossing your fingers in the hope that your application will be on the Top-25 list. In most cases, Java solves problems that are more useful than helping evil birds take revenge on equally evil pigs. Java is the basis of a number of platforms designed for software development and ensuring efficient operation on systems with different chip architectures. Java helps solve problems for developers of server, client and embedded systems.
')
Before we forget the huge contribution of Java to the IT industry and its role in our days, I would like to voice 12 compelling reasons why Java not only survives, but also actively flourishes our day.
Do not call it a return; Java did not go anywhere, it is dominant here and everywhere.

Reason # 1: Unsinkability in the world of politics (often dirty)
The world of technology has never given Java a day to go, its enemies were numerous and well-armed. Despite this, the language flourished. Many of its detractors are surprised that Java is still in good health. They too often listened to the opinion of Java haters and did not try to understand the reasons for its success.
The first big enemy of Java was Microsoft. This company saw in Java the most worthy successor to the unity that at that time offered only MS-DOS. Redmond criticized and fought Java from the very beginning. Java was not a success for developing desktop applications, in part because the Java magic VM was running too slowly. Despite small slowdowns, in general, Java applications in Windows are quite usable.
For some inexplicable reason, Steve Jobs never liked Java. Even when the Mac largely ignored everything except Adobe, Java was not given a chance. Java compatibility could enhance development for Mac, but for Apple, Java has always been a supporting actor. (In general, iOS smartphones work more smoothly than my Android, so maybe Steve was right)
Java has also suffered from numerous internal disruptions. IBM loved this language, but they always fought with Sun. IBM’s decision to call its wonderful IDE “Eclipse” (Eclipse) was quite coldly made by people from Sun (Sun guys never understood business as well as IBM).
Despite all the mistakes of the creators, Java rapidly strengthened its position on the servers and became suitable for use in the desktop segment. Each technology must swim against political currents, and in the case of Java, it stubbornly floated further, proving that it is an excellent tool for solving problems.

Reason 2: Flow Magic
One of the strengths of the Java Virtual Machine has always been its ability to easily juggle multiple threads. JVM is optimized for large multi-core machines, and it can easily manage hundreds of threads. Thanks to this ability, other languages ​​appeared on the JVM - cross-compilers and emulators are created that work on top of the JVM.
These magical features are used by many high traffic websites. Developers write code on their laptop, and then deploy the application on a powerful server, where it uses multi-core power to its full potential.
Ruby is one of the modern Java competitors. It has a cleaner syntax similar to living English. But still, when Ruby lovers need high performance, they turn to JRuby. This is a version of Ruby that runs on top of the JVM, providing much better performance under high loads with multiple threads. Having invested a lot of effort in reliably working with threads, Sun engineers did not lose.

Reason number 3: Java, as the first programming language
Java is the primary language for Advanced Placement Computer Science (Advanced Placement (AP) - curriculum and exams for high school students in the US). This means that often for Java students is the first programming language. Thus, Java is further with them "both in sorrow and in joy." When in the future, students learn new programming languages, they compare with what is in Java. If they even change Java for something else, their opinion is still based on what they learned "in the first class."
Java has many advantages for learning computer science. Some programmers hate to specify data types, often calling it a “safety cushion” in programming. This may sound strange, but it is a great way for beginners to understand how a computer works. The requirement to specify data types makes them think about the internal structure of the system.
Some of the most fashionable languages ​​do not use curly braces, because developers are annoyed to engage in their proper formatting. Perhaps in some cases this is true, but these same braces can be useful for beginner programmers to understand the nesting of blocks of code.
Someone is trying to promote their own language, and in most cases creates a language with a less strict syntax than Java. This is excellent, but the simpler and cleaner syntax conceals its dangers, which appear later. Some people think that “airbags” limit their freedom in programming, but Java instills good habits from the very beginning. In the future, having accumulated experience, the former "newcomers" will be able to tame more elegant and dangerous structures.

Reason # 4: (Almost) Cross Platform Compatibility
The Java language was not the first language to write cross-platform applications, but it became the most popular. This does not mean full compatibility on different platforms - missing libraries or incompatible versions of libraries will easily bury your code. You cannot take application desktop code compiled under JRE 1.7 and run it on your phone in Java ME. A miracle will not happen.
Sun, and now Oracle, squeeze the maximum for cross-platform. When the code does not work, it is usually clear what the problem is. If you use the correct version of Java and you have enough memory, your code will work. Java developers can develop an application on their computer, and then deploy it to a target platform, be it a phone or a server. If the necessary libraries are available for the compiler, the code will work. It's priceless.

Reason 5: Sustainable Microchip Java Success
Java has never been a popular tool for developing desktop applications, but it flourished in the mobile segment of the market, which has recently pulled up. The Android platform is built on Java from and to, and now Android devices are selling better than the iPhone.
This dominance is not new. A stripped-down version of the language and the virtual machine, known as Java ME, has been widely used in many so-called feature phones, which number in the millions around the world.
If all this is merged together, the dominance of Java is stunning.

Reason # 6: Blu-ray
The Java language was once called “Oak” intended for TV receivers, where Sun wanted to dominate. It was impossible to stick to the plan exactly, but Java still managed to find a cozy place in the living room. The Blu-Ray standard is built around Java, and anyone who wants to add additional content to Blu-Ray will need to use the Javac compiler.
Blu-ray discs are not just raw video. Using Java code, you can change / add additional features and interactivity. Blu-ray discs are a mixture of compressed video and java bytecode.

Reason # 7: Braces just work.
Fans of fashionable languages ​​like Ruby, Python, or CoffeeScript condescendingly watch how Java (and C) force programmers to insert curly brackets, clearly marking the beginning and end of each block of code. Round, curly, and even square brackets are all a curse for these progressive developers. (I don’t like brackets myself, and still nostalgic about how you can close all open brackets with one square bracket in some versions of Lisp)
But changing punctuation does not eliminate the difficulty, but hides them. Using white space to indicate attachments makes you intuitively see what you cannot see. Designating nesting with spaces works fine if your expression fits on one line, but it becomes terrible if you have multiple levels of nesting. When I write in Python, I notice for myself that I’m counting and counting indents. If the code looks like English, it does not mean that it is as easy to understand as the sentence in English.

Reason # 8: Groovy
If Java programmers need a cleaner and simpler syntax, dynamic typing, this is not a reason to escape to newfangled languages. They can use Groovy, a neat Java hack with a preprocessor that produces JVM bytecode. The language is fully integrated with Java - you can safely invoke the Java library from Groovy code. It's like java with buns.
This flexibility allows programmers to independently design solutions to their problems. When Groovy is slower (this is often the case when using dynamic method invocation), the programmer can always rewrite pieces of code that are crucial for core Java performance.

Reason # 9: JVM
The JVM was built and optimized for typed code with a static context generated by the javac compiler, but over time the language developers realized that the JVM could run code written not only in Java. If the compiler generates the correct Java byte code, the JVM does not care what language it was written. The developers of Haskell, Scala, and Clojure jumped on the bandwagon of the “powerful Java electric locomotive” by creating their own compilers.
The appeal is obvious. Sun / Oracle does its part to create a cross-platform environment, and everyone else does it. Sun / Oracle engineers brush the platform and worry about compatibility, and we write code in the language we like.
Microsoft borrowed this idea (and much more) by creating C # and its approach to creating compilers for languages ​​working on a C # VM (CLR). C # programmers say they can write in different languages ​​- true, only on a VM under Windows. Amazing flexibility!

Reason # 10: The NoSQL revolution, built largely on Java.
Once upon a time, the database was an incomprehensible black box that stores information and responds quickly and efficiently to queries. Then came the NoSQL revolution, - programmers realized that they could write their own databases and adapt the code to their needs. Most of the major players in the NoSQL market were written in Java. Cassandra, Lucene, ElasticSearch, HBase and neo4j are just some examples. In addition, there are some ACID-compatible databases written in Haskell and running on the JVM.
These databases are usually open source and easily embedded. Someone runs them as independent services, someone embeds their code (as libraries) into their own stack. In any case, the status of Java as a working language at the database level ensures that Java developers will be able to understand and work with these databases easier. Encodings or string delimiters will not bother Java developers.

Reason number 11: Minecraft is driving this century.
While Ruby continues to collect his share of fans, the next generation falls in love with Java. Why? One word: Minecraft. It is written in Java. Young gamers who want to extend Minecraft need to know Java in order to write Minecraft plugins. This ensures that matured "kids" will certainly write in Java.

Reason # 12: Open source
Sun has always been one of the leaders in the Open Source community, but it has never dared to completely release Java. This did not prevent Java programmers from writing a bunch of excellent libraries and projects under free open licenses. The Apache project continues to deliver many Java projects under a license that does not require much in return.
Sun finished releasing most of the code under the GPL license in 2007. Since then, Sun and its new owner, Oracle, have tried to be good managers for the Java language. Oracle has undoubtedly damaged its reputation with claims against Google, but otherwise, the platform can be considered to be largely open and free.
Haters abound, but Java moves forward
Java certainly has its own problems. Java haters will continue to splutter and knock on the keyboard, posting malicious comments on the Internet. A garbage collector can cause hiccups and shivering. Data typing is a chore and cannot reject really bad code. Annotations are too complex. New Java features aren't evolving as fast as they were in the past. Braces add some confusion. This list goes on and on.
However, none of the competing technologies could not so widely and deeply land on the shores of the IT industry. Although some of the problems in Java are fairly easy to fix, fixes usually introduce their own problems.
In the end, this is one of the advantages of Java. It can be changed and used for almost any task. You can replace most libraries with your own code if you need special functionality. Java is a very flexible open source language. Regardless of the limitations of language and platform, practically any problems can be solved relatively easily. This means that Java programmers continue to be among the most productive. Despite the fact that Java books no longer dominate the bestseller list and Oracle doesn’t release updates as often as we would like, Java continues to not only live but flourish.