Ars Technica Tours Mono
Kevin Francis writes "Over the coming weeks, Ars Technica will be taking a look at Mono, including a basic introduction to Mono, MonoDevelop, and C#, and then branching out to GTK#, database access, ASP.NET, advanced C# topics, and conclude with a discussion of the future of Mono, and the C# standard. All the examples will work on Windows and Linux, with OSX support coming shortly. Part 1 of the series is online now."
As you can clearly see, Mono brings almost limitless possibilities in breaking down the barrier between desktops: a commercial software provider would target Mono and it would "just work" on all platforms that Mono supported. How is this different from Java? In my opinion Java makes things harder than it needs to be. For starters, enforced exception handling can't auto-box/unbox primitive types and doesn't support arbitrary length parameter lists String.Format() style.
The framework of Mono provides the ability to make a very tedious task in C/C++ almost trivial in C#. As the above example, RegEx, shows, it helps the programmer concentrate on the program itself, rather than the logic supporting the code.
Yes, it is very exciting to have developers be able to easily write code that will work both on Linux, Windows, and OS X (obviously with the correct libraries) but will the coders utilize Mono when doing their work? Will they be concerned enough that Linux and OS X users are worthwhile supporting to make sure it is cross-platform?
What mono needs is a good RAD tool for developing GTK# based apps. I know you can reference GTK# libraries in VS.NET but there's no support for cross platform forms design.
The syntax for building Winforms is completely different to GTK# (as one might expect) but the documentation I've found doesn't really map types and methods for developers familiar with existing RAD tools such as MonoDevelop and the excellent SharpDevelop.
Tool designer support for GTK# is crucial.
"It's not your information. It's information about you" - John Ford, Vice President, Equifax
As you can clearly see, Mono brings almost limitless possibilities in breaking down the barrier between desktops: a commercial software provider would target Mono and it would "just work" on all platforms that Mono supported. How is this different from Java? In my opinion Java makes things harder than it needs to be. For starters, enforced exception handling can't auto-box/unbox primitive types and doesn't support arbitrary length parameter lists String.Format() style.
I find this kind of claptrap irritating. Java is one of the easiest platforms to jump into. If you found it harder than it needed to be, you needed more coffee.
*** *** You're just jealous 'cause the voices talk to me... ***
Novell is banking on making Windows->Linux migrations simple as a selling point for their tools. Providing a viable supported .net platform is a key. Do I think that this will become the de facto Linux dev kit? No. Too many users love their kit of choice (perl,pythong,java,etc) and in any case the open source community abhors being told how to develop. Nonetheless having one more option is a benefit. The only downside is potential bloat of distro CDs, but hey we crossed this line a long time ago and its what you have to do if you want to support N dev toolkits.
It will be a sad say indeed when developers are tied to a specific language for a specific platform just because that is what someone has mandated from on high.
I look forward to the legal and security issues with .NET, Mono and .GNU. We live in interesting times.
Stick Men
The Mono project was conceived in the Summer of 2001 as an Open Source alternative to Microsoft's .NET development platform. Since then, it has come all the way to a 1.0 release among a flurry of controversy from mostly inside the Open Source community itself. Although we will not outline the reasons here, most of the criticism stems from the fact that .NET is Microsoft, and "we" don't like them.
.Net are not satisfactorily answered. What about MS total control of the standard? What good will the standard be if the company that owns 95% of the desktop starts shipping a .Net that deviates from the standard? What about the parts of .Net that are not covered by the the standard, and in fact have intellectual property encomberances?
.Net is essentially the Java runtime environment, with MS additions. Why is .Net any better than Java for application development. Is its speed any better? Is Mono's speed any better than Java's?
What a stupid simplification!! There are legitimate concerns over how MS exerts it monopoly power, and many of the resultant concerns with Mono and its support of MS'
Mono's main pull for developers is that it is cross-platform and makes writing applications very fast because of its extensive framework. Mono also has the concept of garbage collection. Gone are the days of using malloc() and free() and recording where you allocated memory and making sure you free() it. Java has GC as well, but Java never really caught on as an application language.
Another biased statement; has C# caught on as an application language? Why not point out that C# is pretty close to a clone of the Java language, and that
I don't mind a review of Mono. I was interested in reading it, and would like to know more about it. But, when the author so casually dismisses the concerns with MS and Mono, or dismisses the legitimacy of Java, I question his objectivity.
I've already been doing this sort of cross-platform programming for years with wxWidgets/wxPython. I'm not waiting on Mac support - I'm already using it (and improving it!). What amazes me is that the authors act like Mono is breaking new ground by having a portable programming language that can do GUIs but is easier than Java. Hello? Apparently no one ever told them about Python/wxPython?
.NET experience comes from using Windows. And as the Ars Technica article shows, it's going to be a while before anyone can really write sophisticated cross-platform GUI apps using this toolkit. (And will it be GTK# on Mac? Does that mean X11 is needed there? Ugh.)
;-)
And not only can I use it today, I get better results than I would with GTK# or Java in terms of cross-platform interfaces. If you've ever seen the GIMP on Windows, you'd know that GTK apps don't quite look like professional Windows apps. Emulated interfaces will always look out of place, particularly as themes get more common.
I'd encourage anyone who is interested in cross-platform programming to download Python and wxPython, then run the wxPython demo on Windows, Linux or Mac OS X, and then explain to me exactly how it is that Mono is breaking new ground. (Note also that the wxPython 2.5.2 release on Mac will sport a number of nice improvements and is due out soon.)
The only new and unique thing that I see about Mono is that it uses and is compatible with APIs designed by Microsoft. As a compatibility layer, that has some value, but they will always be two steps behind Microsoft and MS will always ensure that the best
Anyways, time to go back to making my native, cross-platform apps.
The article mentioned that the C# makes things simple that would be complicated in C/C++ (the example was RegEX). This is kind of a screwy way of looking at things, and not much of a selling point for C# in my book. Something like RegEX is provided to C# through a library (or framework if you prefer), and isn't part of the actual language. If you want such a simple interface to a RegEX, it would be easy to get a similar thing for C or C++.
Overall I thought the article was pretty devoid of any meaningful reason for why we should use mono. It doesn't sound better than Java (not worse either), and it isn't a replacement for C/C++.
I think the success of Java vs .NET will depend on how it is distributed and the "user experience" of installing and using .NET vs Java applications. Sun doesn't have the same level of control over the desktop experience that Microsoft has for desktop applications so that may be a deciding factor for most users.
On the server, Java is already very popular and installation/launching headaches are tolerated more because admins are willing to put in a little more effort than most users.
Other issues such as relative performance and the "look and feel" will also play a big role with users.
In the general theoretical sense, there isn't much difference between Java and .NET. The success of each will depend on the implementation.
Your password has expired, please login to change it.
"The only thing that Mono/.NET has going for it, as far as I can see, is that it is designed to be targetted from multiple languages."
So is parrot. But what is the point anyway? Are you going to have a project where each member of the team is going to program in a different language? Are you going to have an open source project which accepts patches in 10 different languages?
I never did understand why this was a desirable thing. It sounds like a nightmare to me.
evil is as evil does
bool matches = Regex.IsMatch( input, regex );
Yippie skippie. Show me the code for a RFC822 and MIME multipart parser or something actually beyond this hello world stuff. Regular expressions are library stuff, they have been trivial for more than 10 years. Show me some real work getting done.
(no this isn't aimed at you, I just want to hang my reply off something)
I've finally had it: until slashdot gets article moderation, I am not coming back.