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 love Java and earn a living coding J2EE systems, but Sun's posture on not creating a public standard for Java is just ridiculous.
It immediately creates the notion that Java is a proprietary language.
Hard to believe that Microsoft's new language has two public standards and Sun's language has none. Is something wrong with this picture? Microsoft is starting to appear as a reasonable and responsible company and Sun appears as stumbling around in the dark.
What good are open standards if your implementation is the only one? In addition to Sun, IBM has a Java implementation and there is an open source implementation and library set that is getting pretty good.
Actually, I wouldn't put it past Sun to break their standards either, but what good is Slashdot if you can't bash Microsoft.
The Sco lawsuit agaisn't IBM is proof that anything that looks the original is subject to copyright claim. The main argument used is that SCO is the owner of SysV technology.
C# is not only copyrighted but also patented.
You can iso it and declare it as free as you want to but its still proprietary in my book for this reason. Likewise you can get a pig and put lipstick, makeup, eyeshadow, and a thong on it and call it Britney Spears but its still a pig.
http://saveie6.com/
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).
Platforms for C#: 0 Windows .NET is still .NOT ........
Platforms for Java: Windows, Solaris, Linux, AIX, Irix, Tru64,
At my university:
Classes tought with C#: 0
Classes tought with Java: 6
I want my rights back. I was actually using them when our government stole them after 9/11.
The good thing about standards is that there are so many to choose from.
To be read: "I don't care if C# is standard if it is a crappy language"
My understanding is that MS is bringing some components to the standards orgs so they can say that, but that their environment will still heavily leverage internal and private APIs.
.NET is not the CLR.. .NET is the CLR, APIs, Libraries, and so forth.. therefore only a small part of the environment is open.
.NET.
So, you have to differentiate between a baseline CLR environment, and the actual programming APIs that would be used to build on top of this.
Who wants to bet that this is more for marketing than it is for getting cross platform capabilities? Without MS opening all libraries and APIs *AND* approving any patent use they have on those components to other systems, a public standard on CLR means nothing.
Sun should bring Java to a standards org, but at the same time, its well documented, understood, and there are no hidden parts to the JVM/Runtime. You aren't going to see that with
Because of its bindings with other MS technologies, C# code will never be fully portable to other platforms and so the ISO standard is meaningless unless you are already a Windows-only programmer. If you ARE a windows-only programmer, then you can at least be assured MS won't deprecate the entire language with their next version of .NET.
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
glossed over and ignored to this point in both projects. Just because Microsoft has cut both off at the legs yet doesn't mean that they can't and won't.
Sun has created the 100% Pure Java Race! Write once, run anywhere, because there's nowhere to hide!
All inferior languages must be wiped out, and history rewritten! Integration is capitulation! Segregate and exterminate the inferior languages!
Never pollute Java by mixing it with those inferior mongrel languages. Java is Not meant to Interbreed with inferior languages! You MUST rewrite ALL your code in 100% Pure Java! Native Code is Uncivilized! All Primitives must be Converted!
Java is God's Chosen Language! No other programming language is truly Turing Complete. Lisp is a Homosexual Programming Language! C++ has Negro Ancestors! C# is the Antichrist! Perl is Crypto-Zionist! Python has Simple Sin Tax and Semetics!
Join the Java Jihad! Anyone who commits suicide by using Java against Microsoft is assured a place in Heaven! The surviving families of all Anti-Microsoft Martyrs will be Richly rewarded with Free Solaris Licenses.
Java's true purpose is to be the ultimate Weapon of Mass Destruction in the war against the Great Satan: Bill Gates. Once he is vanquished, Sun will install a puppet government in Redmond, and the oil companies will move in and take over the humanitarian relief effort. Once we Wipe Out Microsoft, nothing will stand in our way of Reinflating the Dot Com Bubble!!!
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++!
Microsoft *will* scupper these efforts because they have retained the power to do so and they want to ensure the continuation of their monopoly.
It is easy to mentally sweep the problems under the carpet and focus too closely on the wonderful promises (which is why so many IT managers can't see alternatives to MS servers). With
- Brian
An IDE is not going to make a lowsy programmer better, but it will help a good programmer to write more code with less effort. On top of that, as IDE's go, show me a better one than VS.NET?
REAL PROGRAMMERS take advantage of any and every tool that they can, that will help them get code written, compiled, debugged and SHIPPED.
If you can do it faster in EMACS or Notepad, good for you, but dont knock other developers because they use tools.
You sound like someone who tightens the lugnuts on their car with their thumbs, and screams "REAL MECHANICS dont NEED a lugwrench".
Idiot.
What Java lacks is a bureaucratic standard: one where the document was given a stamp of approval by some committee that companies can buy a seat on. This latter kind of public standard actually makes it more difficult for me, a member of the public, to influence the content of the documents.
But, you know what? I don't really care much about influencing the content of the documents. My priorities are
Beyond that, it's all marketing hype. Java is a public standard in the same sense that PDF is, and that's good enough for me.
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
If you depend upon the IDE to determine what is a good language then please stay with MS. Real programmers dont need you.
Ok, this is somewhat true, but a good IDE is like having power tools instead of having to use the manual versions. Yes, you can cut wood with a hand saw, you can drive screws with a manual screwdriver, you can install a roof without a nail gun, but why would you want to?
A sufficiently better IDE can make language differences irrelevant. I'd be willing to drive 30 minutes out of my way, to an inferior location, to cut 100 boards with a chop saw instead of slaving away for weeks with a hand saw. Similarly, I'm willing to use a slightly inferior language if it has an excellent IDE.
If Java had received some sort of certification and Microsoft wasn't bothering to do the same thing for C#, the comments would all read "see? that's proof that m$ is evil and Java is Superior!!1!! What are they afraid of? But nooooo, they NEVER play by the book or accepts standards! M$ is evil!!!1! .NET sucks!!"
There would be dozens of insightful posts pointing out how certification is a Good Thing and how Java once again r0xx0rz because of it. Other posts would go into long tirades about how .NET is a failed effort because C# is not certified. And ad nauseaum.
I think things like these speak volumes about how people approach their... ah... "dislike" of Microsoft. If they do [something], it's wrong and evil. If they don't do [something], they're wrong and evil for not doing it.
But I suppose them's the dregs.
Meanwhile, Linux isn't "officially" UNIX or even POSIX-certified; and yet it's still much more POSIXish than Windows NT is. The same is true for dotNet vs. Java/J2EE; the one has lip service from standards bodies while the other is more-or-less fully open.
The wheel is turning, but the hamster is dead.
Hey, have a look over at JCP.org.
There's 922 JSR's there, all public standards underway that anyone (that includes YOU and ME) can comment on. Where can I go to comment on the C# standards underway?
So, which is the more open standard?
What a maroon. (Yes, I did spell that right).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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!
The problem is that the published .NET standards don't actually provide a specification for a standard set of tools to engineer useful software. And if you can do some things with the standardized portions of .NET, they are just as easily, more portably and more efficiently achieved using existing (non .NET) tools.
.NET apps using MS's tools that do not depend on MS's proprietary implementation and extensions to it's published standards.
.NETs supposed superiority to Java.
I would doubt very much whether it is possible to build
This is just 'Plan B to kill Java' because Plan A, trying to deliberately break Sun's proprietary standards failed so badly. So now they try to give the appearance of being 'ultra-standards-compliant' with a new and wholly redundant platform.
Having these pointless 'standards' is just a checklist item so MS product managers can construct more plausible falsehoods about
MS shows its commitment to 'standards' with its compatibility-breaking implementation on Kerberos, with its release of specifications for SMB/CIFS that nobody can look at without giving up any rights to work on a free implementation, by providing MFC classes under a license that specifically prohibits their use in engineering a product that competes with MS.
MS is about as interested in standards-compliance and platform neutrality as George Bush is in Solar energy and world peace.
I gots ta ding a ding dang my dang a long ling long
Why wouldn't MS open the C# concepts as a standard? Even the framework libraries are replacable (given a ton of work, like any modern library these days). MS makes it money on server installations, not IDE sales. Build it and they will come. The "Standard" itself isn't worth anything anyway, as C++ programmers know.
But MS doens't need people to switch to MS OS's just because they want to use C#... They would rather enjoy having the best-of-breed editor and compiler on their platform (and maybe, yes, others!), and let the tendrils of development in C# spider to other OSes.
For instance, a C# project today on *nix boxes may have to jump through a few hoops (although I think these days MS would throw some support at it) to get bootstrapped, but think about the MONEY:
MS is posing C#/.NET to be a marketing sell for cross-platform development and integration. "Build with MS today, and tie to everything already in the world...How? Write more and more with
So,
They are selling based on exactly what Java does as a defacto concept: a single technology with many uses. If bosses see that Java or C# are going to morph anyway, they will make a decision not based on this news. BUT one can only hope.
mug
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
Cisco knew their gear didn't have the horsepower to compete. So when it came time for the standards body to declare the 802.1q standard - guess which company threw everything into winning the battle?
And of course, the Cisco marketing department promptly started making noise about Cabletron not having a "standards based" VLAN technology.
We lost a lot of fine-grained control when we switched from SecureFast to 802.1q.
What we need now is the control SecureFast gave us, with 802.1q as the transport technology. Then we would beat 'em on both fronts.
"The most sensible request of government we make is not, "Do something!" But "Quit it!"
Meanwhile, Linux isn't "officially" UNIX or even POSIX-certified
The Unifix Linux distribution is certified as POSIX.1 conforming.
Will I retire or break 10K?
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.
So where's your copy of a signed license agreement from Sun and Microsoft?
Open the installer to see it. And if EULAs aren't binding, the big proprietary software publishers are screwed in other ways.
If you do not have a signed document stating you may use the patent royalty free, then either one of them at a later date can tell you to pay up.
Not always. If a patent holder delays an infringement lawsuit by over six years or otherwise harm me by delaying legal action, the doctrine of laches states that the patent holder may not be able to recover damages for infringements that occurred prior to filing the lawsuit.
Will I retire or break 10K?
The real world consists of plenty of quality programs with greatly extended deadlines (because the "real" deadline was impossible), as well as horrible programs delivered on time. Plenty of examples of each.
Impossible deadlines are, by definition, impossible.
Comment removed based on user account deletion
Hm, garbage collection is a non-feature. You can do it in C++ (and it works just fine as long as you avoid C-style code), but it doesn't fit with the "C++ way of doing things." The preferred way of doing things in C++ is to use smart pointers that do reference counting. It's not any better or worse, just different.
Java and C# interfaces are basically just restricted multiple-inheritence implementations. You can argue all you want about whether MI is good, but can you do something with interfaces that you can't with abstract base classes?
Events can be implemented very cleanly without language support, as in libsigc++. The recent comparison of libsigc++ to C# delegates (search OSNews) showed that even though libsigc++ is an out-of-language feature, it is comparable in power and ease of use to delegates.
The only real thing C++ is missing is introspection and reflection. Not important for most code, but for some stuff (transparent serialization) it's crucial. Hopefully, this will be one of the things addressed in the C++ 0x standard.
A deep unwavering belief is a sure sign you're missing something...
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