.NET Core = portable subset of .NET Framework. Therefore not entirely compatible with .NET Framework.
ASP.NET Core = portable rewrite of ASP.NET. AFAIK not fully compatible with previous versions.
Not that they're alone. Adobe did worse with "Flex" since it could refer to the compiler, a framework, and an editor at one point until they decided to make it a bit more standardized.
.Net core apps should be a portable application (portable as in the runtime is compiled in)... Yeah, it is a little confusing, and hopefully removing some of the separate terminology will help. A lot of what has changed, is that you will likely be developing .Net Core (or Xamarin apps) that will target a given platform for running in... Most of the rest should be cross-platform modules that install via nuget (platform/language package manager) and bundled with the application output.
That's not saying much; "Java" means so many different things it's enough to make your head spin. At least these days it isn't a stock ticker symbol any more.
> Do I need the Java runtime environment, the SDK or the browser extensions to run this code?
It's not really confusing.
The Runtime is required to run code. The Source Development Kit (SDK) is for development, and the Browser Extension is for running browser extensions.
For me the sweet spot will be when .NET Native becomes more mature and I can get Delphi/Modula-3 back.
You also have RAD development on .NET.
Although .NET always had AOT compilation via NGEN, it always depends on the runtime being available at OS level.
With .NET Native it is like things were on PC before JVM took off, with strong typed system languages like Delphi and Modula-3 that compile directly to native code.
I know one needs a bit of imagination to make the comparison, but it is how I like to think about it.
http://www.elementscompiler.com/elements/oxygene/language.as...
If you using COM or third party dlls, which is quite common on Windows, then you need those as well.