World after COM (Don Box Interview)
In this interview, Don Box talks about some of the topics that are more interesting and slightly gunpowder. Whether old COM developers or C programmers can benefit from it, even a temptation to Java developers. It is necessary to recognize some secret stories, Don Box will be more drama.
Some of the more prominent titles and conclusions: 1. IS COM DEAD? YES: OLE32.DLL. The answer is so affirmation, of course, Ole32.dll
2. DotNet cross platform problem. MS is happy to help or support any DOTNET for any cross platform, but for GPL, regardless of Don Box or Microsoft is a cautious attitude. "ViRal licens" is not a new name?
3. Depth COM-Interop. Don Box tells this question more authoritative, because the functions of getManageDthunkforunmanagedMethodptr is not everyone heard, and it will use it.
"THEN I WAS AT Devweek Earlier this year and i said," I Bet I Could Do That in C #. I Bet I Could Do That In Completely Managed Space. "I Looked Around and Imoniker, Which Was The Interface I Needed, WASN ' T Available - There Was No CLR Version of It. SO i Did The Translation and It Took Me Five Minutes. I Had IMoniker and at That Point I Wrote The Thing In Two Minutes.
4. C 's future, C is used in Enterprise Applications and Templates, some C old hands are most concerned about. It must be seen that STANLEY B. Lippman and Don Box have different views of these issues. If you can choose me more like Don Box now, because it is more optimistic and modern.
5. Battle of the platform. DotNet and Java debate have been a period of time "So .NET VERSUS JAVA IS A Misnomer"
"So now the leading vendor in the Java space is IBM. Not only because they have a VM [Virtual Machine] which is pretty good, but mainly because they recognised the importance of XML. Now the problem is that IBM's approach to XML is different to Sun's, which is different to Oracle's. there is no broad, over-arching vision for how to do Java XML that's the same with every vendor. It's really become Microsoft versus IBM versus Oracle versus Sun. there's all kinds of triangulation there, for example Microsoft and IBM are doing very close collaboration, and Sun's being left on the sidelines. It's a very very different landscape. So .NET versus Java is a misnomer. It's much more interesting to talk about .NET versus WebSphere, or .NET versus SunOne, Whatver That's Going to Be. "The last Don Box divided the difference between the first line and the second line, with IBM, Microsoft, and Oracle, BEA and Sun were scheduted in the second line. "Oracle, IBM and Microsoft Are I Good Spot to do That. Sun and bea aren't."
A good article, and this time his photo is more handsome than the previous look. The article Source DNJ Online, the reprint did not agree to DNJ Online, so only internal communication, if you want to translate or spread, please contact it yourself. (The original article below belongs to Matt Publishing Limited. All Rights Reserved)
The god of the small gas 2002.03.12
Life after COM
IS COM DEAD? What's The Future for C ? Is The Windows War with Java Over? Matt Nicholson and Tim Anderson Talk to Don Box About these and other Issues.
Don Box is a well known and flamboyant conference speaker, as well as co-author of the Simple Object Access Protocol (SOAP). He co-founded training company Developmentor but has recently joined Microsoft as an architect in the Microsoft .NET Developer and Platform Evangelism Group Matt Nicholson and Tim Anderson caught up with him at Microsoft's .NET Developer Conference in London to talk about .NET, programming languages, Java, GPL and life after COM.Matt:. Before .NET, you were really quite disparaging about the Attitude Microsoft Had Towards Developers. How's called?
Don: Microsoft has done a 180 degree turn The dark moments of Microsoft were 1998/99 when they seemed so focused on the enterprise that grassroots hearts and mind battles were being ignored It probably started in 1997 and I think it was over by 2000.. . It's totally different now. Microsoft has 20 million ways to reach out to developers and they're using every single one of them. That's good for Microsoft and good for people who use the Microsoft platform. Why the change? It could have been a re-organisation. Every half year or so they re-organise the whole company, or so it seems. or it could have been a realisation that they were doing it wrong. or maybe this platform is such a significant sea change that the only way THEY WERE Going to Be Able To Survive Was if The Developers Came.
Matt: You're Talking About The .NET Platform?
Don: Right Up until that the last significant change was 1992. Between 1992 and 2000 we saw the same thing every year In 1992 we saw Win32, OLE and Windows NT From then to 2000 there were just incremental improvements It got better.... , but there was no radical change in the way we write programs, in the underlying technology or the surface area of the platform Now the whole thing's over -.. that stuff's dead We're moving onto something new that's a very risky move,. especially when the migration path for VB programmers, which is Microsoft's bread and butter, is the hardest of all C programmers have a lot of choices with .NET;. they do not have to leave C , they can keep C and just move forward with this platform, and life is great But the Visual Basic programmer -. and lets face it that's where the money is -. has to start over Their existing code is not going to work on this new platform C programmers can actually keep their. Code Working. There's Some Amazing Techno logical stuff that makes that happen. But for VB, there's a new compiler, with a new language, with subtly different semantics. It was really interesting to watch the change from Beta 1 to Beta 2. When Microsoft released Beta 1 you had guys like Bill Vaughn up in arms saying "This is no longer VB". It was amazing to watch Microsoft retract some of the changes they'd made and basically appease those people, because they realised if the VB programmers do not come they do not ......................
Matt: If you look at the history of .NET, Microsoft has been working on this new platform for a considerable time.Don: At the San Diego PDC [Professional Developers Conference] in 1998 they gave out a C compiler that emitted this new executable File Format, And They Delivered A Version of The Runtime. It's amazing! in 1998! Nobody Installed It, Nobody Cared. People Had No IDEA of What. WERE ACTUALLY Seeing.
Matt: During that period Microsoft knew it was going to replace all that stuff It knew that all the developers it was talking to were going to have their world turned upside down at some point in the near future..
Don:. Definitely I did I think it was tough for people who knew Microsoft probably started talking to partners in 1997. It was very challenging to give talks on COM in 1998 and 1999. That's why I did not do a second edition.. . of Essential COM Technically there was reason to do it, because COM had changed enough and I could tell the story better But it was pointless -.. it was over What I tried to do was to steer people in the right direction by de- emphasising things that I knew were going to go away and were going to become irrelevant, and getting people to focus on core concepts that ultimately would last. It's interesting that the original name for the Common Language Runtime was COM3. It was designed to be the NEXT IMPLEMENTATION OF THE COM ProGramming Model. I'm real Glad .net got revaled. It's a very intending platform.
The Death of Commatt: When It First Came Out, a Lot of People Said "That's COM GON, .NET IS Something Totally New". You WERE QUITE VOCAL in Saying "NO IT's Not. This Is Still Com". Can you explain That ? Do you still hold by that now Don:? that's a great question In the broader term, ignoring the CLR specifically, I see .NET being about integrating software that's exactly what COM was about COM focussed us, not on our programs... , but on how our programs communicated - how we brought our programs together that's exactly the focus of the CLR:.. that's exactly the focus of XML Web Services It's really interesting, having spent a lot of time with all three, to see these common themes permeate the whole thing. I believe there's a very consistent path to XML Web Services and the CLR. They are both an evolution of the original vision of COM, so in that respect they're the next natural step. Is COM dead? Yes : Ole32.dll, Long May It REST in Peace. But BRINGING SOFTWARE TOGETHER with STRON gly typed contracts, and having encapsulation on either side of that wall - that was what COM was about and that's what this stuff's about I see it as a very natural succession If Microsoft had stuck with OLE32, and kept adding more and more stuff.. To That DLL, The Thing Would Imploded. soleded for trying to be said for trying again.
Matt: Much of Microsoft's Official Specification of COM Is in Terms of What COM Is Supposed to Do Rather Than How It Does It's Still The, ITS Not Changd.
DON: this is an intenting IDEA. Backwhen I Was in the COM World, WHEN COM WAS VIABLE AS A REAL TECHNOLOGY, People Used to ask me "What's the best thing what I can read about com?" I Would Routinely Say, " It is not my book, it's the COM spec ", because I always thought the COM spec best articulated what the architectural ideas were. Now that I've been doing a lot of work with .NET, people ask me the same question about . .NET Despite the fact that I'm writing a book and I think people should buy it because I need the money; easily the most articulate description of this platform, the CLR part of it, is the ECMA specs by Jim Miller and friends . That so clearly delineates the ideas, the architectural vision, and the motivation When I was working on my book, I realised it was really two books rather than one:. the in-memory story, which is the CLR; and the remote story With XML. I Wrote The First One, But Felt I Didn't Really Have a hook for the second. I Went Back and Read THE ECMA specs and it was there;. It was about trying to move towards semantic contracts I had this picture in my book, which goes from TSRs to DLLs to COM components to CLR components The end point is semantic contracts Ultimately, if I write.. A Piece of code and I want you to use it, i'd love to just becomle to tell you "this piece of code will willow your lawn. if you ask it to down your lawn, it'll make the lawn a certificate Height. "
We all know what it means. If we look at COM, it tried to get us in that realm. COM was a good step forward because it brought type, which is how programmers hook semantics into their programs, into the loader and into the boundaries BETWEEN COMPONENTS in Ways It Wasn't theree soerous. What we real want is, "you ask me to down your lawn, I'll mode your lawn". The reality is, "if you put this 16 byte GUID up on the stack and then another pointer, take this pointer and de-reference it, then de-reference it again. I'll give you back yet another pointer, then you give me a pointer to a data structure, and This is what its layout will be. "So Much Detail Was In the Binary Contract of com.matt: it isn't Encapsulated? You Had to DEAL with it t Wanted to DEAL WITH THAT OBJECT?
Don: Yes The good news about COM was we dealt with types; that is we shared type definitions across component boundaries That was a step forward The problem was we shared the semantics of the type, because we had to, but we were... also forced to share the in-memory representation of the type. So in COM we had this notion of binary compatibility, which meant the in-memory representation of everything that you gave me was statically known when we built the components. So the binary aspects of your code, which are not semantic but details, get embedded into the code stream. Moving forward with the CLR, we take a hands-off approach. We share types, which is good, because that's the way we render semantics in programming languages , but we defer the calculation of the in-memory representation until we get to the user's machine We actually have all the code, the exact precise versions, and at that moment -. and only at that moment - do we actually determine the physical reality Of the program. That's why we have rich meta data, which we only vaguely had before. That's also why we use IL. We do not use IL because we want to run on any processor. We want to be able to defer the physical binding of ..................... ..
Cross-platform issuesTim: What tarnishes this slightly is the cross-platform issue Because of the Web, the whole cross-platform issue is totally different than it was 10 years ago I love the idea of downloading an application from the Web and running.. IT IN A Secure Environment. But The Mac, Linux and UNIX PEOPLE WILL SAY, "Well It's Not Going to Work ON My Machine". Do you see it being resolved? DON: NO.
Tim: won't what impede the take-up?
Don: No, because in the future there will be many, many environments where you will be able to count on the CLR being there Today you can not rely on that But Microsoft has signed a deal with Kellogg, so when you get.. your cornflakes in the morning you'll find a .NET Framework CD. Together with Windows Update, and the American Red Cross dropping CDs from little parachutes, it will ensure that anybody with a Windows box will have the CLR. that's a huge number of people. The cross-platform story is a very interesting one. The CLR may not get on Linux in any way that people can rely on. I do not know that the CLR will be on Mac OS. The approach Microsoft took is actually pretty sound:.. the CLR is for this platform but, for integrating over the Internet, the only thing we're going to mandate is XML and HTTP On all those other platforms XML and HTTP are widely available People who want to write client applications against Those Platforms Have So Many Issues To Dear with Besides T HE CLR. IF I'M Writing a Mac OS App, Do I Use Cocoa, Carbon Or Classic Mac OS 9? if I'm Writing for Linux Do I Use Gnome Or KDE [K Desktop Environment]? WHETHER THERE IS A CLR OR JVM is Largely Immaterial Because That's a Totally Different Problem.
Tim: But it does mean that, if I'm running a broad reach web site, I can not actually take advantage of this fantastic facility.Don: I totally disagree I can build my web site or web service using all this technology. Such as the clr and xml web services, WITHOUT MANDATING Anything on the client. I can't Deploy Rich Client Applications to a mac OS X Box Without Writing Carbon Or Cocoa Code.
Tim: you're limited to what ASP .NET Provides, Rather Than What All The Rich Client Stuff Can do? Or do you create Separate Client Applications That Use Web Services To overcome That Barrier?
DON: YES. IF users Running Mac OS X Are Statistical IN Your Radar Then You've got to make the name. Here's the open question: "Everybody Points to mono. How Will IT Work On KDE?"
Tim: IF I WERE Microsoft, I'D Be Supporting Mono; They're Doing A Great Job.
Don: Here's the problem: I think Microsoft does want to support it Microsoft has been very friendly to lots of people The problem is that Mono is GPL [General Public License, GNU] and Microsoft is very very cautious about getting involved with viral.. Licensing agreements.
TIM: AND SURELY Also Cautious About Reducing The NEED for Windows, Which is The Other aspect of this?
Don: I think the desktop is a fait accompli - it's done Linux is never going to be significant on the desktop The real battle is over the server world Microsoft has locked horns with Linux, which is probably competitor number one right now in... .. the sever space Bit I think if Mono was done with a Free BSD or Apache license, or something similar, Microsoft would be much more amenable The problem is Miguel [de Icaza of Ximian] is very militant about GPL.Viral licencesMatt: What's Your Atitude Towards GPL?
Don: I hated before I knew anything about Microsoft Programmers should get paid to program Being creative and making money from software is a good thing GPL tries to cut off at least one avenue of that and it's viral it - I think it heinous... .
Tim: Microsoft Could Use it itself. Particularly On Mac OS, IT Has A Long Track Record of Producting Good Software.
DON: You KNOW What's Ironic About That Microsoft's Doing a Free BSD Port of The Cl R But It Only Supports Intel, SO IT Won't Run on Mac OS X. I don't know of any Plans to support the power pc, Which .
Matt: what do you mean by gpl being var?
Don: If I accidentally use GPL code, my code becomes GPL It's infectious One of Microsoft's big fears is that if it uses a piece of GPL code then Windows would become GPL Imagine that That would be really damaging It's really sad..... , because having people work on software in a shared, friendly way is a good thing. There is a history of Microsoft doing that. But these fanatics who follow Stallman [founder of the GNU Project] off the cliff are crazy. They remind me of A CULT. THESE People The Ability To Make Money and Create Wealth for People. Those Are Really Good Things.matt: What about other Open Source licenses?
Don: The General PrinciPle of Open Source IS Fine. I'm neutral on it. I don't have one.............................................................................................................. heady days of the late 90s, where there was just so much money floating around, allowed them to get far more visibility than they ever would have got normally. Now we're in much more fiscally conservative times the importance of Open Source is going to ..
Working with COM-InteropTim:? Are you happy with the COM Interop in the Framework There seem to be some things that you can not do For example in a Web Form application, if you want to embed the editing component of Internet Explorer there. Are some interfacs That You can't do. there. there..
DON: There no limitations to the com interop. I've sprent a lot of time with it. I have been confir than do anything I've been able to do anything i've ever wanted to. It's not always obvious - There's not a Visual Studio button to pull off everything you want. But the degree to which the inner workings are exposed is just amazing. Spend some time looking at System.Runtime.InteropServices.Marshal. It's a simple class with some static methods. Look at those and you'll say, "My goodness, look at what I can do look at the trouble I can get into with this thing." My favourite methods are GetUnmanagedThunkForManagedMethodPtr and GetManagedThunkForUnmanagedMethodPtr They actually expose the ability to do the transition frame -.. to Go from managed execution mode to unmanaged mode. There's so much amazing stuff you can do.tim: so do you think there? likely to be a way invols the particular case?
Don: Yes Somebody has to want to solve it Myself and a colleague, we wrote the .NET moniker way back in Beta 1 days Developmentor had a very rich history of writing monikers around anything That was one of the rites of passage.... Of a com guy - You Had to Write a Custom Moniker To Get Into The Club. One Day We said, "Lets Write the .net Moniker", Because I'D Just Figure, Because Host The Runtime. So I wrote the hosting code and my colleague wrote the moniker front end. We wrote it in C using ATL, the old school way, because that's what we knew best. Then I was at DevWeek earlier this year and I said, "I bet I could do that in C #. I Bet I Could Do That In Completely Managed Space. "I Looked Around and Imoniker, Which Was The Interface I Needed, Wasn't Available - There Was No CLR Version of It Took Me Five Minutes. I Had iMoniker and at That Point I wrote The Thing in Two Minutes.tim: a Lot of Developers Have Got EXISTING COM LIBRARIES And they're thinking, "Do I NEED TO Port this to c # or am i just as well off leaving it?" What are the issues here?
Don: There are actually several paths All roads lead to Rome If the code is written in C there are actually a lot of options If the code's written in VB then there are two options:... Get to it through COM Interop or port it to VB.NET. With C there's a bit of a wider spectrum. Microsoft did something which nobody ever talks about, but which I try to bring up now in every talk I do because I think it's so important. They've got this switch which used to be called the IJW Switch, meaning "It Just Works". The idea is you can take any C program, throw the switch and, amazingly, it's in the runtime. C programmers seem to neglect this option, although there's lots of existing C source code out there that could easily make the transition into this world with very little engineering effort. One of the problems with COM Interop, which people do not talk enough about, is that there's a performance hit. The runtime semantics and the Type System of The Clr Are Different Than T he old world and so, inevitably, you have to do the equivalent of a user kernel switch. It does not actually go into kernel mode, but the runtime environment in the kernel is different so we have to do some sort of a mode switch ..................... ..
Don: Yes, but it has to be trusted Theoretically, by re-compiling your C code it's now a managed executable, so it does not have the mode switch making it faster to call The problem is, if we take a C .. App And Re-Compile IT, It's NOT VERIFIABLE. IT'S An Imperfect World.The Future Of C Matt: What Do You Think Is The Future Of C As A Language?
Don:. Had you asked me six months ago I would have said it's dead, it's over When we go visit COM in the cemetery we'll bring two bouquets of flowers, one for the COM grave and one for the C grave In reality. , I've Actually Been Doing More and More C Programming On this Platform.
Matt: What are you write?
Don: Plumbing I'm a plumber What I like to do is figure out exactly what holds things together Unfortunately for C #, as nice a language as it might be, C has more power It's a much more flexible language For..... the kinds of programming I've been doing in the last three to six months while finishing my book, where I basically had to know everything, I hit the wall with what you could do from C #. So the next natural thing was C .
Matt: WERE you evploring how the clr thing?
DON: YES, THAT WAS My Personal Motivation. But I Also Like The Language. I've Been Using C Since 1988.
Matt: Does C HAVE A FUTURE for Enterprise Applications?
Don: Enterprise applications are different Enterprise applications try to avoid C like the plague already That's going to continue The nine-to-five developer has no business programming in C C is a lifestyle, it's a dedication to complexity You look..... at the complexity and say, "Hah! I can master you." ISVs [Independent Software Vendors] tend to work in that world, but not enterprise developers. ISVs are important too. They should be heartened that Microsoft is working on managed C . I Think Microsoft Is Working On Some Really Exiting Stuff And It's Going to Be Really Good for C Programmers.tim: There's Been Talk About Templates COMING INTO C #.
Don: They will not be C templates Those are far more powerful and complex You can use the C templates now You can take any C program you've got with any language feature and just re-compile it and it works.... It's an amazing basce of technology.
Matt: Templates In C # Remind Me of Developmentor's Gen
Don: They're very similar The whole idea of being able to generalise software is a good idea You write one solution, then you generalise it Generics and templates in C are about integrating with the language The good news is the compiler.... and runtime can do a better job. The idea behind Gen
Don:... No, it's more like C templates It's burying into the language and the runtime Ultimately, it's a much more architecturally sound approach The Gen
Platform Warsmatt: What do you see as the mass Differences Between .Net and Java?
Don: I think that .NET versus Java is a red herring Java is going through a transition period, which is good for Java J2EE has not been able to adapt, to evolve to the problems people actually want to solve If you... . look at the last J2EE spec, it is a very incremental improvement and in some ways it's incrementally stepping back because those guys are getting even crazier with some of the entity bean stuff But ultimately the nature of this platform war is really changing - it's no longer Java versus .NET. Java does not mean anything anymore. It's becoming like CORBA. Back in the late 1990s, CORBA was a fairly meaningless term because all the interesting aspects of CORBA were buried in a particular vendor's ORB [Object Request Broker] , so it was really one vendor versus another. I think we're seeing that all over again because J2EE, as a standard and as a platform, has not really tried to address these new problems customers are facing. I believe J2EE as a Term is Irrelevant. THE R eality is people use Java for Servlets, JSP and JDBC. Are all those things in J2EE? Yes. Is that what J2EE is? No, it's all the other technology which nobody wants. The thing that's missing from the J2EE story is a compelling XML . web service vision there's nothing there, mostly because J2EE is driven largely by Sun, who did not understand the significance of XML Those guys just believed Java was the answer so they ignored XML -. they let XML pass them by So now the. Leading vendor in the Java Space IS IBM. NOT Only Because The Have A VM [Virtual Machine] Which IS Pretty Good, But Mainly Because The Recognosed The Importance of XML. Now The Problem Is That IBM '
s approach to XML is different to Sun's, which is different to Oracle's. There is no broad, over-arching vision for how to do Java XML that's the same with every vendor. It's really become Microsoft versus IBM versus Oracle versus Sun. There's all kinds of triangulation there, for example Microsoft and IBM are doing very close collaboration, and Sun's being left on the sidelines. It's a very very different landscape. So .NET versus Java is a misnomer. It's much more interesting to talk about .NET versus WebSphere, or .NET VERSUS SunOmatt: Do you think below sun's effectively miss?
DON: YES, I Think They're PEDDLING VERY VERY HARD To try to catch up. The proble of 2000 and 2001. The Problem is Microsoft's Not Sitting Still Waiting for the to catch up. NOR is ibm. So I think Sun has marginalised itself. It's no longer purely about Java, but about which vendor you pick. I think that's good. Ultimately, that's the way it was anyway. With all these crazy J2EE containers and all the funky EJB implementations, writing to the EJB spec was a stupid idea. You really had to pick a vendor and see what worked and did not work on that particular container. I think EJB was the death-knell of this idea of 'write once run anywhere'. With J2EE And Ejb, The Containers WERE SO IDIOMATIC AND SO IDIOSYNCRATIC That You Had No Clue Wers Was Going to Work Well on All the Containers or Not. So if you will pay, you pick a vendor.
Matt: do you think it's moving from Microsoft Versus Sun, TO Microsoft Versus IBM?
Don:... Absolutely, it's a two horse race There's no question It has been for at least a year now, and that's good It's good having a race and it's good having more than one horse I can see either one of them succeeding. .Tim: Is Just One Going to success?
Don:.... That's a good question Microsoft is not going to drive IBM out of business, or vice versa So no, they will both succeed The question is what's going to happen to the Suns or BEAs of the world BEA is in a really bad position because it does not have a database. IBM, Oracle, and Microsoft have a database. More and more, as we want to see this end to end XML solution, we really need to integrate the XML storage engine with the processing .
Tim: in Theory That Could Be a strongth because you say, "choose your database, it doesn't matter".
Don: The reality is, especially for the next two to three years, the way XML integrates into these old school databases is going to be very very idiosyncratic, and the vendor's front-end is going to have inevitable advantages So it's like EJB containers. - You Pick One and That's One You Go With. The Problem IS, I Don't Think Bea Can Do A Great Job Integrating with The Big Three Databases, Plus All The Other Second Tier Databases. e
Copyright 2002 Matt Publish Limited. All Rights Reserved