Microsoft's CLR - Providing a Break from HW Vendors?
"It seems to me that once the CLR has matured enough, there won't be a need for Microsoft to wait for others to innovate on the hardware front and start offering its own hardware (and charge whatever it wants for it) to go with future versions of Windows.Net. Worst still, 99.99% of the population will not be able to say no to this strategy since they'll have no choice but continue using the Windows monopoly in order to run their favorite apps."
Jamie comments: I don't think it's about hardware innovation, or beating Java. It's about absolute control.
The big money over the next decade will be in transforming the computer into an entertainment device. AOL Time-Warner sees a computer as a revenue producer, with the unfortunate ability to copy digital works. They and the other five media giants want to put a stop to it; Microsoft and Intel will find it very profitable to help them.
One good step along the way is to give the computer a common interpreted language to run everything. We're there already. And when developers have to code to a virtual machine, not the actual bare iron, then whoever writes the virtual machine holds all the cards. And since the authors of the virtual machine will make a lot of money by enforcing intellectual property rights, the arms races are all over: copy protection is absolute, DeCSS won't compile, unauthorized MP3s won't play.
Of course developers rarely write on the bare metal anyway: we write to APIs, we write scripts, we write code that doesn't (need to) run in the CPU's supervisor mode. We're used to surrendering the ultimate control over the machine to the operating system, or to be more precise, to the BIOS that decides how and which operating system to run.
If we surrender this control, though, we'll find ourselves with a monopoly operating system that makes it impossible freely to write code for. (And it's not hard to cut off Linux and every other rogue free OS at the knees. The day that every motherboard's BIOS uses strong crypto to demand the master boot record be signed with a secret key known only to Microsoft is the day that Linux becomes a thing of the past.)
Naturally, to prevent you from firing up GCC and doing a rogue compilation of DeCSS or Lame or other unauthorized code, the operating system will have to stop you from running anything that isn't written in its language for its virtual machine. Requiring code to be signed by a central authority will make its first appearance as virus-prevention but its real purpose too will be control. Universities will be able to buy special licensed exemptions, at least until corporations decide universities are hotbeds of piracy and theft. At which point your alma mater begins teaching Computer Science 101 (and 201, and 301, and 401) in C#.
My prediction is that, unless antitrust legislation in the U.S. gets some teeth between now and then, the PC will become a Gameboy within fifteen years. Enjoy computers while they last.
While I absolutely despise the approach Microsoft takes toward software development, I can safely say they won't ever get "absolute control" over it. Yeah, they're big, they're rich, they're formidable, but they're also bumbling and very error-prone, as we all know from leaked e-mails, virus reports, etc.
The worst thing I see happening is a sort of class society, with Microsoft developing code for its circle of businesses, and everybody else in a sort of underground. Black market code, if you will. I very seriously doubt that things will come to, say, Microsoft getting the USGovt to pass a law forbidding software development by unlicensed, uncertified developers, and then fixing the game so only Microsoft developers can be easily certified.
Lately democracy seems to be based on the skybox, the Happy Meal box, the X-box, and the idiot box.
When I was in high school, we were spec'ing out Alphas for the school file servers. The problem with the Alphas? No software. You could only buy them as File and Print servers.
J++ looked like it was going to change things. If you wrote Java code, it would in theory, run anywhere. If you wrote J++ code, it would run on any Windows. Given the Windows Everywhere initiatives (the separate NT, Windows, and WinCE lines), J++ would have given Microsoft that platform independance.
MS wanted to split from Intel years ago. Everyone thought that Intel was dead after the Pentium. RISC processors were blowing them away, and Intel's CISC ISA was holding them back.
Well, Intel figured out how to build a RISC processor with a hardware decoder, Windows NT took off faster than expected, the 64-bit Alpha version never shipped, and now MS/Intel split a HUGE monopoly.
This gives their Windows Everywhere initiative some teeth. They are pushing Win32 APIs everywhere, but you need to code differently for the Xbox, Win32, or WinCE. Sure the APIs are the same, but not the compiled version.
The CLR means that Windows is Windows, and Windows code will run there.
Look at UNIX, there has been decent source compatibility, but no binary compatibility (until the recent Linux emulation everywhere). Outside of software distributed in source form, nobody supports every Unix, just the 1-3 that are profitable for them.
Source compatibility helps, but isn't enough. The CLR gives a form of binary compatibility.
Sun could have had this market with Java, but they fucked up. We'll see what happens.
What does their lack of backwards compatibility have to do with anything?
Is it a ploy to make money? Of course it is.
Does it really matter? No, you can set Word to save to Word 95 format and you won't lose anything important. You can even download a free 2000 viewer if you want, and cut and paste into Word 95.
Would MS provide these things if they were a crazy, unrestricted monopoly that would do anything to grab cash? No, they'd encrypt
MS is like some inkblot where everyone can project their own little "gotta stand up to the man", "slippery slope" fantasy world view.
Want to fight MS? Help make Linux good. Quit whining.
.
Let's not stir that bag of worms...
The poster's original question seems to be a reasonable, thought-out question about the implications of VMs in software development.
Too bad it's followed by 4 paras of paranoid rant, which is what people are replying to, by and large. Why doesn't Jamie just post in the forum, like the rest of us proles? Even if I'd blocked him from my view of Slashdot (which I haven't, although looking back over the stories...), this would slip through as a rider on Cliff's story.
[anyway, what is the benefit to BIOS makers and motherboard manufacturers of limiting their market? The degree of support for overclocking in existing mobos and BIOSes shows that they don't care what their large partners think (Intel, AMD)]
"don't fall into the fallacy of believing that Perl can solve social problems. Maybe Perl 6 can, but that's a ways off"
WTF indeed! Java applications have both! Ever hear of the java.io package?
Would you really want Java applets, downloaded from an arbitrary Internet site, to have access to your hard drive by default? (Signed applets can do such things, by the way.)
Java is infinitely preferable to C#+CLR, simply because there is no platform lockin, or vendor lockin (you can get great JVMs from IBM, for instance).
I'll start seriously considering C#+CLR when the Mono runtime exceeds the performance of Linux JVMs on the same box. I expect that to happen...never. ;-)
299,792,458 m/s...not just a good idea, its the law!
Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
My prediction is that, unless antitrust legislation in the U.S. gets some teeth between now and then, the PC will become a Gameboy within fifteen years. Enjoy computers while they last.
Game Boy is a bad example. The Game Boy Advance is an open system, fully documented to the point that anybody with GCC can write software and run it on the GBA without taking a vow of silence or paying the big N. The only things the GBA checks before running your code are 1. the very simple checksum on the header and 2. a bit pattern that produces the Nintendo logo but is legal to copy under the Sega v. Accolade precedent. So go get GCC for ARM and an MBV2 cable from lik-sang.com and get hacking.
$article =~ s/become a Gameboy/become an XBox/; and it becomes more accurate.
Will I retire or break 10K?
Putting aside the interesting philosophical question of whether a corporation can be evil for a moment, the following can be asserted with a degree of confidence:
.NET Remote. While SOAP cannot pass object references around, or serialize objects like RMI, .NET Remote removes both of these restrictions, making it much more attractive than straight SOAP, which doesn't even provide object-level access in its standard form.
1. The interoperability aspect the article is concerned with is that between platforms, not between languages. The latter is interesting, if overstated, but irrelevant here.
2. CLR may be specified, but other APIs and services are not, therefore it is trivially easy to lock in developers, just as was attempted with the proprietary GUI API MS provided for J++.
3. For some reason, it is not yet widely appreciated that the public SOAP specification already has a proprietary MS extension called
Microsoft has a multi-prong approach. It is similar to Sun's Java write once run everywhere strategy, but with the benefit of history and money on its side.
.NET Framework (JFC/Swing) which will eventually replace the Win32 API. Once Microsoft ports the CLR to a new hardware platform or operating system, it is simple to also port the .NET framework. MS really doesn't need to port Windows unless it wants everything from the hardware up (as in JavaOS).
.NET framework in it's upcoming Windows .NET Server (aka Windows XP Server), and will have it included as free upgrades for Windows 2000 and Windows XP before the end of the year. This means that MS could potentially have tens of millions of .NET ready systems on the street before the end of the year. On advantage MS has is that in its first incarnation the .NET Framework just hooks into the Win32 API, giving them time to rewrite the entire Windows codebase (supposedly due with the Blackcomb release).
.NET Framework and eliminates Win32, their will be nothing stopping MS from porting Office to any hardware and/or OS platform on the market. 3rd party developers like Adobe, Macromedia, etc. can port their applications to .NET now with a tryed and true customer base, and once MS is ready, jump with them to other platforms/OS' with an almost minimal risk and expense. Instant application base. The first candidates are MAC OS X and Windows CE (.NET). Adobe for one will probably welcome having less codebases to maintain. Any port that makes economic sense to MS is a candidate, including Unix and Linux.
.NET framework. As new hardware or OS' hit the market, port. Where as Sun could port Java to any enviroment easy enough, it doesn't have the same application base as MS.
MS has the CLR (Common Language Runtime) and MSIL (MS Intermediate Language). This is nothing new, with CLR = JVM, and MSIL being javacode. Additionally MS also has the
So if this is nothing more than MS rehash of Sun's Java approach, what's the difference.
.
First MS has the advantage of learning from Sun's mistakes. For example C#, Visual Basic, & VC++ are not the only languages that can use CLR & MSIL. Any language can compile to MSIL, and MS encourages it, claiming over 20 languages from 3rd party vendors, including PERL and Java. Additionally MS supports both compiled and bytecode, with a built-in native code compiler as part of the framework. These were all possible with the JVM, but not advocated/pushed by Sun.
Second, instant market. MS is including the
Third. Applications. Microsoft has Office. Lets face it. People don't buy Windows for IE and Solitaire. Java never had a killer app.
Fourth. Inertia & Clout. Once MS ports Office to
Five. Future proofing. If the DOJ or anyone else causes problems, MS can easily port Office to Linux just by porting the