There has been a new Mono release, v0.28. Mono has now integrated sourcegear’s webservice enhancements and there has been a lot of improvement in XML, serialization and web services.
There has been a new Mono release, v0.28. Mono has now integrated sourcegear’s webservice enhancements and there has been a lot of improvement in XML, serialization and web services.
Its pretty strange, MONO seems to run better on Windows then on UNIX variants.
I mean, the real advantage of MONO is that it can run on UNIX(which MS would never support).
That was 0.26 though, so maybe 0.28 runs a little better.
Its pretty strange, MONO seems to run better on Windows then on UNIX variants.
I mean, the real advantage of MONO is that it can run on UNIX(which MS would never support).
That was 0.26 though, so maybe 0.28 runs a little better.
What distro are you running? alot of the performance problems are probably due to either the threading (if you have a non-NPTL) or immature nature of the JIT. Give it another year and I am sure it will get to a level that is comparable to what Microsoft can do, which should be possible now due to the investment Novell is making into Ximian/Mono.
What is Mono exactly? I know it’s the .net for *nix but what are the benefits for the end-user? Does he ever have to install it?
I am a very big fan of mono and the gtk# bindings, but i would have to admit that it’s not yet in a usable state. If you were to program a serious project in mono/c# (at least 0.26) you would lose a lot of time working around bugs.
I was creating a test project on mono and ran into some issues that I didn’t even want to work around. I’ve already checked that whatever problem i had then is solved in this release, and now i can pick it up again and see how far i get before i run into something else.
However, i get the feeling that they are getting there with increasingly big leaps.
It’s kind of like C# for non-MS platforms. Mono has also reimplemented almost the entire class library from .NET and there are some very neat other classes added as well that offer support for gtk#, or QT#, more data providers etc.
On your question if the user has to install something
just as with .NET a user that doesn’t have the runtime should install it, unless (for mono at least) the runtime is compiled in the application (i cant find the reference ATM, sorry)
Are there any full blown applications out there using .NET technology other than some web based mini applications? I mean serious consumer programs like an office suite, quicken like program, a major game, etc? These kind of things still represent a large part of the market.
I am a very big fan of mono and the gtk# bindings, but i would have to admit that it’s not yet in a usable state. If you were to program a serious project in mono/c# (at least 0.26) you would lose a lot of time working around bugs.
Well, even me, who is a great Java fan realise that C# is going to be a great language when coupled with GTK#. I’ve looked at some of the neat stuff that has been added ontop of what Microsoft has done, aka, POSIX and CORBA support.
What kind of problems did you experience with Mono?
Are there just some immature APIs or did you run into
issues with the core of Mono?
There are a few sundry pieces of software, but they are mainly “proof of concept”. Sharpdevelop is being ported to SWT and SWT is being ported to Mono. So, one could say that Sharpdevelop is a reasonable sized application.
“I mean, the real advantage of MONO is that it can run on UNIX(which MS would never support).”
Interestingly, MS actually made a version of .NET for FreeBSD. And you can get it for free even. Mind you, I never got it to do anything other than segfault. I guess it was one of those half harded proof-of-concept efforts. Interestingly though, the distributed .exe examples that come with it do run on Mono. That’s kinda cool.
“What kind of problems did you experience with Mono?
Are there just some immature APIs or did you run into
issues with the core of Mono? ”
a few bugs that seem to be ironed out in the new release. Nothing serious enough to make me think they won’t succeed but until the previous version at least it had quite a few bugs xml and serialization and streams and such.
“Interestingly, MS actually made a version of .NET for FreeBSD. And you can get it for free even. Mind you, I never got it to do anything other than segfault. I guess it was one of those half harded proof-of-concept efforts. Interestingly though, the distributed .exe examples that come with it do run on Mono. That’s kinda cool. ”
You must be referring to the rotor project which is indeed more of a proof of concept. It’s a very reduced runtime and not very usable due to it’s incompletenes.
The reason that the exe’s run on mono too is because the mono developers regularily test their runtime if it runs those examples.
I started writing a timesheet/hours tracking application for use in my workplace last week using the .NET framework. Once this release of Mono was out, I downloaded xsp and installed it on my Redhat 9 box. I then transferred over my asp.net application, fiddled around for about an hour with some compilation issues and minor runtime problems (Mono doesn’t like the asp.net validator controls it seems…). Before the day was done, I had a fully operational web application running with asp.net, Mono, xsp, and MySQL… all on a linux server. No major problems as of yet.
MONO is huge for Linux. It is the open source version of Microsoft’s latest software development platform. I am not very knowledgeable about open source software development, but a traditional Microsoft focused software firm could conceivably target .NET, stick to the ECMA standard, and run the same binary distribution on both Windows and Linux natively.
What’s M$ position about Mono? Do they support it? Said anything about it? I’m afraid as soon as Mono release version 1.0 M$ will put some IP lawyers on the case and try to shut everything down…any reason to fear?
With 0.26 I had huge performance issues using the asp.net part of Mono compared to Windows. I ran Apache bench on a simple ‘Hello World’ on Redhat 9 (running Mono of course) versus Windows 2000. Both OS were running Apache 2 as the webserver and Windows was almost 300% faster …
Does anyone know if 0.28 will help in performance and has anyone else had these time of problems?
You have no reason to fear. C# is an ANSI standard, Microsoft WANTS people to port .NET.
The advantage of C# is that it can run on any platform. How successful would JAVA had been if it only ran on Solaris?
We tried .Net it is still too buggy it is still in infancy stage. All these hype is like windoze 95 the best OS in the world.
M$ will kill mono like SCO when it gets all the idea to make .Net work from opensource
I’ve been developing Java applications for the past 3.5 years at the corp. that I work for. I haven’t until recently looked at C# and what I found was nothing new that Java didn’t already hava. Speaking for a pure programming language perspective, what does C# allow (or make easier) than Java.
The one thing that I do have to note is that I have greatly become a lover of JavaDOC. It has made development sooooo easy when all I have to do is go to:
http://java.sun.com/j2se/1.4.2/docs/api/
and all libraries are there. The equilavent that I found to this:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cp…
is quite difficult to get ‘real’ information out of, IMO
I have to agree. I recently was playing around with JACOB (allows one to use COM objects from Java), and I have to get the MS SDK info. JACOB uses the same api that MS did for their java cusomizations to allow COM access. Anyways, trying to navigate the MS “javadocs” was cumbersome at best. For instance, in a typical javadoc,t he doc for an api is all in one page with bookmark links to methods, and properties. IN the MS javadoc, the methods and properties are listed as links to another page, with more links to more pages. Not easy to jump bak and forth through the various methods and properties in a class api. kudos to Sun for their better design.
Typically, I do not like MS docs, but their javadocs were exceptionally bad. I have found most MS documentation lacking in organization. The information is there, but not easy to locate. Just try to find things in the MSDN knowledge base, and you’ll soon see what I mean.
I am not bashing MS. I think that they have some nice products on occassion. I like C# for instance, although it is VERY similar to Java, which I also happen to enjoy.
You must be referring to the rotor project which is indeed more of a proof of concept. It’s a very reduced runtime and not very usable due to it’s incompletenes.
The reason that the exe’s run on mono too is because the mono developers regularily test their runtime if it runs those examples.
Well, for Micrsoft it is, however, you could create a fairly good .NET implementation, however, the problem is that it is licensed under an even more restrictive license that what SUN license their Java source under. Had Microsoft licensed the whole thing under the BSD License, the likely hood of a clean re-implementation of .NET would be unneeded, all Ximian would have needed to do would be to built on Rotor to add the extra functionality to make it “feature complete” in comparision to the Windows version.
I am really looking forward seeing it matures.
I never use MONO or .NET, so does this make sense:
With MONO, I can program with c# on MONO so that Apache installed on a Linux box will produce ASPs?? I am totally confused with the different terminologies I heard lately.
Just in case this isn’t as obvious to others as it is to me, the only reason Microsoft released a FreeBSD version (however crippled) was to draw some attention away from Linux. If FreeBSD had as much attention/developers as Linux, the license would then allow Microsoft to simply use the BSD work where as the Linux work is GPLed. Thank you.
(Not religious! Just pointing out the obvious)
Are there any full blown applications out there using .NET technology other than some web based mini applications?
Although technically not a commerical application that was written first using .Net, there is a .Net version of Quake II….!!
http://www.vertigosoftware.com/Quake2.htm
VM sharing, ’nuff said
Pure looking at the programming language i couldn’t name anything .NET does and Java doesn’t, but i could the other way round (in java you can do multiple inheritance for example if i remember right.)
You ,ost certainly don’t remember right. Java does not support multiple inheritance. Maybe you were thinking of c++.
Syntactically the two languages are almost identical. c# has a couple of things like iterators and custom attributes although Java will have equavalents in upcoming versions
first of all, thanks for correcting,
second: iterators are for a next release in c# too, mono kinda supports them now, but they are for .NET v2
As someone mentioned iterators are going to be in .NET v2. c# already has the foreach construct which makes looping over collections easier. Java will get this and generics(as will .NET v2) in its next version.
One difference that hasn’t been mentioned is the design of the IL(intermediate language) or bytecode language in Java’s case. MSIL was designed for multiple languages from the groundup. Yes, I know there are many languages that “target” the jvm, but in many cases it’s a PITA and the compiler writers have to do various tricks in order to produce the java bytecode. MSIL supports various things such as variable-length value types(structures on the stack), pointers, function pointers, tail-recursion, variable length arguments… One thing that CLS(I think this is the acronym(so many freaking acronymcs:) produces allow is the ability to inherit from classes written in different languages. I don’t think the jvm allows this as of right now.
Some of the other things that c# has that java doesn’t are delegates(type-safe functions pointers), unsigned types, structures on the stack, enumeration(why Sun didn’t include this one along with unsigned types is beyond me), the ability to actually manipulate pointers if you so desire, a very easy way to interface with c code, variable-length arguments(c# has a proper printf like function which is very nice), and some other things.
I like java and with multi-platform IDEs such as Eclipse and IDEA it’s a great development environment. I just find c# to be a better language. The downside of .NET/Mono,DotGNU are that they “probably” will never be as cross-platform as java.
Mono has a come a long way for a huge project and DotGNU is implementing Windows Forms that will ride on top of System.Drawing so that it’s cross-platform. If Shardevelop can get a port to linux, or whatever platform then this could attract legions of windows programmers that would never touch linux. And like it or not, java is dead on the client side for at least windows and there’s not much on the client-side for other platforms as well.
Could MS stomp out the dotgnu and Mono projects? I don’t know the legalitities of this, but I’m guessing probably not. How come MS hasn’t tried to take out the wine project?
I think iterators have been in Java since 1.2
At least the API docs say so.
One thing I always wondered about is, why C# didn’t have Generics from the beginning. It is a new language, and templates in C++ are widely used.
But still it needed Java to annonce Generics to get them into C# as well!
Regaring Roy Batty’s comment about compilers for JVM, do you have any reference on problems like you mentioned?
I did a simple Pascal -> JVM compiler once in an university project and the JVM assembly is pretty easy if you know how a stack architecture works.
Yes – Iterators have been around for a very long time in Java…
Some of the other things that c# has that java doesn’t are delegates(type-safe functions pointers), unsigned types, structures on the stack, enumeration(why Sun didn’t include this one along with unsigned types is beyond me), the ability to actually manipulate pointers if you so desire, a very easy way to interface with c code, variable-length arguments(c# has a proper printf like function which is very nice), and some other things.
This is because Java doesn’t allow pointers. The developers of Java found that pointers lead to memory leaks and such because it becomes easy to misuse them. BUT Java does have a similar concept known as ‘references’.
Unfortunately the link I had comparing MSIL to java bytecode disappeared from my cache. I think the difference between java byte code and MSIL is that Java bytecode was designed with the Java language in mind where MSIL was designed to try and be language agnostic(as much as possible). As I mentioned before, I know many languages have targeted java bytecode, but from what people with a lot more compiler writing experience have told me is that it’s not as easy as targeting MSIl would be. Maybe Pascal is much more conducive to targetting java bytecode than say a language like Scheme(where you want tail-recursion).
As far as generics in c# go, I know that a research group in England had been working on generics during .NET development, but it wasn’t completed in time for .NET v.1.
I’ve heard that .NET will actually change MSIL to accomodate generics where Java will use runtime tricks to support it. Or maybe it’s the other way around:)
In any case, I believe it’s a good thing that c# is around in order to push future Java core language development. Even though I believe Java is a good thing I think it went too far in “dumbing down c++”. What’s up with not having enumerations or unsigneds?
This is because Java doesn’t allow pointers. The developers of Java found that pointers lead to memory leaks and such because it becomes easy to misuse them. BUT Java does have a similar concept known as ‘references’.
For the most part, you’ll rarely drop down into ‘unsafe’ code to manipulate pointers directly, but sometimes it’s nice to be able to do so for performance critical operations without having to drop into c code. Also, unsafe code is used in interfacing with c code in c#, which I feel is a lot easier than java’s native code interfacing. I don’t like having to generate a header file in order to interface with native code.
As far as reference go, yes, I’m fully aware of java references which c# has too. c# also has the ability to pass references into functions so that you can do swapping functions easily, as well as the ‘out’ keyword for function arguments so that you don’t have to initialize parameter arguments where initialization is not needed.
Unfortunately the link I had comparing MSIL to java bytecode disappeared from my cache.
Ah, too bad
but from what people with a lot more compiler writing experience have told me is that it’s not as easy as targeting MSIl would be.
Perhaps it matters for which kind of architecture you already wrote compilers. JVM is a stack machine, perhaps MSIL is a register machine.
It sounds like it is easier to write a compiler for the NET bytecode, but my point is anyway that it is easy to write a compiler for a JVM. Perhaps not as easy, but still not difficult
I am pretty sure something like recursions don’t matter at all.
They are highlevel language constructs and they are already transformed when the code reaches assembler level.
Moreover, a good compiler should have transformed a tailrecursion into a loop anyway
As for the generics: I didn’t know they had been scheduled for the original release but didn’t make it in, but one has to wonder how someone with even a glimps in software development could release a language not supporting something like that.
Not having generic but type save containers is the most stupid thing a new language could do.
It makes C# look too much marketing driven, which might work for end user products, but IMHO looks bad to the target audience (engineers).
They had the chance to learn from the mistakes Java did, but they didn’t use it.
And that’s a pity.
thanks roy batty for a nice comparison, but i have one remark to make:
“MSIL was designed for multiple languages from the groundup.”
It depends on what you call different languages. You can’t write vb or Jscript, only vb.NET or jscript.NET which is the same language as c# with a different syntax. vb .NET in no way resembles vb, it’s not another language, its more another syntax
Not sure what you’re getting at when you talk about VB.NET or jscript.NET vs VB or Jscript. I never claimed .NET could run those languages.
Even though there isn’t a .NET compiler that will compile straight c++ I wonder how much of a pain in the ass it would be to have a Managed c++ target bytecode.
By the way, Pnet(DotGNU) now compiles c code to IL — pretty cool if you ask me.