Java has stood the test of time as a programming language. A pioneering high-level language introduced in 1995 is still popular and widely used to build some of the most prevalent software that shapes our world today. So, what makes it so successful? And how does a software programmer build a lasting career in software development using Java? To answer these questions and more, Alina Vicol and Shantanu Yadav from Nagarro's global marketing team engaged in this in-depth conversation with Nagarro's Java maestros Ashish Sharma, Relu Seicariu, and Richard Payer. Enjoy this latest edition of Think Nagarro Today about everything Java!
Our experts:
Ashish Sharma from India is the Global Head of Nagarro's Travel and Aviation Practice and an early Java proponent! He has been with Nagarro for over ten years and credits it to the family-like #CARING culture here.
Richard Payer from Austria is a very experienced Applications Engineer and Navigator with Nagarro.
Relu Seicariu from Romania is a Distinguished Engineer and Solution Architect at Nagarro. His primary focus includes building solutions for our eminent BFSI, telecom, and transportation clients. Relu loves to learn, and that's why he loves being in Java, given the steep learning curve!
Alina Vicol: Before we dive into a deep conversation about Java, let's lighten the mood and break some ice. Shantanu, I know you have prepared some compelling word wrap questions. 🙂
Shantanu Yadav: Thank you, Alina. Ashish, let's start with you. How would you complete the sentence: for once in my life, I want…..
Ashish: For once in my life, I want to run a marathon!
Shantanu Yadav: Richard, which headline would you want to read about yourself in the future?
Richard: I would love to be in the newspaper about some of the work I do. That would be amazing.
Shantanu Yadav: Relu, what brings you the most happiness?
Relu: I am happiest when I get to work on innovative new solutions with people from across the world.
Shantanu Yadav: I've heard from many Java experts that Java is like a vast ocean, and it's almost impossible to learn everything about software development using Java. So, where should one start when trying to skill themselves in Java? And how do you continue learning Java?
Ashish Sharma: Look, Java has been around for many years. The first JDK was released in 1995, but now it has many flavors. So there are many sites and tutorials that you can start learning from, and once you have a good understanding of Java as a programming language, then there are many places where you can dig deeper. For example, the support of Spring Framework and the Apache Foundation. They keep coming out with great projects. Then if you wish to work on the cloud part, places like Oracle Java Cloud Services AWS SDK are great. Since Java is quite an old and mature language, you will find many tutorials, YouTube videos, and books to delve into.
Richard Payer: For me, the first question is, where is your starting point? Do you have any programming experience at all? So first of all, I think you need to learn how programming works and learn to think like a programmer. And the second thing is to really understand object orientation in programming because I think it's always harder to execute it in a real-world problem than in school. Then, as Ashish said, there are a lot of frameworks and important things like Spring, which is one of the best examples of frameworks we all use daily.
Shantanu Yadav: So one thing that both of you mentioned is that, before learning Java, it's more important first to become a programmer, get the right mindset of being a programmer and then become a Java developer, right? How do you go about, you know, getting the right programming or problem-solving mindset?
Relu Seicariu: Yeah. I would advise the freshers not to look at Java space in totality with all the frameworks around it. Because if you look at it like that, it's a vast ecosystem. The core is the SDK, and Java is like any other language. If you understand object-oriented programming well, it'll make your life much easier. And if you look at frameworks, there are always good and bad things. The Java community is driving a lot of frameworks. As a developer, you'll grow very quickly in new technologies if you have the correct basics, and the frameworks will be an addition when you need them. With the right fundamentals, the learning curve is straightforward.
Shantanu Yadav: Ashish, you mentioned that Java is a mature language. Can you elaborate a bit on it? And could you contrast it with a language that is not mature yet, for example?
Ashish Sharma: If you look at the programming/development space over the past two decades, there used to be client-server programming, then Web 1.0, Web 2.0, and now there's Web 3.0, there's Big Data, we are talking about mobile devices, loT etc. You will see that Java was there right from Day 1, and it's kept on growing, with new features and compatibility with all the frameworks. That's how I can say that Java will never be redundant. Although we will see, for example, in Big Data, people use Python as the choice of their programming language, Java is still there. It's pretty mature. It's evolved with different versions. For instance, Java 8 is the most stable version that most programmers use, but they have added some great features since 9, 10, and 17 as well, with things like reactive streams, Jigsaw. That's how Java has become mature and compatible, and it is because of the basic paradigm of the language being object-oriented, which Richard also mentioned.
Alina Vicol: Since we're talking about the Java ecosystem's learning curve and everything that makes it important for new developers, what are some of the ways people working with Java are making a difference in the world? How are they transforming the world today? Could you give some examples of its importance in the technology ecosystem and in shaping the future?
Ashish Sharma: Modern IT has transformed everything, from your home security system to how your car drives, how you communicate, and everything else. You'll see that now there's a chip everywhere. This is how the world has changed, and you will see that people are using Java as a programming language in most of these ecosystems. For example, let's look at IoT, cloud, and Android development. Android development is predominantly Java. So Java has never lost its shine, and with all the new technology, the innovation, somehow, somewhere, you will need it as the fundamental programming language.
Richard Payer: True. It's one of the biggest programming languages used in the world. And it's a great community where many people are trying to solve specific problems and creating new libraries for new things that are not currently possible or easy to execute in Java. We all reap the benefits of this big community. And I think that's one of the great powers of Java.
Relu Seicariu: The community, open-source aspects of Java don't get enough credit. So, usually, change happens through innovation, right? So, to bring about a big change, you need to have many people innovating together and be open-source so everyone can contribute. And Java has both. I think it's the biggest developer community on open-source in the world currently. I think there were more than 10 million developers around the Java spectrum a couple of years ago. So for anything new in tech, whether it's IoT, ML, or something new in blockchain, one of the first technologies to be used will be Java simply because there are a lot of Java experts. Many contributions will happen automatically. You go to other technologies only if Java is not good enough. But yeah, Java will always be driven by the community, and that's why it's so powerful, and it's still up there in the top languages more than 20 years after its conception.
Ashish Sharma: Yeah, to add to what Relu has just mentioned, I think the real reason Java has been among the top choices of programming languages through all these years is its construct. It's always been an open-source, community-driven technology, not owned by a centralized group of people or companies. So that's why you have seen enormous contributions by the community over the years.
Shantanu Yadav: Is there a particular reason that the community has taken so keenly to Java because there are many other popular languages, like Python or JavaScript. So why exactly is the community element so strong with Java?
Ashish Sharma: When the modern programming language was born, the real choice was between the Microsoft Visual Basic technologies, with Microsoft-owned centralized software, and Java, which was always open-source. As a developer and an engineer, you always bind together over the kind of frameworks where you can look into what's happening under the hood. So that's the reason that when it started, Java was so widespread, people started using it, and that's how it quickly matured as well. For me, that's the primary reason.
Richard Payer: Also, I'm not sure if this is true; a big reason people want to play around with it is that it is not bound to an explicit operating system.
Relu Seicariu: I think the innovation is leaning more towards JavaScript frameworks because it's less mature, but that's also its big disadvantage. The maturity of the frameworks around JavaScript is not at the level of Java right now. Going with JavaScript is a big risk if you're building a big enterprise solution. And backward compatibility is not always the best with its frameworks.
Alina Vicol: As you mentioned, the open-source, the community, and all the other positive aspects that make Java still stand out are important. From the perspective of a professional software developer, how does Java stack up as a technology against newer languages and frameworks?
Relu Seicariu: I think we have a greater array of coding technologies around right now. Great products that you can get off the shelf and create great solutions. So, if you're creating a small application, you will be fine picking a newer technology. But if you're working on a big corporate one, if you have a large customer needing a complex solution, you need the means and the technology to deliver that success. Right now, with other technologies, they're good, but you, maybe, need to do a lot of development to make them work. But with Java, you are sure that a lot of projects have already been done. So you already have the right technologies, good and bad cases, to look at to make the best decisions for your application. Looking at the architecture role that I also play, it's a safer role to play with big solutions currently. And that's where a developer's satisfaction will come from. When working on a big solution with a big partner, that complex solution is always something to remember ten years later.
The challenge Java is facing at the moment is Serverless. There are very fast technologies out there that don't have a Java Virtual Machine to maintain, are faster to boot, faster to run, and make less footprint on memory consumption. So Java is not the best in that space.
But there are a lot of efforts happening around that. Serverless is the new ground, and Java isn't there yet. With extreme booting power, that wasn't a concern in the past. So Java is coming from a legacy where you boot the system. It doesn't matter how much resources and time it takes, but after you boot, you want to have it running for months without restart. Now with containers and Serverless coming along, you need a very fast boot and warm-up. I see the Java community, mainly also Red Hat, who are also big providers of custom JVMs, working towards that.
Richard Payer: And that's interesting for the future because, at the moment, Java is also popular in this area. I guess because it's very robust and a lot of people know how to handle it, and all Java developers know that it uses a lot of memory. It's time to start having a look at things like Java spring services running as a Kubernetes port taking about one minute to start, which is still a lot of time, but it has its advantages and disadvantages of being a robust system we are all aware of. On the other hand, newer technologies are not there at the moment. But yeah, having Java as a possibility for serverless coding will be very interesting.
Shantanu Yadav: While we're talking about Java and its future, what are the long-term avenues for Java professionals who are just starting out now? We have established that it's a mature technology, but newer competitors are coming up. So what do you think are the long-term professional avenues for Java developers that are just starting out?
Richard Payer: My opinion on this is that it's not only about Java and programming and being a software developer. I think for the future of every software developer, it will be necessary to have some know-how about infrastructure and certain DevOps things. They'll have to know the possibilities of the cloud, know about Docker, Kubernetes and so on. Eventually, I think we all will, or even right now, we are already not just developers, but we also operate the code, our project, our services and so on. For example, Kubernetes clusters where we also partly handle some operational things, and I think that's important to learn for someone starting out. And I think that in the future, a developer will need to know a lot more about operations as compared to 10 years ago, for example.
Ashish Sharma: Once you start with Java as your programming language of choice, you can move in multiple directions. For example, there's the whole world of mobile development. You can jump into DevOps, where you have to operate large clusters. There is cloud, AI and ML, Big Data. I mean, all these things are the future. So if you have the basic concepts of Java, then all these additional technologies are just like another framework on top of it.
Relu Seicariu: These are exciting days to be a developer in Java because you're going to be more familiar with what resource consumption means, how you optimize your resources, and how you make things communicate in a cluster. You'll need a lot more understanding of the entire ecosystem, not just the programming language. And it's very easy. Since most of these things are Java-based, you can do the learning quite easily and be the DevOps guy, the mobile guy quite easily.
Alina Vicol: I have a question that we've addressed to a few other colleagues. How is Nagarro making Java cool? A few colleagues responded with the community aspect of it: they can work together with different technologies and roles, PM, BA, UX, UI, etc. So, in your opinion, what do we do in order to make Java cool as a company?
Ashish Sharma: When you start a project, you have a problem statement that needs to be solved. You need to make certain choices based on that: What kind of frameworks and libraries do you want to use etc. At Nagarro, that choice is entirely up to you, so you can literally build your own story there! You can choose how you want to solve a particular problem. And with Java being open-source, there are many libraries and frameworks. In Nagarro, you are free to do POCs. You can brainstorm the topics and their pros and cons. So that's great. Another thing is very regularly, we do hackathons on innovative ideas where we ideate on topics of business relevance, and then different people come up with some cool solutions to solve that problem statement.
Richard Payer: I think the point is that in Nagarro, we're not just pressing buttons on the keyboard doing something another person told us to do, but we are creating solutions together. We think about the problem itself and have the freedom to choose how to work on that solution. It's not only about Java development, but having a look at, for example, some requirements engineering and helping colleagues from that area to help them also understand a little bit of the technology stack and how we can do things better.
Relu Seicariu: For me, if there's one thing, it has to be the community here. There are many developments around Java, and you want to keep up with all of those. So what Nagarro does is that there are a lot of Java spaces where the latest topics are discussed and debated. You can discuss new developments with your peers or see them firsthand.
There is a lot of sharing happening. If you want to make a crucial decision in a project where you want to propose something new, you have the support. It makes it so much easier for you to make decisions that are innovative.
Keeping up with the innovation happening in Java requires you to have an active community to make the best decisions for the clients. Recently, we've been looking a bit into innovations using Quarkus. We are also playing with Java in the blockchain space a bit lately, and that's also quite an interesting domain to explore in Java.
Shantanu Yadav: What are some new things you are excited about that have recently happened with Java SDK. And any word of advice, any parting words that you have for our readers and viewers?
Ashish Sharma: Well, I would say that yes, now the technology landscape is changing, and it's been changing rapidly, and rather than just doing the coding for a project, it's more about value addition. It's more about how you can add value to your customer's problem statement. And with Java as a programming language, there are many things you can do. For example, let me mention them again: the AI/ML world, the data engineering side of things, mobile applications, and cloud microservice architectures. There's a whole big ocean of things that we can keep talking about. But yeah, the first step is controlling the programming language. And if you do, you definitely have a great advantage in diving into these new areas.
Richard Payer: We, software developers, are generally seen by the world as technicians. But I think we have to say that software development is a lot more creative than you'd expect. We have to try to be creative to find new and great solutions for some problem statements.
Relu Seicariu: In the Java space, you can use it to create an extensive solution that can scale up to millions of customers and be a successful product for your customer in the end. So that's what I think is most important. I'm also playing an architect role. I'm always confident on the Java side regarding high scalability with high demands, regardless of the business domain, whether the customer is from a medical, airline, or financial systems domain.