Make Java Great Again
Java is a great programming language very different to Python or Ruby it is a little verbose, strict, hard to learn and the code is complex. When poor experience and bad implementations take place on projects, developers will move slow.
Great software is built on Java, like Corporate Applications with very high availability, high security Banking Applications, intuitive Web Sites, high consumed RESTFull APIs or even high downloaded Desktop Application. Nowadays Java is used on corporate environments as one of the most trusted programming languages. In fact there are a number of big enterprises that use and trust Java in their core applications.
It is well known that Netflix uses Java RESTFull APIs for their Web Services as a highly available and reliability all around the world. Seldom did Netflix have had an outage of their service thanks to the Amazon Web Services and Java.
One the biggest companies in the world of Software started with a simple and efficient search engine built on Java. After that they still build on Java some of their core applications. Android is built on Java for example.
The biggest company at Software in terms of Web Services. Amazon Web Services has the 39% of the Cloud Services market in the world. Amazon trust to Java a lot of their applications and infrastructure.
So all those facts suggest me something: Java is a great chose if you are experience enough to define a strong architecture, be able to work with the strongest frameworks, create fast and useful APIs, connect the correct technologies at the front end and have a fresh vision to design with User Experience and Mobile First mind. In fact there are some advantages that really make learn Java worth it.
Jobs & Salary
It is a reality that Java is still the programming language with most of the job offers, it is also true that is not the best paid programming language but it keeps between the firsts when it comes to salary. It is also important to mention that being a Java Developer will allow you to get access to some of the biggest tech companies in the world like Amazon, Microsoft or IBM.
Complexity & Flexibility
Some beginner programmers may think that Java being complex and strict is a disadvantage but it actually is a great characteristic since it allows developer to think in a structured and ordered way and develop complex thinking. When learning another programming language it will be easier so the developer will have the flexibility to code anywhere else.
When a Java developer takes Android programming it is easier to learn and start building Android Applications, since Android is based on Java and the applications are coded with it. It is a great advantage since only will have to learn design patterns and maybe some of Google´s Material Design in comparison to a programmer who comes from another language or one that has never coded. Like this the developer will be able not only to build Web and Stand Alone applications but Native Mobile Applications.
Community and Documentation
The Java community is very formal, big and active, in Stack Overflow, the social network for developers, Java is one of the most active languages. On the other hand Oracle documentations for Java is vast and clear. These are very important characteristic when developers are learning since they will be able to solve their doubts quickly and easy and also be able to learn the best practices at the laanguage.
It is true that Java is very complex, hard and sometimes inflexible but it is also true that development teams can accomplish great architecture, functionality and design. It depends on how the developer´s capabilities and the passion they invest on creating great and innovation products with this technology. Nowadays there is a number of technologies to integrate with Java, like enterprise frameworks, data bases or Web Servers, but I want to focus on the ones that are not currently been taking in consideration and can make Java very flexible as it competitors.
Python is a modern high level programming language, is very strong at the data analysis, it is as fast as Java. But it is not trusted as core language for big corporates since it is part of the Open Source Software, and the mentality is that it may have vulnerabilities to explode. Even tough Python is used for these kink of corporates for make data treatment quick and effective. So it is a definitely the best of option for repetitive backend tasks and you should integrate it with Java to exploit it´s advantages.
Git / GitLab
Git is currently the most popular Version Control System in the World because it is highly effective and it allows great flexibility to teams and developers, it is definitely the best idea to manage any programming language project in order to keep order and scale fast. Gitlab on the other hand is a Remote Version Control Server that allows to store code via Git so it be always available and secure, it allows programmers have a intuitive interface for common Git Operations and allow teams to have a better tracking of their project as I mention on my ‘4 reasons why you should use Git’ article. And if that was not enough, Gitlab is open source and you can host it on your own server.
Gradle is a Build System for Java and C/C++ that allows have flexibility and speed to the build operations during the project. It is the system Google officially uses for Android and it is easier and faster that Maven or the inner IDE´s tools. Definetly a good chose to add flexibility to the projects since it allows automatic builds and comes with Integration Tools and generate Build Report.
Currently on development world RESTFull APIs are the engine for some of the best Web, Mobile and Smart TV applications since it allow any kind of client to consume information from the Data Bases on Json Format in a very agile and transparent way. The problem is that most of the Java applications still using SOAP APIs, the last most popular version for communicating applications, so it makes applications slower and not flexible. RESTFull APIs is the very best option nowadays for Java and any other language.
It is important to insist on the fact that I am not mentioning the Full Stack for Java but the technologies and tools that are not being used and that would add a lot of flexibility and speed to the development process in Java. I would also add SCRUM to the list, I know it is not a technology but a framework and methodology for building products, but it definitely adds the this speed and flexibility we need in Java development projects.
Java is still a great programming language to learn because it is highly trusted for the top enterprises at their core business applications. Besides it trains the developer at complexity and structured thinking that will allow the developer learn any other programming language in an easier way. Additionaly Java allows developers to start programming in Android almost immediately. Moreover it is a reality that most of the job posts are still looking for experienced Java developers for positions at some of the top tech companies.