4 ms·
- Oracle has hands on it and does questionable things like suing google - Everything Java does, C# does as good or better. In general for everything in Java yo
by legulere 10y ago
- Oracle has hands on it and does questionable things like suing google
- Everything Java does, C# does as good or better. In general for everything in Java you could easily find a better way to do it.
- Java has lots of warts, many to have the language be backwards-compatible. (switch-case, enums, UTF-16 encoding, generics, null, difference between objects and basic types,...)
- Java is tied to old technologies. There are no standard JSON libraries, however even XSLT is included in java se.
- You need to use Java with an IDE. Eclipse is horrible to use (even scrolling lags here) and IntelliJ costs money.
Still java is a mature and solid language. There is just nothing to hype about it.
- sdfsdufihwfuhdf 10y agoYou must not have used eclipse for a while :) . I use Visual Studio at work and Eclipse at home and they're comparable these days. I agree that years ago Eclipse was awful. - Every language has switch-case and enums? I don't get what you're trying to say there. - Generics are fine? - Every language supports null on objects? - Nearly every language treats null and primitive types differently for performance reasons - Java has three popular JSON parsers and they're all faster than .NET's builtin serialization. To get similar performance you need to use Newtonsoft which isn't builtin to C# either :). - You don't need an IDE, it's just stupid to develop without one because they're so helpful. Nothing is stopping you from running javac on the command line. You can't do a LOT of things java can do in C# because third party library support pales in comparison. A lot of databases and open source software don't have c# clients. If you're dealing with big data or ML you'll find almost nothing in C# land. I feel like you haven't used Java in a long time. Things are much better than Java 6 days
- legulere 10y agoMaybe I should expand a bit on my points, as the problems do not seem so apparent. - Java has the same horrible switch case with the error prone break as C. If you want exhaustive matching on enums you will end up with a useless default case. If you ever worked with a programming language with pattern matching you will feel the pain. - This might be a bit opinionated but I think enums are not enough. Sum types/tagged unions/variant types/disjoint unions/whatever you like to call them are pretty useful. - Generics in Java are highly limited. Part of that is because generics were added as an afterthought and are implemented using type erasure. Both functional programming languages like Haskell or imperative programming languages like C++ or Rust offer more powerful generics that can sometimes help abstract things more elegant. - The problem is that all objects are nullable by default and you cannot specify that e.g. parameters or results are never null. This leads to boilerplate null checking and missing handling of null cases. Everybody that touched java probably saw quite some amounts of NullPointerExceptions. Kotlin for instance offers types that by default cannot be null, with TypeScript this exists if you turn on an option of the compiler. - You can offer pretty much everything you offer for objects also for primitive types. In fact, this is what Project Valhalla tries with value types and specialisation. - My comment on IDEs was more about the need to use an IDE being bigger with Java than for instance C, while eclipse is often annoying. I am using eclipse daily currently because I work on some Java code for my Master's thesis.
- nimchimpsky 10y ago"IDE being bigger with Java than for instance C " Really, why ? I can't imagine working without an ide for any language. Back in the dark days I did html/javascript in notepad.
- andylei 10y agointellij is free
- 67726e 10y agoIntelliJ is free for the community edition, but that one is limited in it's features. If you're doing anything web, you'll want the paid-for edition. However if you're just working on some Java SE, you could use the free version.
- subliminalpanda 10y agoThere's always Eclipse. It's a bit clunky at times but full featured nonetheless.
- exclusiv 10y agoYou can get the EAP (early access program) for free if you want to be a cheapskate.
- andylei 10y agoi do web stuff and the community edition works just fine
- 67726e 10y agoThe big drawback with C# is being handcuffed to a Microsoft ecosystem, and will still probably be for a while. I also wonder how the Java ecosystem of tooling and available libraries looks compared to C#.
- mulrian 10y agoAfter I switched over from Eclipse to Intellij I think at least the IDE tooling is pretty much equals nowadays. I used Resharper in VS so in many ways you are using the same thing. As others have said the open source community for Java is still leaps ahead of C#. It's not often you find a library which doesn't have a Java connector/implementation. For C# on the other hand you tend to be much more limited in your options. I guess this used to be a lot due to the platform dependence of C# (and probably still is). Hopefully .Net Core can help with that, but it's not ready for prime time yet IMO.
- OskarS 10y ago> Everything Java does, C# does as good or better. It's really true. It's so refreshing switching from Java to C#. I mean, they're both statically-typed-OOP-garbage-collected-bullshit-enterprise languages, but if you're gonna go with one of those, C# is far more pleasant than Java.