C# Challenges Java in Programming Language Popularity (infoworld.com) 109
"The gap between C# and Java never has been so small," according to October's update for TIOBE's "Programming Community Index".
"Currently, the difference is only 1.2%, and if the trends remain this way, C# will surpass Java in about 2 month's time." Java shows the largest decline of -3.92% and C# the largest gain of +3.29% of all programming languages (annually).
The two languages have always been used in similar domains and thus have been competitors for more than 2 decades now. Java's decline in popularity is mainly caused by Oracle's decision to introduce a paid license model after Java 8. Microsoft took the opposite approach with C#. In the past, C# could only be used as part of commercial tool Visual Studio. Nowadays, C# is free and open source and it's embraced by many developers.
There are also other reasons for Java's decline. First of all, the Java language definition has not changed much the past few years and Kotlin, its fully compatible direct competitor, is easier to use and free of charge.
"Java remains a critical language in enterprise computing," argues InfoWorld, "with Java 21 just released last month and Java 22 due next March. And free open source binaries of Java still are available via OpenJDK." InfoWorld also notes TIOBE's ranking is different than other indexes. TIOBE's top 10:
"Currently, the difference is only 1.2%, and if the trends remain this way, C# will surpass Java in about 2 month's time." Java shows the largest decline of -3.92% and C# the largest gain of +3.29% of all programming languages (annually).
The two languages have always been used in similar domains and thus have been competitors for more than 2 decades now. Java's decline in popularity is mainly caused by Oracle's decision to introduce a paid license model after Java 8. Microsoft took the opposite approach with C#. In the past, C# could only be used as part of commercial tool Visual Studio. Nowadays, C# is free and open source and it's embraced by many developers.
There are also other reasons for Java's decline. First of all, the Java language definition has not changed much the past few years and Kotlin, its fully compatible direct competitor, is easier to use and free of charge.
"Java remains a critical language in enterprise computing," argues InfoWorld, "with Java 21 just released last month and Java 22 due next March. And free open source binaries of Java still are available via OpenJDK." InfoWorld also notes TIOBE's ranking is different than other indexes. TIOBE's top 10:
- Python (14.82%)
- C (12.08%)
- C++ (10.67%)
- Java (8.92%)
- C# (7.71%)
- JavaScript (2.91%)
- Visual Basic (2.13%)
- PHP (1.9%)
- SQL (1.78%)
- Assembly (1.64%)
And here's the Pypl Popularity of Programming Language (based on searches for language tutorials on Google):
- Python, with a 28.05% share
- Java (15.88%)
- JavaScript (9.27%)
- C# (6.79%)
- C/C++ (6.59%)
- PHP (4.86%)
- R (4.45%)
- TypeScript (2.93%)
- Swift (2.69%)
- Objective-C (2.29%)
Dumb (Score:4, Informative)
Java's decline in popularity is mainly caused by Oracle's decision to introduce a paid license model after Java 8. Microsoft took the opposite approach with C#. In the past, C# could only be used as part of commercial tool Visual Studio. Nowadays, C# is free and open source and it's embraced by many developers.
Java is free and open source. Choose a language, but don't turn your brain off.
Re: Dumb (Score:4, Informative)
The code is open source but the Oracle builds are not. Yes there are alternative builds like Corretto but this sort of shit annoys people. So too does the glacial pace of improvement in Java land althought Java 21 has some good stuff. I dont see C# being much better though. If I were starting a fresh project not sure I'd want to use either of them.
Re: Dumb (Score:3)
So is C# and .NET.
Re: (Score:3, Informative)
OpenJDK is FOSS and you can use it freely without paying for a commercial Java license.
You are confusing the issue the same way Oracles does hoping to scare suckers into thinking they need to pay a license fee to use Java. We got those stupid emails too and I told Oracle we use OpenJDK and that was the end of that.
Re: (Score:2, Informative)
.net is FOSS and you can use it any way you like without paying for Larry Ellison's 3rd yacht. The Java shakedown is real.
Re: (Score:2)
For some versions of the Oracle-supplied JDK, you need a commercial license. The moment that appeared everyone switched over to OpenJDK and got on with life. There are no restrictions.
Re: (Score:2)
> Use Java at all, OpenJDK there's still a high chance of the org having to go through their extensive review, Being found to be short on licenses, and then have to raise it as a defense that they are OpenJDK. The problem is using Java at all opens up the possibility of this coming up.
This post seems to be generated by ChatGPT.
No, there's no "extensive review" and no company is found to be short on licenses, by using OpenJDK. Company policy is "use OpenJDK" and we're done because the infrastructure is pr
Re: (Score:2)
Re: Dumb (Score:4, Interesting)
A colleague told me that His company got invoiced during an audit because oracle found some vendor devices offering up java webstart applications and inferred every desktop needed an implied jre license, because they assumed it would be needed.
You may be safe if you have no business relationship with oracle, but if any part of your company has a business relationship with oracle, the audits often assume the worst and invoice you accordingly.
Re: (Score:3)
Oracle is aggressive about audits. Back in the mid 90s, we were using Oracle database for our website. An overkill for what we needed. Just one Oracle product. Granted it was a small business. And then we got a notice of an Oracle audit. A first ever software audit for us. We switched to PostgreSQL. I have avoided Oracle products since then. I did use Java for a while when Sun owned it. Now, I primarily use C#. The biggest issue with C# for me was that it was not cross-platform. And the tooling,
Re: (Score:2)
A colleague told me that His company got invoiced during an audit because oracle found some vendor devices offering up java webstart applications and inferred every desktop needed an implied jre license, because they assumed it would be needed.
This is exactly the sort of thing i'm referring to. OpenJDK Only provides a potential argument to avoid buying all that Java - It doesn't mean the 3rd party auditor won't come to this finding or that the vendor won't advance the argument that you gotta pay for all
Re: (Score:2)
Insofar as it's up to me I still don't use any Microsoft products that aren't F/OSS and cross platform, with the sole exception of Visual Studio, and, even there, I would be using Code if it supported most of the legacy stuff we still have out there. So in my position I'm not required to worry about CALs.
We do have products that use MSSQL, and outgrow their free MSSQL Express licenses sooner than expected, and there's been talk about moving these to Posgresql. The difficulty turns out to be the large numb
Re: (Score:2)
Oracle likes to go fishing.
Re: (Score:2)
No, there's no "extensive review" and no company is found to be short on licenses
Hi... Which division of Oracle do you work for?
Re: (Score:2)
The key is don't use any Oracle products so you don't end up signing a deal with the devil that grants them permission to do an audit. As long as you follow that simple and fiscally sound advice, if they come knocking, tell them to come back with a court order. They won't.
Re: (Score:2)
"Also, even if you used the OpenJDK they still bother enterprises about Java usage."
Find me one example of a company being harassed by oracle for using OpenJDK.
Also "no one knows about it" is a naive thing to say given it's the default JDK for Ubuntu and others
Re: (Score:2)
Well there was that 8 billion dollar lawsuit against Google...
Re: (Score:2)
Re: (Score:2)
Find me one example of a company being harassed by oracle for using OpenJDK.
"Harassed" is not the right word.. You have another Oracle app somewhere in your organization, then there is contractual language requiring you to submit to an audit --- In that sense they "Harass" every single company who purchases any of their software on a regular basis - You have a server in a closet somewhere running Oracle DB, and that's enough. They'll send in auditors you're required to comply with that will go through
Re: (Score:2)
Re: (Score:2)
I'm sorry, but that is nowhere near sufficient assurance for me, given that Oracle is litigious enough to have sued over a CLEAN-ROOM implementation of Java.
In the end Oracle is the main reason I won't touch even OpenJDK, unless my employer or client has either (a) sitewide licenses, or (b) willingness, expressed in writing, to indemnify me if I am ever sued by Oracle over using whatever they want me to use.
I do use .NET and C#, which in their current form are open-source and even largely cross-platform. R
Re: (Score:2)
Examples. "With C#"
Re: (Score:2)
Heck .Net/C# does not even come with a cross platform UI library. You have to rely on various projects on github if you want/need that.
It comes with .Net Maui. And several are on Github, some even Microsoft supported.
What's wrong with that? And of course, lots web stuff is built in, ASP.Net is pretty large.
Does Java have any native cross platform stuff built that isn't ugly, slow garbage that everyone hates?
Re: (Score:2)
The rest of your post makes not much sense, as most of the tooling - what ever it is - came from Java and got ported to C#
You claim to be a Java developer but you sure as shit make me wonder whether that's true. FFS you don't even know what the tooling is? You never heard of ANT, Maven, or Gradle? Probably worth mentioning at this point that Java's tooling isn't even built in. Or at least, nothing useful is. .Net framework's tooling was mostly gui driven and was built into visual studio. .Net core uses dotnet cli, which isn't even remotely similar to any of the existing Java tooling. It's much more straightforward to use. If a
Re: Dumb (Score:2)
This are all Java tools that got ported to .Net.
So: what is your point? How can the "tooling" on .Net be better than on Java, when basically everything good on .Net is a port from Java?
Where the fuck did you get that from? That isn't even remotely true. It's especially telling that you think there's a gradle equivalent for .net. That statement alone is so bad that it tells me you've never even used Gradle, which also tells me that you don't have anywhere near the experience with Java that you claim to have.
Build into what? You can use every Java tool either inside of the IDE(s) or from the command line. No clue what your stupid rant is about.
That's because you're a moron.
more template like generics.
So I second your resiment: These are things that any competent software developer would understand: that they mean the same thing!
And Java does not _need_ type erasures. They simply decided to go that way as they thought it would be better. The original compiler had both, type erasure and real templates. As an ordinary developer you do not notice the difference.
It is only really relevant for compiler vendors, especially for other languages that interface with the Java core libraries.
Try writing a custom text formatter. This isn't uncommon for regular developers at all to need to do at some point, it's far removed from doing anything at
Re: (Score:1)
Fuck Oracle. Everything they touch, rots.
C# is not a "better" language. Java had a lot of promise, and then Oracle basically turned it into a proprietary mess. We wouldn't have needed C# had Java been integrated into web browsers instead of Javascript.
It's that serious betrayal why Java should not be used in any context. What happened with Android is the number one reason why Java should be ABANDONED.
C# has more similarity to C++ and that's it's downfall. It's hard to understand, because C++ is hard to unde
Re: (Score:2)
Having used both in the past I'd say that C# is the better language, though apart from politics (aka Oracle) either would usually be a good candidate to fill the same role as the other.
But Oracle. An extortion racket pretending, badly, to be a software company. That's what really seals the deal for me.
Also, C# is both syntactically and semantically MUCH closer to Java than to C++. In part because garbage collection is handled for you, making it much harder to leak memory (though still possible), and MUCH
Meaningless (Score:5, Insightful)
From the description of the index [tiobe.com]:
Which somehow gets turned into "Programming Language Popularity" because? By my calculate "remote control programming" is significantly more popular than "sql programming".
Re: (Score:3)
Some languages need the "+programming" more than others.
Java is an island in Indonesia where 145 million people live. So if you Google for "java," you will learn about the island instead of the language.
Likewise, python is the name of a snake, and "go" absolutely needs to be "go programming".
But C#, PHP, and Kotlin work as naked searches.
Re: Meaningless (Score:3)
I remember clearly when "puppet resources" returned puppetry resources, for the making of puppets, good times.
Re: (Score:2)
So if you Google for "java," you will learn about the island instead of the language.
That's a good point! So would you say "java language" should lead to info about Javanese or Bahasa?
Re: (Score:2)
[From your Sig]:
A cat can't teach a dog to bark.
(Offtopic, sorry)
But a Dog Can teach a Cat to Bark!
https://m.youtube.com/watch?v=... [youtube.com]
Re: (Score:2)
That was awesome, thank you!
Re: (Score:2)
That was awesome, thank you!
My pleasure. I love that perfect "busted!" Reaction!
Cat-Comedy Gold!
Re: (Score:2)
I have an adopted cat which learned to growl and bark from the dog he was raised with.
Cool!
Ever get any video?
Re: (Score:2)
Now try finding something about R.
Re: (Score:2)
They should analyse technical questions to chatgpt and aggregate that by unique users and programming language.
Assembly is at #10? (Score:2)
Assembly? People still program in Assembly?
I mean, I still regularly (weekly) program in assembly but I was using that fact to justify being post-human.
It would be interesting if they broke it down by CPU - eg, z80, 8080/85, x86, ARM, etc.
GrpA
Re:Assembly is at #10? (Score:5, Informative)
The index isn't a measure of popularity but a measure of Googling.
I rarely program in assembly, but when I do, I do a lot of Googling for the mnemonics and opcodes.
So that gives it a high score.
Re: (Score:3, Insightful)
Measuring something by number of people googling for tutorials and how to do basic shit is a measure of how asinine the language is.
Re: (Score:2)
Re: (Score:2)
There are some things you can only do in assembly.
I'm only familiar with x86, so can only relate to that.
One such thing is switching to protected mode.
Interrupts are also impossible to manage using higher level programming languages.
Communicating with hardware is also impossible with higher level languages.
On the other hand, there are some fun bugs which can cause headaches.
To be honest, I found the x86 instruction set quite easy to learn.
However, assembly is quite a while ago for me and I don't use it anym
Re: (Score:2, Informative)
Communicating with hardware is also impossible with higher level languages.
Yeah, it's far too difficult for high level languages to include constructs like variable := port[$250]; or port[$250] := value; like Pascal used to to.
Re: (Score:1)
The syntax was/is a bit different. But that is actually how it was done in Pascal and Modula 2. Not sure, was it written Modula II?
All languages from the Pascal family, Modula, Modula 3, Oberon, had syntax constructs to address hardware, in sane way, and were used to write whole operating systems.
Re: (Score:1)
Re: (Score:2)
I don't think its a part of the survey's used but its still pretty popular in embedded. While I know its popular to take a "controller" running several hundred Mhz so they can run micro python on it to control a lamp timer in the hobby world, but in the real world you might have a 0.3 cent 8 bit job with bytes of ram and a half a K of stroage to accomplish the same tasks
Languages are tools (Score:2)
If you want to dig a hole you can use a finger, a hand, a shovel, a post-hole digger, an auger, a backhoe, or whatever.
None of those are more "popular" no matter how much they are used, because the tool should fit the job.
Java has its merits, I'm sure.
C++ has its merits, I'm sure.
A competent programmer will choose the tool that best fits the context of their goal. That includes a lot of factors including their target application, the documentation required, the organization paying them and its requirements
Re: Languages are tools (Score:2)
"If you want to dig a hole you can use a finger, a hand, a shovel, a post-hole digger, an auger, a backhoe, or whatever."
Exactly, and tiobe would say the post hole digger is the most popular way to dig holes based on people googling the cheapest thing available they don't already have.
Java is free (Score:1, Troll)
OpenJDK isn't a fork of Java, it's not an open source implementation of Java akin to Mono, it's as if Microsoft open sourced their implementation of C# adopted some kind of community governance model and called it OpenCS, and built their distribution from that upstream source.
Microsoft did actually do this apparently, but it's called Roslyn, managed by the Net Foundation. The only difference is Microsoft charges for commercial use of their development environment not their runtime distribution AFAIK. Where
Re: (Score:2)
Roslyn is Microsoft's C#/VB compiler/code analysis tools, not a language or runtime. It, like the rest of C#/.NET stuff, is opensource under an MIT license.
It's not quite accurate to say that Microsoft charges for commercial use of their development environments. They have development environments like Visual Studio that require payment for certain commercial uses but are free for others (for example all commercial open source development qualifies for the free community license), and they have development
Re: (Score:3)
Microsoft charges for commercial use of their development environment
One of them. VS just one dev tool among many, and you can use it for free for most things, particularly open source and if your company has 1M$ revenue. You can also use Microsoft's VSCode, which is fully open source and free for all uses, or any other tooling.
Re: Java is free (Score:2)
The analogy is a weak one but good enough, both environments are free with exceptions, and those exceptions have plenty of viable alternatives. I rest my case.
Re: (Score:2)
VS Code is free with no exceptions, to my knowledge.
A better metric (Score:2)
Counting Google hits (for words, some of which happen to also be the names of programming languages) is stupid.
We should just ask ChatGPT what the most popular programming language.
Re: Just use python (Score:3)
Re: (Score:2, Funny)
Yeah while python is getting shit done, the JVM is running around in circles.
Re: (Score:1)
Re: (Score:2)
Yeah while python is getting shit done, the JVM is running around in circles.
Yeah, Python is taking a shit, because it's not doing much else https://www.techempower.com/be... [techempower.com]
Re: (Score:2)
Python is the slowest language anybody is using much of.
Use it only where performance does not matter.
There have been some minor performance improvements recently, and perhaps they will be followed by some more meaningful ones in the years ahead. But not yet.
Re: (Score:2)
Agreed, but there are lots of situations where performance is simply not a major concern. For instance, when you are waiting for keyboard input, spinning rust, or network packets from halfway across the planet. And an awful lot of scripts and end-user software products spend between most and essentially all of their time doing one of those things.
OTOH: building a Flask site for a few hundred users, then having it expand to a few hundred million. Not the best idea IMO. In that situation you actually do
Re: (Score:2)
Re: Just use python (Score:2)
Really ?!? (Score:2)
Java and Python (Score:3)
Java was only ever popular because it was taught in practically college in the world for a very long time. Now Python is enjoying that same advantage. C# and .Net were forced to be good on its own merits, and it shows, with its breadth of usage scenarios.
Re: (Score:2)
Java was so hip in the 90s, it meant cool hipster programmers with their Macbooks, sitting in a Starbucks all day, sipping their Frappuccino lattes, eating avocado toast, listening to acid jazz, and programming enterprise Java beans for the back-end and applets to dominate the web.
That was the marketing. In reality it was a slow, bloated platform that was insanely complex to properly deploy or develop for, and had all kinds of weird stability and memory usage issues. Those cool hipster programmers turned al
Re: Java and Python (Score:2)
macbooks? frappucino's? in the nineties? wtf are you talking about. Java in the nineties was writing applet games on geocities and grunge, metal and techno parties.
Re: (Score:2)
No .Net was designed as a "Microsoft Java" but xcompared to Java, C# is fast, lightweight, better designed, and not nearly as bloated since Microsoft included a lot more in the framework. It does have a runtime with GC, but so does Go and that's "modern." It was Windows only, sure, but even if it wasn't it was still a big improvement.
Re: (Score:2)
I really need to proof read better.
Re: (Score:2)
C# and .Net were forced to be good on its own merits
Oh my god. Dude, you are killing me. C# and .Net were both forced down or throats. I am glad you can find some happiness coding in them, but many others can not.
Re: (Score:2)
The thing you compiled that C# program on in Linux at the time was Mono, which is not made by Microsoft, though they did buy it eventually. It was never fully compatible with C# on Windows.
The thing you later compiled on in Linux was .Net Core, Microsoft's open source rewrite for Windows, Linux, and Mac. But programs did require a partial rewrite to run on that, which is now just called .Net since .Net Framework (Windows only) is deprecated.
C# runs nowhere, not even in windoze.
No, you're just kind of a moron.
Re: (Score:2)
Re: (Score:1)
C# was initially a windows-centric thing, even though the language is pretty nice and seemed nicer than Java, last time I looked.
I'd still be reluctant to use it for anything serious, from a cross-platform perspective.
But would even more reluctant to touch Java again, admittedly.
Generally for me C++ if performance matters, Python if it doesn't.
Re: (Score:2)
Modern C# and .NET are sufficiently free/open for my taste (and I very much believe in free and open).
And for server-side apps they're also sufficiently cross-platform for my taste. (Must run on a minimum of Linux, Windows, and a Linux-based Docker container or equivalent; preferably Android as well.)
The UI side of the story is not ideal. WPF apps don't work well outside of Windows, nor WinForms. MAUI and Avalonia are promising but definitely not there yet. For now I'm planning for any UI code that must
Re: (Score:2)
Literally using C# on Linux inside a Kubernetes deployment for a multi-billion dollar company right now so I have no idea why someone would say this
Java and C# (Score:4, Funny)
Java is a modern PL that combines the awesome readability of C with the blazing speed of smalltalk.
C# is a update that takes Java and adds in the wonderful portability of Visual Basic.
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
Re: (Score:2)
I'm using it because of Unity. But I seriously wonder why? What makes C# popular?
Microsoft pushes C#. If you want to program for Windows, you use C#. That is why.
A lot of C# programmers also carried a Windows Phone at one time, but almost all of them feel satisfied that Microsoft is solving the hard problems for them.
Popularity is a silly metric (Score:2)
Sigh (Score:1)
There's 50 of these ranking systems out there. (Score:2)
Some Come And Go (Score:1)
The sad part is when corporate pressure try to shove-and-litter them into OSS projects that at some point folks will have to clean up.
Good. Java can go away (Score:2)
I've been in Java since 1997 and .NET since 2002.
I'm quite OK with Java being a thing of the past. Once Oracle got a hole of it the writing was on the wall to walk away.
C# just seemed to evolve better. Java promised write once, run everywhere, but always fell short. Now with C# I'm quite happy to develop on Linux. MS has got Debian repos for me all ready to go, easy updates, everything stays where it should.
Rust is at #0 (Score:2)
Where it's so safe, you can't see it at all.
Popularity (Score:2)
Popularity of Programming Language
Where is profanity in that list?
Re: C# is Microsoft. (Score:2)
C# and the .NET Framework have been available on MacOS and Linux for quite some time.