Microsoft Introduces .NET Core
New submitter I will be back writes: Microsoft's Immo Landwerth has provided more details on the open source .NET Core. Taking a page from the Mono cookbook, .NET Core was built to be modular with unified Base Class Library (BCL), so you can install only the necessary packages for Core and ship it with applications using NuGet. Thus, NuGet becomes a first-class citizen and the default tool to deliver .NET Core packages.
As a smaller and cross-platform subset of the .NET Framework, it will have its own update schedule, updating multiple times a year, while .NET will be updated once a year. At the release of .NET 4.6, Core will be a clear subset of the .NET Framework. With future iterations it will be ahead of the .NET Framework. "The .NET Core platform is a new .NET stack that is optimized for open source development and agile delivery on NuGet. We're working with the Mono community to make it great on Windows, Linux and Mac, and Microsoft will support it on all three platforms."
As a smaller and cross-platform subset of the .NET Framework, it will have its own update schedule, updating multiple times a year, while .NET will be updated once a year. At the release of .NET 4.6, Core will be a clear subset of the .NET Framework. With future iterations it will be ahead of the .NET Framework. "The .NET Core platform is a new .NET stack that is optimized for open source development and agile delivery on NuGet. We're working with the Mono community to make it great on Windows, Linux and Mac, and Microsoft will support it on all three platforms."
I write web applications in .Net, and as far as I'm concerned, nothing else I've see comes close for large projects. There was a bunch of hype about Ruby, so I tried that. For anything beyond basic CRUD applications, it was quite painful to use. The .Net API has amazing amounts of built in functionality. I can't think of any language that comes close. It amazes me how people write stuff in Java without having a decent "Date" data type. Why should I have to use a third party library to get decent date support?
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Whatever the merits of the .NET API, the fact is that if you want maximum number of platforms, even after this project reaches fruition, supported platforms will still be a fraction of Java's.
Java has no lack of flaws, but it's out there and has been for fifteen years now, and is the bedrock of some very large open source and proprietary solutions.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Java is still in a first major version. Latest release is 1.8.0_xxx
They used up all of their version increments when they went from Windows 8.1 to 10.
Once burned, twice shy. Sorry MS, your time is past.
But, they now embrace open source!
Let us all extend them common courtesy...
We don't want to extinguish the good will they are now showing...
You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
.NET Framework is really two parts: the "built in libraries" and the CLR (common language runtime). When you install a Framework version, it installs only the CLR version it depends on, and not earlier ones (at least this is true at time of writing).
Where it gets confusing is .NET Framework 3.0 and 3.5 -- both still run on CLR 2.0.
.NET Framework 4.0, 4.5, and 4.5.1 runs on CLR 4 (they actually just call it "4", not "4.0").
Source: http://msdn.microsoft.com/en-u...
What's makes this stupidly confusing is the compatibility: If you have .NET 3.5 installed, you can run a 2.0 application. If you have .NET 4.5 installed, you can run a 4.0 application, but you can't run a 3.5 application.
IMHO, if they had just used 2.1 and 2.2 instead of 3.0 and 3.5, this could be much less confusing: .NET 4 apps run on .NET 4, and .NET 2 apps would run on .NET 2. Maybe they're doing this from now on, but the fact that 3.x is really 2.0 has screwed this up. I also don't get why they skip to .5 but that's far less of an issue.
That said, this is the company that thinks 95+1 = 98, Vista+1 = 7, and 8+1 = 10.
Speak before you think
.NET Core is the redesign.
.NET Framework (the full big monolithic install like we've got now) remains backwards-compatible and so 4.6 is appropriate.
I'd say the only platforms that really matter when languages like Java or C# are on the table are "Linux servers", "Windows servers", "Android phones", and "iPhones" (and tablets similar to the phones). If C# becomes easy to run on those platforms (which is clearly MS's plan, but we'll see) there's just no reason not to use it.
C# development is worlds easier than Java. If I can write for Linux servers with it easily, it will be my first choice for professional development. If I can easily write C# code that runs both on MS desktops and Android mobile, it will be my first choice for personal development. I wish MS the best of luck here, but they really need to hit this one out of the park - a half-assed effort isn't going to cut it.
Socialism: a lie told by totalitarians and believed by fools.
I have to work with Java after a long while, and it is just... Suffocating. Archaic. Kludgey. Oracle. Ask! toolbar. trWTF.
C#, please come and rescue us! F#, deliver us from evil! MS has a chance to do some real good on the backend/server side landscape here. Let's hope they'll somehow manage to not screw it up!
I don't wish for Java to disappear or fail, mind you, I just wish I don't need to work with it in future...
Those who have decided MS is eternally evil will never accept .NET. But you gotta admit that Microsoft is doing this right. This isn't the Gates / Balmer company any more. It seems that Microsoft realized that the Wintel & MS Office monopolies are dead, and that the bazaar is defeating the cathedral.
Their new hope is Azure. All this open-sourcing of .NET is to entice people to use .NET and thus use Windows Azure. By eliminating the stigma of being closed and proprietary, they eliminate the #1 objection to using .NET. Note that this door is open both ways: not only is .NET opening, but Azure is supporting other stacks: node and LAMP for example. They don't care what tools you use anymore, they just want your hosting business.
"There is no large scale .NET app I know of"
Ever heard of stackexchange?
It amazes me how people write stuff in Java without having a decent "Date" data type. Why should I have to use a third party library to get decent date support?
Java 8 introduced a new date time API. Admittedly I haven't used it as all of my code uses the old API. As far as the old API, one would use a Calendar when they are working with social dates and times and use a Date when working with an exact point in time. It isn't difficult.
Why should I have to use a third party library to get decent date support?
I've questioned that myself while working in .NET. Ever needed to write time zone aware code?
Date libraries, as it turns out, are rather monstrously difficult to make. While .NET did a great job for the common stuff, uncommon things can be painful, error prone, or impossible.
The fullest solution I've found so far is Noda Time, which is actually based on the Joda-Time Java library. It feels out of place with a number of Javaisms still in it, but it provides a much richer functionality and better separation of concerns.
A point of open source is to remove the ability to "extinguish". Microsoft doesn't want it any more? Who cares what they think, the community will decide if it lives or dies.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
Java to pick up all of the bells and whistles (nor do I think it should).
Absolutely not. Java has a niche among semi-competent developers, preventing them from making a huge mess of things, and it serves that niche well. Adding bells and whistles ruins that niche.
"First they came for the slanderers and i said nothing."
Contrasted with Java which is a kitchen sink language also but has a whole in it to helpfully keep it from filling up with usefulness.
What's the license?
Sorry, eventually I may consider .NET, now that it's officially been opened, but I'll need to see how the community development goes. If nobody but MS can touch it, I won't trust it.
FWIW, even though Java is mainly FOSS licensed, I don't trust it, and that's BECAUSE Oracle is such a bastard. Suing over API interface identity? Sorry, but how can I trust you? I know they lost the suit (at one level...did they appeal?), but that they would even consider it makes me dubious about them. OTOH, the GPL is pretty strong, so I still feel reasonably comfortable with the parts of Java that are covered by the GPL. But if I were to publish I'd generate the documentation with Doxygen rather than javadoc.
As for .NET ... I'll wait and see how it develops. In some ways C# looks interresting, but nothing dramatic, and I don't develop for the web, so... What's in it for me?
I think we've pushed this "anyone can grow up to be president" thing too far.
DaFuq? Its not about FOSS "winning" anything, its about getting a new CEO that doesn't think its 1995 and understands that no everything is better with a WinFlag.
You look at Balmer's entire reign and it was all about making a copy of EVERYTHING that was even slightly popular and planting a WinFlag on it. Java popular? MS Java and when that got knocked down .NET. Flash Popular? Silverlight. Hey Apple got a hit with iPod? Buy the rights to the Beat and stick a WinFlag on it and call it Zune. iPad/Surface, Playstation/Xbox, it was all about sticking WinFlags even when it made no fucking sense.
Nadella seems to be the polar opposite, he seems more concerned with...get ready, its a shocker...making products that people actually want to buy! he also seems to get that you don't make money off of languages by sticking WinFlags but by selling support and since FOSS is pretty much designed around the support model? It just makes sense to use it in this case.
ACs don't waste your time replying, your posts are never seen by me.
Some identity providers (the "Log in with Twitter" bullshit) stupidly allowed people to authenticate with accounts that had unverified emails.
1: Create Twitter account with victim's email address.
2: Use "Log in with Twitter" bullshit on site.
3: Be granted access despite the email address associated with the Twitter account never being verified.
Some sites stupidly used the associated email address of the "Log in with Twitter" bullshit to match against existing users.
4: On such a site, you are granted access as the user with the email address you used in step 1.
There are three approaches to fixing this:
3: Twitter, Facebook, etc. should not provide identity services for accounts with unverified emails.
2: Sites should not trust (or even look at) the email address provided by an identity provider.
1: Site should simply NOT use this "Log in with Twitter" bullshit.
Useful syntax sugar is the only difference between any two Turing-complete languages.
Socialism: a lie told by totalitarians and believed by fools.
Glad you've liked Noda Time - but if you could drop a line to the mailing list or raise an issue for any "Java-isms" you've found, I'd be grateful. I've tried to make it as idiomatic to .NET as I can, other than where doing so would be harmful.
"It either works or it doesn't" - or it works for all but one or two hours of the year, around a time zone transition. Or it works so long as you're in a time zone which doesn't skip 00:00 when it transitions forward by an hour. Or it works so long as you're not in time zone which skipped a whole day once. How sure are you that all your code works in all of those conditions? How *clear* is your code in terms of which values are meant to be local, which are meant to be in UTC, and which are meant to be local in some other time zone?
You say that date manipulation in .NET is really not hard - but I've seen an *awful* lot of subtly-broken code using DateTime, and even correct code isn't always *obviously* correct, mainly because `DateTime` doesn't represent one single concept.
I looked at the .NET DateTime functionality *very* hard before deciding to write Noda TIme - and now, 5 years later, I'm still convinced that it was the right thing to do.
You're talking about the embrace step. Certainly there should not be any OS lock-in there. That would be by design (assuming the worst of EEE for argument's sake). Platform lock-in comes with platform specific extensions, features, APIs, and libraries beyond the core. A very nefarious thing to do would be to introduce subtle bugs in other platform versions of the core or extensions. But that would be ridiculously hard to prove and I use it mostly just to dramatize how EEE could work.
I'm not saying MS is doing this, I am saying they should be watched with a very skeptical eye. Again... "be wary of your 'extended' dependencies".
meep