Public Standards: C# 2, Java 0
TheAncientHacker writes "While Java coders wait for SUN to be willing to accept any public standards for the Java language and runtime, Microsoft's C# and its underlying CLI, already standardized by ECMA, are about to get a second certification. This time by by the granddaddy of certification groups, the ISO."
I guess I'll just stop coding in it.
that's too bad really - I liked java.
seriously - why should we care? does the code allow me to do what I want? yes.
and done - I don't care about no stinking standards evaluation.
There are some odd things afoot now, in the Villa Straylight.
Who actually owns copies of those standards? I know I don't - simply because they charge several hundred bucks a copy.
As the artical says: The academic community benefits perhaps more from the published specifications to do computer science research than do companies.
Academic research is fine, but when I'm looking for new programmers I would much rather have real-world experience. How many academic programs you wrote as an undergrad (or even a grad student) had to run for hours or even weeks and maybe with direct user interaction and not crash? Standards don't help you learn how to code that.
Most Microsoft shops have or will switch to .NET (it's a natural progression), and of course Microsoft shops comprise the majority of "shops" out there. Indeed the most telling evidence of .NETs stunning market presence can be seen at your local bookshop: Already there are probably 2x the number of .NET books than there are Java books (seriously, go take a look).
It seems like Microsoft is trying to change their image from industry bully to industry team player. I have just been to an academic presentation of .NET and I must admit that MS studio .NET is very easy to learn and use, as well as being standards based.
.NET platform is built around Windows and the "Write in any language, run on windows" idea is not very attractive at least to me.
.NET to other OS (the rotor project). However, rotor is not meant to be used in production, which makes it rather useless in real life.
:)
The problem that I see with Microsoft is their attitude of Windows being the only operating system. The entire
You may argue that MS has already ported
If you look at the Java camp, however, things aren't that great either. The tools are generally not as well integrated and Sun is trying too hard to control Java.
So, in conclusion, I'm not sure which is better. For now, I am staying with Java for my courses. But the battle is far from over
Could the fact that there are twice as many books for C# indicate that it's twice as hard to use? ;-)
Many of my college classes were taught using Java as the programming language, so I had a few years of experience with it in school. I've been using .NET since it was released, and it's been so much easier programming in VB.NET and C# than it ever was in Java, it's not even funny. Despite their problems, the Visual Studio .NET IDE and MSDN Library have no equivalent. They are totally awesome.
Well add one more to .NET because I've been using it for the past 4 months instead of C/C++ or Java.
.NET is and how long Java has been around. If it were then everyone would still be buying VHS tapes instead of DVDs just because it was the "standard" when DVDs were introduced.
Anytime a new technology is introduced there are always going to be more people using the old technology. That doesn't make the old technology better, nor does being new make the new technology better. Your point isn't valid considering how new
You've obviously not tried to use Kaffe for any serious work.
Blackdown is a port of Sun's JVM.
You might have mentioned IBM's JVM, but that's just as proprietary as Sun's.
Remember that the JVM includes libraries, and without a complete set of working, compatible, debugged libraries your Java development is basically fscked.
Rich.
libguestfs - tools for accessing and modifying virtual machine disk images
Well the thing is, most of MS's "evil" is because they are big. Any small evil thing they do is blown up huge by the huge impact it has. And especially here by the just plain outright hatred that emasses here.
In fact I find that Sun and Apple are frequently quite a bit MORE evil if you remove the entire market share from the equation and look at their actions more philosophically.
Relentless pursuit of fans, maniacal leaders that spew verbal FUD at every oppourtunity, closing down the clone markets, faking JRE test software to make your 4x slower JRE seem as good as the competitions, selectively applying JRE compatibility rules to various friends/competitors and on and on.
As far as Sun stumbling in the dark, that have done that for JAVA since day one. The early development tools were practically non-existant. And until recently, installing their JRE on Windows required the user to hand edit their environment to add a path to the JRE to it to make it work, even from the windows GUI. How much harder could they make it on themselves and their customers? I always thought that they blew it with their incredable poor dev. environment for JAVA. Compared to developing VB or VC++ on windows it was like using rocks and sticks. UNIX programmers were right at home with the sytem as it of course mimicked typical UNIX development (No suprise, they're SUN!)
Though MS took advantage of JAVA in ways they probably shouldn't have, Windows developers people were starving for good JAVA tools on Windows and MS stepped up to the plate while Sun didn't. If Sun had provided a Visual Studio type dev environment from day one for all three platforms I believe a HUGE army of Windows developers would have jumped on it and Sun's JAVA would have taken off strong, instead it limped then and it still limps today.
I am particularly perterbed by Sun's lack of support (or rather lack of EXTREME support) for Java as it is my daily duty at work to find usable cross platform tools for our software dev. needs and though we have actually used some JAVA with some success, it has been a lot more dissapointing as a dev. environment and as a platform than it should be.
Your C++ program might not need the standard library, but your C# program will. Everything in C# is reflected and so on, so if you don't have the .NET framework with the Type object, for example, you can't have any types, which leaves you screwed. With no .NET framework you can't have objects, methods, or anything.
This note was originally published at John Munsch weblog on January the 14th.
.NET to fail and fail badly
.NET "rebuttal" that I linked to above, "For non-profit use VS.NET can be had pretty cheaply, especially if you know anyone that is in college somewhere." Pretty cheaply? For a non-profit (that means charities, churches, universities, the hobbiest who is going to give away his work for FREE)... pretty cheaply? Wow. That is well and truly pathetic. To try and justify it, and say, oh well, you can try to scam an educational discount so it won't be so dear, is even more pathetic.
.NET commercials with William H. Gacy telling you how great it is without really ever telling you anything about it? Microsoft doesn't trust .NET to stand on its own technical merits and it knows it may go like cod-liver oil down the gullets of a lot of people who have seen how the company works behind closed doors even if it were the tech shiznit.
Lots of reasons why I want
It's benefits a criminal organization. Not one that's been found guilty of crimes once or maybe twice, but lots and lots of times. Those crimes are many and varied, but here's just a few of them: Stac Electronics v. Microsoft, DOJ v. Microsoft, Sun v. Microsoft.
P.S. If you want to split hairs, Stac v. Microsoft isn't a criminal action, it's doesn't stem from a criminal abuse of their monopoly like the other two cases. Instead it was just a case of a small company being driven out of business by willful patent infringement, theft of trade secrets, etc.
Microsoft isn't just one thing anymore. It's too damn big for that. I'm sure even Bill himself knows better than to think that he truly controls the whole ship because it's become big enough that he can't possibly know all the projects, people, etc. anymore. But even a really large company still has a kind of collective personality that it exudes and a large part of the personality both internal and external to Microsoft for many years now is that of a total control freak.
If they don't own it, if they don't control it, if they didn't create it, if it doesn't have a broad stamp from Microsoft on it, then they don't want it. Sometimes it's sufficient for the thing to merely exist and they'll refuse to acknowledge it, other times they need to actively stamp it out because they can't control it.
When was the last time you can remember Microsoft saying they supported a standard? That is, not something they invented and submitted a RFC for, an actual, take it off the shelf and re-implement it without renaming it or "improving" it so it doesn't work with anybody else standard. C++? Basic? HTML? A video or audio codec? Java? Anything?
I'm sure there's something, somebody will point out their excellent support for TCP/IP or something and I'm sure that's true. But if you were to look at Microsoft as a person in your life, you'd wonder what was wrong with him or her such that so much had to be controlled by that person.
When your business is selling the operating systems that 90+% of everybody uses, software development tools should not be a profit center.
Why should I have to plunk down a couple of thousand dollars for a "universal subscription" in order to have access to compilers and basic development information? Sun doesn't have to do that? On this point I'll quote from the
Marketing. Have you been "lucky" enough to catch one of the
So they are going to pull a page out of Intel's bum-bum-buh-bum "Intel Inside" playbook and try to sell the brand like it's sneakers and cola. Trust us, you'll look cool if you use it, and we'll keep hammering the brand on TV so somebody who doesn't have much tech savvy in your organization will ask you if you are using it, or have plans to port to it, or whatever, even if he hasn't got a clue what "it" is in this case.
They don't trust you. They don't like what they can't control and they can't control you. They can try and they always will keep trying bu
Cerification will only slow things down for Microsoft. By not submitting Java to be certified, Sun maintains control over the language and is able to respond more quickly to development needs (and more rationally instead of making comporomises to suit all people's needs). Just look at how much progress has been made in Java since version 1.0! Will C# be able to evolve as quickly? Well, just look at what ISO certification and too many comporomises did to C++!
Also, anyone submitting a standard to the JCP relinquishes patents on any parts of the standard.
.Net!! No Sir!!
Not that Microsoft would do anything funny with Patents and
Wasn't April 1st yesterday?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Would someone care to post a lucid, fact-supported description of why this matters for any practical purpose?
.Net being tied to Windows, Mono not withstanding.
The lack of a public standard has seemingly not deterred IBM, et al, from JDK development.
The presence of a public standard has done nothing to change the perception of
In neither case has the presence/lack of a public certified specification meant diddly to the functionality and utility of either platform.
This sounds more like fanboy posturing than anything meaningful.
Public Standards: C# 2, Java 0
Supported platforms: C# 1 (Windows), Java 3 (Windows, Linux, Solaris) (and that's just from Sun).
Vendors: C# 1 (Microsoft), Java 5 (Sun, IBM, BEA, Oracle, Allaire) (in fairness there are many more Java vendors... those are the 'big ones').
So the score is already 8 to 4, and what you'd find is a lot more '1s' in the C# column which read 'Microsoft', 'Microsoft', 'Windows', 'Windows', etc.
And going back to 'public standards': when Microsoft Office publishes a set of DTDs which comprise a very public 'standard'... I'll be shocked. Their 'XML-based openness' in Office 11 is far from that goal.
MORTAR COMBAT!
Actually Microsoft did this not to run Unix apps but to get government contracts which require posix compliance. Microsoft made sure it was crippled in return so they would migrate to win32 after it became apparent that the posix layer was broken.
http://saveie6.com/
I think before people reach some conlussions, they should be aware that Microsoft does not have the lightest intention of making their .Net environment a standard or open source for that matter.
.Net, for the very simple reason that in order to write even the most basic usefull C# application you need *libraries*, a virtual machine, and many other propriatary Microsoft hooks. Summiting C# to standard bodies is just a public relations move from Microsoft, so that they can brag later that C# is open-standards based and Java is not, then management makes a decision to go full steam with .Net and a year later realize that they are stuck with all the Microsoft propriatary stuff you need to run C#.
Summiting C# to standard bodies means nothing in the world of
The analogy to Java would be Sun making the Java Language an open standard, but then keeping the Java API (i.e.: the libraries), and the JVM proprietary.
I do agree with many though that Java should be not just a standard, but even open source. However when it comes to Virtual Machines it is *extremelly* important to have some central authority to authorize changes, since one of the premises of a VM is that you can run code anywhere, and if you let a million programmers create their own VMs, all of a sudden code stops running everywhere, defeating the advantages of a VM. This is why I don't mind SUN controlling a bit the final say on Java development, and experience tells me that the Java Community Process is a very reasonable alternative to open standards and open source. In the end, Java is a deFacto standard anyways when it comes to enterprise business applications, so Sun might as well try hard to submit it to ISO at least. But remember, all Sun is trying to do is avoiding a fragmentation of the Java market, which I think it's A Good Thing.
http://www.iso.org/iso/en/faqs/faq-general.html#1. 10
1.10 Can anyone join ISO?
Not as individuals or as enterprises - although both have a range of opportunities for taking part in ISO's work, or in contributing to the development of standards through the ISO member in their country. Membership of ISO is open to national standards institutes or similar organizations most representative of standardization in their country (one member in each country). Full members each have one vote, whatever the size or strength of the economy of the country concerned. This means that they can all make their voices heard in the development of standards which are important to their country's industry. ISO also has two categories of membership for countries with fewer resources. Although such members do not have a vote, they can remain up to date on standardization developments. Lists of the three categories of ISO members are available on ISO Online.
Do you really thing MS would risk having the standard at the whim of the non-strategically-aligned?
Why does certification of a particular version matter? Sure, Microsoft can get C# certified by some standards body. Who cares? What really is important is who controls the version after that. AFAIK Microsoft has not created a community body involving other companies to set the direction for C# as Sun has with Java.
.NET. Can anyone tell me if Microsoft has submitted their entire shared library to standards bodies or is it just the C# language and underlying virtual machine? If Microsoft is still keeping the libraries proprietary then it will be even more of a red herring.
And as we all know, C# is only a fraction of what is necessary to run
I quote:
The Office 11 beta is supposed to show a much stronger commitment to "openness" in the use of XML file formats than anything to come from MS before now.
:) Again, all this is second hand knowledge which I haven't seen for myself. YMMV
From what I understand the default file format is still in binary form. I also seem to recall seeing that the XML export strips out all the formatting which makes the whole thing pretty useless. Finally, as others have rightly pointed out just having the XML to a file doesn't help a lot unless one also has the DTD. One can obfuscate text just as easily as one can a text file.
[fasdfdas]]Dear Sirs,[/fasdfdas]
The above tagging isn't very open and doesn't help *much* when trying to figure out how a file format works.
G. Washington on Government "it is force. Like fire, it is a dangerous servant and a fearful master."
I work for Sun, and while I won't pretend to speak for them, I work most of the time on the various J2EE JSRs, so I sort of understand how the whole process works, and therefore understand the rationale for why Java isn't an ECMA or ISO standard.
.NET, though, it is possible to get involed in the development of Java and J2EE, either directly as an individual member of the JCP, or indirectly by providing comments during the public reviews of JSRs.
The Java Community Process (http://www.jcp.org) is an independent organization that sets the standards for Java. Anyone can join the JCP, although most members are companies. The Java language, the different distributions of Java (J2SE, J2EE, J2ME), and technologies that are built on Java use Java Specification Requests (JSRs). Various members (the expert group) collaborate on the JSR to define the technology, and work on a reference implementation. For example, Tomcat is the reference implementation of the JSP and Java servlet APIs. This is one major difference between ECMA/ISO and the JCP: the requirement of a reference implementation.
I think the idea behind the JCP was to be able to modify the language and the APIs more quickly than other standards bodies, and ensure that there are useful implementations of the standards that go hand in hand with the standard.
In the case of Apache, there have been some modifications to the JCP to allow open-source implementations of JSRs, and to make the compatibility tests available for non-profits. JBoss and Sun have locked horns because, in Sun's view, JBoss is not a non-profit, and are using the J2EE JSRs to make money without licensing the J2EE brand, as BEA, IBM, Oracle, Borland, and others have done. Because Apache is in fact a non-profit organization, Sun's been much more willing to work with them.
Sun produces most of the JSRs, but not overwhelmingly so (around 60% if I remember correctly). Your average open-source hacker will find it harder to contribute to a JSR compared to, say, Gnome or KDE. Unlike
There are many people at Sun that would like the public more involved in developing Java, and others who would not.
Keep in mind that this is my impression of Sun's rationale, and I do not speak for Sun on any level.
Actually, given the way the .NET framework works, I would think it would be rather difficult to write low level virus.
.NET scaling to whatever level I've needed it to (excluding a horrible MySQL implementation I got from some third party).
I've had extraordinarily good success with
The phrase "isn't even supported by Microsoft in its own products" perplexes me since it is not something that needs to be supported. Maybe you should clarify exactly what you mean by this.
The C# and VB compilers are free (as in beer). So I don't see the developer expense.
Oh well, I guess if you have some preconception of what programming "really is" (and it somehow includes Java for some reason) then that's your prerogitive.
On the positive side, there is this kick-ass project called Mono that implements it, and runs on a variety of other systems as well.
.Net. Go for it, Miguel! Get as close as you can, but if MS blocks you then let's have a Mono Community Process and come up with alternatives that are even better. For a while, being able to run the exact same app on both Windows and Linux might be useful, but my first priority is a great dev platform for Linux, not a way to run Windows apps. Over time, that first priority will get even stronger, and I'll get more interested in other languages such as a MonoScheme and less interested in Windows compatibility.
Absolutely! And I think that way too many people dismiss the advantages of C#, the language, because of its prominent position in a Microsoft initiative.
I'm a big fan of Java, but after having used it for a lot of projects, I find that I'm VERY pleased by the extras offered by C#, the language, and the basic CLI extras that are covered by the upcoming ISO standard.
I do NOT require a perfect clone of
Go Mono!
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
I, for one, wish that IBM would take over the reigns of Java. I love Java and have been using it for years (alongside C, Perl, PHP, etc.), but I can't seem to like a single thing about Sun. They may have top quality hardware, but, even then, I still don't want them and their hardware.
IBM, OTOH, has done well by the community and I would vote for them if a new steward for Java was ever sought.
That .NET is a platform to make you, the developer more productive.
:-) extremely stable. Many of the most important aspects of basic application development are already done for you such as authentication and authorization, a decent crypto api and others. It comes with a standard set of "controls" for web forms that are flexible and reliable. Visual Studio supports the .NET Framework quite nicely and makes developing under ASP.NET quite pleasant (except for the html reformatting, quite annoying). All in all it's a good package. MS has done a great job documenting and exposing how .NET works, not from a code level BECAUSE WE DON'T NEED TO KNOW ABOUT IT but from an API/Method level. Generally speaking there is documentation on most of the common "problems" when learning .NET. .NET is the fact that we can RELY on MS to maintain control of the .NET framework and classes. Unlike our friend Sun and Java which has become a mess of separate packages and little documented dependencies that are unreliable, prone to null pointer exceptions, and hidden caveats in packages that are necessary to do basic development work (XSL Parsers come to mind) .NET is a welcome relief to the uncontrolled mess that Sun now proudly hails as Java. .NET has unquestionably borrowed from every language design pattern that has appeared on the face of the earth since the chinese invented the abacus. But I don't care, becuase I can get my work done, and when I wake up in the morning I'm not real worried that my applications have chewed their tails off while I slept peacefully.
I've not done a lot of desktop application development - so I can't really speak for the desktop crowd. I'd venture to say that it's not quite where it should be.
The web however, is something different. ASP.NET is fast - easy - and extremely flexible and provided your server doesn't crash
The most compelling aspect of
Actually, at least some "hidden APIs" are not even hidden. System.Windows.Forms.Form.Handle and System.Windows.Forms.Message.Hwnd are direct hooks to the underlying win32 interface. You can not build GUI .NET programs with System.Windows.Forms without win32, which caused the Mono project a lot of problems, finally resulting in using WINE.
.NET, you need to use GTK#, but then you could just as well use a cross-platform standard C-compiler and GTK++.
If you want cross-platform GUI programs with