7 ms·
Not attacking you opinion at all but I'm a little shocked that someone would have this opinion, I work at a Java shop (using java 8 but I'm mostly now on the no
by jaegerpicker 10y ago
Not attacking you opinion at all but I'm a little shocked that someone would have this opinion, I work at a Java shop (using java 8 but I'm mostly now on the node.js side). Java 8 really doesn't have any features that are better than C#'s. Java 8 is missing some pretty major ones, like type inference, automatic getters/setters, LINQ, function passing support that's not brain dead, and a number of of things that make dev life SO much better.
- aembleton 10y agoI agree which is why I've moved my Android development to Kotlin. It provides a lot of that and works right now on Android
- jaegerpicker 10y agoWe are doing the exact same thing for our Android development. Kotlin for Android and Swift for iOS.
- monksy 10y agoWhich is why you would use Scala or Groovy.
- jaegerpicker 10y agoOr Kotlin but that's not his argument. He's arguing for Java 8. I don't agree that Java 8 is really an acceptable modern language for development. IMO it's painful and god awful slow develop in compared to a host of better languages (Swift, Scala, Groovy, and C# all included but not limited to).
- vorg 10y ago> develop in compared to a host of better languages (Swift, Scala, Groovy, and C# all included Swift, Scala, and C# are statically-typed languages, like Java, whereas Apache Groovy is dynamically-typed originally -- though static typing was added in Groovy 2, virtually no-one uses it. Dynamically typed languages like Groovy are good for glue code, build scripts, and testing, not for developing actual systems.
- mahyarm 10y agoTBH c# is not enough of an advantage to do a huge migration to the language from java. Something like kotlin (still jvm) or swift (no gc) makes a lot more sense.
- Pxtl 10y agoWhile I prefer C#'s delegates/lambdas, there has been an occasional time I've wished for the ability to construct a full instanced object in that case - Java's anonymous inner classes are brilliant at this. Likewise Java's OOP enums (basically singletons) are something I miss too. That's a few small features I notice missing when I switch to C#. Plus, in general I find there's a difference in style. C# libraries tend to be more pragmatic, following on Microsoft's heavy use of reflection and stringly-typed stuff. Not much OOP navel-gazing. Java, on the other hand, celebrates OOP to a ludicrous extreme. Also on the community, C# has been working very hard to develop the kind of bazaar that Java has, but they're coming from far behind on that front - far more C# developers restrict them to the first-party tools compared to the Java ones.
- strmpnk 10y agoYou might like F#'s object expressions for the cases where a lambda won't do.
- john_reel 10y agoMaven, Ant, and Gradle are also in a class of their own. They help making building Java apps universally extremely easy. C# has an annoying amount of complexity in this area, with a lot of things being built into Visual Studio, and therefore Windows only. “Visual Studio” isn’t a fun build system if you’re not on Windows. And compiling people’s libraries from random repositories over github, bitbucket, etc., only to find that it won’t compile because it relies on some old version of a library that you can’t find online and the newer versions aren’t compatible.
- Kipters 10y agoThey also open sourced MSBuild
- flukus 10y agoNuget solves the dependency issue. MSBuild has switching from part of the framework to VS to framework to open source. On other platforms there was always csc to compile programs (which is dramatically faster), something missing from the new dotnetcore. There was also nant and a number of build tools, plus good old make.
- thaw13579 10y agoThe ecosystem is an important factor too. I'm excited to use C# in new projects, but I can't move away from Java without replacements for all of the libraries of external code that I use.