1) As has been pointed out countless times before, the CLR isn't really multilanguage - it just supports languages than are semantically equivalent to C# with a common set of types.
2) Performance of Java 1.4 is far better than the current C# SDK, believe me on numerically-intensive stuff they're not even close - this is what one would expect from a mature VM. However, there is no fundamental limitation in either Java or Dotnet - they can both be JIT compilers - though Java is currently more intelligent since it can factor in dynamic statistics, such which branches are commonly taken, whereas Dotnet is a static-only compiler.
3) a) An unsigned datatype? Are you serious? This is utterly trivial. Anybody pointing to this sort of language feature as a significant differentiator is clearly unfamiliar with genuinely alternative programming paradigms - functional, logic-based etc. Don't they teach LISP in college these days? b) Directory structures? Well, I have never anyone complain about this in 4 years of programming Java - if you can point to an actual problem I'd be fascinated to see it.
4) Java is controlled by the JCP. You can read about it here: http://jcp.org/home/index.en.jsp. If you think MS is about to give up control of the Dotnet platform to other vendors you must be under the influence of something more pernicious than mere naivety.
Good, this is a very recent fleshing out of the story, thanks for the update.
However, the fact remains that these are not standardized classes - copying APIs is a risky business and you can be sure that my company won't be approaching MS's legal firepower by basing a product on them.
In short, this is a simplified XML version of COM, CORBA or EJB, only without the specific requirement of a "component", "object", or "bean", or anything except... well... a "web service".
For those wishing to simplify CORBA or EJB in the privacy of their own homes, the secret is to make the Service an Object. Now you would never have thought of doing that if I hadn't told you, would you? That's why Web Services are different.
Oh well, someone who puts 'simplified' and 'XML' in the same sentence is probably nuts anyway...
We are implementing this framework [Mono] because we believe it is important technology, and that the world should have a free, standards-compliant version of it.
More important than Java? If so, why?
Microsoft wants the ".NET platform" to be adopted, which is why they submitted it to ECMA. Whether or not Microsoft will change their minds, retract their submission, and decide that they do not like Mono is not something I can predict...
Interesting how the Ximian people are so consistently adept at dodging the issue of what's really in Dotnet. The fact is that only ~120 of the ~1200 classes currently in Dotnet are standardized, and neither Ximian nor anyone else has plans to clone the rest (Windows Forms, Dotnet ADO etc.), or can risk doing so given potential IP and patent issues.
Bottom line is that Mono is very late and very limited in function compared to Java - OSS supporters would be better advised to put their efforts into supporting Java, Parrot or another platform that has some hope of remaining open.
Blrrggghhh... gotta love these naive nursery tales. I seriously doubt that there's anything in the teachings of, I guess, Ibn Rushd (Averroes) or Thomas Aquinas to this effect. Anyway, Aquinas was following Averroes in most of his teaching, not opposing him, if that's who you were thinking of.
A marginally less simplistic argument for the development of western democracy (advanced in the recent BBC Islam series) is that Europe had more conflicts than the Ottoman empire, and these were only resolvable through elaborate political structures (think modern N Ireland).
Mandatory access is also part of Java security in the form of Protection Domains.
This is part of a very sophisticated, multilevel model which can enable components from different sources to interoperate with the minimum of overhead.
<IMHO>In general, OSS designers should track Java features and figure out how to use or duplicate them. It's easy to be complacent when considering the current generation of MS products, but once MS has transitioned to Dotnet swathes of security and reliability problem areas will have been eliminated. OSS will be left looking very exposed (unless it wants to be dependent on Mono...)</IMHO>
Yeah, I think this is idealistic. The problem is the sheer size and complexity of the non-standardized Windows APIs, and the risk that they'll include patented mechanisms. If MS don't back it it becomes a very sticky area legally, and if Mono starts sucking up most of the volunteer effort going into cross-platform development we could quickly find ourselves cornered.
A much safer alternative is Java, maybe using a native GUI library like IBM's SWT (already being ported to GTK as well as Win32 and Motif).
I also wish the Parrot / Perl 6 effort the best of luck - aiming high (level) is always a good idea from the portability PoV.
I'm sure it would. Unfortunately for Linux, most PDAs are using non-x86 chips such as the ARM. This is the time bomb that, in conjunction with Mono, could effectively deliver 'the Linux platform' to MS.
(To the cretin that marked the parent as flamebait, I suggest you consider why a) the post has only generated useful replies and b) where else this point as been answered as opposed to being airily dismissed).
Why? What actual benefits are you looking for? What do you mean by "integrate"? Are you looking for portable applications, or interoperation with Dotnet apps like Active Directory? Perhaps you are just looking for transferable skills, e.g. using the C Sharp language in more than one environment? Why do you apparently care more about Dotnet than Java, when the latter is much more established?
From what I can see, arm-waving generalities like this are exactly the kind of thing that Miguel de Icaza thrives on. He relies on people not defining very precise or complete requirements, he can then deliver something that appears to be interesting but is actually of marginal applicability and/or no improvement over what's been available before.
a pleasant side-effect of writing future applications in C# will be that it's easy to make them Windows compatible
I realize that in attempting to douse extravagant claims for Mono is like persuading the tide to reverse itself, but for the record:
Mono does not significantly contribute to the development of cross-platform software since the main Windows APIs (WebForms, Windows Forms, Dotnet ADO etc.) are not standardized, and Ximian has no plans to implement them. The standardized classes make up about 120 of the 1200 or so Dotnet classes used for building Windows apps.
A much better approach would be to take the Java VM and work with that - IBM is already working on a GTK port of the SWT graphics library, for example.
I trust that your cognitive abilities extend to perceiving complete sentences. The poster referred to a 'significant subset' of Dotnet on Linux. A C# compiler is not a significant subset of Dotnet since the number of C# applications using standardized classes is small and will remain so.
This is an exaggeration. Thousands of developers use JBuilder all day, and that is built on Swing. I switched to Eclipse, which uses SWT, and noticed no difference in GUI performance at all - they're both perfectly OK.
Having used JBuilder 4/5 (Swing) and Eclipse (SWT) on fairly ordinary Windows machines I think they're pretty even performance-wise, and visually. However on Linux JBuilder has the edge as the Motif version of SWT is a bit ungainly. Would be nice if there was a KDE version...
Anyway, I'm sure IBM didn't invent SWT purely for technical reasons.
that explains why go-mono.net is going gangbusters to develop an implementation on Linux
Pointing to others who share your beliefs does not advance your argument. Mono has been extensively criticized on/. and I don't believe that Miguel de Icaza has ever responded to the substantial points, viz.
1) Java and the JVM are better established and equivalent in all major aspects to C# and the CLR, therefore a Linux platform would be better starting with that.
2) Since of the ~1200 classes in Dotnet, only about 150 are standardized, the chances of any substantial application actually working outside Windows are zero.
So let me get this straight - you want to tie yourself to a particular CPU type and model, but not to an OS? I think I'm glad I'm not one of your clients... well, be prepared for some, er, divergence of your distributed code base in future - Intel might possibly come out with a new CPU, or someone could be running an AMD box, you never know...
I don't know if you intended to imply that doing the right thing with attachments was the only thing necessary for a secure setup, but take a look at Java Web Start as an example of how the platform itself can give assured security, regardless of the kind of code being run on it.
Looks like Windows is getting off pretty lightly for a change - only one poster so far pointing out that ActiveX is fundamentally insecure.
It boils down to whether you'd rather have a run-time environment you can control (like the Java VM) or an unbounded set of parties you have to trust.
I think we're seeing something fundamental going on here, where legitimate application providers, e.g. for B2B commerce, will gravitate towards Java Web Start (or possibly very "managed" Dotnet) as that will be the only kind of assurance worth having.
I'd be interested to see Miguel de Icaza's rationale for why this can never happen to Dotnet and so entrap his Mono development. From any legal perspective, I can't see how one could distinguish between knowledge needed for interoperability, as with SAMBA, and Mono's need to know Dotnet details for portability.
Personally, I think that the extraordinarily destructive nature of Mono has yet to be perceived. Currently, most people probably view it as one more string to Linux's bow. Intentionally or not, it nevertheless marginalizes original developments such as Parrot. Once Linux devices on non-i86 platforms start proliferating, a void will emerge for cross-platform software support, and the options to fill it will be very limited. Let's hope IBM and Sun's commitment to the somewhat more ethical Java platform stays solid or we could be looking at a corporate coup of epic proportions.
Tea requires boiling water doesn't it? (OK, not in hotels, where the waiter thrashes a teabag in lukewarm water until it goes brown, but normally...)
I remember my grandmother used to focus a laser beam on her teapot and wait until it turned into a plasma before serving, but people no longer have time for these civilized rituals.
I'm very similar (possibly excluding the goddess bit:-) )
Do persevere with gas permeable contacts. I went to a normal optician/optometrist from teens onwards, he spotted the keratonconus (both eyes) and gave me soft lenses. 13 years later thought I'd give GPs a try and the difference was amazing. Not only can I see the bottom line but they're more comfortable and easier to look after. In fact, I wonder if these soft ones, particularly the disposables, aren't something of a con...
Anyway, back to computers... I use an ancient 21" Dell screen, and (thanks to the link you gave!) I realize why I don't like the brightness cranked up... I used a dual LCD monitor setup at work for a while but didn't notice any improvement.
I sincerely hope that you don't have to struggle too much with reading aids - I was lucky in that I was sent to the best eye hospital around here (Moorfields in London) with a dedicated KC unit - and that once my hormones calmed down the condition didn't get any worse. Well, not so far (going on 39 now), fingers crossed eh?
About time eh? Perhaps next we'll have languages that just deal with persistent data directly, without any 'database interface' stuff to code.
A DB as a file system could still be a mixed blessing though - anyone tried to store code in a database, or other files with lots of different versions that may have different structures? Generally, DBs are weak when it comes to namespaces (like directories), versions (except in some special cases features for time series) and 'schema evolution' (changing the data structure).
Nothing impossible though - I think Oracle were getting there with the Internet File System, so would be nice to have a PostgreSQL FS in Linux to start playing with!
Problem is that file systems don't care about data structure and so don't care about changes to that structure, so you can have half a dozen different versions of your address book floating around
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.
1) As has been pointed out countless times before, the CLR isn't really multilanguage - it just supports languages than are semantically equivalent to C# with a common set of types.
2) Performance of Java 1.4 is far better than the current C# SDK, believe me on numerically-intensive stuff they're not even close - this is what one would expect from a mature VM. However, there is no fundamental limitation in either Java or Dotnet - they can both be JIT compilers - though Java is currently more intelligent since it can factor in dynamic statistics, such which branches are commonly taken, whereas Dotnet is a static-only compiler.
3) a) An unsigned datatype? Are you serious? This is utterly trivial. Anybody pointing to this sort of language feature as a significant differentiator is clearly unfamiliar with genuinely alternative programming paradigms - functional, logic-based etc. Don't they teach LISP in college these days?
b) Directory structures? Well, I have never anyone complain about this in 4 years of programming Java - if you can point to an actual problem I'd be fascinated to see it.
4) Java is controlled by the JCP. You can read about it here: http://jcp.org/home/index.en.jsp. If you think MS is about to give up control of the Dotnet platform to other vendors you must be under the influence of something more pernicious than mere naivety.
Good, this is a very recent fleshing out of the story, thanks for the update.
However, the fact remains that these are not standardized classes - copying APIs is a risky business and you can be sure that my company won't be approaching MS's legal firepower by basing a product on them.
In short, this is a simplified XML version of COM, CORBA or EJB, only without the specific requirement of a "component", "object", or "bean", or anything except... well... a "web service".
For those wishing to simplify CORBA or EJB in the privacy of their own homes, the secret is to make the Service an Object. Now you would never have thought of doing that if I hadn't told you, would you? That's why Web Services are different.
Oh well, someone who puts 'simplified' and 'XML' in the same sentence is probably nuts anyway...
We are implementing this framework [Mono] because we believe it is important technology, and that the world should have a free, standards-compliant version of it.
More important than Java? If so, why?
Microsoft wants the ".NET platform" to be adopted, which is why they submitted it to ECMA. Whether or not Microsoft will change their minds, retract their submission, and decide that they do not like Mono is not something I can predict...
Interesting how the Ximian people are so consistently adept at dodging the issue of what's really in Dotnet. The fact is that only ~120 of the ~1200 classes currently in Dotnet are standardized, and neither Ximian nor anyone else has plans to clone the rest (Windows Forms, Dotnet ADO etc.), or can risk doing so given potential IP and patent issues.
Bottom line is that Mono is very late and very limited in function compared to Java - OSS supporters would be better advised to put their efforts into supporting Java, Parrot or another platform that has some hope of remaining open.
Blrrggghhh... gotta love these naive nursery tales. I seriously doubt that there's anything in the teachings of, I guess, Ibn Rushd (Averroes) or Thomas Aquinas to this effect. Anyway, Aquinas was following Averroes in most of his teaching, not opposing him, if that's who you were thinking of.
A marginally less simplistic argument for the development of western democracy (advanced in the recent BBC Islam series) is that Europe had more conflicts than the Ottoman empire, and these were only resolvable through elaborate political structures (think modern N Ireland).
Interesting.
Mandatory access is also part of Java security in the form of Protection Domains.
This is part of a very sophisticated, multilevel model which can enable components from different sources to interoperate with the minimum of overhead.
<IMHO>In general, OSS designers should track Java features and figure out how to use or duplicate them. It's easy to be complacent when considering the current generation of MS products, but once MS has transitioned to Dotnet swathes of security and reliability problem areas will have been eliminated. OSS will be left looking very exposed (unless it wants to be dependent on Mono...)</IMHO>
Yeah, I think this is idealistic. The problem is the sheer size and complexity of the non-standardized Windows APIs, and the risk that they'll include patented mechanisms. If MS don't back it it becomes a very sticky area legally, and if Mono starts sucking up most of the volunteer effort going into cross-platform development we could quickly find ourselves cornered.
A much safer alternative is Java, maybe using a native GUI library like IBM's SWT (already being ported to GTK as well as Win32 and Motif).
I also wish the Parrot / Perl 6 effort the best of luck - aiming high (level) is always a good idea from the portability PoV.
I'm sure it would. Unfortunately for Linux, most PDAs are using non-x86 chips such as the ARM. This is the time bomb that, in conjunction with Mono, could effectively deliver 'the Linux platform' to MS.
(To the cretin that marked the parent as flamebait, I suggest you consider why a) the post has only generated useful replies and b) where else this point as been answered as opposed to being airily dismissed).
Problem is that small devices aren't usually x86 devices, so you have to solve the cross-platform deployment portability problem first.
Unfortunately, Ximian appears to be pushing only one solution to this, and that is under the control of Microsoft.
Why?
What actual benefits are you looking for?
What do you mean by "integrate"?
Are you looking for portable applications, or interoperation with Dotnet apps like Active Directory?
Perhaps you are just looking for transferable skills, e.g. using the C Sharp language in more than one environment?
Why do you apparently care more about Dotnet than Java, when the latter is much more established?
From what I can see, arm-waving generalities like this are exactly the kind of thing that Miguel de Icaza thrives on. He relies on people not defining very precise or complete requirements, he can then deliver something that appears to be interesting but is actually of marginal applicability and/or no improvement over what's been available before.
a pleasant side-effect of writing future applications in C# will be that it's easy to make them Windows compatible
I realize that in attempting to douse extravagant claims for Mono is like persuading the tide to reverse itself, but for the record:
Mono does not significantly contribute to the development of cross-platform software since the main Windows APIs (WebForms, Windows Forms, Dotnet ADO etc.) are not standardized, and Ximian has no plans to implement them. The standardized classes make up about 120 of the 1200 or so Dotnet classes used for building Windows apps.
A much better approach would be to take the Java VM and work with that - IBM is already working on a GTK port of the SWT graphics library, for example.
A full-featured IDE that lets you collapse arbitrary sections of code?
How quaint! Wasn't that in some early Smalltalk system? I thought people these days used Outline views, as in Eclipse and JBuilder.
What about Mono? You don't call that an implementation?
No. It's a useless subset of an implementation.
I trust that your cognitive abilities extend to perceiving complete sentences. The poster referred to a 'significant subset' of Dotnet on Linux. A C# compiler is not a significant subset of Dotnet since the number of C# applications using standardized classes is small and will remain so.
This is an exaggeration. Thousands of developers use JBuilder all day, and that is built on Swing. I switched to Eclipse, which uses SWT, and noticed no difference in GUI performance at all - they're both perfectly OK.
Having used JBuilder 4/5 (Swing) and Eclipse (SWT) on fairly ordinary Windows machines I think they're pretty even performance-wise, and visually. However on Linux JBuilder has the edge as the Motif version of SWT is a bit ungainly. Would be nice if there was a KDE version...
Anyway, I'm sure IBM didn't invent SWT purely for technical reasons.
that explains why go-mono.net is going gangbusters to develop an implementation on Linux
/. and I don't believe that Miguel de Icaza has ever responded to the substantial points, viz.
Pointing to others who share your beliefs does not advance your argument. Mono has been extensively criticized on
1) Java and the JVM are better established and equivalent in all major aspects to C# and the CLR, therefore a Linux platform would be better starting with that.
2) Since of the ~1200 classes in Dotnet, only about 150 are standardized, the chances of any substantial application actually working outside Windows are zero.
So let me get this straight - you want to tie yourself to a particular CPU type and model, but not to an OS? I think I'm glad I'm not one of your clients... well, be prepared for some, er, divergence of your distributed code base in future - Intel might possibly come out with a new CPU, or someone could be running an AMD box, you never know...
I don't know if you intended to imply that doing the right thing with attachments was the only thing necessary for a secure setup, but take a look at Java Web Start as an example of how the platform itself can give assured security, regardless of the kind of code being run on it.
Looks like Windows is getting off pretty lightly for a change - only one poster so far pointing out that ActiveX is fundamentally insecure.
.
It boils down to whether you'd rather have a run-time environment you can control (like the Java VM) or an unbounded set of parties you have to trust
I think we're seeing something fundamental going on here, where legitimate application providers, e.g. for B2B commerce, will gravitate towards Java Web Start (or possibly very "managed" Dotnet) as that will be the only kind of assurance worth having.
I'd be interested to see Miguel de Icaza's rationale for why this can never happen to Dotnet and so entrap his Mono development. From any legal perspective, I can't see how one could distinguish between knowledge needed for interoperability, as with SAMBA, and Mono's need to know Dotnet details for portability.
Personally, I think that the extraordinarily destructive nature of Mono has yet to be perceived. Currently, most people probably view it as one more string to Linux's bow. Intentionally or not, it nevertheless marginalizes original developments such as Parrot. Once Linux devices on non-i86 platforms start proliferating, a void will emerge for cross-platform software support, and the options to fill it will be very limited. Let's hope IBM and Sun's commitment to the somewhat more ethical Java platform stays solid or we could be looking at a corporate coup of epic proportions.
Tea requires boiling water doesn't it? (OK, not in hotels, where the waiter thrashes a teabag in lukewarm water until it goes brown, but normally...)
I remember my grandmother used to focus a laser beam on her teapot and wait until it turned into a plasma before serving, but people no longer have time for these civilized rituals.
I'm very similar (possibly excluding the goddess bit :-) )
Do persevere with gas permeable contacts. I went to a normal optician/optometrist from teens onwards, he spotted the keratonconus (both eyes) and gave me soft lenses. 13 years later thought I'd give GPs a try and the difference was amazing. Not only can I see the bottom line but they're more comfortable and easier to look after. In fact, I wonder if these soft ones, particularly the disposables, aren't something of a con...
Anyway, back to computers... I use an ancient 21" Dell screen, and (thanks to the link you gave!) I realize why I don't like the brightness cranked up... I used a dual LCD monitor setup at work for a while but didn't notice any improvement.
I sincerely hope that you don't have to struggle too much with reading aids - I was lucky in that I was sent to the best eye hospital around here (Moorfields in London) with a dedicated KC unit - and that once my hormones calmed down the condition didn't get any worse. Well, not so far (going on 39 now), fingers crossed eh?
About time eh? Perhaps next we'll have languages that just deal with persistent data directly, without any 'database interface' stuff to code.
A DB as a file system could still be a mixed blessing though - anyone tried to store code in a database, or other files with lots of different versions that may have different structures? Generally, DBs are weak when it comes to namespaces (like directories), versions (except in some special cases features for time series) and 'schema evolution' (changing the data structure).
Nothing impossible though - I think Oracle were getting there with the Internet File System, so would be nice to have a PostgreSQL FS in Linux to start playing with!
Problem is that file systems don't care about data structure and so don't care about changes to that structure, so you can have half a dozen different versions of your address book floating around
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.