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."
I read this comparison last November. The author, Dean Wampler, Ph.D., concludes the following:
.NET are most appropriate for large-scale, high availability applications. The documented tests say little about how well these frameworks support those applications.
.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.
.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 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
The
For developers who are comfortable with limited choices,
The Ultimate Linux Bookmark
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
"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.
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
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.
:-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.
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
Visit Jonesblog and say hello.
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.
I don't know what to make of this:
Why would he be relieved that MS puts out mediocre stuff? I hate that the world is forced to use boring, insecure, ugly, embraced-and-extended software from MS. I want them to be creative.
Personally, I think .NET is pretty good, technologically. I like C# + CLR a lot more than Java, and infinitely more than C++.
But what troubles me is that it's got a Microsoft copyright on it, which is pretty much a guaranteed poison pill in my view, but that's another issue.
On the whole, we should hope for Microsoft to be "creative", that's the whole point, the whole reason we don't like them. As Steve Jobs said, "they have no taste".
Then again, I shouldn't expect unbaised answers from Gosling, eh?
Yes, and C# is certainly a mockery:))
-I like my women like I like my tea: green-
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
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.
if (boss_says_so)
{
assert(1>2);
}
exit(0);
Using business logic this program will successfully complete?
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.
--It's Pimptastic!--
And it basically just sounded a lot like a very smart guy bashing Microsoft.
.Net could completely lack any real redeeming qualities or there wouldn't be projects like Mono attempting to provide a *NIX platform compatible Common Runtime.
I personally doubt
In the same way that if Java was horrible no one would have made third-party JVMs, like Kaffee (sp?).
But, that's just me I could be wrong (and wouldn't that be tragic?)
"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
While I am certainly biased against anything Microsoft tries to cram down my throat, I don't think this article is any better than the crap we usually see from Microsoft flacks.
Slashdot should really try to find some better quality articles if they want to have a content rich site.
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 is easier to read than 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.
One of my friends and I were at a microsoft user group (i'm not a member, i was just there for my free copy of windows xp :) meeting a few months ago, and he is a java fanatic, and there were showing some C# source code. My friend is a really smart guy, and he looks at it for a second, and says, "that would probably compile under java." and a few seconds later he said, "Hey, wait a second, that actually would compile under java." Needless to say, i laughed for a while about that one.
my other penis is a vagina
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.
- 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