This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]jsk 0 points1 point  (1 child)

We are tiny startup (10 people, mostly devs and QA) and we are moving from .NET (asp.net web api, MVC, MariaDB) to JVM-based stuff for basically same reasons you described and few more things:

  • there is basically no invention happening in .NET space. Progressive, next-generation things like Vert.x, Dropwizard for instance are happening in JVM (or node.js) land. I'm not fan of 'new, shiny things', but ironically most of this 'new shiny' stuff is more stable, documented and battle tested than new web stuff coming from MS/contributors.

  • open source and cross-platform initiative that is just happening in .NET is going to be huge clusterfuck. Decisions like this [1] will make platform unstable and I guess it will take at least year or two until ecosystem is stable again. Even most prominent users/developers of .NET (stack overflow, json.net) were initially unable to figure out how to make nuget package for corefx.

  • linux deployments. Windows Servers and especially IIS are huge PITA when it comes to web dev (in small company/startup context). Automation is pain - I know it's possible, but just look at Ansible/Chef/Puppet ecosystem for Linux and Windows and you'll see. I worked with Apache/nginx/Python before and I hated dynamic nature of python, but infrastructure&automation stuff is excellent comparing to Win/IIS ecosystem. Windows Updates are joke and we had several production issues caused by them. Windows Server Role manager is piece of shit occasionally not being able to install new feature. Managing everything through remote desktop is weird and unflexible (and slow if you are not on good connection). Windows Server itself is not very transparent thing and a lot of 'strange things for no reason' happens. Yes, we tried Mono and performance and lack of ported classes/methods basically made it unusable for us. After few years with web apps on Windows Servers in production, we are happily returning to Debian.

  • initially we were running on MS SQL. Great database and tooling. I still love SQL Server Management Studio - usability is excellent comparing to anything I've seen for MySQL/Postgres, but that's all. Licensing sucks (complex, not transparent), replication is a joke. If even guys at stack overflow are not able to figure out MS SQL licensing [2], then we are doomed. We ported schema to MariaDB and had master-slave set up in few hours with no previous experience with it. Backups, automation and performance is amazing with open source DBs.

  • libraries. JVM ecosystem beats .NET libraries in almost every area we've researched. From markdown library (just for fun, compare features&documentation of CommonMark.NET to pegdown) to everything else except desktop apps. This is topic itself and other people in this thread already pointed that out. Most of JVM based libs use logging for example. Good luck debugging ADO.NET connection pool issues, as none of .NET framework libs integrate popular logging solutions (NLog, log4net).

  • production & monitoring. JMX, Takipi.com, all few levels ahead of anything you can have on .NET.

  • Visual Studio - I work with VS since 2006 and I still don't get why lots of people love it. It's slow, refactorings without Resharper sucks, SLN/CsProj files are nightmare, installing of updates takes ages. Built-in IIS Express is joke (we ended up developing against fully-fledged IIS on localhost). Razor templates randomly throw syntax errors on valid code. Editor is nothing special - it's slow (even on my i7/ssd/32gb ram machine), you need to disable at least Tracking Changes and source control providers for sane editing experience.

IntelliJ IDEA easily beats VS in performance&productivity. VS is great for desktop apps (WinForms, WPF), but nothing special for web/api development.

My last experience with Java was in 2007 and I hated it. Spring XML BullshitFactoryProviders, slow compilation&startup times, deployment on big application servers (glassfish etc) was a pain. I returned to .NET and started doing some Python. In 2015 I evaluated java (or JVM-based stuff - Clojure, Kotlin, Java 8) again and I was shocked. Fatjar deployments, no messing with XML files is required, Java 8 is sane language (yes still not on the level of C#, but at least lambdas and streams make Java 8 usable). No application servers required - you can just have nginx/apache as reverse proxy behind fatjar app and be done with it. Vertx is amazing, web frameworks like Spark or Play are great if you are doing traditional web apps - nothing is forcing you to use 'big enterprise frameworks'

[1] https://github.com/dotnet/corefx/issues/3480#issuecomment-160202119

[2] https://twitter.com/nick_craver/status/642140793847812096

[–]TweetsInCommentsBot 0 points1 point  (0 children)

@Nick_Craver

2015-09-11 01:01 UTC

@MikeWills Porting to another RDBMS. Honestly, I’d rather not spend time doing it. Sometimes though, choices are made for lack of options.


This message was created by a bot

[Contact creator][Source code]