Slashdot Mirror


James Gosling On .NET And The Anti-Trust Trial

gwernol writes: "There's a short but interesting interview with James Gosling over on ComputerWorld. He talks about the differences between J2EE and .NET and also about the Microsoft anti-trust trial. Some interesting perspectives from the founder of Java."

14 of 270 comments (clear)

  1. J2EE vs .NET by Hemos+(editor) · · Score: 5, Informative

    I read this comparison last November. The author, Dean Wampler, Ph.D., concludes the following:

    "The experimental flaws of the Microsoft tests render the performance comparisons unusable. All tests must be run on the same test bed and a more suitable application must be chosen. J2EE and .NET are most appropriate for large-scale, high availability applications. The documented tests say little about how well these frameworks support those applications.

    The .NET and Java Pet Stores support the same features, but they implement different "nonfunctional" requirements. The .NET version assumes a single hardware/OS/database combination and makes performance paramount. The Java version supports multiple hardware/OS/database combinations and ranks performance as less important. In fact, both frameworks can support either emphasis. Hence, comparing the two code bases is misleading.

    For developers who are comfortable with limited choices, .NET is a well-designed framework with good tools. J2EE provides greater freedom, but the J2EE community can't ignore the need for tools that create powerful and efficient applications in a timely manner."

    The Ultimate Linux Bookmark

  2. Speaking of .NET... by Flarners · · Score: 5, Informative

    Microsoft released their shared-source CLI and C# implementation a couple days ago. I've been playing with it on my FreeBSD box, and while it's hardly the Java killer Microsoft's making it out to be, it's an interesting piece of work. If you've got a spare FreeBSD or Windows XP box lying around, download the source, compile it and play around with it some; it's always nice to know something about the platform before you start bashing it mercilessly :-)

    --
    "The problem with the French is that they don't have a word for 'entrepeneur'." -George W. Bush
    1. Re:Speaking of .NET... by rabtech · · Score: 5, Informative

      Well, let's look at your statements:

      "It seems worth pointing out that it is "illegal"
      (in the sense that that Microsoft owns the law)
      to do this on Linux. Really. Not kidding. Read
      the license."

      Now, let's look at Microsoft's license. (original in italics, my comments normal.)


      MICROSOFT SHARED SOURCE CLI, C#, AND JSCRIPT LICENSE

      This License governs use of the accompanying Software, and your use of the Software constitutes acceptance of this license.

      You may use this Software for any non-commercial purpose, subject to the restrictions in this license. Some purposes which can be non-commercial are teaching, academic research, and personal experimentation. You may also distribute this Software with books or other teaching materials, or publish the Software on websites, that are intended to teach the use of the Software.

      You may not use or distribute this Software or any derivative works in any form for commercial purposes. Examples of commercial purposes would be running business operations, licensing, leasing, or selling the Software, or distributing the Software for use with commercial products.


      OK, so the license covers the software only, not works which take advantage of it. You can only use it for non-commercial purposes... well, the source code anyway.


      You may modify this Software and distribute the modified Software for non-commercial purposes, however, you may not grant rights to the Software or derivative works that are broader than those provided by this License. For example, you may not distribute modifications of the Software under terms that would permit commercial use, or under terms that purport to require the Software or derivative works to be sublicensed to others.


      OK, so I can make modifications to the software AND give them away, so long as I don't try and sublicense it or make the license terms broader than they already are. Fair enough?


      You may use any information in intangible form that you remember after accessing the Software. However, this right does not grant you a license to any of Microsoft's copyrights or patents for anything you might create using such information.


      Here is a very important point: Looking at this code does NOT in any way restrict your contribution to other Open Source projects or business use. The only thing is that it doesn't grant you use of their copyrights/patents, which you don't have in the first place. you cannot restrict yourself or generate any harm by looking at this source code. I know many of you are doing a double-take, but look at the license.


      In return, we simply require that you agree:

      Not to remove any copyright or other notices from the Software.

      That if you distribute the Software in source or object form, you will include a verbatim copy of this license.

      That if you distribute derivative works of the Software in source code form you do so only under a license that includes all of the provisions of this License, and if you distribute derivative works of the Software solely in object form you do so only under a license that complies with this License.

      That if you have modified the Software or created derivative works, and distribute such modifications or derivative works, you will cause the modified files to carry prominent notices so that recipients know that they are not receiving the original Software. Such notices must state: (i) that you have changed the Software; and (ii) the date of any changes.

      THAT THE SOFTWARE COMES "AS IS", WITH NO WARRANTIES. THIS MEANS NO EXPRESS, IMPLIED OR STATUTORY WARRANTY, INCLUDING WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT. ALSO, YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.

      THAT MICROSOFT WILL NOT BE LIABLE FOR ANY DAMAGES RELATED TO THE SOFTWARE OR THIS LICENSE, INCLUDING DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, TO THE MAXIMUM EXTENT THE LAW PERMITS, NO MATTER WHAT LEGAL THEORY IT IS BASED ON. ALSO, YOU MUST PASS THIS LIMITATION OF LIABILITY ON WHENEVER YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.

      That if you sue anyone over patents that you think may apply to the Software or anyone's use of the Software, your license to the Software ends automatically.

      That your rights under the License end automatically if you breach it in any way.

      Microsoft reserves all rights not expressly granted to you in this license.


      OK, to sum up:

      You agree not to remove copyright notices. You also agree to distribute the license with any derivative products, etc. You agree not to distribute the software or modifications with a license that is broader or incompatible with this one. You must include a notice that your code is not Microsoft original code, and when it was modified.

      So far, that all sounds fairly reasonable to me.

      You also have to agree that Microsoft provides no warranties on the software, and that derivative works don't have any warranty (because that would make MS liable.) This is standard in the software industry, so no surprise there.

      An odd provision comes next: if you sue anyone over patents that you think apply to the software or anyone's use of it, you lose your license automatically. Basically, you can't sue anyone for using your patents related to this software or any modifications whatsoever. This doesn't really protect Microsoft, as you can still sue them, you just can't use their code. However, it does protect consumers of your modified code, in that you cannot come along a year later and sue them all saying your derivative includes software patents that you own and would now like to collect royalties on.

      Lastly, but not least, if you violate the license you lose it, and Microsoft reserves the right to kick you to the curb if they don't like you.

      Well, honestly... I don't know where the magic "you cannot use this sourcecode on linux or on/with any GPL stuff" phrase is, but perhaps I misread the license somehow.

      --
      Natural != (nontoxic || beneficial)
  3. "Hi kettle, my name's pot!" by Anonymous Coward · · Score: 5, Insightful

    "They certainly could have been more creative about the language."

    This coming from someone who tries to pretend he was inspired by smalltalk (since its more OO pure) even though its plainly obvious to anyone who knows jack shit about languages that the Java object model is a strict subset of C++'s. I mean, in smalltalk, things like reflection and introspection fall out of the way the object model works. In Java, its a bag on the side, because Bjarne didn't design it into the C++ object model, which Gosling stole wholesale.

    Then lying about it and criticising others... This man is obviously incapable of feeling shame.

    The worst part of it is that there are millions of "developers" out there who only know Java (or more often: switched to Java from Visual Basic) who simply accept Sun's marketing as fact.

  4. Java on OSX by BWJones · · Score: 5, Insightful

    From this comment in the article: And from a personal point of view, I personally actually read the [Windows] XP license and decided I couldn't sign it. So I've been shifting over to Mac.

    This is very interesting and parallels what we and others have been experiencing. There is this slow but dramatic sea-change taking place in the community of scientific computation and programming communities. Folks that never before would even look at a Mac are moving to the platform for a variety of reasons including its UNIX core and ease of use. Additionaly it seems that Apple is actually listening to their users these days. They include features requested and the open source Darwin allows for significant development from the community (assuming you are old enough to sign the agreement :-P) and there is even a movement to create a Trusted Darwin http://www.stosdarwin.org/ . This could be a real opportunity for university CS departments to adopt a platform that really does support Java instead of the Win boxes that so many universities seem to be purchasing for their CS programs.

    --
    Visit Jonesblog and say hello.
  5. Interesting, how? by szcx · · Score: 5, Insightful
    Some interesting perspectives from the founder of Java
    Oh yes, very interesting. The founder of Java doesn't think competing technology is as good as his technology.

    This is Sun propaganda pure and simple. I can't wait for a headline on the front page telling us that Coca-Cola says new Pepsi is disappointing. When Microsoft have made less-than-favorable remarks about Java in the past it has instantly been flagged as FUD.

    I suggest folks take Sun PR and Gosling's remarks with a grain of salt. Evaluate the technologies for yourselves and decide accordingly.

  6. Disappoining by igrek · · Score: 5, Funny

    What a disappointing interview... Could you expect something as boring as this from, say, Larry Wall? Never. Or when Stroustrup criticizes Java, he has some valid (and interesting) arguments. But I have not found any insights in this Gosling interview. Microsoft sucks and J2EE rules. How interesting.

    The funny thing is that he says
    1) They copied everything from Java
    2) They could add clever things to their language, but they didn't

    Well, at least, he's honest about Java ;)

  7. SUNW against the wall, this time for keeps by Ars-Fartsica · · Score: 5, Insightful
    Gosling and McNealy need to tone down the vitriol - Sun is in major trouble. Not just a bad quarter (although they've had many of those), but key aspects of Sun's market position and future directions.

    Linux is totally chewing up their low end. They don't want to admit it straight out - they have been playing nice with open source folks while quietly taking Cobalt off of the market and making it a bit player.

    Meanwhile IBM is taking it apart at the high end with a proposition that focuses as much on services as hardware and software..because IBM knows billable hours are where the real renewable revenue is.

    On the architecture side, Sun is pitting itself against an entire enconomy - Intel and Microsoft. Sun simply can't outresearch, outspend or outmarket either of these companies, let alone both of them and their attendent co-competitors (Dell, AMD, HP, etc). Once Microsoft gets Win2k up to par in every respect with Solaris (it will happen), they will start peeling high-price clients off of Sun with little contest (meanwhile linux will chew up Sun's low end more and more).

    On top of all of this, they're playing mindshare catch-up with the half-hearted JavaOne. Sorry James, MS beat you to the punch on webservices by a year.

    I just hope Java can't be opened up enough that it doesn't evaporate along with its owner.

    1. Re:SUNW against the wall, this time for keeps by s390 · · Score: 5, Insightful

      Microsoft needs to make money to survive... and they are running out of ways to do so.

      That's perceptive, but Microsoft (M$)is not a business (like IBM, say) that makes money and pays dividends to stockholders. M$ pays zero dividends but pays a substantial portion of employee compensation in the form of stock options (which it _doesn't_ expense against revenue but _does_ write off for tax purposes). M$'s employees exercise their stock options and take profits because the stock price is higher than the options' strike prices. This works because the market perceives that M$ will continue to expand and grow, thus its stock price remains high. Mutual funds and ordinary investors buy M$ stock from M$ insiders based upon an unrealistic belief in Microsoft's perpetual growth.

      M$ is a very sophisticated pyramid scheme, but it is _just_ a pyramid scheme. They hide revenue and income in good quarters in order to prop up the numbers in poor quarters, thus creating the illusion of financial stability (and the SEC is investigating this). In prior years, M$ made nearly 10% of total revenues from selling Puts on its own stock (knowing that it could manage its numbers to keep the stock price high enough to make those Puts expire worthless or at least worth less than they were paid for them). In fact, M$ would have _lost_ money in all of the past several years if they'd had to expense their stock option grants to employees! That's why M$ is a pyramid scheme. Still with me?

      M$ doesn't just need to make money to survive - they need to _grow_ to survive. Once their growth flattens for a few quarters, the big mutual funds will notice the lack of dividends and start selling their stock. Financial reform laws relative to employee stock option grants moving through the US Congress and likely to pass, post-Enron, will further depress M$ financial results. One of these quarters, M$ will have to pay off on all those Puts they sold, also cutting net income. The fall of Microsoft will be truly spectacular, although in slow motion like Enron, but much larger. Mutual funds, 401k plans, and individual investors who don't get out early will lose billions of dollars. Microsoft's current market capitalization - the total value of all stock outstanding - is over $325 billion; in contrast, IBM's market cap is only about $17.9 billion, but IBM annual revenues and profits are about 10 times Microsoft's. Begin to see the problem? This explains a lot about Microsoft's savage actions.

  8. Microsoft trying to lure people away from Java. by TheFlu · · Score: 5, Informative

    Here is an interesting article, describing how Microsoft is trying to get Java developers to write J# (java) code for the .NET platform. Unfortunately .NET only runs on the Windows platform, which has Sun a bit upset.

  9. Re:"relieved that it wasn't creative" by tshak · · Score: 5, Informative

    Yeah. Yeah. I mean, abused and ripped off was also in there just to some extent.

    I do find it obvious that there are some things in C# that are like Java. However, it seems to me that this is generally moot considering both languages where heavily inspired from C++. When you do your homework, you find that C# is actually quite different the Java:

    + C# is completely OO - even an Int32 is an Object. Java uses primitive types.
    + C# uses Delegates for Event Handling (think function pointers, but different).
    + C# supports the use of Properties instead of Getter and Setter methods.
    + C# supports Indexers which allow objects to be treated as Arrays.
    + C# forces explicit Method Overriding (via the virtual/override or new keywords).
    + C# supports namespaces. Unlike Java's packages, namespaces do not rely on a file/folder structure.
    + The C# Abstract or "Virtual Machine" (CLR) is not designed for C#, rather for language neutrality (to an extent). Java and the JVM, however, are closely tied.

    I could go on. Whethor or not you think that these differences are Good Things(tm), the point is, they are definitely different langauges. Although there may have been some inspiration from Java, I'd be hard pressed to call it a "Java Ripoff".

    --

    There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
  10. "imitation" flows in both directions by Jan · · Score: 5, Interesting

    "Imitation is the sincerest form of flattery"

    While I have great respect for Mr. Gosling's prolific contributions, clearly this imitation goes both ways. For example:

    Microsoft Transaction Server 1.0, shipped 12/96
    * automatic transactions for objects, including Java objects
    * ObjectContexts for automatic services on behalf of objects
    * declarative transaction requirements e.g. Transaction Requires New
    * declarative, automatic role-based security, and IObjectContext::IsCallerInRole()
    * etc.

    Enterprise Java Beans, 1.0 final spec shipped 1Q98(?)
    * automatic transactions for Java objects
    * SessionContexts for automatic services on behalf of objects
    * declarative transaction requirements e.g. TX_REQUIRES_NEW
    * declarative, automatic role-based security, and EJBContext.isCallerInRole()
    * etc.

    The provenance of the ideas behind EJB/J2EE, arguably Sun's most commercially important Java technology, would seem to be revealed in its choice of identifier names.

    -- an ex-Microsoft software developer

  11. Where did you learn OO? by Carnage4Life · · Score: 5, Informative
    That is flat out silly. Java provides object wrappers for it's primitive types.

    Object wrappers for primitives is not the same as the primitives themselves being treated as objects. Anyone whose used a true OO language like Smalltalk cringes and the inconsistency in Java between primitives and objects. Even C++ tries to make them as interchangeable as possible especially with templates.

    For instance in Java there's no way to pass just a primitive like "5" or 2.6 to a method that takes an object while in C# and Smalltalk you can.

    If you want to talk about non-OOP features, C# is full of them. Like structs for example. Who came up with that idea? And how about pointers? WTF?

    The above comments how that you've somehow confused object oriented with Java which unfortunately are not the same thing. An object oriented system has 3 main qualities i) encapsulation or information hiding ii) inheritance and iii) polymporhism. All three of which can be done with C# structs (or value types). Secondl, I am immensely confused what the existence of an explicit pointer type has to do with whether a language is OO or not.

    As far as Indexers go (and pretty much all the differences between Java and C#), they are just syntactic sugar that really just makes code confusing to read compared to Java.

    Really? So
    Math.Add(myList.getObjectAtIndex(0), myList.getObjectAtIndex(1));
    is easier to read than
    Math.Add(myList[0], myList[1])
    On what planet?

    That's a hoot! The fact is that CLR doesn't support anything that can't be accessed from C#. That's why implementations of other languages have had to drop features like multiple inheritance before CLR implementations. All CLR does is provide a Procrustian cot for other languages to lie on. Head over the top? Lop it off!

    The Java VM was designed to run Java while the CLR was designed to be language agnostic. The fact that C++ can run on the CLR is a testament to this fact.
  12. Okay, I'll bite. by Stu+Charlton · · Score: 5, Informative

    - You're using J2EE. That implies you probably should be using JBuilder 6 Enterprise which has numerous J2EE features for automating configuration of EJB's. If you're not using the enterprise edition, then your comparison is lacking in credibility, as Visual Studio .NET enterprise edition is approximately the same price.
    - You have to edit four files to add a field to an EJB? Let me assume for a minute that you're using container managed persistence, which is the only scenario that would require such changes. Most tools will allow you to define the new field in your local interface, and will then propagate that field to your implementation class and your ejb-jar XML file. The second XML file, I will assume, is a custom deployment descriptor. Again, I would hope you're using a vendor's tool to manage this thing. But even if not, I find your indignaton towards all of this "work" somewhat amusing.

    To put this tremendous amount of work in context, how much work does it take to add a field to a regular database table wtih a SQL call in JDBC, or for that matter, ADO.NET? That would require:
    - doing a DML statement on the table to add the column at easiest. In some environments this may require several DML statements to create the new table, re-populate it with old data, populate it with the new column's data, then drop the old table and rename the new one.
    - changing 1-2 method call signatures to take in extra parameters for inserts and updates.
    - changing the JDBC code for reading, updating, and inserting to take the new field into account
    - possibly adding the field to a data object that holds the data in memory.

    Phew! I'm glad there's alternatives to EJB, it's so much easier without it.

    Now, on to the next cow:
    Deploying a JAR to two different places (jBoss and Tomcat). Firstly, I question what the problem is. You would deploy an EJB JAR to a jBoss instance and a WAR to tomcat, or you could just put it into one big EAR file and fo'gettaboutit. If you have two servers, then the ant optional tasks package could very easily do this work for you with approximately 3 lines of XML configuration.

    The best part about your post is that "there probably are better ways". Yes, there are. Hire a consultant for 3 or 4 hours to help you out, it will probably be worth the $1000+. If you're missing GUI tools for jBoss, that would be because it doesn't really have any. Use a commercial server if you're not willing to hand-craft your config & deployment.

    --
    -Stu