
I wish I was a Java developer
Java is a skill that many companies are continuing to require. I have worked for a couple of companies that use Java as core of their backend and enterprise applications. I have made a Java course and I have started coding with this language. Maybe it's the strongest OOP language I have ever used. But soon I have started to see how complex, slow and bad was the architecture of some projects can be. It's easy to work on a green field at the beginning but again I have seen many companies and people reinventing the wheel and soon having many problems when the application grows. Here you have to maintain the code and you will have many problems with dependencies, customer care and many more aspects of software lifecycle.
Java web applications?
Just a personal opinion: developing web applications with Java really sucks! There is nothing you cannot do with Python or PHP. Java is good only for enterprise or huge applications with Big Data. Otherwise, there is no reason to use Java for the web! In this case, I suggest using some framework like Spring Boot to create a RESTful API.
The Java Ecosystem
This what I hated more about Java. All is VERY SLOW. From Eclipse to the building tools. From the compiling process to the implementation of the business logic.
All is about configuring properties, making them work and all the environment is tied to the single instance of the app or the application server you have configured inside the Eclipse IDE! This is simply horrible, frustrating and it makes you swear and angry for a large amount of time you lose without writing a single line of code!!
So I decided to stay away from Java. With Python, PHP and NodeJS you can code fast, learn more and build amazing apps for multiple purposes. Just don't use Java!
The Good Part
Java itself is good programming. Maven is a complex build tool while Spring seems my favorite framework. Spring Boot can help anyone to create a structured project and work more on application features instead of loosing a lot of time configuring some IDE, project or development tool. So here you can take advantages of Java. Remember to write all kind of tests and do not tie your backend to your presentation layer or you will suffer the consequences!