3 ms·
While this is true JVM disadvantages are only a problem in very niche domains like embedded or kernel development. (and where you are forced to use JS like web
by jpgvm 6y ago
While this is true JVM disadvantages are only a problem in very niche domains like embedded or kernel development. (and where you are forced to use JS like web ofc)
Overall it's definitely in contention for "universal" runtime and Kotlin/Java are definitely close to fully general purpose languages that do all things sufficiently well.
IMO the reason why they win the general purpose category is because they have the least hard limitations.
CLR is in a similar quality class to JVM, C# is a very good language. I think if you are not on the JVM that is where you should be for general purpose programming.
JS/Ruby/Python/etc are all single threaded, this is a hard limitation that I can't look past. It's a needlessly painful constraint when you just need something CPU intensive to be done quickly. Additionally lack of static typing isn't something I am willing to compromise on anymore. I'm older now, I don't have time for the sort of defensive programming required to make these languages produce programs with as few bugs as a statically typed equivalent.
I still use Ruby for scripts but it's not a tool I pick up for anything but the quickest of hacks anymore.
C/C++ are too unsafe to use without too much brain space dedicated to making sure you are managing memory correctly.
Also lacking centralised repository and package management ala Maven.
Functional languages are too polarising, I can use them and appreciate them but rallying a team around them is too hard.
Haskell and it's ecosystem taught me a great many things and it's definitely what most good languages steal from these days.
Bright spot of JVM/CLR is you can mix a bit of them in when you need to with compatibility with the rest of your code with F# and Clojure/Scala.
Rust is getting there but isn't there yet. I think it's the most promising besides JVM/CLR. Really high quality type system, tooling is coming along, great quality ecosystem, async getting worked out. As it's borrow checker gets smarter and perhaps an easy GC library is introduced (atleast easier than Rc/Arc/Cell/friends) then it's got great things in it's future.
For me it's Kotlin for now. It's the right mixture of modern, easy to learn and built on solid proven tech without any severe limitations.
- taffer 6y agoIf you had to write a Rails style web application on the JVM today, which framework would you use? Spring Boot? Play? Something completely different?
- jpgvm 6y agoSpring Boot if I needed similar bells and whistles to Rails.
- bestinterest 6y agoThis really is the exact same conclusion I have came to quite recently. All your point are strongly inline with mine. I personally love how pragmatic Ruby is but its billion dollar null mistake + lack of typing + single threaded issues are glaring. But I still love the language and especially the community, my problem with switching over to Kotlin + SpringBoot is that lack of rails ecosystem web mindset. The SaaS web focused mindset doesn't really exist in Kotlin e.g no Phoneix LiveView/StimulusReflex competitors. Also while SpringBoot is suppose to be the like the Rails competitor I don't have access to my `rails routes` or `rails new` or `rails generate..`, the rails guys really focus on happiness. Having said that with Project Loom coming and other JVM goodies it feels really good to be in the JVM ecosystem. It is very much the 'good enough for 95% cases' ecosystem.
- chillfox 6y agoCrystal is a bit like ruby, but with static types and multi treading is being worked on.
- bestinterest 6y agoHad a look there but its very far from reaching boring tech with regards to libraries also why Elixir is mostly a no go at the moment for me too. Love the look of Crystal though, basically ruby with all issues I mentioned fixed. Kotlin gets its pass on being boring with the great JVM compatibility imo.