13 ms·
The End of IKVM.NET
- slg 10y ago>I’ve slowly been losing faith in .NET. That piece is interesting. I don't know many .NET developers that aren't excited with what Microsoft has been doing with .NET over the last couple years. Can anyone shed light on why someone would be losing faith in it?
- j_s 10y agoThe best analogy I can think of is that .NET has gone chasing after the Node.js development experience. (And, much more speculatively: has at least the potential to keep a lot of the worst from both what it was and what it is trying to become.) In any case, the current transition has pros and cons, and even these are categorized differently by each dev. In addition, there are new alternatives that could cater to a particular dev's exact style.
- pdwetz 10y agoThey mentioned .Net 3.5, which is ancient by modern programming standards; if I had to guess, the general direction towards generics, dynamic, and functional support? But take that with a huge grain of salt. This post is from a library author, so their opinion is probably going to vary a lot with application developers (especially those of us who never did much with Mono, but are utilizing Core already in production with Linux).
- taspeotis 10y agoThe author's twitter sheds some insight (scroll down a bit): https://mobile.twitter.com/JeroenFrijters https://mobile.twitter.com/JeroenFrijters
- Operyl 10y agoAt the same time his blog post states that his recent twitter doings aren't completely the true cause here. Makes you wonder what else happened.
- taspeotis 10y agoYes I read the blog. My comment is an attempt to help answer the GP's question ("Can anyone shed light on why someone would be losing faith in it?") not "why did IKVM end?"
- johncolanduoni 10y agoSomething I know has been a big roadblock for IKVM is the fragmentation of .NET with all the different profiles. The main branch of IKVM only works with the full .NET framework versions, not WinRT/Silverlight/Xamarin etc. There was a fork that supported Xamarin iOS but it was very rough and there hasn't been much interest in it since RoboVM and Multi-OS Engine came onto the scene.
- snuxoll 10y agoAs someone who is paid to do .Net development, I'm continually disappointed by the .Net ecosystem. .Net core SHOULD be awesome, but I'm not seeing much movement in it the areas I particularly care about (like the SDK for our ECM, database drivers for the IBM i) as well as the larger open source ecosystem. Honestly, I'm much happier writing stuff in Java or Python than I am .Net - both have substantially healthier ecosystems and I feel like I'm getting work done BECAUSE of my tools rather than in spite of them. I have to suck it up at work most of the time because we are a ".Net shop", but any personal projects I work on will likely never be done in C# unless it's a Windows desktop app.
- shouldbworking 10y agoOh my God I feel exactly the same. At home I don't touch C# if I can avoid it
- djhworld 10y ago> as well as the larger open source ecosystem. There must be a reason for this though, one of the reasons why Java has a good ecosystem is because it's had a huge head start in terms of time and mindshare. At the same time though, what's stopping people from making the open source ecosystem in .NET really good? There must be a reason, is it cultural?
- voltagex_ 10y agoCould it just be time? Since VS Community was released, there's no huge blocker for someone to develop for .NET (other than Windows itself).
- _pmf_ 10y ago95% of companies cannot use VS Community Edition because their revenue is too high.
- nl 10y agoThere must be a reason for this though, one of the reasons why Java has a good ecosystem is because it's had a huge head start in terms of time and mindshare. This doesn't seem to be a complete explanation. I was doing Java heavily in the early 2000s, and open source Java was pretty new still. Apache Struts[1] was possibly the first big OS Java project, and it was only released in 2000. The first version of .NET was released in 2002, and something like Rails was only released in 2004. "Head start" doesn't seem to explain this. [1] https://en.wikipedia.org/wiki/Apache_Struts_1 https://en.wikipedia.org/wiki/Apache_Struts_1
- devwastaken 10y agoJust look at VS 2017. A rushed IDE that has all sorts of weird quirks and bugs, non-backwards compatible with VS15 extensions, and now you have to actually create a MS 'insider' account and go through some broken web pages to get the VS15 download. Microsoft is abandoning their software just as fast as JS does now. For something that is built for actual desktops and servers that will run for years and most likely does not have a maintenance team, I think thats dangerous. Now we take in .net core, which has changing standards and incompatible build files between various versions it has released. To even get .net core V2 you've gotta go to their github releases and grab a beta build. By having VS15 and VS17 with .netcore 2, my toolchain broke and couldn't even compile any modern .net core projects, requiring full wipe of VS. Combine that with working on projects that could be written for .net framework, .net standard, or mono, and you've got one big ball of mud that nobody wants to touch. Maybe in 5 years if things standardize and multi-platformability becomes a real goal of MS, but right now, its easier and more stable to make multi-platform applications with electron than C#. Or just C++ and QT, or really any other language that doesn't have 4 different runtime versions.
- shouldbworking 10y agoI've been a .NET developer for years but I've also been a big Java guy. The lack of an OSS ecosystem in .NET is a huge glaring problem. This is compounded by the echo chamber that is the MS developer world. There have been multiple projects where lack of a library or database driver have resulted in hacks or passing something to a little Java app and back because it's unrealistic to do the work in C#. Like I said, the MS world seems to be an echo chamber and the vast majority of C# devs shun any solution outside official MS channels. Why do they do this? Because open source devs generally still dislike MS and until .NET core (which is not ready for prime time) using C# saddled you to Visual Studio, Windows, SQL Server, and IIS. Because of this, the open source community on other languages like Python or Java is maybe 20x bigger. The other reason open source avoids the MS platform is because they like to take your stuff and replace it with the "MS official" version. Entity framework was originally a poor emulation of NHibernate. WebApi a copy of Spring Boot. Instead of helping your project, or making it official like Java tends to do, MS likes to replace your OSS with something proprietary. The other big .NET problem is speed. I like C# syntax better, but when I wanna get something done on my own I reach for Java first. It's faster and more flexible. In some areas the execution speed difference is 100x. The CLR might be quick but MS never considered performance a priority until .NET core, because before core they were only competing with themselves. The echo chamberyness is leaving the MS stack in the dust. Everyone else runs on Linux now. Everyone else is using containers and SPA frameworks and Postgres. In the MS world, the unofficial rule is that if it's not a visual studio project template don't use it. It encourages reaching out of the Microsoft ecosystem as little as possible. Big sites like stackoverflow that have chosen to go with C# have blogged about their adventures. Most of these adventures involve building things that are already available from the community in most languages. Core may save .NET but it might be too little too late. Windows has already lost the war for server operating system and that leaves little reason to use C# over the primary competitors Java and Go. Both of those have ecosystems far larger and far better support for things like databases, mapreduce, Linux, containers, etc...
- polskibus 10y agoI'm curious, in what areas is Java 100x faster than C#?
- cm2187 10y agoMy main grief again .net now is rather that it has lost its simplicity. There are multiple frameworks to do the same things. For desktop you have winform, wpf, windows 8 apps, universal windows apps, xamarin, etc. For interoperability you have pcl, .net core, .net standard, mono/xamarin, etc. For web development you have webforms, mvc, mvc core. When they introduce a new language feature like tuples, you need to load some external libraries to be able to use it, it doesn't work straight out of the box. And I fear that as they will try to integrate all of this while keeping backward compatibility it will create yet even more fragmentation. Simplicity is I think why python is so popular and why it is even used in all sort of odd places (like doing computationally intensive maths).
- adw 10y agoPython is popular in science because a) it had f2py at a really important (early) point b) matlab is insanely expensive.
- maxxxxx 10y agoThis is sad. IKVM should have been supported by MS a lot. Being able to use Java libraries would be a huge help for .NET.
- skrowl 10y agoAs a .NET developer, I only use wrappers for unmanaged code as a last resort. Having to introduce a dependency on something as slow and security-bug-rich as Java would be a hard sell in most .NET shops.
- johncolanduoni 10y agoThat's not what IKVM does. It transpiles JVM bytecode to .NET CIL so you only need one virtual machine.
- maxxxxx 10y agoIt depends on what you are doing but there are a ton of libraries in Java that have no equivalent in .NET. For a lot of projects it would be very useful to use Java libraries.
- cm2187 10y agoOut of curiosity would you mind providing a few examples?
- shouldbworking 10y agoSince Java is the most similar language and what I'm familiar with, here's some things where no C# equivalent exists: Lucene, Guava, Apache Commons, Redis driver, Postgres driver, Cassandra driver, Kafka driver, gRPC, Http2 support(on all platforms, not just windows 10) Notice I said "equivalent". C# ports exist for some of these but they're unofficial, unmaintained, or both. The most heinous thing I've seen MS do recently is only support Http2 on newer versions of Windows. Http2 is a high level protocol and there's absolutely no reason for this. In Java you can use Http2 on any platform using Jetty, Netty, or soon built into Java 9.
- blinkingled 10y agohttps://mobile.twitter.com/JeroenFrijters/status/855064654309199872 https://mobile.twitter.com/JeroenFrijters/status/85506465430... This conversation between Miguel De Icaza and the author doesn't look too favorable for the author.
- moomin 10y agoTo be honest, though, I think the author recognises that, which is why he specifically praises MdI in his post. Knowing that he's tired and just plain pissed-off with both platforms explains both. You're right, he doesn't come out of it well, but I've certainly had days and even months when I've felt like that, and he's making the right decision: he's moving away from something that is, for him, toxic.
- blinkingled 10y ago> he's making the right decision: he's moving away from something that is, for him, toxic. No argument there. After working 15 years on something non trivial it's totally ok to get fatigued and bail out. I was pointing out that there doesn't seem to be a valid technical argument to it.
- GordonS 10y ago> My gut knows more about .NET than most brains on the .NET team That really is quite childish, especially from someone who considers himself an old-timer
- paxcoder 10y agoA guy who has worked on a project of this nature since the year .NET came out is objectively a .NET old-timer.
- custos 10y agoThis is disappointing. I've used IKVM to convert a few Java libraries written by academics where no .NET equivalent existed at the time (NLP and some other math libraries).
- j_s 10y agoSee also: long-dead[1] Sharpen https://github.com/mono/ngit/tree/master/Sharpen https://github.com/mono/ngit/tree/master/Sharpen (Not sure there's enough here to actually implement its transpilation on any other project.) [1] http://developer.db4o.com/Projects/html/projectspaces/db4o_product_design/sharpen.html http://developer.db4o.com/Projects/html/projectspaces/db4o_p...
- thr0waway1239 10y agoOTOH, without IKVM, there will be a lot of people who will be forced to come out of the .NET ecosystem when using these libraries, which will end up improving both the libraries and the surrounding ecosystem (e.g. many people dislike Java the language, but maybe people will migrate towards Kotlin for maintaining/improving these libraries). Also, any improvements they make can be more easily integrated back into the source.
- shouldbworking 10y agoIKVM exists because library offerings kinda suck in C#, not the other way around. I find it more likely that people will just write these applications in Java. MS has a long, dark history with open source including attempting to kill both Linux and Java. Many of us have forgiven but will never forget.
- frik 10y agoThey are doing something very bad with Win10 - the private data is at risk. I know about their history, and they haven't changed. They still have a monopoly on desktop/notebook. They just lost the mobile sector to Apple and Google - the end consumer decided.
- ronack 10y agoHuh, I had assumed this was dead for quite some time based on the lack of updates. Here's hoping someone will take this as an opportunity to revive the project.
- ygra 10y agoThe lack of updates may have coincided with lack of updates to Java.
- Prego 10y agoHe blames ".Net" but the truth is it's the JVM that's a dead end. Plus who wants to work with MdI.
- j_s 10y agoIKVM was always the king of the edge cases. I will follow anything Jeroen publishes in the future with interest!
- ympostor 10y agoI had always wondered how he funded his work on IKVM.NET anyway. He worked on it so tirelessly, it felt like he was a full-time employee of it.
- skrebbel 10y agoIKVM has saved my ass a number of times. The ability to, at times, give up on the .NET ecosystem and peek into the Java ecosystem for suitable open source is fantastic. We once had a project where some genius long ago had mandated that parts communicate via FTP. Eg one program uploads a file, another program monitors the directory. Total clusterfuck, so we wanted reliable automated tests. Turns out that doing an FTP server in .NET is pretty difficult. Full-fledged commercial libraries exist, but we just wanted a stub for testing. IKVM, Apache Mina FtpServer solved it in two hours for us. I suspect many .NET shops use IKVM this way. Sad to see it go, but it must've been an incomprehensibly huge one man hobby project for 15 years! If I were Jeroen I'd quit a long time ago :-) Let's hope some shops get sufficient value out of it to maintain a fork. Jeroen if you read HN, thanks!!
- nurettin 10y agoWe have the same setup at our place. FTP communication isn't a "clusterfuck", it is the tried and tested communication method between any two large companies that aren't banks. To us, it is the only highly available and reliable one. Web services have downtimes and re-sends. Our partners practically never turn off their FTP machines. The only difference at our place is that we assume FTP works and do our tests on the file system. We don't test whether FTP works. We know it does.
- skrebbel 10y agoHow did you deal with large files, dropped connections, and so on? I mean, sure, FTP the protocol works fine, and so does virtually all FTP software, but for communication it lacks an important feature: the ability to tell when a file completed uploading. When we started to upload reasonably large files on reasonably fast file systems this became problem. Our file watcher noticed that a new file arrived, but it's just started uploading. We tried polling the FTP server for connection status, but it turned out that the client supported and did at time use, resumed uploads on connection drops. We ended up having to parse each file just to tell whether it had finished uploading. The file fortunately was an enormous XML dump, so we could check completeness pretty cheaply. All of this work would've been avoided with a transactional protocol such as HTTP.
- garganzol 10y agoTold you so. Give a couple more years to .NET Core et al guys in reign, and they will totally destroy .NET. J Duffy I'm looking at you.
- bsaul 10y agoHaven't followed the .net stack for a long time, and core seemed like a pretty good idea to me ( aka multiplatform was the roadblock for .net). care to explain a bit what's wrong with current direction ?
- voltagex_ 10y agoWhat in particular is worrying you about NET Core?
- kodfodrasz 10y agoI guess that the platform and tooling is pretty much in motion yet. I think this is totally OK, it is in its early stage of life, and agile projects are like this in that stage. This is a cost for us, as we use them, yet we accept this, as the benefits will be larger for us, especially in the long run. We can see how the development works, and maybe people with more enterprisey (it here a word for this?) background find this problematic, as they are more accustomed to the slow pace of innovation/changes in that area. For me, with pretty much FLOSS experience (mostly as user) this is nothing new or worrying. This is how business is done in the open, where you see experimentation. This is the way if you want to listen to your users: show them what you do, and listen to them. Do this often, not once every 3-5 years, as in the enterprise.
- PeterStuer 10y agoFor me, the one thing that .NET has going for it is Visual Studio. Every time I've tried returning to Java, it is not the language but the dev environment that has me running away in horror.
- frik 10y agoJetBrains IDEA, Eclipse and NetBeans are all pretty good and comparable IDEs. Visual Studio has no unique selling point per se, if you are into C# its a very good choice eecially with the Resharper plugin (some of its features got cloned).
- shouldbworking 10y agoEclipse is a lot better than it used to be but still has hallmarks of open source applications (confusing UI, giant feature pile). IntelliJ is great but it costs money for the full version. It's closer to a Visual Studio style experience.
- rat87 10y agoreally? Cause VS is good with resharper but without it? I haven't used it much for java but Intellij is excellent, hell even eclipse was pretty good. I'd say in many ways dev tools seem better for java, the thing .net has going for it is that C# is a much nicer language.
- _pmf_ 10y agoIt's a marvelous piece of technology. You would think when importing a Java dependency with moderately complex dependencies, there'd be some catch; there isn't. You would expect that JNI does not work (how should it?); but it does. You'd expect reflection support to be broken; but it works. If the folks at Microsoft had any sense, they would have hired this guy, but they're probably busy rewriting Office in TypeScript based on Electron.
- domenukk 10y agoI remember it was the only way to get Java running on the first surface RT with ARM Windows http://domenukk.blogspot.de/2013/05/microsoft-surface-running-jdownloader.html?m=1 http://domenukk.blogspot.de/2013/05/microsoft-surface-runnin... Good times