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."
A: Imitation is the sincerest form of flattery.
Q: But isn't imitation also the sincerest form of mockery?
___
"with their freedom lost all virtue lose" - Milton
Why would he be relieved that MS puts out mediocre stuff?
.NET and C# arena are his competitors. For us, it would be like when a competing laboratory publishes a paper in an area we are investigating. If that paper is full of boneheaded conclusions and poorly designed experiments, it is somewhat of a relief that we are still on top of things and are producing the best work. However, I agree with you in that we all want the best products out there and the best science possible. The problem is that in the arena of operating systems and the internet, Microsoft has a monopoly and a LOT of money and resources available. The fact that they do have a monopoly means that there is very little impetus for innovation and truly creative thinking. The reality is however, that the superior Java solution is produced by the underdogs despite the overwhelming odds against them and should be refreshing to us all indicating that there is continued hope for the development of technology and computer science.
I think I understand why. It's because Microsoft in the
Visit Jonesblog and say hello.
You hit the nail on the head. Having just completed a .NET project and am now working on a J2EE project, the development environment for our J2EE product is like working with stone tablets and chisels in comparison. There is greater flexibility with the J2EE environment but there is tons of redundant work that we must do that the .NET environment takes care of for you. I would estimate that it takes about 3X the effort to write/deploy our J2EE product as it would if we implemented it in .NET (that is how I estimate the work for our schedule and so far it has been very close to that).
.jar file into two different places (JBoss and Tomcat) is a logistical nightmare. Add to this the fact that depending on which container you use, you have to have different XML files specific to that container to tell it what to do with itself. Even the smallest change can require quite a bit of work.
Simply getting several 'products' from different groups (JBoss, Catalina/Tomcat, etc.) to work together as well as dealing with a seperate edit/compile environment (JBuilder6 - no choice here), AND having to modify no fewer than 4 files (two Java source files and two XML files) by hand to simply add one field to an EJB (in ADDITION to the code you have to write to support it), AND having to deploy the
There are probably better ways to do it but we haven't found it yet.
"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
There is nothing wrong with the C#/CLR "memory model". By default, it is safe, just as in Java. If you write an unsafe model, the memory model is unsafe, just like it is in Java. Oh, you say, Java doesn't have unsafe modules. But it does. They are called "JNI". The only difference to C#'s unsafe modules is that JNI is less efficient and harder to program. (Both Java's and C#'s security models label unsafe code as such.)
I guess one of my pet areas is scientific computation. They might have done something creative to make that easier.
This is adding insult to injury. C# has value classes, operators, multidimensional arrays, and easy and efficient interfaces to native code. Sun and Gosling have been promising some of those features for years and failed to deliver on even the simplest of them. The best we are getting is a cumbersome proposal from IBM for multidimensional arrays that most implementations will probably not even bother to optimize.
And, I mean, the fact that the syntax [of C#] is so much -- is like exactly the same, or just about exactly the same [as that of Java].
Well, gee, what a coincidence. Microsoft thought Java was a great idea, but they wanted to have their own libraries. Sun sues them. So, they did the next best thing: they cloned Java as much as they could, fixed a bunch of small things Sun has been promising to fix for years, and called it C#. What does Gosling expect Microsoft to do? Just roll over and die? And Sun really has a double standard there: when Apple exposes all their native platform APIs to Java, that's fine. It's just not fine when Microsoft does it. Who's going to get sued next? What can open source developers do with Java before Sun is going to try and sue them?
I am no friend of Microsoft, and I won't use a Microsoft-only platform. But I am really getting tired of the marketing fluff coming out of Sun. When Java originally came out, Sun was promising a well-defined, open, standardized, and efficient platform. Today, it's a huge system with incompletely specified APIs, lousy support for high-performance computations, and no independent third party implementations (all compliant Java2 implementations depend to a large degree on Sun's source code). Sun has dropped out of every standardization process around, and they have been threatening others with lawsuits left and right.
I don't want to be tied to either a litigious Sun Java monopoly nor to a bundling Microsoft .NET monopoly. If Sun doesn't clean up its act quickly, after seven years of lobbying for Java and using it for lots of software, I'm dropping it. And I suspect others are getting similarly annoyed with Sun.