Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Microsoft

Does .NET Sound Like Java? 469

zero asks: "Looking over at the MS Web site, a lot of the ideas behind .NET remind me of Java - and so does the hype around it. I remember when it was said that Java would revolutionize the way things work by having applications loaded on-demand off the network (for example)... sound familiar? It would be interesting to hear what the Slashdot community thinks of what MS is doing better (or what they think they're doing better) in their plans for .NET, and how much potential they have."
This discussion has been archived. No new comments can be posted.

Does .NET Sound Like Java?

Comments Filter:
  • by Anonymous Coward
    Right now, .NET contains a lot of FUD.
    Among other things, it is meant to enable software to move from shrinkwrap distribution to web services. Regardless of the pros and cons of this, the '.NET that looks like Java' argument specifically relates to the development environment and resulting executables.

    1) It resembles Java in two ways: the language, and the idea of a hardware-independent virtual machine. This idea in itself is nothing new; the original IBM PC could be ordered with the P-system OS (a Pascal virtual machine). In short, the idea dates back decades.

    2) It fits Microsoft's strategy of replacing Visual Basic (a very useful tool within the confines of its target market and make no mistake) with something with a cleaner, easier-to-learn language that is more extensible and open to new concepts (e.g. full OO, threading).

    3) It makes a lot of Windows programming dramatically simpler. The traditional Windows program is based on a nasty mess of legacy Windows APIs and huge complexity (let's face it) of COM hidden under amazing hacklibrary ATL to make it at least usable. C# will eliminate huge amounts of the pain of writing advanced Windows apps, especially those involving writing COM objects (which are hugely useful and pretty good design, when used within their target market).

    4) By abstracting the APIs from the code with an intermediate layer MS is also free to implement the underlying OS however they like without having to be afraid of deprecating legacy APIs that are still in use, and so on, which results in the huge frightening spaghetti mess that is the current Windows API.

    5) The abstractions to support threaded and component programming, at the language level are hugely useful (compared to the pain of programming these against low-level APIs).

  • Absolutely on target--.Net is basically cloning Java (but losing Java's platform ubiquity, and some of Java's nicer syntax, which is a surprise..you'd think they'd try to make C# easier to read than Java, not the reverse), and then .Net relies on a "data cloud" accessed via XML. What's surprising to me, after studying .Net, is that it does not really do anything revolutionary, despite the hype. Heck, try to find a major vendor or OSS project that does *not* foresee XML and ubiquitous data access. One other surprising thing about .Net is that it puts MS into an arena where it loses many of its traditional advantages. Who will get the job done faster, a group of Java geeks who can read each others' code ("extreme programming" in pairs, etc.) or a group of people where some are using COBOL, some C#, some VB, etc...tied together by .Net services at runtime? Which group would you rather work in? Who will supply data via XML messaging more cheaply and efficiently: a farm of Win2K servers using Microsoft Transaction Server (ka-ching), MS SQL server with adequate licenses (ka-ching), etc. or a farm of Linux or *BSD boxes running open source Java app servers with EJB's? It's hard not to conclude that .Net is part of Microsoft's "Plan B", since Plan A (stopping Java from taking over middleware) has failed.
  • by Anonymous Coward
    .NET has nothing to do with portability; it's much more like an ActiveX-ish component solution that embeds marshalling information in every bit of object code. I don't know about you, but I want to write my own IDL. I want to know which parts of my generated object code are mine, and which are generated communication stubs. Worse yet, Microsoft is setting itself up as *the* central repository for interoperability information. .NET will get all of its marshalling data from microsoft.com. Bad news. Don't buy into the hype. .NET is nothing but an extension of the idea of COM to be completely transparent to the programmer. Appealing, I agree, but a horrible idea once you examine its consequences.
  • "I'm going to write everything in Java because that's the only thing I know."

    Isn't that also a form of laziness?

  • More details on what they are changing in VB:

    http://www.mvps.org/vb/index.html?rants/dotnot.h tm

    It's not entirely clear to me that they've entirely ripped VB apart. I have to test this theory, but my understanding is they have made it such that VB6 and VB.Net can coexist just fine. I just need to verify the development environments work.

    VB was in need of a serious overhaul, anyway. There are a lot of inconsistencies throughout the language, and a lot of cruft basically left over from the very first versions of MS-BASIC from the 1980's.

    They had to overhaul it in order for it to fall in line with the other CLR languages. This eases things because they will only have one runtime environment to maintain.

    As far as the claim that they've made it impossible to develop desktop apps, I don't believe that's true either. From everything I've played with, C# and VB.Net are still capable of developing two-tier applications.

    I'm going to dig into this deeper this week as I'm going to attempt to port a desktop client of mine from Visual C to C#. It has a lot of user-interface stuff and should be entertaining.
  • Hmm, I don't recall Microsoft ever claiming ActiveX was cross platform.

    COM on the other hand is, there are implementations of this for Unix, even Linux.

    Microsoft has committed to providing a Reference implementation of C# and the intermediate language runtime for ECMA standardization. This reference implementation will contain the core subset of the language and runtime without any of the Windows specific libraries, etc. But they have said it will compile with gcc on Unix/Linux.

    But really it's the web services which is key to all of .Net. You don't need the C# language or the runtime in order to take advantage of this technology. IBM has committed to SOAP as have some other companies, even Sun is reluctantly talking about it.

  • I don't know where the hell you got this idea from. Both Java and .NET compile down to bytecodes. Sure, you can decompile Java, but there's nothing to say you can't do that with .NET too. And the .NET spec is more open than Java's.

    Actually, Java's VM spec is completely open, in as much as you can go down to your local B&N's and pick up the spec. Further, there have been at least a half dozen independent JVM implementations that I have heard of. You don't need Sun's permission to write or publish a Java-compatible VM, you just need to meet their testing standards (and pay the testing fee, of course) to call it Java.

    Sounds reasonably open to me.

  • Java is multiplatform (.NET will not be unless Microsoft is split up, then it may be ported to Linux)

    Actually, I'd argue that Java is monoplatform.. Java *is* the platform, whatever hardware and software underneath is largely invisible and largely inaccessible without creating a specially configured binary package with .dll's or .so's and JNI interfacing.

    One advantage I can see to .NET, and one that Microsoft is clearly counting on, is that you could write software that deeply interacts with the hosting platform at the same time that it interacts over the net using SOAP. In this sense, I expect to see a specific piece of .NET code be a lot less portable, but for the .NET framework to integrate more platforms in a native way than Java tends to do.

  • SOAP is based on Dave Winer's XML-RPC work, and supersedes it.

    • I work at a company that is currently building an EJB e-commerce backend, and I think Java completely rocks for that.
    Most people do. Who gives a shit if Microsoft get's .NET on 90% of the world's desktops. They are not going to beat Java out of the Enterprise market.
    • MS is better at implementing kick-ass fast VMs than Sun is
    And IBM is better still, by a factor of four. CLR isn't going to beat Java in the speed test with IBM around...
  • Are you saying you expected .NET to do things that a computer can't do? Are you aware that .NET is a piece of computer software? I think your expectations might have been a little bit too high.

    Um, you seem to have misunderstood my post somehow, though I'm not really sure how...
  • Whoops, apologies.

    I have mixed feelings about this; on the one hand, standards submission is already a leap further than Sun went with Java. On the other, where's the IMPP standard that MS promised us over a year ago? [microsoft.com] (note: I'm not saying it isn't out there. But I certainly haven't found it on MS's site, anyway)
  • The bulk of the software, critical parts, etc., will be run server side. See above for the rest of it.

    I still don't agree on this, but I think we're talking about different bits of .NET.

    My apologies for making that post innacurate through neglect. I now feel stupid for doing what I critisize so many other for on Slashdot...

    Ah, me too... sorry I was so harsh, especially since I screwed up elsewhere in this very thread...

    -- Yoz, calling everyone together for a group hug^H^H^H^H^H^H^H^H^Hbeer

  • There's a big gap between promise and reality here. How many IL VMs are there right now for non-Windows platforms?

    Oh, come on, give it a chance - after all, .NET for Windows is still in beta. And there's nothing stopping anyone else building a CLR VM if the spec's completely open, as MS claim it will be (and yes, I acknowledge that claims are nothing until the spec itself gets published)

    Just as importantly, how many non-Windows platforms will support the .NET API?

    As many as run the CLR VM, I suppose. There's no point opening the VM if you're not going to open the API too, and besides, the API definition is going to be far easier to get hold of than the VM definition (since developers need to write to the API, not the VM).
  • Sorry, I should have been clearer. My original post was a sarcastic response to the type of academic-style it's-been-done-before-if-you-combine-these-five-di fferent-systems argument. Yes, Java does some of this stuff, but not all of it, and saying that in theory you can already do this by combining various systems is not nearly as valuable as actually creating the one combined, neatly-packaged system in practice. I have moderately-high hopes for the .NET CLR which I've outlined elsewhere in this /. story, but to sum up:
    • MS is better at implementing kick-ass fast VMs than Sun is, as they have already shown
    • While the Java VM is not firmly tied to the Java language, it's a much stronger coupling than any other language, whereas the CLR is designed to be language-neutral
    • MS are going to be considerably better at marketing this thing and getting it onto 90% of desktops than Sun are. I know that's because of their monopoly position, and I'm certainly not advocating that, but it's a fact of life and scores major points for any app developer.


    I'm not anti-Java; hell, I work at a company that is currently building an EJB e-commerce backend, and I think Java completely rocks for that. It's taken a long time for Java to get moving and it's only now managed to get a real foothold on the server-side, which is well deserved because server-side Java is wonderful in all kinds of ways. Unfortunately it still sucks on the client side due to poor support and utterly abysmal performance (Swing is just mud). THAT'S why I want .NET to work - I want a nice client-side VM.
  • No, The X Box isn't going to be an NC by any stretch of the imagination, which really kind of sucks. Developers of the X Box that I've spoken to have so much as said that they want the thing to be for games only. It's their friggin' Mantra. They don't even plan on having it used as a general purpose DVD player (ala the PS2). Another dumb move.

    I don't know what their plans are, but it seems like they're trying to avoid at all possible costs appearing to, once again, try to swallow up a whole 'nother industry with their stanards, which they could easily do if the X Box became exactly what you say it would.

    I'm not sure where I stand on the X Box yet... If I were a microserf, I'd want the thing to be an NC. It would not only be a kick ass game machine (which it will be) but it would be a pretty sturdy PC. Looking at the specs, it could certainly fit that bill.

    Will Microsoft change their view of the X Box as a potential NC? Possibly. My guess is that it will not depend on the market as much as it will politics of Microsoft's monopolistic practices in regards tothe perception of the device in the industry as a competitor.

    Time will tell...
  • .NET has much more potential than Java because it is fully supported by Microsoft. That's a sad truth, but hard to deny.

    Microsoft still owns the desktop. Including the desktop of many developers/programmers. And Microsoft has a significant market share of the server market, not so overwhelming as the desktop, but it's definitely not NULL either.

    Admitted, the company is losing power and is not so influential as they once have been. Especially in the embedded devices they are not doing as well as they'd like. But still, Microsoft has a lot more influence on the market than Sun. If there is any company with the (marketing) power to have .NET succeed, it's Microsoft.

    Will .NET change the world? Not really. It's not *that* special actually. Will it have impact? You betcha.

    I'm personally hoping that Zend will release the PHP compiler soon and that PHP will allow stricter OOP such as private and protected members in classes. That might actually be a darn good alternative. (same applies to possible Perl projects heading that way, but I do not use Perl enough to know the situation wrt this)

  • I should have added that it's confusing because there's also the ".NET runtime" (like a cross between the JVM and COM). But still, .NET is more than that - it's a "vision" of XML services. At least, it's pretty clear that's the message we were supposed to get from the conference.
  • This is how they plan to win the Java war and it will work for them as it has in the past.

    As I have said before [osopinion.com], C# is just another Microsoft retake of Java, .NET is just another retake of the JVM.

    Microsoft's method is to publish something crappy (either by buying comething crappy like the SpyGlass browser, or by making a slightly broken variation-on-a-theme like J++), then re-work it and re-announce it as if it were the Second Coming, then do that again, and again, and again until the buying public gives in. It's a war of attrition.

    Java may suck in some ways, Java may not be a truly public standard, but compared to .NET it's a paragon of virtue. Microsoft have made no significant technical improvements over the JVM (indeed, none over the TCL browser plugin) with .NET - the entire purpose of it is to take market share from Sun and all of the other Java companies. And it wouldn't surprise me if an internal Microsoft email turned up which says just that.

    Meanwhile, in allowing a cracker to take them off air for a day, Microsoft have graphically demonstrated that they are not competent to provide the underlying distribution (lock-in) system for the .NET platform.

    I say tell them where to stick Microsoft .NOT, and go with more open standards and methods. I say computing power and storage is increasing so rapidly that a physically centralised server-push system like Microsoft's .NET/ASP vision is beyond silly.
  • > There's even a tail-call instruction for functional langauges, put in at the request of the brights at Microsoft Research.

    pfft. wow, they implemented an alias for unconditional jump. when the model supports first-class continuations and activations that do not assume a stack model (e.g. the security monitor being able to track through continuation chains instead of "the stack") then i will believe that they gave more than lip service to functional languages.

    mind you the JVM is much much worse.

    --
  • All I've heard about .NET are nebulous claims and non-technical marketing speak. .NET sounds like M$ has finally run out of engineers and is now just full of middle-managers. .NET might be renamed "The Dilbert PHB Project", except it's not that funny.
  • ...is that Bill, his laywers and Anders Hejlsberg sat down, figured out all the things in Java that would need to be changed in a clone so as not to get sued (again), and then Bill told Anders "make it so!"
  • Go to Eazel's Nautilus demo site [workspot.com], and hit one of the cgi links, which downloads a java applet that gives you a remote connection to an Eazel machine running Gnome/Nautilus that really works. Start browser, surf to slashdot, post comment. *Note*, you will need lots of patience due to high keyboard latency, but actually the screen update rate is tolerable.

    Heh, I tried to preview my comment by actually running the applet recursively, but the site was too plugged up. I'll try again later, this will be really demented :-)

    Now this is a stunt that's only practical with Java. Oh by the way, after you've played with Nautilus you'll see why Microsoft id doomed.
    --

  • "I whipping up a batch of sea hash for .NET."

    No, no, no, you use the .NET to catch the stuff to make the C Hash with.

    Gee, whiz, don't they teach you guys elementary cooking theory in those CIS classes? (and if not, how come there's all those "The [insert programming style here] Cookbook" books, huh?)

    Sorry, couldn't resist...


    ---
    "They have strategic air commands, nuclear submarines, and John Wayne. We have this"
  • An old MicroSoft tactic done again and again.
    Sun didn't help. They made it hard to remedy
    the flaws in Java by locking up the standards.

    Politics aside, I think C#/NET is the first
    interesting development platform from a company
    that originated as a languages company (before
    OS, apps, and games). COM was really horrible,
    dubbed "C--" by my colleagues. C# fixes various
    flaws in C, C++, and Java (mostly stealing from
    Java). The main hesitation I have is that MS has
    no serious plans to port it to non-MS platforms,
    instead relying on flighty third parties. If I
    was starting a new product, I would do I in C#/NET,
    mainly from the power of the system.

  • .NET is Microsoft's answer to what Sun is building with J2EE and the like. The thing is, Sun has a huge head start, and they were very smart in the way they developed their iniative.

    Sun decided to define a standard and provide reference implementations, but leave the rest up to everyone else. Because of this there vastly more developers currently working on J2EE and it's supporting technical infrastructure than could possibly work on .NET. There are even open source implementations (Tomcat, JBoss...)

    Microsoft may be able to market .NET to death, but Sun has gained critical mindshare and momentum in the developer community, and even more importantly, in the business community. If you want to build bullet proof distributed web sites these days, some form of Java platform is the de facto standard.

    I think .NET is a day late and a dollar short. It will provide a migration path for those poor souls that chose ASP early on, but I doubt the platform will steal any significant business from the firmly entrenched Java camp.

    -josh
  • If you're compiling it to native code, you're not *USING* a VM. The goal of Java is to provide the ability to execute a program on any platform. If you can compile to the native code, then more power to them. The source code can still be available in byte-code or specific to a platform.
  • Bloated? As in the API? The JVM does not require that you use Java's API. As for Java being write once, run anywhere, true it is. However, it is also write once, compile anywhere to native code. That is where Java is going to succeed in the long run.
  • Java is as slow as the optimization you allow it. There _ARE_ runtime optimizers (JIT) as well as native code compilers (GCJ) that allows Java to be executed _FAST_. Fast enough to compete directly with C++. There are also extensions to allow direct access to memory, native code, etc.

    I'm sick of people calling Java slow. It was slow when its strictly interpreted, but you can't say that anymore.

    As for the API's, they are VERY well thought out. Some utilities are hacked, but the overall structure of data structures is well done and will only get better.
  • You know, I can't help but worry that maybe a couple years down the road, after Microsoft's "dot-NET" thing has taken off, they might start suing anyone whose domain name ends in ".net" for trademark infringement . . .

    Yeah, it sounds silly. But then, so does Pillsbury C&Ding a bunch of software developers for use of the term 'bakeoff' [salon.com].
    --

  • Any Language.

    There are compilers (and interpreters?) for several languages, which create Bytecode for the JVM.
    Besides that, most of the non-Microsoft languages for .NET are only of academic interest.
    And, more interesting, they usually lack those features, the MSIL doesnt support, multiple inheritance in Eiffel for example.

    Native execution.

    I don't think, that performance is a point. The HotSpot technology looks at the execution hot spots and optimizes them at runtime agressively. Dynamic optimization can gather some performance improvements, no (static) compiler can do.

    Cross-platform

    The examples, which come with the .NET Beta are quite windows centric. And with the knowledge, that Windows NT started as cross-plattform, I doubt .NET will ever run satisfying on another plattform that Microsofts own.

    In my eyes, .NOT (no typo) nothing else than Microsofts own version of Java. They started five years later with all advantages and disadvantages.

    The main problem with this is the long tradition of copying Microsoft has. MS-DOS was inspired by CP/M (and a little Unix), Windows was inspired by Mac, etc. Copying Java will be a lot more difficult, because it's a little bit more than a single program.

  • I've never bothered to read much about .NET but it's my understanding that it doesn't actually work all that seamlessly. .NET doesn't run C code. It runs "managed C". It doesn't run Eiffel. It runs "managed Eiffel". I have no idea what that means in practical real world terms, but I'd be surprised if that meant you could take random Eiffel code from off the net and have it work happily under .NET. So you're back where you started. You need someone on the team with Eiffel experience to use that Eiffel code.
  • 3. Cross-platform. Let's just say that more than Win32, MacOS, and WinCE are on the roadmap for the Common Language Runtime. More will be revealed with this in time.

    And how is this going to work for GUIs? AWT and Swing have proven remarkably piss-poor at handing platform-native UIs in a cross-platform way. Anyone who has tried to deal with a Java app trying for a Mac look and feel will know what I mean. Things just don't quite work right.

    If MS succeeds in doing this, it'll be great news for Mac owners, since any program written to the CLR will run on a Mac. But I have a funny feeling that it's not going to happen.

    -jon

  • Huh? Motif PLAF looks fine on my Windows box. Apple did release a Mac PLAF which did *very very dirty things and was not pure Java*, and would not run on anything but the Mac OS. This was bad of Apple, but certainly not Sun's fault or the fault of Swing. (AWT wasn't even designed for "cross-platform platform-native UIs", whatever that means).

    I think you missed the point of what I was saying. If you use AWT or Swing to make a Java app and run it on a Mac, it just doesn't look and feel like a Mac app. It feels like a pod person from "Invasion of the Body Snatchers." Something is just off about it.

    I spend a large part of my days doing Swing work on Win32. For Win32, Swing comes a lot closer. But it's still not quite right. Theme colors, for just one example, don't quite show through.

    Is the CLR going to make EVERYTHING look like a Win32 application? If so, it doesn't matter if it's ported to MacOS X; no one will buy apps that use it. Is it going to make everything look like native Mac/Linux/Solaris/Win32/whatever apps? I'd like to see how they plan to pull this off. The single menu bar/multiple menu bar problem alone will be entertaining, to say the least.

    -jon

  • With all due respect, there's nothing that isn't "just an application level thing". Nevertheless, crappy code and systems proliferate.

    It's all just a wrapper around a Turing machine.

  • MS has had Java for some time now, and eveb tinkered with its insides to make it more "their" product. Now, they have a competitive product, backed by the full marketing muscle of Microsofy, doing very much the same things that Java does, and you're surprised?

    Look into the "way-back" machine a while, back to the VERY early days of the PC. The biggest-selling, most-popular C compiler of the time was Lattice C. Microsoft bought a license to re-sell Lattice C as their ows, Microsoft C compiler. Lattice had a different way of numbering what they called "major" releases, and Microsoft just upped the numbers when they felt like it. About the time they released MSC 4.0 (competing with Lattice C 2.something), they finally were writing their own C compiler, not using Lattice's ... and 4.0 broke damned near everything. Stuff needed to be totally re-written for it, libraried stopped working, etc etc etc. Not long afterwards, they came out with MSC version 5, and things started to stabilize ... and by then, Lattice, still not even at version 3, was dead meat.

    Lattice eventually got bought by a company who wanted a different compiler that they made. The new company dropped everything that Lattice had, except the part they wanted. The company I was with switched to Borland's Turbo C, and eventually we folded too - too much marketing "input", and not enough engineers to keep the ever-expanding code monster in check. *sigh*

    So, anyways, does it make some sense, now, what MS is doing here? They seem to be following their own time-honored pattern of luring companies in with what looks like a good deal, then poisoning them from the inside. I really hope that Sun can survive this - I have a friend, GianPaoulo, who recently started work with them. He's brilliant, and I'd hate like asll Hades for him to end up RIFfed over this :(
  • The advantage of "Diverse Code" is in the bigger picture. .NET is a additional layer of abstraction from the code. Across a corporation maybe you have one team who is more proficient in C++, and another who are Java wizards, a group that works extensively with Perl... You get the point.

    As I see it .NET has the potential to allow corporations to unify their teams, making management of the systems easier.

    Not being able to maintain code isn't a problem with .NET allowing diverse code, its a management problem. If you can't maintain the code, as a responsible manager, you don't let a programmer use that language simply because its faster. Sure, your programmer may think it's great because it's nice and speedy, but you have to look down the road at it's long term effects.

    Diverse code is an option, not something that is forced upon you. I'd certainly rather have a whole slew of options than only one choice.
  • I've got 3 words about what Microsoft is doing better. Marketing marketing marketing. That's all they seem to be doing with .NET.
    This is how they plan to win the Java war and it will work for them as it has in the past. Throw millions at marketing your new product.
  • .net is sort of Java, EJB, JavaBeans and more... C# is the part that is analogous to Java.

    The idea of hosted, load-on-demand applications isn't exactly a new idea -- even for Java.

    Microsoft's approach is to make things XML/HTML based. JScript, DOM, C#, and SOAP... Much more "fluid" than having this VM bolted onto your browser... Simple apps are simple, small, and quick-loading, complex apps scale accordingly...

    It's a very interesting approach actually... Very promising, and in some ways similar to Mozilla -- although somewhat more extensive in its goals...

    -JF
  • Oh yeah... Forgot to mention that the idea of HTML-based applications has a lot of potential and usefulness in providing a flexible, powerful UI... Windows 2000's add/remove programs dialog is HTML/JavaScript based and so is Microsoft Money 2001...
  • The server end of things is irrelevant to my point. Java does very well on the server. I'm referring only to the client.

    By "fluid" I mean stuff that loads quickly with no install process and interacts "correctly" with the environment around it. Java does not do this even with standalone Java applications. Indeed, one of the fundamental design goals of Java -- total platform neutrality -- makes this impossible. One cannot, for example, use the mouse wheel in Java without using JNI and coding support yourself.

    -JF
  • On the server side you can use many languages, but on the *client side* there are few alternatives -- and Java aint one of them. Bolting an applet into a web page is not the same thing as an HTML-based application.

    JavaScript/DOM are a good start but lack a great deal of flexibility. XML-RPC/SOAP are *very* useful! Mozilla provides this, as does .Net but ECMA standard JavaScript effectively prohibits such possibilities. (with the possible exception of a very ugly hack using a hidden IFRAME)

    Look at the add/remove programs dialog in Windows 2000. This is an HTML-based application written using JavaScript (or rather, JScript). Microsoft Money is in large part an HTML-based application. *This* is what I mean by "HTML-based application".

    -JF
  • <<Calling the add/remove dialog in Windows an application is laughable.>&gt

    Why? It's fairly simple, but it does what it is meant to do, and it does it well. And for the record, I'm referring to the one in Win2K which bears no resemblance to the one in prior versions of Windows.

    <<All you really need is a custom renderer for a JList object to do this in java, no html required.>>

    You miss my point. I'm not saying that you can't do sophisticated UIs in Java. I'm saying you can't do DOM-based UIs well in Java. Using the DOM-model for developing applications presents a number of distinct advantages:

    1) Applications are very lightweight.
    2) Applications immediately inherit a lot of UI functionality (such as mousewheel support, automatic rescaling when the container is resized, etc...) with absolutely no effort on the programmer's part.
    3) Applications and components can more easily be integrated into other applications or components where such functionality is useful.
    4) Making applications that run partially on a server and partially on a client (essentially distributed computing) is MUCH easier.

    <<I still maintain html stuff like what they do in MSMoney could be done in any language.>>

    Show me. Show me a DOM-based *calculator* written in Java that can be embedded in another application written in C without having to modify the C program.

    <<In java for instance their are HTML components that work quite nicely, the Ice browser for one, and one of lesser quality the JEditorPane even comes included with the JDK.>&gt

    Displaying HTML is not what I'm talking about! That has NOTHING TO DO with what I am talking about!

    <<All you really need a is good framework behind your application to do this. Maybe JScript, etc. are a good start but that's not to say there aren't other choices. >>

    Under IE there's JScript, C#, VBScript, and if you really want to, PerlScript (but your users have to download and install ActiveState Perl). When the .net CLR (the equivalent of the JVM) is widely introduced then it wont matter what language is used. C/C++, VB, COBOL, Perl, Python, C#, and even some obscure functional languages are all being ported to the CLR. Seamless ABI. A .net component can be embedded in a DOM-based application regardless of what language either was made in. Java of course is the exception since Sun isn't going to make javac produce CLR bytecode, and neither is MS.

    <<Java isn't as limiting as you make it out to be. I will admit there aren't very many java apps out there right now that do this, publicly available anyway. >>

    Show me even *one* DOM-based application in Java. Show me a DOM-based Java application that is embedded in a DOM-based application written in another language and interacts with DOM-based components written in JavaScript.

    <<Java is slowly getting better performance on the client too, 1.3 is a vast improvement over 1.2, I just wish it didn't take so long between releases. 1.4 is supposed to have substantial performance and memory requiremnt impovements.>>

    And no matter how good it gets, it will still have the following disadvantages:
    1) No interoperability with the native platform. (Mousewheel support anyone?)
    2) No component-model interoperability on the client-side.
    3) It will still be slower and bigger than an equivalent JScript/.net application for most applications -- especially smaller ones.

    The very idea of platform independance while quite noble, is the very antithesis of CPU/memory efficiency and interoperability. Merely making your widgets look like the native platform is not enough. They have to *behave* like them too, and your code has to be able to interact in a meaningful fashion with other code on the client.

    <<I'm tempted to mock something up in Java to show you how easily an add/remove "like" dialog could be done but I'm sure it would be a complete waste of my time.>>

    You need to reread my original messages. I'm not talking about Swing or AWT. I *know* you can make a nice, heavy, client-side GUI with all the trimmings. Making it interact in a sane-manner with the native OS is incredibly complex (JNI anyone?), and making it be lightweight is impossible.

    Yes, you could write an add/remove program dialog in Java. Making it behave like the one in Win2K would be very complex and involve a number of custom widgets. Making it be embeddable and controllable by other applications on the system would be nearly impossible.

    Yes, a good foundation is the critical component for everything I'm talking about. IE provides a good start, .net makes it a real *platform*. Java does not.

    -JF
  • Point by point, here's how you're wrong.

    1. Java is the most common language used to develop programs for the JVM, but nothing prevents you from writing a compiler which translates the source of any given language into JVM bytecodes; Sun does nothing to prevent this, AFAIK. See www.jython.org [jython.org] for an example of this which exists today.

    2. Java already does JIT and native code generation. JIT is more common because it is more flexible.

    3. This is the first I've heard of .NET being cross-platform. But I'll accept your assertion and point out that Java already runs quite well on every significant enterprise platform.

    4. Java already has a robust security model.

    5. Java servlets are already garbage collected.

    6. This sounds cool but I'm dubious about it's success. Besides, you can already achieve the same goal by using Java applets or Java WebStart.

    7. Java already does this, but I am glad to see Microsoft finally address the "DLL hell" problem that they created themselves.

    Keep in mind that Java delivers all these things robustly *today*. It will be years before .NET will be usable for real enterprise systems. I think the point of the original posted question is that .NET is almost a wholesale rip-off of the current Java platform. There is little to nothing proposed for .NET that is not already implemented in the Java platform.

    .NET is basically two things: (1) an adminssion by Microsoft that Sun is right regarding the Java platform and its goals, and (2) vaporware to try to slow the "steamrolling" rate of adoption of Java for enterprise computing. Have you noticed MS's recent ads touting their "enterprise computing." They know where the money is going, and they know who currently owns that market...*today*!

    As for automatically blasting MS, either you're really clueless about Java, or you are guilty of automatically preferring .NET "just because it's from Microsoft." As a beta tester, I think the latter is more likely.

  • Been doing this programming thing for over 30 years. I am a Programmer. I direct other Programmers. Note the caps. We're not C++ programmers, Java programmers, or any other "tool-set" programmers. We talk to machines given whatever language happens to be available on the machine. I hire other Programmers. Tool-set programmers need not apply.

    Once you've picked up a couple of languages, the others come in less that two weeks, if you're a Programmer. That implies a good education and a flexible mind.
  • I believe ASP.NET (which Microsoft was refering to at VBITS Orlando as ASP+) is designed to speed up ASP by compiling the code on the server the first time it is requested (this was the part that was still giving them fits at the time). In addition, it helps facilitate n-tier programming for the Web by separating out the HTML code and the VB (or C# or C++, etc, etc, etc) code, essentially creating an environment where HTML form controls act as objects which raise events, and making an event driven model work in the HTML world is the Web server's problem. A series of objects they've bundled with Visual Studio .NET will take care of some of the dirty work of determining whether to validate controls client-side or server-side by detecting what the requesting browser supports and sending appropriate code.

    The real bonus that I see is that with their "Web-Forms" package for Visual Studio .NET, they're able to pull the ASP coding into their, frankly, superior IDE and integrate it more tightly with the whole .NET thing. Visual Basic Script will go away, replaced by Visual Basic (or C# or C++, etc, etc, etc) code attached to the ASP+ files.

    It remains to be seen whether the cross-platform capabilities they've been touting will come to pass, and I'm quite skeptical about whether or not it will be possible to code pages that use a decent amount of DHTML inside of the Visual Studio environment. But it nothing else, it's going to be a wonderful upgrade to Visual Studio which is a very power IDE for rapid application development, and here's the kicker... if they can port the .NET common language runtime to Linux and allow people to develop apps in Visual Studio that run well on Linux, we'll see an explosion of enterprise (by Microsoft's definition) applications that run on Linux.

    - StaticLimit
  • It's interesting - the developers say that's what they want, management say that they have no deisire/intention, but I remember MS spending a lot of time slagging off platform independence, garbage collectors, bytecode verification, security models etc...

    I just wonder whether one of the platforms that .NET will end up on is the X box. Then,....
  • Okay, since they came out with it, I've seen the language called:

    • C-Sharp
    • C-Hash
    • B-Flat
    • D-Flat *


    Any other good names?

    *note(pun intended): For those not Music literate, I believe C-Sharp and D-Flat are two ways of writing the same note (I don't know why, maybe someone who has more of a musical background can enlighten us).
  • Oooo... yet another reason to refer to it as Db.

    Db could also be the notation for DeciBle (ie. the notation for noise... and not much else >:)

    thanks for the explanation
  • Not sure about the first two points:

    If Microsoft can deliver on a *cross-platform* solution.
    Java is cross-platform [geocities.com], there are VMs for about any system you could imagine.

    If .NET handles the 30 odd languages they claim to support, with easy extendability for more.

    You can run tons of languages [tu-berlin.de] on a Java virtual machine.
  • Java *is* used for numerical computing and the like:
    Java Grande [javagrande.org], Java Numerics [nist.gov]
  • EJB is definitely providing the capabilities that deliver on Java's promise. It's just that it took 5 years (35 years in McNealy's Internet years = dog years equivalency) to finally reach that point.

    In the meantime, others have developed similar (and arguably, in some cases, superior) capabilities. Also, Sun still has never really built and made widely available at low/no cost the tools to stitch all this stuff together as easily and transparently as Microsoft does. (Sun was *years* late recognizing the importance if real IDE's, a curious stance from the company that built the excellent Sun Workshop IDEs that were without peer for many years.)

    I realize all this can be done, but it was too hard for too long, and so the world marched on - had Sun properly delivered on the promise of Java for components, Linux would be primarily a Java delivery vehicle rather than an apps platform in its own right, and projects like Gnome would probably not exist at all. My point was more that the Java backers missed the window of opportunity than that the concept is in some way invalid. Still, it appears to me that most Java developers (egged on by the host of "learn Java in the shower in 15 minutes" books) are indeed trying to use the language in ways that stress its weaknesses rather than its strengths.

    And after all these years, there's still no good and standard way to find/locate/execute the local java environment(s) reliably across platforms. Java has enough of a head start that it may prosper on the server side, but it is quickly approaching irrelevancy on the client side - and if that happens, it means Microsoft WILL win in the end.
  • Of course it sounds like Java, it's a blatant ripoff intended to prevent Java from moving forward, especially now that Microsoft has been exposed poisoning the Java APIs to ensure that it is not truly cross-platform. (Never forget that preventing cross-platform capabilities is key to Microsoft's long-term strategy. Note that this means they could (in theory) ditch Windows and co-opt Linux and that doing so would suit their purpose just as well - Java, by it's very nature presents a very different sort of threat to MS, since it could make them irrelevant.)

    The real reason Java hasn't already won this war, (aside from Microsoft's perfidy) is that people are still trying to use Java to write the same types of monolithic applications that Microsoft knows only too well are doomed to eventually fail under thier own weight.

    Java *should* have become the premier way of building "software Legos" that would truly allow code reuse. There are a few bright spots in the enterprise space showing the promise of Java in this regard (IBM's San Francisco comes to mind), but by and large, Java developers and backers have only weakly delivered on Java's promise as a tool for making and using such software Legos.

    It is this very failure to create good components in a timely fashion that led to Java's near-irrelevance on the client side. Microsoft will not make that same mistake, and they have a huge market share wave on which to ride thier new surfboard, as .NET hooks will doubtless appear as vital and unremovable parts of all Windows operating systems extending the capabilities that are already present there.

    Microsoft is not stupid and realizes this. If they are successful in creating a large and powerful set of such Legos, it's "game over, man!" for Java, and needless to say, the more conventional methodologies favored by the open source community.

    As much as people here love to hate Java, this may very well be a case in which "there can be only one". It's shaping up that the final two are Java and .NET, and as much as I'd hate to, if I were betting I'd have to put my money on Microsoft right now...
  • Standardizing the CLR without standardizing the libraries and API's above it is meaningless from a cross-platform standpoint. If you will not find the same API's on Windows and on the MAC or Linux, then your applications are tied to that one platform, or you must provide a portability layer for each platform. The result: applications end up existing mostly on windows, and the windows platform is strengthened by this.

    Yes, it would be counter-intuitive for MS to build a cross-platform system. They have never done anything but protect windows in the past. You use the MS JVM as an example of why MS may be confidant in being able to write a fast JVM. Well, at the same time, MS tried to 'pollute' (internal MS e-mail term) java to destroy the cross-platform capabilites, by producing byte-code that not only would only run on Windows, but also only on MS's JVM. Why would you trust MS now. Warning bells should be going off!!!
  • Putting that aside, is .NET really Java?

    No, because Microsoft said so, and I believe them.
  • Disclaimer: I'm what you would call a "Java evangelizer" so I'm biased... Keep that in mind.

    Some of your points were a little inaccurate.. .NET will actually be multiplatform even though Microsoft is not split up. Already there are ports being made for other platforms AND other languages; Perl and Python by Active State for instance. I talked to a MS guy who said Microsoft will port the common language runtime of .NET to at least one "open source os", "maybe two". Because I don't know enough about .NET, I don't know if .NET apps will be cross platform, but the platform itself will be supported on various OS's. I imagine than Microsoft with some interest in the Mac platform (they own a large-ish portion of Apple) would port .NET to Mac OS X soon too.

    Java is controlled by the Java Community Process, *NOT* Sun and there are lots of companies on the JCP! The process works by voting and is a true democracy. It is organized by Sun, yes, but it's definitely wrong to not recognize this and just say it's "not an open standard".

    .NET will be standardized by Microsoft. Well, let me be more accurate.. The common language runtime will be standardized by Microsoft. If I recall correct, they have already submitted it to ECMA.. One of the reasons behind this is to win those people who have a problem with Java *NOT* being 100% open. For a lot of people, including me, this is not a problem at all. I don't mind Sun controlling it because I think they have done a great job so far.. Now with JCP, I have even more faith in the Java platform.
  • > The security systems in .NET are a lot more than
    > just a sandbox....

    So is Java's.

    > you really should read up on how it all works.

    So should you about Java.

    > there is no sense in just having all or
    > nothing, ala Java's method.

    Java's security model includes a rich vocabulary of principals, permissions and access controls. Perhaps you're confusing Java with ActiveX?

    > because of the way the security system works,
    > the runtime will prevent the trusted library
    > from doing anything disallowed on behalf of the
    > untrusted program....

    In other words, it does stack crawling to detect untrusted principals responsible for initiating a request. Guess what, the JVM provides this too.

    > That is why Microsoft will win: IT managers want
    > to cut a single check and get everything they
    > need to make the whole system work in one box.

    IT managers are getting sick of watching the size of that check increase every year, and getting a solution that is designed to ensure they will never be able to switch to another vendor.
  • > While the Java VM is not firmly tied to the Java
    > language, it's a much stronger coupling than any
    > other language, whereas the CLR is designed to be
    > language-neutral

    Yeah, the CLR is language-neutral as long as your language looks like C#. That's why they had to take multiple inheritance out of Eiffel to make Eiffel#.
  • Others have pointed out that most of the things on this list are already covered by Java. The ideas of compiling to native code, of having a decent code security model, and of providing cross-platform execution, are not new and your impression that they somehow give .NET an advantage over Java is laughable.

    > Cross-platform. Let's just say that more than
    > Win32, MacOS, and WinCE are on the roadmap for
    > the Common Language Runtime. More will be
    > revealed with this in time.

    A cross-platform implementation of the CLR is irrelevant. What matters is ports of the .NET Framework. CLR ports are good for PR but nothing more.

    > IIS/ASP.NET will monitor all the processes and
    > components... if there is a memory or resource
    > leak detected (or a timer expires), it will
    > spawn a new process and start funneling all new
    > sessions to that process... when the last
    > session to the old process closes, it will be
    > terminated and the resources reclaimed.

    Hey, sounds just like Apache! Nice catch-up play there, guys.

    > With desktop apps, an x-copy will actually
    > suffice as the install routine.

    This is exactly the same language I heard a Microsoft manager use in his presentation. Either you are one or you've thoroughly imbibed their view of the world.
  • Check out Mozilla XUL. Based on XML/CSS, but provides everything you need to build a real application UI.
  • I asked the ASP.NET product manager whether there will be non-Microsoft implementations of .NET. He carefully answered that they expect other implementations of *CLR*.

    The difference here is crucial. The CLR of the late 20th century was x86 machine code, which Microsoft never owned. Microsoft's lock has always been in the APIs, which used to be Windows and will be the .NET Framework. It's much harder to clone the API implementation than the VM, because it takes much more code to implement a big set of APIs (and the API implementation is harder to port).

    So what's the point of "opening" the CLR definition without "opening" the .NET API? That depends on what you mean by "opening". Certainly the .NET API will be *documented* and therefore cloneable. (Although so is Windows, and that doesn't make it an easy task.)

    The issue is really who will control the evolution of the CLR and the .NET API. It's not yet clear whether Microsoft's submission of CLR specs to standards bodies actually implies that they'll hand over control of future directions to those standards bodies (or that they'll follow those directions even if they do hand over "control" ... look at the W3C). But I'll be very surprised if they even pretend to hand over control of the .NET API.

    Assuming they do not, then we'll continue to see the "API of the month club"/"Keep the competition on a treadmill" strategy in action. Microsoft will frequently release new library interfaces, declare them part of .NET, and use a variety of means to make .NET-related products depend on them. Other would-be implementors of .NET won't even hear about these interfaces until the Microsoft implementations are already shipping and third party developers are already depending on those implementations' bugs.
  • Actually, it sounds more like the next iteration of OLE/COM/ActiveX
  • Java is controlled by the Java Community Process, *NOT* Sun and there are lots of companies on the JCP!

    Well, speaking as another Java evangelizer, there is just no way I could possibly sign up to Sun's soi-disant 'Community Process' [sun.com]. There's nothing 'community' about this - you have to, for example, grant Sun (not 'the community') an irrevocable license to use and distribute (under whatever terms they like) everything you do - and Sun (not 'the community') may even assign those rights to anyone they please!

    I very much like Java, and I'm betting the future of my company on it - but there's no way you can claim that it is controlled by an open process. It is controlled by Sun, and Sun have not demonstrated they have anything but very narrow selfish commercial interests in their management of it. The 'community process' is a gossamer-thin device to enable Sun to pretend to the market that they are committed to open systems. If it weren't, Sun would set up a not-for-profit trust which would own the IPR licences, and would allow the community to elect the board of that not-for-profit.

  • AWT and Swing have proven remarkably piss-poor at handing platform-native UIs in a cross-platform way.

    Huh? Motif PLAF looks fine on my Windows box. Apple did release a Mac PLAF which did *very very dirty things and was not pure Java*, and would not run on anything but the Mac OS. This was bad of Apple, but certainly not Sun's fault or the fault of Swing. (AWT wasn't even designed for "cross-platform platform-native UIs", whatever that means).

    Anyway, Apple has pledged that OS X will have a full 1.3 Java runtime (and beta testers can attest that this is currently working). If I were Apple I'd certainly go the Java route instead of the CLR/Microsoft route...no reason to be even *more* dependent on my #1 competitor.
  • by Enry ( 630 ) <enry@@@wayga...net> on Monday January 29, 2001 @08:34AM (#473313) Journal
    was heard from the crowd.

    Let's look at the timeline of events:

    1) MS gets sued by Sun over J++ and their Java implementation

    2) Sun gets injunction to prevent MS from messing with Java.

    3) MS creates .NET, which noone really knows much about (still) but everyone agrees that it's patterned after Java

    4) MS settles with Sun

    5) MS releases toolkit to move Java coders from Java to .NET.

    I'm not a coder, and it's pretty obvious to me that .NET is MS's response to Java. All .NET is is the framework of Java, but being MS specific.
  • by yoz ( 3735 ) on Monday January 29, 2001 @09:15AM (#473314) Homepage
    In other words, there's nothing here that can't be done with... a computer! Wahey, thank you for pointing that out to us! So, you're saying that all that Microsoft have done is put it all together in one well-designed package and give it massive distribution? Well, good. Because that's what I want.
  • by cpt kangarooski ( 3773 ) on Monday January 29, 2001 @05:30PM (#473315) Homepage
    Heh. MS is not as concerned about their OS monopoly as you might think. While they'd be upset to lose it, they have bigger fish to fry. You're generally correct in your assessment though.

    Here's my theory: .net may have indeed started as a project intended to kill off Java. But that has not been the point of the thing for quite a while now.

    Let's set the wayback machine for 1982. Microsoft has been around for about seven years. They got their start writing BASIC for a lot of different platforms, and Bill's strong abilities to hash out deals favorable to MS served him well. (e.g. having Apple by the balls in the 80's b/c he controlled Applesoft BASIC) One of the few deals at this time that I'm aware of that he screwed up on was IMSAI, but that's okay. They augered in pretty quickly.

    Anyway though, a couple of years ago (c. 1980) MS gets a secret deal with IBM. Thanks to Mary Gates being pals at United Way with an IBM bigwig - I forget who. They're going to write an OS (which they have to quickly buy from outside; they've never done this) for a new computer. It all works out well, but IBM makes one critical error that isn't immediately important.

    IBM failed to buy MS; buy DOS; or get exclusive, perpetual rights to DOS. If they had, things would've been a lot different.

    While Bill may indeed have been smart enough at the time to forsee what was coming, I think that he was just covering his ass. Despite the infamous 'Hobbyist Letter' Bill has little or no sense of ethics IMHO. I've heard that the BASIC for the Altair was developed on educational hardware, that he ported ADVENT w/o permission, etc. so my confidence in Bill is low. OTOH he has the Devil's own luck, and a mean attitude.

    Anyway, while it's been easy to copy out the IBM BIOS and stick it in an otherwise all-legal board b/c of their decision to go with all third party off the shelf hardware, that BIOS is illegal. Compaq, however, manages to come out with an RE'd BIOS that's quite legal.

    And now Bill is on the road to riches. Because: An OS that is abstracted from the hardware makes hardware makers irrelevant.

    More or less. Enough for Joe Blow consumer who has a Dell at work, a Compaq at home, a Gateway laptop and an eMachines for the kiddies. Nowadays you can run Windows on a non-Intel chip, or even a chip emulating an Intel chip.

    So on our return trip to the present, there's one quote from the near past that should stand out. "The browser is the operating system." Boy oh boy did MS take this to heart. In fact, that's the key to .net right there.

    DOS (and Windows) succeeded because: An OS that is abstracted from the hardware makes hardware makers irrelevant.

    Thus Netscape was threatening to succeed because: Software that is abstracted from the OS makes OS makers irrelevant.

    Not just anything will do. The software that could make that come true would have to be very compelling stuff all on it's lonesome. Furthermore, it would have to be cross-platform to protect itself from threats and gain the kind of enormous mindshare necessary for this strategy to work.

    Like a web browser - which is really a very pretty but not awfully smart terminal application.

    If Netscape ran on the Mac, Windows and Unix, and people _did_ stuff on those browsers, well, that could be done on any OS. And then Windows would be no more special than the Mac. Or frickin' Irix. In fact, people might start using those because, hey, what's the damn difference?

    MS did that to IBM in the early 80's. IBM is a dinosaur, sure. I'd say that they're probably a Tyrannasaurus Rex. Big and mean with little tiny forearms :) It took both the cold externally induced winter of the long-running Justice Department investegation against them and the cunning little MS mammals to bring them down.

    MS doesn't want to think of themselves as a dinosaur. They killed a dinosaur. But if they were, I'd say that they're more of a Raptor. Big enough without losing mobility, even meaner, and perfectly happy to take down anything that moves. Even 'harmless' little mammals. 'Cos you never know.

    And to them Netscape was looking like a decidedly threatening mammal.

    Bringing out IE (actually arranging a licensing agreement with Spyglass to rebrand and fork Spyglass Mosiac, while simultaneously screwing Spyglass over royally for kicks) was a reflex action. IE wasn't even useful until v3 or so, whereas NS was the bomb since v.9, before it was even called Netscape, and before the stupid throbbing N.

    But MS had at that time two strong monopolies. First, their OS monopoly, which had pretty much crystalized by the time of Win95's introduction. Second, their office suite monopoly, which was a little fresher. MS not only managed to kill off the consumer-level 'works' market by making Office (gotta love those generic names - they seriously increase mindshare) readily available, but they also killed off their business application competitors, notably WordPerfect.

    (In a curious reversal, they also may have used the office monopoly to ensure the OS monopoly - MS Office 4.2 for the Mac was truly awful. And it took years for Mac Office 98 to rectify it, by which time the damage was done)

    But, but, but, they committed a terrible sin against themselves by pursuing the application monopoly. When users are very firmly locked into using Office, and they are thanks to the dirty tricks we all know and love, they no longer care a hell of a lot about the OS. If a Flintstones-type computer with a little bird inside can open usable Word documents that's good enough.

    MS made Windows a near-commodity for a huge number of business users. Game consoles were of course competiting with MS (though they didn't know it at the time) for the dollars of home users who might get a console instead for playing games. And until Netscape came along the last compelling thing MS had was MSN. Which prior to Hotmail was an AOL wanna be.

    So's anyway, MS goes after threatening NS with a vengence. They bring out IE. They bring out Outlook (which goes after Eudora as well as NS's mail and news capabilities) but then, probably while mulling over the Final Java Solution the .net strategy hits them.

    If the OS monopoly has been seriously compromised by both the web and Office, it's time to set up a system that both brings it back into the fold while simultaneously making it unecessary.

    .net is, as far as I've been able to tell, a way of preserving the more important office suite monopoly in conjunction with the browser monopoly, by making Office a web site.

    They've been doing things for a while that lead up to this. Based on some interviews with senior Microsofties I've been putting the pieces together for a couple of years.

    Office is well known for forcing upgrades in order to read new files. It's a bit like a virus that's hostile to non-carriers and benign to them that's got it. One or two 'infections' in a major corporation and all admins can do is delay the inevitable upgrade.

    MS is a big proponent of UCITA, and has been more and more active lately in subscription oriented software (e.g. $100/year to use Office, even if you didn't upgrade - though it would likely upgrade for you even if you didn't want to)

    And now MS has a big XML 'web application' push.

    Put 'em together and you get something like MSOffice.net: $100/year for businesses, constant (though buggy, natch) software upgrades, files stored on centrally located MS servers and intranets (hate to be their competitors), files that can't be read by previous versions, only works on IE and Windows (as long as it's MS Windows) and gives Bill a great deal of power.

    Like the PS/2 it wouldn't work if it all happened at once... not easily, but it'll definately come to pass if done incrementally.

    I figure that the penultimate step will be a well-entrenched version of Word that has auto-update capabilities. If MS releases one final, very buggy update, it'll be difficult for people to stick with it. Those guys at DirecTV had about the same idea.

    Java could have made Windows irrelevant, and had really compelling cross-platform office apps appeared, even made a dent in Office. But it didn't, and half of that fight, the cross-platform part, was well and truly over before it began. Sun cared b/c Sun has their own OS. Most people never cared b/c they already had Windows.

    We'll see where this goes. It may be several years yet before MS puts the last piece into place. I hadn't expected the court case to move so fast, and neither did they, so that may be having an impact on their plans.

    Anyone care to refute, or comment? It's a fun theory and I enjoy it, but it could just be the CIA satellites talking for all I know.
  • by The Mayor ( 6048 ) on Tuesday January 30, 2001 @03:14AM (#473316)
    .NET consists of a lot of technologies. It is not directly analogous to Java. However, Java consists of a lot of technologies, too.

    Here's my read:

    C# ~= Java (~= means approximately equal to)
    ----------
    C# provides a nice programming language that has built-in garbage collection and takes out a lot of the crap from C++. Java does this, too. C# has multiple inheritence. Java does not (and claims it is not a good thing). Java will soon be extended to allow template-like functionality (without the pain in the ass of templates). I believe C# has something like templates, too.

    ASP .NET ~= JSP (and servlets)
    ---------------
    ASP .NET (or whatever they've renamed ASP+) compiles code upon the first viewing. This speeds up ASP code tremendously, giving it equal or better performance than the best servlet containers.

    COM ~= JavaBeans
    I'm not familiar enough with .NET to know of they're modifying COM & remonickering it (sorry). But, basically, COM (or whatever it will be called in .NET) allows each language to call other languages with native speed. It doesn't support Java, although I'm sure some third party will add support. However, Java *requires* any parameters passed between Java & other code to be copied into or out of the JVM (the JVM can move data around without notice--think HotSpot dynamic optimizations). This means there will always be a performance impact when calling between Java and native code (using either .NET or JNI). JNI is Java's answer to calling native code (or having native code call Java).

    SOAP ~= RMI and/or EJB
    -----------
    This said, SOAP will play an integral part of Java, too. SOAP is a Good Thing. CORBA is too much of a pain in the ass. RMI is Java-centric. And, for all EJB's promises, it's a pain in the ass to use non-Java code with it (basically it's just CORBA). So Java will have all three (RMI, EJB, & SOAP). By the way, Java's serialization mechanism is being changed to allow the serialization of objects as XML. This will play a big role in the integration of SOAP.

    So in essence, .NET is very analogous to Java (or, at least, Java & its related technologies). Microsoft is not stupid. They realize Java is becoming a platform for networked & distributed apps, as well as for server-side code. They also see that client-side Java is getting much better, and they suspect (rightfully, I might add) that jdk1.4 will finally get client-side Java "right".

    In other words, .NET is a platform. And Java, when combined with the J2EE technologies, is a platform, as well.
  • by lonely ( 32990 ) on Monday January 29, 2001 @08:47AM (#473317)
    Quick Errata.

    Java is multilanguage, there is a difference between the VM and the language Java. There are many different cross compilers for the Java around including COBOL. :-)

    See : http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.ht ml

    That said though not many people do this.

  • by km790816 ( 78280 ) <wqhq3gx02@@@sneakemail...com> on Monday January 29, 2001 @08:48AM (#473318)
    Microsoft was pretty much painted in a corner by Sun. Microsoft doesn't want to invest its time in a platform defined by a commpetitor any more than Sun wants to be directed by MS technology.

    If you want to think of C# and .NET as MS-Java. That's fine. Write some code in it (those that are using Windows). I've written the same programs in Java and C# and I can say with just a few hundred lines of C# under my belt, that C# is definately an upgrade.

    Read the Comparitive overview of C# [genamics.com] for a fairly objective comparison between C# and Java/C++.

    You might be able to say fairly that .NET provides all of the benefits of Java for the Windows platform. Along with multipule language support.

    Don't take this feature so seriously. If you are working on one application, Microsoft and anyone else with half-a-brain would want you to use one langauge. It does negate the fact that being able to use components written in other languages and being able to produce compontents that can be used by other languages provides developers a great deal of flexibility. Look into the benifits of .NET without the Java comparison. So it might be a shameless copy: good artists copy; great artists steal. I think .NET can stand on its own feet.
  • by Teratogen ( 86708 ) on Monday January 29, 2001 @08:41AM (#473319) Homepage
    www.perl.com has a nice summary of .net at

    http://www.perl.com/pub/2000/12/net.html

  • by technomancerX ( 86975 ) on Monday January 29, 2001 @08:38AM (#473320) Homepage
    .NET has some interesting ideas... The general mechanisms are similar to Java on some levels in that everything is compiled down to byte code (whatever Microsoft chooses to call it). The main difference in the angle they take on this is that they are specifically targeting a language-neutral runtime, so you'll have perl.NET and python.NET and VB.NET etc etc whereas (as far as Sun is concerned) the JVM is targeted at Java.

    The other major difference is that everything in .NET is available as a distributed object by default by SOAP. This is kind of cool and has some interesting possibilities for building kick-ass distributed applications.

    However, IMHO the direction Microsoft wants to go with this is horrible. Distributed pay-per-use applications are just a bad idea. Basically if you loose your network connection, you loose your apps which just sucks.

    So they have cool technology with a horrid targeted application of that technology.

    Just my 2 cents.

    .technomancer

  • by bmajik ( 96670 ) <matt@mattevans.org> on Monday January 29, 2001 @10:41AM (#473321) Homepage Journal
    How did this get +4 insightful ?

    Java is a language. It happenes to be compiled to a VM which has many implementations on many platforms. It also has a huge honkin set of class libraries that make it so you dont have to invent the wheel for each app you write.

    .NET is about distributed computing for the masses. The language you choose is irrelevant, the OS providing a .NET service is irrelevant.

    Do you not see the fundamental advantage of being able to make _function calls_ across HTTP ?

    When VS.NET ships suddenly (apart from the time it takes to get used to the changes from VB6->VB7) your average VB developer can write distributed reusable services. If shes not so hot at writing some peice, her friend the mighty C++ guru can cook her up a few components, which she can use pretty easily. Infact, she can _inherit_ from them if she likes and extend them in new ways.

    So when the majority of future MS products are designed against this distributed computing architecture, "things should be pretty cool".

    So, can you do distributed computing with java ? Certainly.

    Is it easy ? Not so sure...

    Is it designed from the ground up for massively distributed scalable services using the public internet as the connecting infrastructure ?

    No.

    Enter .NET
  • by dingbat_hp ( 98241 ) on Monday January 29, 2001 @09:19AM (#473322) Homepage

    everything in .NET is available as a distributed object by default by SOAP

    First off, what is SOAP supposed to be about ?

    If SOAP is an rpc mechanism over commonplace Internet-friendly transports, then that's a very valuable tool to have. We can build stuff with that, build it now, and build it between almost any two platforms that are still significant to the net. We want this badly.

    In M$oft's "SOAP-on-a-ROPE" world, SOAP has become "Internet DCOM". They've broken it, and especially the SOAP mindset. It's now all about shoving stateful objects from place to place, and objects that are only meaningful in a Windows world. They can FOAD with this whole idea; SOAP is built around being cross-platform, and I'm not having Redmond break it.

    If we want to shove objects around the place, CORBA still does it better than .NET. What happened though, was that the world found it didn't really want to do this after all. It's just too difficult to get interoperability between different sites in different companies, when most of the traffic is trivial "Validate this CC for me" stuff. Sure, in the future everything will work, and we'll be able to punt objects around. In the real world, right this minute, I just want a clean and simple interface that lets me talk to an eService provider and buy "5 minutes play time for the latest Metallica album over Napster". I'm certainly not going to start instantiating COM objects (from my Servlets environment) just so that I can talk to a poxy .NET-based service.

    M$oft still don't understand the 'Net. They think it's like a big multinational, only bigger, but still responsive to central control. Compare BizTalk and the Semantic Web (if you can do it without laughing). BizTalk is centralist and controlling, SW is about publishing to a widespread lingua franca. The difference commercially between these two is that SW can tolerate BizTalk, but BizTalk dies unless everyone uses it.

    It will be a long struggle, comrades, but the inevitable collapse of the Imperialist hegemony is at hand ! To the barricades !

  • by MikeTheYak ( 123496 ) on Monday January 29, 2001 @08:59AM (#473323)
    The reason there are many languages is that different languages have different strengths. Suppose you have a team of a dozen Java programmers, and you suddenly need to do some hard-core number crunching? Or maybe your platform just doesn't have a very robust JVM? Or what if you find some open source code that does almost (but not quite) exactly what you want, but it's written in Objective C? This isn't intended as an anti-Java rant, just as a reminder that different jobs need different tools. Your group doesn't need to know every language, but that doesn't mean that you should always embrace a single language regardless of how unsuitable it may be.
  • by Ogerman ( 136333 ) on Monday January 29, 2001 @09:36AM (#473324)
    I was just thinking about the whole .NET strategy that MS is adopting and I realized that this could potentially be their downfall. It seems to me they are looking at .NET as an all or nothing attempt to derail the Open Source movement by: 1.) Popularlizing a subscription model of payment for software -- both theirs and 3rd party. This is the ultimate dream of proprietary software companies.. 2.) Requiring their OS'es as a runtime environment for the .NET "solutions" coupled with anti-piracy protections and online-only functionality (this could effectively make it impossible to run Windows applications on an emulator) 3.) Getting developers to learn proprietary languages that are only useful for writing .NET software.

    But this could fail. Here's how:
    1.) Home users are in general leary of subscription services when it comes to computers. Furthermore, they may be scared off by the notion that they must pay a monthly / yearly fee to use what they perceive as "their software" on the expensive system they bought. .NET gives thes the impression of a loss of control. And consider also that the public at large is starting to get a taste for information freedom due to free MP3 music and the expansion of the Internet in general. .NET seems to run exactly contrary to this movement. 2.) Developers have already expressed concern over the changes MS is making to their Visual development suites. They may be reluctant to change. 3.) The .NET infrastructure seems to have many potential points of failure--everything to a customer's internet connection to bugs in the OS to problems on the ASP's end. 4.) Users and businesses are already fed up with how much they pay for software and how little control they have over their computers. For those thinking about Linux, this may push them over the edge. 5.) If MS can implement an effective method of piracy-protection in the form of required net access to activate the software, etc, then those who pirate software (and this includes many businesses, surprisingly) will have no choice but to pay up or switch to Linux. This is especially the case outside the US where a very large percentage of software is pirated.

    So it makes me wonder.. is .NET a marketing experiment or is it a total paradigm shift in MS's strategy. Judging by the extent of effort they have put forth, I think it is the latter. If so, this is the perfect time for Open Source to come in and save the day. And I might add that it is a fairly narrow window of opportunity. If .NET gets well entrenched, it will be nearly impossible to offer people Open Source alternatives because they will be entirely incompatible. And there is one significant way that Open Source can fail that we must prevent: we do not have a quality browser and office suite for people to fall back on should they choose to reject .NET. I know that these are not popular projects, but this is a major turning point in the history of software. It's now or never. We need as many programmers as possible to devote their time to developing quality alternatives. I propose essentially a one-time push in these two areas. Once a solid base is created, we can go back to designing stuff we really care about.



    This comment represents solely the opinion of the poster. It does not represent that of any past, present, or future employer.
  • by yamla ( 136560 ) <chris@@@hypocrite...org> on Monday January 29, 2001 @08:39AM (#473325)
    The major differences:

    • Java is multiplatform (.NET will not be unless Microsoft is split up, then it may be ported to Linux)
    • .NET is multilanguage. That is to say, you can write .NET apps in a mixture of VB, C#, C++, etc. whereas Java is just one language.
    • Java is relatively stable now that most of the bugs have been worked out
    • Java is controlled by Sun and is essentially not an open-standard
    • .NET is controlled by Microsoft and is even less likely to be an open-standard
  • by yamla ( 136560 ) <chris@@@hypocrite...org> on Monday January 29, 2001 @08:42AM (#473326)
    .NET isn't likely to be any better than Java for people with older computers and/or dial-up access only. In fact, Java apps are often very small, just the JVM is huge. So dial-up users are likely to be worse off in a .NET world.
  • by commandant ( 208059 ) on Monday January 29, 2001 @12:31PM (#473327)

    Well, let's think about that one.

    • They are hyping the hell out of it.
    • They have a 90% market share in the desktop market, so they can coerce users into the transition.
    • Without themselves as a competitor, there is nobody to Embrace and Extend .NET to death.
    • They aren't releasing it for all platforms, so Sun can't come up with a competing product.
    • They can buy up anyone with big enough balls to try to compete.
    • For the most part, their followers tend to think that whatever Microsoft says is a great idea, so they can release dumb shit like .NET and get enough people to buy into it as the Second Coming.
    • Hrm, well, they're fucking MICROSOFT, for Christ's sake. They've got more money than God, and when they want something to happen, it does.

    All these factors point to one sure thing: .NET, no matter how lousy, is going to become the next service standard, and Java is going to flounder. All hail the Microsoft Megalith, they will be setting commonplace computing trends for years to come, and even longer if they control access to your subscription to Office2010.

    Jump ship now, while you still have a chance.

    A new year calls for a new signature.

  • by rabtech ( 223758 ) on Monday January 29, 2001 @10:44AM (#473328) Homepage
    The security systems in .NET are a lot more than just a sandbox.... you really should read up on how it all works. The thing is, there is no sense in just having all or nothing, ala Java's method. Plus, with .NET, unsafe programs can call safe libraries, because of the way the security system works, the runtime will prevent the trusted library from doing anything disallowed on behalf of the untrusted program.... for example, if the .NET Active X applet wants to write to disk, and calls a "safe" object to write to C:\WINNT, it will fail, even though the library it called has the authority to do so.

    This is just a gross oversimplification. I encourage anyone interested to seriously check out the docs.

    Also, something I forgot to mention in my first message was web services. This allows you to expose and easily call services over the web as easily as one can take advantag of COM today. A lot of the COM "goo" is gone, making things generally easier on the programmer. But I don't have enough space here to do that subject justice.

    The bottom line is the same for .NET as it always has been for Windows vs theWorld: With Microsoft, you get one cohesive package that flows well and works together giving you everything you need with awesome developer tools. With other solutions, you've got to piece together 20 different packages by 10 different vendors and hope it all works together, not to mention that in general, the development tools suck, or don't work together well. That is why Microsoft will win: IT managers want to cut a single check and get everything they need to make the whole system work in one box.
    -
    The IHA Forums [ihateapple.com]
  • by q000921 ( 235076 ) on Monday January 29, 2001 @09:15AM (#473329)
    Going through the C# language documentation, it really looks like Java with some of the top items of Sun developer's Java wishlist [sun.com] (signup required) added: call-by-value for classes, syntax for looping over sequences, and a few others. Typical MS style: clone the competitors product and add the most visible gimmicks.

    Microsoft makes a big deal out of the universality of their runtime, but it isn't significantly more universal than the JVM. They claim they compile C++ into their runtime, but it isn't C++, it's a "safe subset" (full C++ is compiled into native code and linked in--useful, but not a feature of their runtime). In fact, more than 100 languages have been implemented on top of the JVM [tu-berlin.de], including C; there are also semi-automatic translators for C++.

    .NET is about not just C# and the runtime, but also about XML. Of course, that's a big thing with Java as well, with several excellent XML projects in Java, perhaps most notably the Apache efforts [apache.org].

    I wouldn't actually care much about whether Java or C# ultimately "wins" in the market, if it weren't for the fact that C# is years behind and has the wrong motivations behind it. Java is, by now, fairly mature and it has an excellent set of APIs and libraries behind it, both from Sun and from other sources. There are numerous compilers to the JVM for languages like Python and Smalltalk. And there are several third party implementations. Java's implementation isn't particularly tied to any one platform, and it actually runs better on Windows than on Sun's own Solaris. And it will take a C#/.NET implementation at least as long to mature as the JVMs--building these kinds of runtimes is hard and requires a lot of benchmarking and user feedback to get the bugs and performance bottlenecks out.

    If Slashdot readers care about open source and open standards, rather than complaining about Microsoft, there is a much more effective thing you can do: support open source Java efforts like Kaffe [kaffe.org], Intel's Intel's Open Runtime [intel.com], GNU GCJ (now part of GCC), and GNU Classpath [gnu.org]. By "support" I mean: use them, consider them for your next open source project, submit bug reports, and maybe contribute code. GNU GCJ, in particular, should be a good basis for you to write Linux applications: it compiles to executables that start up quickly, it lets you use native code almost as if it were written in Java, and you can even write native Gtk/Gnome [sourceforge.net] applications in it.

    But perhaps most importantly, educate yourself about Java rather than complaining about it; Java is really a pretty decent engineering effort. Give it the benefit of the doubt, and wher it needs improvement, help it along. C/C++ will not make it in the long run. It's Java or C# or something else similar to those languages.

  • by yoz ( 3735 ) on Monday January 29, 2001 @09:10AM (#473330) Homepage
    Amazing! You're wrong on practically every point!

    Java software is run client-side, while .NET software is (will be) run server-side.

    You're thinking of the XML Web Service stuff. We're talking about the Common Language Runtime, which can be used to write client code too.

    Other differences include that Java, by its very nature, is open source (that means that you can always read the source - that doesn't mean that it is free though...). OTOH, .NET can be kept so that it is not open sourced.

    I don't know where the hell you got this idea from. Both Java and .NET compile down to bytecodes. Sure, you can decompile Java, but there's nothing to say you can't do that with .NET too. And the .NET spec is more open than Java's.

    Further more, Java is an interpreted language and can run on any platform. .NET is comiled and must be run on platforms that it is compiled for.

    Wrong. See all the other posts in this thread.

    And since M$ has its dirty hands all over it, we can presume that it will be some time before compilers are available for non-M$ systems - and even then not 'legal' compilers.

    Wrong. It's a fully open standardised spec.

    How about even *remotely* checking your facts next time before posting?

  • by gattaca ( 27954 ) on Monday January 29, 2001 @08:48AM (#473331)
    OK, something that that has been at the back of my mind for a few months now.

    1) MS talk about releasing Office on a pay-per-use basis over the net.
    2) MS release a fairly powerful computer with a network port on it. They call it a games console, make sure it has a nice graphics card, and then try to get it into as many living rooms as possible.
    3) MS come up with something that looks like a JVM.
    4) MS make sure it has a security model, bytecode verification etc...
    etc..

    Is the X box going to be a Network Computer ala Sun's Network Computer that Microsoft said was a bad idea a few years back?

  • by IPFreely ( 47576 ) <mark@mwiley.org> on Monday January 29, 2001 @10:01AM (#473332) Homepage Journal
    I've used Java on and off for a few years. And I've played with the Visual Studio .NET beta recently.
    The structure of the .NET is very much centered around a Java like architecture. MS has added some useful features, and altered VB and VC a lot to bring them into line with the new runtime environment. It also required W2K (big surprise).
    VC++ now has two modes: Native mode where it generates native machine binaries and uses standard API, and Managed mode, where it generates code and API designed to run in the .NET runtime environment along with VB and C#.
    C# is Java. What else is there to say. It has a few more bells but that's it.
    VB has been really ripped apart. Most of the data types are changed, restricted or gone. No more variants. Arrays are always zero based, always dynamic. Declaration, scope and instantiation all behave exactly like a Java environment now. There's threading now and better Try/Catch exception handeling.
    I think it was a BIG MISTAKE to rip VB apart to make it more java like. Sure, you get threading and some other nice things, but at the expense of a lot of things that VB 6 and earlier could do before but can't anymore. Porting old code wil be a nightmare at best, impossible at worst. Most existing VB applications will need to be majorly overhauled to just compile in VB.NET.
    They should have left VB mostly the way it was. It was designed for entry to mid level RAD and it worked best that way. They could make C# the Java killer, web development language and maybe keep what they did with VC++. Instead they tried to drag the large base of VB programmers into their .NET world (most VB apps I've seen could care less about the internet/web/online world). All this does is abuse their installed base of VB products and generate more rewrite/headaches for existing apps.
    Yes, .NET is definitely modeled heavily after Java. I think it was a mistake to go so heavily in that direction. Net based applications are still heavily outnumbered by local and client/server applications in most businesses and that isn't going to change soon. They are abusing/abandoning their enterprise customer base to chase the internet application development market. Bad Move. Java is a good design for somethings, but not for everything.
    MS could at least have redesigned it a bit to clean up some java mistakes. It looks like they copied the Java design so completely, they took it mistakes and all. So much for "Innovation".
  • by Hard_Code ( 49548 ) on Monday January 29, 2001 @08:42AM (#473333)
    here [byte.com]
    here [sun.com]
    here [google.com]

  • I really can't see how .NET can be seen any other way, especially considering things like the recent settlement with Sun and, of course, the antitrust case.

    When Java was first introduced by Sun, Microsoft understandably saw it as a threat, because it suggested a network architecture where Java servers (most all of them surely running Solaris) would distribute executable content to clients running any platform at all, including but not limited to Windows. Microsoft understood that to allow this would be to allow Sun control over the server realm, while they would have at most a (perhaps considerable) slice of the client realm. They understood that, in a highly networked world, having control only over the client was irrelevant, especially considering that the distribution executables were not limited to their client.

    Now, five or ten years later, Microsoft is finally reaching the position that Sun was in back then, in that they finally have a more or less respectable server OS, and can finally begin the move to a more server-centric network architecture. Now, like Sun with Java, they are able to create a scenario in which they can control the servers and thus the rules of the game. Programs running off .NET servers may well be able to run on other platforms (e.g. a Linux version might not be out of the question, and Mac support seems pretty likely to me; the fact that they happen to control the most common client platform is just icing on the cake for them now), but they'll control the market and make their money off the server.

    This is why they were willing to settle with Sun on pretty unfavorable terms, and this is why the outcome of the antitrust case may become at least partially irrelevant. Microsoft has adopted the tactics of their enemy, and are using those tactics in an attempt to win the next battle, as they choose for it to be fought.



  • by fegu ( 66137 ) <Finn@@@Gundersen...net> on Monday January 29, 2001 @08:39AM (#473335) Homepage
    I've been trying out .NET in two projects for the last couple of months (using beta1).

    There is a lot of stuff here that we've already got with servlets and other non-MS technology, but MS as usual packs it with a quite good IDE and quite some code is generated for you (For the purists among us: this is optional).

    A very promising part of it all is ASP.NET (formerly ASP+) which has 'server-based GUI-elements'. This is really just a framework handling programmatic manipulation of forms, listboxes etc so you're finally not having to do Print "$e"; and so on. It gets especially handy handling tables listing data with alternating colors and such.

    I just couldn't bring myself to touch the darn VBScript or JScript in ASP so the new language C# (almost like Java - but alas, an all new object model to learn) was really what made ASP.NET attractive to me at all.

  • by gimbo ( 91234 ) on Monday January 29, 2001 @08:30AM (#473336) Homepage
    Does ".net" sound like "java"?

    Obviously not. Try saying them both out loud in quick succession and you should be able to hear the difference.

    Next question...?
    --
  • by malachid69 ( 306291 ) on Monday January 29, 2001 @11:31AM (#473337) Homepage
    Ok, I will take your bait. I went to DICE.COM and did searches for Oregon (where I am) unrestricted hire-type. I searched for the words "java", "J++", "C#", "windows", and "unix".... Wonder what I found?

    documents that say "J++": 13
    of those:
    # that say "unix": 7
    # that say "windows": 3

    documents that say "C#": unknown. Dice not setup to handle that.

    documents that say "java": 372
    of those:
    # that say "windows": 102
    # that say "unix": 188
    # that say "windows" AND "unix": 77
    # that DO NOT say "windows": 270
    # that DO NOT say "unix": 184
    # that DO NOT say "windows" OR "unix": 159

    documents that mention "unix": 480
    of those:
    # that say "windows": 156
    # that DO NOT mention "windows": 324
    # that say "java": 188
    # that say "windows" AND "java": 77

    documents that mention "windows": 365
    of those:
    # that say "unix": 156
    # that DO NOT mention "unix": 209
    # that say "java": 102
    # that say "unix" AND "java": 77

    So, now for all of those who keep going off about M$ implementations, or M$ having 85% of the market share -- trying checking the market sometime instead of believing M$ propaganda.
  • by ebelisle ( 306362 ) on Monday January 29, 2001 @09:54AM (#473338)

    But it's done the Microsoft way. Look at it from Microsoft's perspective to see the differences.

    Before, MS controlled the source layer. (C, C++, VB) Source was compiled to an object layer that was defined by the CPU (not MS).

    Now, Microsoft inserts MSIL, a meta-object layer. MSIL is owned and controlled by Microsoft. They create momentum by providing 27 languages that all compile to MSIL. (How many of those 27 MSIL shells will be updated a year from now to support .NET 2.0?) Trying to integrate non-MSIL code with MSIL code will be a new hurdle developers will have to face, and in most cases, won't be cost justified. To succeed, third party tools will need to directly support MSIL,

    Sun did the same thing by creating a meta-layer of Java .class files, but today there is a Java engine for most platforms. Do you expect the same level of support from Microsoft?

    The key for me will be to see how third party vendors are allowed to link with MSIL projects. Watch Microsoft and see what methods they use to lock developers to their platform.

    I predict Microsoft will protect their Windows investment by the usual methods. First they will only support their own operating systems. Then they will provide broken support for other platforms where it is easier to migrate to Windows than stay on non-Microsoft platform.

    I hope I'm wrong, but just in case I've just finished pulling the last com.ms package out of my J++ project and am ready to migrate back to an open JVM. I'd rather not take advantage of Micorosoft's tools that allow me to easily port my Java code to C#.

  • by Anonymous Coward on Monday January 29, 2001 @08:35AM (#473339)
    It will make your wife look better (and thinner), the flowers smell more fragrant, your black and white tv will become color and HD TV cable ready.

    Don't really understand Java? The ATL Dispinterface got you down? Don't worry, because .NET brings easy 1-2-3 COM programming to you in the form of the all powerful and easy (as in your first girlfriend) VB Script.

    10 print "I rule d00d"
    20 goto 10
  • by yoz ( 3735 ) on Monday January 29, 2001 @08:45AM (#473340) Homepage
    I wrote this a couple of weeks ago about the .NET CLR (Common Language Runtime), which is the virtual machine thing:

    This is the main bit I'm interested in. It's quite a daring move, since what
    they've done is made a virtual machine like Java's, but completely opened
    the specs and submitted it for standardisation, which is more than Sun ever
    did with Java. It's bizarre, since virtual machines promote
    cross-platformness, which is the *last* thing you'd expect MS to be
    interested in, especially given their track record. What it looks like is,
    firstly a great way to counter the DoJ (and to survive a company split, if
    the worst comes to the worst), but secondly it implies that MS have so much
    faith in their ability to write fast VMs (which, given the blinding MS Java
    VM, is not unfounded) and the Win2K kernel family as a host OS that they're
    prepared to take the challenge repeatedly thrown at them: to level the
    playing field somewhat. Plus, it makes Win32 coding a hell of a lot easier by abandoning the hell that is the existing Win32 API and MFC for something much cleaner,
    and you don't have to abandon whichever language you're coding in already,
    since the Common Language Runtime will run all of them, eventually.


    Basically, they're going to try and do a Java-like thing better than Java.
    And I wouldn't be surprised if they tried to swallow Java whole in the
    process (e.g. making the CLR run Java bytecode, or a Java language -> CLR
    compiler)


    Oh yeah, and there's all the XML stuff and
    low-level-services-provided-over-the-net thing, which is quite interesting.
    And Microsoft being the ultimate repository of all your personal data, which
    is obviously petrifying.


    Since then, I've realised a couple of other things:

    1) It's a great way for MS to move off Intel-centricity, which isn't so important on the desktop (though it'd help with porting stuff to the Mac) but is one of the main things killing WinCE development, since every time you write an app you have to compile it for every processor that WinCE runs on. And since MS is moving more and more into the embedded market, this is obviously vital.

    2) Looks like I was right on the Java-swallowing:
    http://www.theregister.co.uk/content/4/16392.html [theregister.co.uk]
  • IMHO (after going to a MS /NET Developers conference) C# is like Java. .NET (which is not C#) is a general vision of XML based services on the Internet - including support in a wide variety of DB and server products for XML and related protocols (Soap et al).
  • by augustz ( 18082 ) on Monday January 29, 2001 @08:40AM (#473342)
    If Microsoft can deliver on a *cross-platform* solution.

    If .NET handles the 30 odd languages they claim to support, with easy extendability for more.

    If they make .NET a standard, allow others to freely innovate on it (with none of the licensing restrictions Sun likes to impose to keep companies like IBM in line).

    If they can make sure .NET really is vendor neutral, so shipping the .NET foundation is not like shipping the JVM which is little more than a commercial Sun product.

    Then HECK YEAH, I'll take an open, free, extendible, cross-platform platform any day, especially if it ships with millions of Windows machines, has solid development tools, and is available on the platforms I like to use such as the Debian standard install (not a non-free directory).

    I think from a technical perspective the .NET platform fulfiles the promise of Java, and with things like SOAP Microsoft may indeed get the benefits of going truly open with their platform. That promise is still as exciting as when Sun made it so long ago. Finally, I can see no reason that .NET won't support Java, and C# offers a reasonable alternative from a techinical perspective.

  • Seen on SolarisCentral [solariscentral.org]:
    "In essense, while Microsoft advocates the ability to run diverse code on their platform, Sun advocates writing standard code for all platforms."

    The question seems to be how important is that whole "diverse code" thing? I mean, do I want a team of a dozen Java programmers? Or do I want 2 Prolog guys, 4 C++ guys, an APL geek... How do I crosstrain them? When people say "the best language for the task at hand" do they consider the factor of having people crosstrained in that language? Great. You know Smalltalk inside and out. You can make it run 100x faster than C++. So I implement my UI in Smalltalk. Now you go on vacation, and it crashes. I'm screwed. I can't train every programmer in every language.

  • by tjpalmer ( 158269 ) on Monday January 29, 2001 @10:41AM (#473345)
    First, let me say that I'm not much a fan of Java these days, even though I used to follow it closely.

    If Microsoft can deliver on a *cross-platform* solution.

    .NET relies on standard Windows APIs. Only a "compact" version is designed to be portable. [microsoft.com]

    If .NET handles the 30 odd languages they claim to support, with easy extendability for more.

    See Microsoft's use of future tense [microsoft.com] and this list of JVM languages [tu-berlin.de].

    If they make .NET a standard, ... What motivation does MS have to lose control of their market? I don't have links readily available, but all I have heard is of MS planning to take the C# specification to ISO, which has nothing to do with standardizing their whole platform. Even if they did, any takers on rewriting Win32? Ask the WINE [winehq.org] people how easy it is.

    If they can make sure .NET really is vendor neutral, so shipping the .NET foundation is not like shipping the JVM which is little more than a commercial Sun product.

    And .NET won't be a commercial MS product. I have not seen MS even try to claim that anything they produce for .NET won't be owned by them. Read carefully.

    Then HECK YEAH, I'll take an open, free, extendible, cross-platform platform any day, especially if it ships with millions of Windows machines...

    Aha. Windows machines. That's right. .NET is supported on Windows machines. It should make doing Windows network development nicer, with a compact version in various devices acting like embedded Java. MS supports Windows. They make Windows. What motive do they have for changing that? When did they say they were changing that?

    I think from a technical perspective the .NET platform...

    Try reading the technical documents. Here's one on SOAP. [w3.org] Read it. It's not that exciting. It specifies that you can use normal XML Schemas with a few extra rules and an envelope that mimics HTTP functionality.

    You can do little new with SOAP and .NET from a non-Windows computer that you couldn't do with normal HTTP and CGI. SOAP provides almost nothing on top of standard XML. There's nothing new under the sun.

    If you want open and exciting, try Linux or FreeBSD. If you want cross-platform software, try something open like C, Perl, Python, PHP, Ruby, or anything else on the list. They also interoperate just fine. Unix had cross-language interoperation working in the 70s. It's called pipes, and it's at least faster than SOAP.

    - Tom

  • by rabtech ( 223758 ) on Monday January 29, 2001 @08:52AM (#473346) Homepage
    As a beta tester, I think I have a bit of authority on the subject :)

    They are doing a number of things that will make .NET more successful than JAVA, such as:

    1. Any Language. The .NET platform doesn't limit you in language choice... you can use C#, VB, Perl, or any one of the other 15 or so supported languages. Plus, the architecture is extensible, so support for additional languages can be plugged into Visual Studio with ease. I know the Java bytecode isn't tied to Java the language, but realistically, that's the way Sun as limited it.

    2. Native execution. There are two options for compilation. The first, JIT, would be used on servers and such where users upload scripts and similar items. On first run, they are compiled into NATIVE x86 code (assuming you are on an x86 processor). The other option is mostly for desktop apps: when the app is first installed, the built-in MSIL compiler reads the MSIL on the CD and writes native x86 code that is fully optimized for the processor on which you are installing... so years down the road when the Pentium-6 is out, and you install that program, it will be fully optimized for the Pentium-6.

    3. Cross-platform. Let's just say that more than Win32, MacOS, and WinCE are on the roadmap for the Common Language Runtime. More will be revealed with this in time.

    4. Security. Native x86 code is unverifiable.... you cannot guarantee that the code won't do something stupid and overwrite its own memory or deref an invalid pointer. But the MSIL is verifiable.... the system can cast all the calls it makes against its security context. This allows apps downloaded off the web to be executed, knowing that even though they are compiled down to native code from MSIL, they aren't going to do anything funky behind your back. It also gives admins in a corporation complete control. There is a lot to the security subsystem, so I suggest you read up on it for yourself.

    5. ASP Enhancements: First of all, IIS/ASP.NET will monitor all the processes and components... if there is a memory or resource leak detected (or a timer expires), it will spawn a new process and start funneling all new sessions to that process... when the last session to the old process closes, it will be terminated and the resources reclaimed.

    6. More on ASP: Secondly, when you write an ASP app from Visual Studio, you design the forms and such in a RAD environment using an event-driven model (think VB). However, the server automatically cast the forms down to the highest HTML that the browser supports.... visit the page with IE 6 and you won't be able to tell the difference between it and a regular app. Visit it with Netscape 3, and you'll see a regular static page. The difference here is that the programmer doesn't have to worry about it.

    7. Distribution. With desktop apps, an x-copy will actually suffice as the install routine. All apps install their custom components into their own dirs. The system repository tracks all versions of all DLLS installed, and automatically produces the proper version for the proper app at launch time. No more DLL hell.

    These are just some of the improvements. As far as stability goes, the pre-alpha version of .NET ran as an ASP service on a test website for 52 days before the auto-detection kicked in and spawned a new process. Since that time it ran up until beta 1, at which time it was shut down to update it. One such test website is Ibuyspy.com

    For those who automatically blast it just because it is from Microsoft, get ready to be steamrolled just like everyone else was when MS took over the world with Win3.1/95. For the rest of you, read up on the MS documents. There is a lot of good stuff in there.
    -
    The IHA Forums [ihateapple.com]
  • by q000921 ( 235076 ) on Monday January 29, 2001 @08:55AM (#473347)
    1) The fact that it is *slooooow*..

    Java isn't slow at all. In fact, in terms of raw execution speed, it's probably one of the fastest object-oriented languages next to C++.

    What is slow about Java is its startup. And that's because you are loading a fresh JVM everytime you start up a Java application. If you did the equivalent with C/C++, you'd have to load many megabytes of libraries before you could start any C/C++ program, something that would make things like starting up any GUI app crawl to a halt. If you use Java the way those kinds of environments are supposed to be used, start up a JVM and do all your work inside that, it is very fast. Compilations fly, windows pop up instantaneously, etc.

    But since people aren't going to change their work practices overnight, Sun is working on addressing the startup speed by introducing something equivalent to precompiled, shared libraries for C++. That way, you should be able to start up JVMs very quickly.

    Incidentally, if your only experience with Java is through Netscape applets in Netscape 4, the JVM that comes with Netscape 4 is outdated and very slow. Furthermore, it takes forever to start up even compared to the unenhanced modern JVMs. Under Galeon or other browsers, applets start up quite quickly already.

    (which is sort of to be expected, it attempting to be all things to all people, not an easy task)

    Java's language design is very conservative, and it's a lot easier to compile into efficient code than, say, Perl or Python (when Perl or Python beat Java in benchmarks, it's because of highly optimized library code in those languages, not because the languages themselves are compiled well). In fact, because Java's language design is so conservative, it is actually not all that much easier to write Java programs than, say, C++; Python, Perl, and Smalltalk are certainly a lot more convenient. Java's advantage over C++ isn't convenience, it's safety, simplicity, and runtime support.

    What is really big and complex in Java is its GUI and "enterprise" libraries, and other languages should be so lucky. Swing is still by far the best designed object-oriented GUI toolkit I have ever used (and I have used quite a few). Java's database libraries are great, and so are its support for persistence and distributed computing.

  • by erayzer ( 307107 ) on Monday January 29, 2001 @09:39AM (#473348)
    To address your points one-by-one: 1. Any Language. Fair point, a valid advantage for .NET. 2. Native execution. Native compilation exists for every platform that I've seen Java on. The on-the-fly compilation is indeed a nice feature, though. 3. Cross-platform. IIRC, Java runs on Win32, AIX, BSD, Solaris, MacOS, Linux, BeOS, OS/400, HP/UX, etc. Now. Not in the future. 4. Security. The Java sandbox and Java security policy files already provide this. Now. 5. ASP Enhancements. One could just as easily argue that a lack of support for non-ASP application servers hobbles .NET. 6. More on ASP. Yawn. 7. Distribution. Zero-impact installers come with every J2EE application server I can think of. DLL hell exists because Microsoft and it's application developers created it to begin with. Java doesn't have this issue. This isn't an automatic blast at MS, in fact my respect for them increased with the release of Win2K -- which is fast and stable, at least on my home machines. However, .NET is Microsoft's revenge fantasy having been denied the right to "embrace, extend and exterminate" Java. The vast majority of Enterprise-class web-enabled systems are now being built to J2EE. I work in that field. Java, while not fully open, is much more open that .NET or the ridiculous C#.

The Tao is like a glob pattern: used but never used up. It is like the extern void: filled with infinite possibilities.

Working...