Millions of developers and a huge number of devices worldwide are using Java programming language. The reason is its simplicity and readability. All native Android apps are built in Java and 90 percent of Fortune 500 companies use Java as a server-side language for backend development. As a class-based, object-oriented language, Java is also designed to be portable, which means that you can find it on all platforms, operating systems, and devices. We can say that these are the main reasons why we at codecentric prefer Java.
So, one of the best Senior Java Developers in codecentric Serbia, Milica Živkov, told us in couple of lines “What are the advantages of Java” from her viewpoint.
Why have you opted for Java?
I have been working as a programmer for just a little bit more than 8 years. Java is not something I have chosen intentionally; it was the language which was taught at the Faculty, and also the language that was used in the company where I had my first job. Fortunately, I liked it, and I’m still using it.
In your opinion, why someone should choose Java?
One of the main reasons why Java has become so popular is the famous slogan: “Write once, run anywhere“. Although it is no longer exclusive to Java, because there are other languages which run on the JVM, it is still one of the key advantages. Java is everywhere, from mobile applications to enterprise systems. This fact is very important in the everyday life of the developers because it forms a strong community. Java also has excellent IDE choices, great frameworks and libraries for writing tests, build tools, and it is still widely-used and evolving.
What are the biggest challenges of a Java programmer?
The biggest challenges for a developer are to stay in the loop with the entire ecosystem of frameworks, library, tools, trends and concepts which are being built around the language, and moreover to really learn them. All these things exist in order to solve some common problems, and let us be focused on solving business requests. But you can’t actually solve any business request until you master those technologies. For example, if you want to use RabbitMQ as a messaging system, first you have to install and configure it, then place it in a docker container of course, then make it communicate to RabbitMQ by using rabbit client library wrapped by Spring library abstracted with Spring Integration layer and probably pre-configured with Spring Boot. No matter what business request is being solved, there will be tech stack to master. And of course, there is that problem of naming variables. Then the fact that I finished socio-linguistic studies in grammar school makes perfect sense.
For which projects the Java is the best and why?
Java is still leading language when it comes to enterprise applications, and one of the key reasons is certainly that rich ecosystem that I mentioned before. When you need to make a robust and long sustainable application for a larger number of users Java is still a good choice. Although it’s hard to find a project which is using just one language, usually it is a collaboration of many things.
What does someone, who considers himself a Senior Java Developer, have to know?
I could not give you the exact technology stack of what someone should know, because these are things which are constantly changing, and one person is better with one technology, while somebody else in another. What is very important for the seniors is to really understand things they are using and not just be users. Senior developer should be able to lead quality and constructive discussions on how to solve problems, to initiate the change and to be the one who is suggesting the improvements of the existing system. These are some general things for all seniors, regardless of the language which is their focus.
What are the problems of Java programming?
One, which immediately comes across my mind, is the memory problem. There is a famous saying “You never have to worry about memory – until you run out.” Although Java has a GC as a mechanism to release the memory, I do not believe that there is a developer who did not see Out of Memory error. Just try to read somewhat big list without any pagination, and you will have the problem. This is the problem that can easily happen because of the fact that the GC exists often leads us to forget the aspect of memory.
On what kind of projects and with which industries would you like to work? Why? What would be a challenge for you at the moment?
I like projects which offer a high degree of freedom and independence, in the sense that developers have an impact on the design, and not just to deliver the request. I would also like that the application does exist to solve the real problems of the clients, as opposed to those applications which are developed for political or diplomatic reasons, but no one really wants to use them. My ideal would be the project which contributes to the society and has a noble goal, as opposed to the mere increase of the company’s profit.
Do you go to the conferences, which one would you set aside?
The only conference I have visited is Coding Serbia in Novi Sad. When it comes to professional development, I prefer workshops and trainings. Recently I was on a great Crafting Code training, which was held by Sandro Mancuso in Hamburg. Focus was on TDD, software design and Clean Code practices. Another excellent workshop was the docker workshop which was held by a colleague in the company. Anyway workshops and training sessions give me the feeling that I have immediately learned something and that I am able to apply it on the project.
Which web sites, texts, links, recordings, lectures, books would you recommend to the Java developers?
Java Performance: The Definitive Guide by Scott Oaks is the book that I would recommend everybody and which you will surely need when you are maintaining the system in production. On the topic of security – everything by Troy Hunt, who is, among the other things, the creator of haveibeenpwned.com service. OWASP Foundation also offers many resources on the topic of security, from the basics to some more advanced topics. I am regularly getting notifications on new dzone articles. You can always find something interesting there.