12 ms·
Happy 15th Birthday .NET
- Insanity 10y agoI currently work as a Java Dev, but the first language I really learned to use was C#. I don't use it often anymore as I am on a Linux machine at home - though I did try running it with Mono some years ago. C# remains a pleasant language to use, and feels like it is quite a few steps ahead of Java. I'd strongly recommend that people check it out if they haven't, if only to get a feel of where Java might be in a few years. e.g: Local variable type inference. This is one of the "small" features that makes C# such a pleasure to use, and I am happy that it is proposed to be in a future JDK.
- irontoby 10y ago> I don't use it often anymore as I am on a Linux machine at home - though I did try running it with Mono some years ago. I'm on Linux at home also, and am loving the combination of .NET Core and VS Code. I recently coded up a quick ASP.NET Core Web API for a client, which needed to access a MySQL database and an existing SOAP service. I wrote it on Windows using VS 2017, but then out of curiosity I literally just git cloned it on Linux and ran "dotnet restore", "dotnet test" and "dotnet run". The whole thing worked flawlessly on the first try. All unit tests and integration tests (connecting to real external services) passed, it ran just as quickly, and I was able to debug it in VS Code along with breakpoints, variable inspection etc. It was never possible to use Mono that effortlessly. Everything required more work just to get running. With .NET Core, platform specificity is the exception, not the rule. And VS Code is truly a pleasure to use; IMO it's just the right combination of features and performance with a strong plugin ecosystem, which has been missing from Linux.
- Insanity 10y agoI might just have to give that a try then, thank you!
- LyalinDotCom 10y agoWow 15 years already, I still remember learning how to code C# for the first time in .NET 1.1 days, it seems like a lifetime ago :). Its also worth pointing out that Visual Studio is also having its 20th anv event and shipping Visual Studio 2017 RTM on the same date on March 7th and 8th. Details: Join Us: Visual Studio 2017 Launch Event and 20th Anniversary: https://blogs.msdn.microsoft.com/visualstudio/2017/02/09/visual-studio-2017-launch-event-and-20th-anniversary/ https://blogs.msdn.microsoft.com/visualstudio/2017/02/09/vis...
- the-dude 10y agoWas .NET part of the anti-competitive ploy to run Java into the ground ? Cheers.
- softbuilder 10y agoI believe you're thinking of J++.
- bad_user 10y ago.NET is actually a continuation of J++, which was Microsoft's Java implementation plus their extensions, like delegates, which were also introduced in .NET To be honest, I don't think the engineers had any ploy to "run Java into the ground", even though the sale folks probably thought about it. They did do their usual "embrace, extend" thing. And it was sort of anti-competitive, but then again the JCP isn't a real standards body given the TCK has to be licensed from Sun/Oracle with whatever conditions they feel like, which is why Apache Harmony didn't survive. And so I have no interest in defending the moves of Sun wanting to defend what was at that point a completely proprietary and non-standard platform.
- pjmlp 10y agoKind of. "COM+ Runtime" https://blogs.msdn.microsoft.com/dsyme/2012/07/05/more-c-net-generics-research-project-history-the-msr-white-paper-from-mid-1999/ https://blogs.msdn.microsoft.com/dsyme/2012/07/05/more-c-net...
- partycoder 10y agoMicrosoft embraced Java at first. There was a moment in which there was a Microsoft JVM. But Sun Microsystems did not like how Microsoft was engaging Java, so they had a legal battle from 1997 to 2001. Microsoft licensed some patents from Sun, and diverted its effort into .NET. C# 1.0 was very much like Java, but over time it evolved into a completely different language focused on market demands.
- 10y ago
- cobbzilla 10y agoso time to open source the whole thing? what a nice birthday present that would be! :)
- michaeljchou 10y ago.Net is open source
- barking 10y agoBe nice if they could open source VB6 though, which hasn't had an update in 19 years. I'm still using it, which makes me happy and sad at the same time.
- ocdtrekkie 10y agoThat isn't .NET. :) But yeah, I wish they'd open source VB6 too. There were some fond memories back there. I have some old programs I can't find components for online too, which are somewhere in the old VB6 install. There's play potential, even if I have no real practical need for it. And it's hard to imagine that open sourcing VB6 would harm Microsoft's business in any way.
- alex_hitchins 10y agoJust wanted to say that I too would love to mess about with the VB6 (and previous) code base. I can't see any commercial reasons that could prevent this. Only thing I can think of is that it might give VB6 another lease of life where they want to properly retire it. Said it before and I'll say it again, I don't think there is anything out there now that was a productive as VB6 development. Rapid Application Development was the buzzword of the day, and it really stood up to the name.
- Stratoscope 10y agoOh, that would be pretty neat if they would open source VB6 or any previous version. I wrote a bunch of that code (like the VBX interface for example) and it would be fun to see it again.
- alextooter 10y agoNot happy at all! I love the old Visual Studio 6.0 IDE, the new devenv.exe is getting more slower after each version. Go back to native,Microsoft!
- pjmlp 10y agoThey did. "Getting Started with .NET Native" - https://msdn.microsoft.com/en-us/library/dn600165%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/dn600165%28v=vs.110...
- piyush_soni 10y agoI think the parent comment meant Visual Studio is slowing down with each new release (they switched to WPF for developing it with VS 2010).
- pjmlp 10y agoI got it, but given that VS is still way faster than any Java IDE I have to use on my hardware, specially Android Studio, I just made that snarky remark. Also I doubt very much that we could have had Rosyln with VC 6.0 architecture, stuck in C++ and COM.
- tonyedgecombe 10y agoIt's certainly slow at starting up, beyond that I haven't seen a problem.
- mikerg87 10y agoI'm not sure native is the way forward but I agree that Visual Studio is starting to show its warts. The 2GB memory limit is starting to be a problem for more and more of us. On a long enough timeline I hope to see VS code replace Visual studio
- frik 10y agoMe too VS 6 and VB 6 were really awesome. Microsoft was at the tipping point in 1999, then the dotNet thing happened and a lot of failures like dotNet based Shell/Explorer and WinFS for the failed Longhorn what turned into WinVista. Then the WinMobile 6.5 to 7 thing happened. The dotNet Framework seems to be legacy now - right? WinForms is legacy now. Silverlight is legacy. dotNet DirectX APIs are legacy. dotNetCore is the new thing, but in v1. UniversalApp based on C++ API seems to replace WinAPI - correct? Anyway WinAPI is still going strong, and almost all applications are WinAPI based. Sometimes I would like to go back in time to 1998/99. But the good thing the WWW succeeded (and "The Microsoft Network" failed and original dotNet vision of software as a service got postponed by many years).
- cyberferret 10y ago1.5 decades. Very impressive achievement. I am wondering though, and I will ask the question of all the .Net developers out there - Did Microsoft achieve their end goal of reducing "DLL Hell" via the .Net framework? I didn't do a lot of development in this platform, but whenever I dabbled in it, I used to come across the same sort of issues - "Oh, you PC doesn't have the correct version of the .Net framework installed, I'll have to go and download version x from Microsoft". There were a lot of applications tied to a particular (older) version of .NET and I remember that installing older versions over newer ones used to cause issues on quite a few network systems. Also, got really tired of finding nice 'little' apps on the ancient web which looked like useful utilities in a 200Kb file, only to find out after downloading that you needed to then download a 100MB+ behemoth framework version x just to run it. I know in a lot of cases in made development life easier, but on the deployment and implementation side of things, I feel we still suffered the same "DLL Hell", though not to the same level.
- pjmlp 10y ago> Did Microsoft achieve their end goal of reducing "DLL Hell" via the .Net framework? Yes, because the dynamic linker has the concept of versions. So it will only link if the right libraries are present in the system. In theory it is not possible to use the wrong version as it used to happen with DLLs and COM libraries. In practice, it requires the developers to actually care to version their libraries so that this works. Quite a few devs, just let the same version numbers as on the project template, or change them to mean whatever version is installed, thus getting back to the old behavior. When using libraries from devs that actually bother to change the version numbers properly, the problem is sorted out. edit: typo
- moomin 10y agoI'd say it's a mostly solved problem, if only because everyone uses their own versions of assemblies. ClickOnce is solid (if you automate the fiddly bits). There's more upfront checks than with Java, but that's more of a trade-off than a positive or negative.
- tonyedgecombe 10y ago
- deleted 10y ago[deleted]
- pjmlp 10y agoHappy birthday! My only complaint back in the day, given Anders Hejlsberg experience, was that we only got NGEN and JIT, but not a full AOT compiler without requiring dependencies to be installed into the host system. Well, at least .NET Native and xcopy install do finally exist.
- shoover 10y agoI recall Joel Spolsky was worked up about this, too, and wrote an article with the memorable title Please, Sir, May I Have A Linker? Somehow we built a ton of apps and got along without the linker all these years, but it sure would have been nice to save the startup time and dealing with customer machines without the framework installed from the beginning. I'm confused to what extent xcopy deployment works with .NET Native. The Getting Started article[1] makes the point that the native binaries are sitting there in ilc.out and that you should "Test your app thoroughly," but it does not describe the deployment mechanism there, and double-clicking on the .exe does not work. Are you xcopy deploying the appx file (which is not there in ilc.out)? [1] https://msdn.microsoft.com/en-us/library/dn600165%28v=vs.110%29.aspx#Step5 https://msdn.microsoft.com/en-us/library/dn600165%28v=vs.110...
- pjmlp 10y agoThe idea with xcopy deployment, is that you still use the JIT compiler, but all required libraries, including the runtime, are packaged with the application. So assuming you haven't forgotten any library, everything is loaded from there, not from GAC or somewhere else. This only works for .NET Core.
- shoover 10y agoOk, I see you didn't mean .NET Native and xcopy deployment work together but both are options now. Thanks for clarifying. I see the UWP app build folder has all the DLLs copied now.
- T-A 10y ago> I recall Joel Spolsky was worked up about this Much to his credit, this classic post is still up: https://www.joelonsoftware.com/2000/07/22/microsoft-goes-bonkers/ https://www.joelonsoftware.com/2000/07/22/microsoft-goes-bon...
- josteink 10y agoI've been using .NET professionally and for hobby projects since version 1.1. While initially sceptical of this new MS platform, I was quickly sold on C# compared to Java: The language just seemed so much better. The base class library was easier to use. The tooling was rock solid. In many (but not all) ways it was just a better Java. Since then, I must admit I think Microsoft has handled the platform really well. It has made the Java-platform seem quite literally stagnant. First class functions and lambdas first now? Really? Clearly there's been ups and downs. There was times when Microsoft has seemed dormant and not paying attention to the needs and requests of its developers, happy to have conquered the market for in-house enterprise applications. Some APIs were thrown out as soon as they were delivered to market. There were times when I was about to throw it all out due to Microsoft's best option at the time seeming inferior to pretty much everything else out there (ASP.Net Webforms with AJAX being a particularly frustrating story). But all in all, it seems they've managed to pull through, to react in time. They've gotten better at listening to the community. Now they've even open sourced it "all" and let us in, allowed us to participate and shape the future of .NET, if we want to. Yes. I can list a bunch of imperfections which remain with us today (like the .NET Core launch and migration-strategy not being all that convincing), but I'll leave that for another time. Today, on .NET's 15 birthday, I'll say that I'm happy I invested in .NET those 15 years ago. It's literally paid my house, and I've enjoyed working with it while it did. Keep up the good work, Microsoft. There's a world of developers out there who appreciate what you do.
- irontoby 10y ago>I've been using .NET professionally and for hobby projects since version 1.1. While initially sceptical of this new MS platform, I was quickly sold on C# compared to Java And I'm sure your early inclinations were then confirmed when they released 2.0 and their superb implementation of generics :) I had been a longtime Perl hacker (it was a thing back then) and was still cutting my teeth on the cost/benefit tradeoffs of strongly-typed languages. I remember being quite frustrated in 1.x while attempting to write a data-access layer and having to use lots of casts to write reusable code. It definitely took me longer than I'd like to admit to wrap my head around the usefulness of generics, but I certainly remember the "aha" moment I had when I realized how much cleaner they'd make my codebase. In fact, I ended up completely dropping the code-generation tool I had written -- in Perl, of course :) -- to create the base classes which could work directly with our strongly-typed models. > ASP.Net Webforms with AJAX being a particularly frustrating story Very much agreed; I avoided using .NET for anything in any way web related until MVC came out. Working with those Microsoft black box server controls was just too much. > like the .NET Core launch and migration-strategy not being all that convincing I can forgive that, since it looks like their migration strategy with the upcoming .NET Standard 2.0 will be much more solid.
- skc 10y agoIt's grown to become a very pleasant platform and ecosystem to dev in. It's fairly fuss free for the most part. Good job MS.
- jug 10y agoThere's so much going on that it's almost making me hesistant about taking on the new strategies like .NET Core or where to go with user interfaces. For the long term, is it better to lock myself into UWP and Windows Store, or reap the benefits with Xamarin? Much would be easier if UWP was open and DirectX accelerated on Windows and OpenGL accelerated on Linux or macOS, and uploading these apps on Windows _could_ be to Windows Store but wouldn't be so architecturally tied to it. I know there are ways to dodge their store even with UWP apps, but it feels like you're hacking their intented model and on thin ice for whatever will come or change in the future. I never really liked platforms where application development is tied to distribution methods, especially not when .NET has it in its history to not be that (other than maybe a very slight nudge towards ClickOnce). I felt like a part of the .NET philosophy died with UWP. I applaud Microsoft for where they have come and their latest developments are intriguing but I see many quite major annoyances remaining. I work almost full time with .NET though, simply because that's where my money is for now. But I'm not touching UWP either at work or at home. It's still also receiving a mixed response at best by developers, from what I've heard. It's like... "OK, so here's this limited UWP app compared to WPF on desktop, because we have to build it on an API with Windows Phone in mind which no one uses and then upload it to this single store out of our control, with the excellent company of scam apps tarnishing our trademark". I feel like this is Microsoft's unfortunate reality of where things stand which they should move from. "How do we best fix these concerns?"
- DaiPlusPlus 10y ago> But why should a web application willingly be tied to a particular web application host? Performance. ASP.NET wasn't originally tied to IIS - the grand version (back in 2001) was to allow any application to host a website too, that's all in the `System.Web.Hosting` code - along with Cassini for lighter workloads and "IIS Hostable Core" as an analog to today's IIS Express, but that fizzled out in the late-00s only to come back as part of the post-Node trend lately. This all dates back to 10 years ago: IIS7 introduced a fully CLR-managed request lifecycle which was was aligned with ASP.NET's own lifecycle, so the reasoning goes you might as well let the two become one-and-the-same - there's no point running two separate request pipelines (the webserver's and your runtime framework's) when one will do. ...of course this was back in the day of the "fat" threaded webservers, like Apache and Netscape Server - and remember IIS took it further by adding a kernel-mode component: `HTTP.sys` to get an edge over usermode-only servers. So far I haven't seen any work on reinventing IIS for today's fast and light servers like nginx where all people want to do is serve Node.js applications.
- 6nf 10y agoI remember my senior year professor talk about this newfangled language from Microsoft called 'C sharp' while we were doing some Visual Basic 6 work. Soon after graduating I had the opportunity to choose a platform for a new web project at my first full time job, and we chose .NET 1.1 Definitely one the best decisions I've ever made. Microsoft: Thank you for .NET.
- sharpercoder 10y agoI remember setting up 4 prototypes on 4 different platforms: sun jvm, adobe flash, dhtml and .net. The last won, mostly because ease of development and fast DirectDraw rendering of many datapoints. Never looked back, best decision in my career.
- rodionos 10y agoList of Microsoft tags among the top-100 tags on Stackoverflow: .net, c#, asp.net, sql-server, asp.net-mvc, excel, vb.net, windows, vba, winforms, visual-studio, linq, excel-vba, sql-server-2008, wcf, visual-studio-2010 http://stackoverflow.com/tags http://stackoverflow.com/tags Stackoverflow counters for the above tags over time: http://apps.axibase.com/chartlab/c1acecc0/4/ http://apps.axibase.com/chartlab/c1acecc0/4/
- bananaboy 10y agoI took a subject at university that included a C# component. It was 2002 so it must have been .NET 1.0. I liked it, it reminded me of Borland C++ for Windows, Delphi, and similar RAD tools that I had played around with. I remember being super confused by boxing at first! It's really matured well. Great work, and Happy Birthday .NET!
- shaydoc 10y agoHappy birthday .NET I have known you since the start. C# had me straightaway, I was so relieved to stop using C++ lol (just kidding, no I am serious). I remember the early developmentor crash courses we took, before embarking on an "enterprise corporate banking ecommerce platform". Talk about jumping into a new technology at the deep end. We hit all the issues, Dataset serialization across .NET Remoting, Reflection costs, assembly size issues, remembering to strong name the assembly sn -k, and the GAC. Oh and I will never forget the talk on how .NET Remoting WebServices and XML are the future, but at least we could fallback to TCP Binary when things got hairy performance wise! 15 years later its a hell of a platform now!
- fergie 10y agoWhy did Microsoft never target any platforms outside of Windows with .NET? (serious question)
- nailer 10y agoOld Microsoft only wanted to sell Windows. There was a guy called Steven Sinovsky who was apparently the main person behind that. When he left, MS went cross platform. See the recent HN thread about Satya Nadella.
- kabdib 10y agoI started using .NET in late 2001. I'd done a few years at startups that were using Java and doing all kinds of architecture astronautics involving JavaBeans and great big complicated ways to access config files while ignoring any really hard customer-facing problems. The tools sucked really hard, and I remember it was difficult to find an IDE that didn't simply crash when you fed it 50K lines of Java to debug. Browser plugins OMFG. Working in Java wasn't a whole lot of fun. Anyway, I joined a new company, started using C#, and one sunny afternoon about three months into my first real project I remember thinking to myself, quite clearly, "Oh thank God, the nightmare is over." I did some Android work a few years ago, and all the bad stuff came flooding back: The fallen towers of abstraction degenerated into a sea of flag bits. The hideously complicated build and packaging systems. I haven't written any C# in five years or so, so maybe it's just as horrible now (and I've glossed over bad things like DLL hell and the global compilation pre-caching nonsense), but I sure don't enjoy anything based on Java.
- pjmlp 10y agoAndroid is worse than standard Java, because many of the APIs seem written by ex-C devs that started to code in Java just before Android got released. The worst example is how the Renderscript bindings are generated.
- grovegames 10y agoI remember starting a project for a Telco in C# before .Net was officially released. It was riddled with issues, but it made it easy to use COM+ as a means to hot swap 'plugins' to the core of the application. This allowed us to distribute one application, and have a configuration dynamically load which modules a user would need based on their role. The web wasn't very capable 15+ years ago, and this allowed for a single base to be maintained and yet shared modules to cut down on repetitive coding. You could do this with COM+ already, but manually working with IQueryInterface over a simple reflections added more complexity than was worth it. And when you needed to, you could easily make calls to the Windows API, so you could still do code injection to get past the parts when the language didn't support yet. And DLL hell was no longer so prevalent. I was told somewhat recently that it's still running in some capacity, which I'm glad of, because I remember stressing over how irresponsible it was to use an untested language and platform for such a project.
- pjmlp 10y agoSimilar experience, my employer at the time, as MSCP had access to an early version of the framework, even before the first Beta versions started to appear on magazine CDs. We were in the process of migrating our in-house stack (Apache/TCL) to J2EE, cancelled the project before it even started and decided to go .NET instead. Back then, as Java fan I used to criticise .NET a lot as Java clone like many of us perceived it. Now 15 years later I have more fun doing .NET projects than Java ones. :) However I do enjoy both stacks more than any other alternative.
- sproketboy 10y agoWhat's happy about it? 2 developers still can't work on the same project at the same time. We still have shit cross platform support and JavaFX sadly beats WPF.
- moolcool 10y agoNow all the resumes that say '15 years of .NET experience' aren't necessarily lies
- mmcclellan 10y agoI remember back in those early days seeing job requirements that listed 10+ years .NET. Nice to see some people actually have that now.
- wilsonfiifi 10y agoIMHO C# and .Net platform felt more approachable than the Java ecosystem. Unfortunately when I shifted to Linux I had to leave it all behind. However, it's refreshing to see the effort being put into .Net Core but way too much time has passed and I've invested so much into Python (and more recently Go) that I'm reluctant to switch back. So congrats Microsoft for giving us this lovely alternative and thanks Jesse Liberty and CodeSmith!