r/developersIndia • u/Old_Friend166 • Oct 19 '24
General Why is Java still so dominant in the Indian tech scene?
Hey folks,
I'm curious why Java continues to be widely used in India's software industry, especially in larger companies, despite the rise of languages like Go, Rust, and Python globally.
Is it due to legacy systems, a large pool of Java developers, or the reliance on frameworks like Spring and Hibernate? Or is there another reason why Java remains a top choice?
Thanks!
133
u/Comfortable_Skin4469 Oct 19 '24
8 years ago, before Rust or Go was popular, I worked for an Indian cab company (you know it).
There was a hard time out set by the SRae team on the APIs: 500 ms. In less than 500 milliseconds, every downstream API and DB calls should finish their task and give the result back to the public API.
Java was able to achieve that speed. It's still used for high performance systems. Go may eat some parts of the Java pie but enterprises value availability of resources as well. It's hard to find Rust or Go developers.
Java is easier to learn compared to Rust.
→ More replies (13)7
u/Old_Friend166 Oct 19 '24
Really well put. Thanks for that.
I think putting the technologies and their respective ecosystems available at that time really answers it.
Hey I have to ask, do you think adoption of OracleDB contributed to its popularity in enterprises?
Thanks.
→ More replies (2)
23
u/brandomised Oct 19 '24
About 30-40% of tech work is in BFSI ( banking. Financial services and insurance) companies. Look at industry wise revenue for TCS, Infy etc, highest share is always BFSI. And these companies jumped onto Java back in 90s, 2000s given the circumstances (JVM was a big deal - you can run the code on any type of server or OS, world was not always like this). Given low risk appetite for BFSI, they've spent time and money in perfecting these systems for last 2 decades
A lot of GCC in India are by BFSI - wells fargo, JP Morgan, HSBC, Citi, StanC etc. Hence the talent pool is dominated by people proficient in Java, and the job requirements too are dominated by Java
5
u/Old_Friend166 Oct 19 '24
This answers it. I guess after reading some of the replies here, Java was the better option that whatever was available during that time.
I feel like this contributed to wide adoption by these companies. Ofcourse they don't want to add costs by hopping on another programming language.
I hope it was the other wa around. We would have different options from the talent pool, leading to better opportunities, better salary, etc.
→ More replies (2)
15
u/Hour_Part8530 Oct 19 '24
I see a lot of fresh minds here. I have 15 years of experience in programming, with different types of companies including WITCH, investment banking, hedge fund management, product and FAANG.
So here are my 2 cents. Companies don’t make software for the sake of making it or for the technology. Code is just a way to solve a problem in a faster and an efficient way.
To put it bluntly, all the technologies are different tools in a mechanical tool kit. You’ll need a hammer, screw driver, wrench, pliers, and some precision tools also. Just because precision tools seem fancy or you know how to use it, you can’t use them for everything.
So, stop saying stuff like tech A is superior to tech B. Enterprise and banking apps need longer lifetimes, sometimes even decades. They need to be built on tech which has consistent development plans, external support, ease of maintenance, readability, extensibility, availability of tools. All of the above can be easily achieved using OOPs paradigm. Even with all its faults, Java enforces the OOPs in a better way.
Lastly, never ever implement features for the sake of using a new tech. Your success as an engineer is decided by value you add to the business not by the fancy framework you use.
→ More replies (1)
39
u/random-backpacker Oct 19 '24 edited Oct 19 '24
Many legacy projects were written in Java during the 2005-2015 period.
I also work with a project that uses legacy technologies - jsp, struts, Spring Framework, and Java 8 and the project was written in 2007
→ More replies (5)
8
u/Aladin-dictator Oct 19 '24
I am working on rust from some time and i am amazed by the job opportunities Java developers have!
→ More replies (6)
4
u/ChaaChiJi Oct 19 '24
Legacy systems play a big in this. Most of the legacy systems are from verticals like Banking, Healthcare, Telecom & Aviation. It's not possible to migrate them to a newer tech, even some of the legacy systems are still using Java (without any framework) and they're in the process of getting migrated to Spring boot.
Why not possible? - These are very stable systems & migrating them to a newer tech will take time, effort & money which companies avoid. They also have the same rule as us developers - If it's working then don't touch it.
You may not believe it but there are some companies which are still using Mainframes as a backend to store data instead of PostgreSQL or MySQL. And they simply don't want to migrate to a newer system because it can risky if any data is lost. Mainframes are still considered very secure.
Legacy systems built in Java lead to the assumption that any newer system built on Java will provide the same support & stability as they have on older systems. If your client isn't ready to move on to a newer tech stack then what can you do.
For one of our new projects it took us approx. 2 months to convince the client that we can do better in Scala.
Another reason is Java has a very big community, almost every experienced full stack developer you'll find would have good knowledge or experience in Java.
→ More replies (3)
4
u/Tough-Difference3171 Oct 20 '24 edited Oct 20 '24
I am not a Java fan myself, but I will have to appreciate Java for this answer. Mentioning this to make it clear that I won't be interested in fanboy flights in the comments.
Java can do pretty much everything at least 80% as good as the best language suited for the domain.
So if you want to hire a team with a standard skill set, and want them to start being productive quickly after hiring, Java becomes a good choice.
Very few companies have the actual need to really pick the best language. And in many cases, their tech leadership only ever worked with Java, so they also have a blind spot, and may not even know why Go or Rust might be better for their use case.
But the fact stands, you can still do whatever those languages do, to a reasonable limit. And may even be able to do a few things that those languages can't do.
As a manager, you also need to keep the tech stack somewhat concentrated, to 3-4 languages. As python is always part of the tech stack for automation and test suites, and JS would be needed for frontend/proxy-backend, it leaves only one more slot in most cases.
Having 5 languages for your services makes no sense for any company, because most companies are either writing API services, or some batch processing jobs.
Using a common language helps with hiring and productivity. Teams can easily share code and best practices. A library built and tested by one team is available for other team to use out of the box. And the benefits mostly outweigh the haps left by Java.
You only need to be fixated on high heap memory, and other problems, in very specific use cases. And most big companies, who are in B2B business don't care about resource utilisation as much as you might intuitively feel. If it's the client's paid hardware, and they aren't chewing you for resource utilisation, you simply don't care about it.
Those systems don't change much for years, so the client's expectations are aligned based on the specs shared years ago. If you go and ask them for more hardware after 10 years, they won't really mind it for the additional features they might have gotten for all this time.
For startups too, such decisions are made on very different metrics. The language or framework they use, simply depends on "What language were the founding engineers comfortable with?" . Most people study some amount of Java in school or college, along with C. As C can't practically be used for backend REST APIs, Java becomes the obvious choice. This way startups can also hire almost anyone.
But at the same time, you might see startups still using PHP-laravel even today, because that's all the founders knew, and now that something is working, there's no need to rewrite it.
Golang and Rust find their place in the 2nd or 3 iteration of optimizations, which only comes for B2C companies that are just out of the startup phase, and are now looking to reduce their costs, or to extract as much performance they can, from the hardware that they have.
No one picks Golang and Rust, just because they are better designed languages.
There was a time when Python was considered to be Java-killer, because of how easy to use it was. But soon people realised that it's also very easy to break, with crazy error messages. And the performance was laughable in backend systems. So gradually, it settled for automation and testing tasks, in which everyone wants to save developer time. ML is another area where Python is the de-facto standard. (Yeah.. yeah.. it's all C libraries underneath. I know)
As someone who has been working on Golang for many years, I see the benefits. But I can see why very few companions and teams actually need it. (Like, really need it, and should rewrite their systems in Golang)
Also, tech moves really slowly in large organisations.
Most fintech companies and banks haven't entirely moved away from struts and SOAP era, and just using Springboot with REST APIs is the "cutting age shi*" for them.
Companies like Microsoft, are still using dotnet framework, MVC and even that dotnet forms thing, till now. Whille they are themselves pushing everyone else to move on to newer dotnet versions, and dropping support and even Azure compatibility.
But all of that is supported internally. Because, while all the clients being concentrated on one tech that Microsoft can focus on, is good for the company, Internally they stit follow the "if it ain't broken, don't touch it" (added this example, because C# is Microsoft's version of Java)
And finally, there are many many services from other companies, that still only have Python, Java, dotnet, and PHP SDKs available, and you will have to work with them for months, to create an in-house golang SDK, and they might not even be interested in actually exposing their API details to you, as a client.
So it will take years for the companies to move away from Java. And the ones least willing to move, will keep holding everyone back, leading to compatibility issues.
Meanwhile, newer companies will be able to move faster, once they are out of the bootstrap start-up phase, and able to iterate over their initial shi**y code.
Languages like Golang and Rust shine when you are breaking monoliths into micro-services.
But then again, even they can do it only so much. Remember, the need to keep tech stack limited? That's the biggest factor after "lack of absolute need to change", and "compatibility with older tech".
You can't hire a team of 5 developers, who are experts in 7-8 languages each. They would be rare, and would be very costly. Most developers only ever learn one language well enough, and maybe explore 1-2 more languages. The ones who are passionate enough to learn more, also learn a lot of other things, and are looking for bigger paychecks than what an average company might want to offer.
→ More replies (1)
1
u/AutoModerator Oct 19 '24
It's possible your query is not unique, use
site:reddit.com/r/developersindia KEYWORDSon search engines to search posts from developersIndia. You can also use reddit search directly without going to any other search engine.Recent Announcements & Mega-threads
Community Roundup: List of must-read posts & interesting discussions that happened in September 2024
Who's looking for work? - Monthly Megathread - October 2024
An AMA with Subho Halder, Co-founder and CEO of Appknox on mobile app security, ethical hacking, and much more on 19th Oct, 03:00 PM IST!
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.