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?
Well it's typical Microsoft tactics - if they see something they like they either :-
a) buy the company
or b) come up with something extremely similar.
Video Game cheats, hints a
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!--
suggestion: instead, remember winston in 1984:
if (required) {
assert (2 + 2 == 5);
}
-I like my women like I like my tea: green-
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?)
"The problem with the French is that they don't have a word for 'entrepeneur'." -George W. Bush
"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.
The answer was too obvious, but too often ignored and the question, if not met with an informed response soon enough would have painted us into a corner. We have to support users on a variety of platfroms, hence Java, or simple HTML forms with asp or servlets on a server will accomplish our goals. Writing client apps in .net means we can only support that portion of our customers who use a current enough OS to support .net Yeah, looks pretty until you start looking at the fact there's a few million legacy computers and macs in the world you won't be able to do squat with. No thanks. .net is dead and buried for now and I mean to keep it that way.
Microsoft's damnable marketing buzz is dangerous, because too many people hear it and just leap at it, because it sounds like a great solution. Too few stop to think things through, often those who know too little about their whole market and end users.
Now this isn't necessarily a Java good, .net bad, thing, it's more of a 'don't jump on the latest bandwagon' thing. For my 2, though I'd be happy with J2EE because it's established, which .net is far from and risky because of it.
A feeling of having made the same mistake before: Deja Foobar
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
All you need to look at are these pages:
http://biz.yahoo.com/fin/l/m/msft_qb.html Balance Sheet
http://biz.yahoo.com/fin/l/m/msft_qc.html Cash Flow
Note:
2.1 Billion incoming cash. 5.2 Billion Cash on Hand.
I think MSFT is solid.
I mean use a little intuition. Every beige box sold means $40 in revenue from windows. What's the Marginal Cost of another copy of windows $2? Now add in Office or Works. Then add all the copies of NT server that are sold, all the CAL's. All the Exchange servers, all the Exchaneg CALS. All the SQL servers, all the SQL CALs. Thats a honkin lot of revenue, and very little marginal cost. MS in making money hand over fist. That's what monopolies do, maximise the difference between marginal revenue and marginal cost. MS can keep cranking out licences and were stuck buying them.
MS growth may slow, (although one could argue that vast international markets lay untapped), but they aren't about to colapse Enron style.
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.
A few things here:
.NET in general is just another in the cycle of forced upgrades. Before you used VB, now you use VB.net. In another 4 years you'll use something else. Of course, all the good ol MS apps will still be written in C++ all along. The primary reason to use MS products is always the same: "everyone else will." Which of course is self-fullfilling prophecy.Everyone believes that so everyone jumps on board.
#1: To the person talking about financials and MS being a "pyramid scheme." In a way this is true, but this is common practice today. If you look at a company like Cisco, if you count stock options they lose huge amounts of money, but if you don't count them they make money. Stock options are very easy to abuse from a financial reporting standpoint. The key is, when people cash in those options the company has to either buy them back at the market price, or must simply have the options on hand, when they could have sold the shares for much more. Paying someone in options is like paying Hershey's employees in candy bars - in the end it's still money spent.
#2: What Gosling was saying about C# being a rip-off is true. Java may not have done anything new but it at least combined some syntax and pieces in a new way. C# is a straight port of Java for the most part. Java is NOT a copy of C++, it is a copy of a hodgepodge of things. Whereas C# really is just a copy of Java.
#3: Safe vs. unsafe code. People are being very naive about this. How many web pages do you go to that give you the warning "this page blah blah unsafe..." Yet you still enter that credit card number. Marking code as "safe" or "unsafe" is irrelevant. This is what will happen: people will write unsafe code, and it will be common enough so that end users will have to use it. The same thing happens with ActiveX controls. How many people honesty won't run an unsafe ActiveX control? Or a program that uses unsafe Word macros? The other day I had to change my security level in word so I could use a documentation tool - and I went right ahead and did it, and so will everyone else!
The fact is, if it's easy to write unsafe code, people will write it, and then users will have to run it if they want to use that product or service. Marking it safe or unsafe makes no difference at all, the typical user will run unsafe code.
#4: Sun really does need to get it's act together. Good god there are so many Sun products, so many APIs and old APIs and new APIs and different "initiatives" it's impossible to tell what's what. For example JavaOne, how many people can figure out what actually is in there and what it does?
#5:
#6: MS has been found guilty of anti-trust violations multiple times. And they still get worse even as the trials go on! If I were a judge I would say "stop mocking these proceedings or I'll throw your ass in jail!" Most people who are for another weak settlement are people who just make vague arguments against the entire notion of anti-trust, something like "they're just trying to do what every company wants to do and be the leader. Stop whining!" Well, we *have* antitrust laws! And we have them for a reason. And if they apply to ANYONE, they apply to MS. MS protests that a harsh penalty could destroy the company? Well, when you get arrested for murder and put in jail for life that pretty much destroys whatever you had going at the time. It's called "punishment." That's the point! If you can't stand the punishment, don't commit the crime, not once, but twice even! That logic is akin to saying "I can't go to jail because jail is a nasty place." MS was found guilty, they didn't stop, in fact they got worse. A breakup to me is the only logical thing to do, they've shown they can't play by the rules. Yeah, that's "harsh." But, there is a simple way to avoid penalty: don't break the law! Yes Virginia, it really is that easy!
Gosling is fat. Also, Java has serious issues itself when it comes to scientific computing.
Please see this paper for further information.
Funny he should mention that as one of .Net's shortcomings.... Also he feels "ripped off"? Sure, C# is an awful lot like Java, but then Java was an awful lot like C++. Borrowing good features from past languages isn't robbery, its just smart.
In short, shut up fatty!
- 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
Well I love Delphi and use it all the time, but comparing the two is inaccurate. They -are- pretty different.
Does anyone remember how much Java 1.0 sucked compared to the Java of today? I sure do, because I was one of them! Does ANYONE get version 1.0 perfect? So why do we expect this from Microsoft? Yes, they're bugs are more public because more people use Windows than there are Christians on this planet, but everyone else's 1.0 products are the same! Security? Please! UNIX had 30 years to improve security. My dad tells me horror stories of all the security bugs in the original systems he'd worked on at Bell Labs!
True to some extent but consider Apache. It has a higher market share than IIS but where is the Apache version of Code Red? I seem to recall IIS in on version 6, or is it 7? I can't remember. But Apache is just about to reach v2.
Gosling is a joke if he thinks he's anyting special. He got his "fellow" status because of Java, but only once it took off. Other than that, he'd be pretty obscure. Is there anything innovative anymore? Everything is a culmination of ideas. It's like evolution, new species don't just appear, they're based on previous ideas.
So why did Java take off in such a big way and Smalltalk didn't? Don't believe it was just marketing, because it wasn't. The fact is, that Java was the right product at the right time. There are languages out there that are so "innovative" they are barely usable for real world projects. So it didn't include hundreds of good ideas - but it did combine those ideas in a way that had mass appeal. I consider that innovative in a way.
J2EE is not EJB, and the ideas behind J2EE model really have nothing to do with MTS.
.NET.
On the EJB hand, you're quite right, they borrowed heavily from MTS. But I would claim that MTS was beta-quality software until at least 2.0, and didn't support object pooling until COM+'s release. EJB 1.0 servers were doing that around the same time, and while many were crappy, there were production quality ones out by late 1998 (WL 4.5, Gemstone, Persistence, etc).
In the story of MTS vs. EJB, it really was a story of execution. MTS and COM+ were slow to mature, and didn't take off at all. Which is one of the driving factors behind
-Stu
My interpretation is that Gosling mentioned scientific computing because he saw that Java hadn't covered that area well, just like it doesn't cover logic/query programming, transparent persistence, workflow, continuations, program-as-data and dozens of other useful ideas from the last 40 years.
However, this is much more of an indictment of C# than Java - Java's innovation was in the VM, not the syntax, which was deliberately conservative. Despite a huge R&D program, MS has not managed even to synthesise ideas from even two significantly different languages/VMs, let alone attempt to bring together best practice from industry and academia. Gosling's 'rip-off' charge looks pretty solid to me.
Java was not a particularly innovative language. Interpreted byte code has been arround since the p-system. There were many cleaned up object orented extensions to C, such as Objective C.
Sun's Java vision is based arround a particular goal of processor independence that is practically irrelevant in mainstream computing, particularly with the SPARC chips lagging behind Intel in performance.
Looking for an Information Security student project suggestion?
Try http://dotcrimeManifesto.com/
And he also wrote vi.
But no matter, it's all about pico.
autopr0n is like, down and stuff.
I'm not sure if that was supposed to be a ironic one-liner or not, but unless you work at a games company almost all your code is going to be VB or Java (or COBOL!)
autopr0n is like, down and stuff.
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.
No, but you can do myList.add(new Integer(5)); or myList.add(new Double(2.6)); if you want to. Yeh, the semantics are a bit diffrent, but the effect is exactly the same. Also
Really? So
Math.Add(myList.getObjectAtIndex(0), myList.getObjectAtIndex(1));
is easier to read than
Math.Add(myList[0], myList[1])
On what planet?
Um, on earth? "getObjectAtIndex()" actualy tells you what's going on. Of course, those of us who have been programming for a while see "[]" as meaning the same thing. And anyway, it's not "getObjectAtIndex()" but rather just "get()". Not exactly that much harder to type or whatever (especialy since you don't have to leave the 'qwerty' part of the keyboard.
autopr0n is like, down and stuff.