Also, almost all of that is written in C, which is a successor to B, which is a simplified version of the Basic Combined Programming Language. There was never an A.
As a dev who works on both Java and C# code, modern Java (17+) and C# feel almost exactly the same (not sure if Java has extension methods though).
Bonus points for using Kotlin instead tho. I dislike both Java and C# just because they both allow any object to be null and that's usually a headache whenever a null exception shows up.
The only thing I like better about C# is the Fixture library for testing. I haven't found any mature libraries like it for Java yet.
they both allow any object to be null and that's usually a headache whenever a null exception shows up.
C# has nullable reference types now: https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references. If you enable it, you have to explicitly make reference types nullable (like ?string) and you'll get build warnings if you try to use a variable that's potentially null.