Forgot your password?
typodupeerror
Programming Software Linux IT Technology

Creating .NET C# Applications for Linux 340

Posted by Zonk
from the expanding-your-horizons dept.
An anonymous reader wrote to mention an article on the IBM site entitled Mono brings .Net Apps to Linux. From the article: "Mono gives open source developers the programming power and flexibility to build applications for Linux while maintaining cross-platform capabilities, using a variety of .NET-compatible languages. One of the great advantages of Mono for current .NET developers is providing an easier migration path to Linux. The Mono project has a very open and active development community and provides both developer tools and the infrastructure needed to run .NET client and server applications. Perhaps the most important benefit of using the Mono architecture is that you gain language independence. Mono lets you leverage any existing code from languages supported in the .NET runtime. "
This discussion has been archived. No new comments can be posted.

Creating .NET C# Applications for Linux

Comments Filter:
  • Ewww.... (Score:5, Funny)

    by Afecks (899057) on Friday October 07, 2005 @05:58PM (#13743047)
    IBM gave me mono... gross!
  • by SamSeaborn (724276) on Friday October 07, 2005 @05:59PM (#13743050)
    Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

    Sam

    • by mysqlrocks (783488) on Friday October 07, 2005 @06:06PM (#13743095) Homepage Journal
      Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      Yea, that is pretty strange. I would use Java before I'd use .NET. It's much more cross-platform then .NET is or ever will be even with Mono. Also, they mention that an "advantage" of .NET is being able to write in more than one language. Technically speaking this is true. However, practically speaking the two choices are VB.NET and C#. VB.NET was seriously overhauled from VB6 to make it more compatible with .NET thus losing a lot of it's "roots". I'm certainly not suggesting that VB6 should have stuck around. I'm stuck building stuff in VB6 at work right now and it's not pleasant. I'd jump to VB.NET in a heart-beat. However, I'd much prefer C# which I think is really the only viable language for .NET. Anyways, I'm not a big fan of either. Like I said before, I'd use Java before I'd use .NET (if it were my choice).
      • by Anonymous Coward
        I used Java and at the moment I'm doing C# .NET. I have to say I had a lot of pleasure at that time programming in Java (as long as I didn't have to do any Swing or AWT). But I like C# much more. It is a little more close the Delphi (probably the only thing wrong with Delphi is the Pascal syntax, don't tell me about C++ Builder, that was one big disaster...).

        I think Delph did a very good job of the GUI. .NET is much nicer and easier than Java's Swing, but it still isn't as great as Borland made VCL for Delp
        • by CastrTroy (595695) on Friday October 07, 2005 @08:26PM (#13743927) Homepage
          The only reason that most people find .Net or Delphi any easier for GUI work than Java is because there are very few good drag and drop environments for creating Swing and AWT GUIs. The best one I've seen so far is the one that Comes with NetBeans. It makes GUI development a lot easier. It's still not as good as what they have for .Net or Delphi, but it's workable. If you are stuck doing your UI coding by hand, or using the terrible Eclipse extension, then you might want to take a look at NetBeans.
          • by llefler (184847) on Friday October 07, 2005 @09:30PM (#13744263)
            One thing I really miss with C++ and Java is properties. What's with a language that will put all the work into a ternary operator so they don't have to type if/then/else, but insists on mutators and accessors because properties are syntactic sugar?

            And if you really want someone to understand the power of OOP, give them the VCL chart from Delphi or C++Builder to study for a while.
            • by Decaff (42676) on Saturday October 08, 2005 @07:19AM (#13745858)
              One thing I really miss with C++ and Java is properties. What's with a language that will put all the work into a ternary operator so they don't have to type if/then/else, but insists on mutators and accessors because properties are syntactic sugar?

              The reason for the ternary operator is simple - to allow C code to be easily ported.

              As for properties, this is a good point but in practice does not matter - all good Java IDEs have property management built in: The will allow the automated generation and management of get/set methods and the values they change. For example, on NetBeans you simply select the 'properties entry' for the class, and off you go..
      • This is actually totally false. As well as being supported by a number of more "minor" languages, .NET fully supports: C#, C++ (with solid, awesome extensions for the .NET parts), VB, JS.NET.

        Keep in mind that there are always extensions so that you can call methods in native assemblies on your platform. This means you can pretty much interact with anything.
        • by laffer1 (701823) <luke@ f o o l i s h g a m es.com> on Friday October 07, 2005 @07:34PM (#13743607) Homepage Journal
          .NET supports tons of languages, but mono does not! Remember everyone the goal of mono is not to be microsoft .net compliant. It is to be similar to .net but not support everything and add extensions of their own. They don't want you to run windows code on linux, they want you to run mono code on windows and linux with the MONO runtime. Its not portable in the sense that you can run ALL .net 1.0 from windows using microsoft's .net runtime on mono and vise versa. Java gives you portability, mono does not. Finally, java runs on non windows/linux/mac os x systems. I can run java on freebsd but i can not run mono (well it crashes with thread/garbage collection problems all the time).

          Java = portability; mono = novell's quality of software (bad)

          I've personally talked to a mono developer at my university. He works for novell on the project and they never intend to make mono compatible with .NET. He even said i was stupid for wanting it to be compatible. Mono should not be advertised as .NET for linux because its not. Its C# for linux but on a different runtime. VB.NET support is not complete in mono either.
          • by miguel (7116) on Friday October 07, 2005 @11:45PM (#13744820) Homepage
            I run the Mono project, so I can speak for our goals.

            And one of our goals is to be compatible with the .NET implementation. This is part of what we do on a day-to-day basis when we write unit tests for the APIs we are implementing, when we keep track of any possible difference and we respond to bugs filed on our bug tracking system where the behavior differs by fixing the differences.

            But our goal is not limited to *only* being compatible with Microsoft's .NET. We have also grown outside of the scope of what .NET has to offer, and this is why you see a very healthy ecosystem of libraries and applications *around* Mono which are not limited to being compatible.

            We created Gtk#, the toolkit we recommend for new applications that are to be cross platform; The enhanced XML stack (Commons.RelaxNG and Mono.Xml.Ext), our extended security and cryptography stack (Mono.Security), our extended Database support (Mono.Data and all of the providers for proprietary and open source databases), our IL manipulation library (Cecil) and everything that goes with these libraries.

            We try to make our libraries cross-platform, because the same code will reach more users and helps grow our community, but every once in a while we have to create OS-specific libraries. For example, the Mono.Posix library is not completely portable to Windows. The Cocoa# library only works on MacOS X, as it is designed to be just an interface to Cocoa.

            Miguel.
            • Great. Someday when you achieve the goal, I can recommend Mono. In the mean time, software written for Microsoft .NET is not guaranteed to run on Mono. GTK# and Cocoa# are great ideas, and I'm not upset that you extended .NET, but I'd rather have you finish a compatible Microsoft .NET implementation first. Also, let your developers know its a goal of the project. I think there is some confusion.
            • I am sure this will be modded as flame or troll, but it is not.

              Miguel, I have watched for several years this Mono project. At first I thought it was a bad idea. Now I know it is a bad idea. I don't understand why you continue to fragment the community as the Mono project does. I remember the blurb about MS barring Mono from some conference recently. I don't know why you continue to add momenteum to a platform that you cannot control. That only benefits one person - the same one who controls the platform.

              In
      • by TummyX (84871) on Friday October 07, 2005 @07:36PM (#13743621)
        .NET makes it simple to interface with existing libraries written in C which, IMHO, makes it a more natural fit with Linux. C# applications can easily take advantage of existing libraries (GTK etc) whilst Java requires more effort (to force you to be "pure" and cross platform).

        Sometimes having ease and flexibility is more important than being cross platform.

        Besides, most libraries linux C# applications p/invoke are source-portable so the C# application itself will be cross platform as long as you have the platform specific binaries for the native libraries you pinvoked. The binaries you distribute won't necessarily be cross platform but for desktop applications, that's not really a big issue.
    • They all secretly want to run on Windows?

      *thud*
      Ow, hey stop throwing stuff at me!

      help

      HELP!
    • by Anonymous Coward
      C# and the core parts of .NET are open standards, whereas Java is not. While true that some parts of Microsoft's implementation are not covered by the standard, the standard covers everything that's needed for anyone with the talent to create an implementation of core .NET and leverage most of the benefits. That in itself won't give you compatibility with Microsoft applications, but it you're more interested in the better technology than in compatibility with a corporations products, then Mono (at least the
      • by Decaff (42676) on Friday October 07, 2005 @06:28PM (#13743223)
        C# and the core parts of .NET are open standards, whereas Java is not

        This means nothing. These parts are still subject to patents. Sun is prepared to certify any Java implementation as 'Java' providing it passes their compatibility tests. They have even done this for clean-room implementations by rival companies like HP.

        That in itself won't give you compatibility with Microsoft applications

        Whereas Java gives you a definite guarantee of compatibility.

        and you lose nothing by not going to Java.

        Except performance, reliability, being able to use quality products from multiple vendors such as Sun, HP, IBM etc, and using the language which is now the de-facto standard for commercial server-side software development.
        • Performance and reliability? I assure you that C# has both. Got any links that indicate that C# is either slow or unreliable? And products being available in Java from vendors doesn't really mean much if you don't intend to use them in the first place, or they are trivial to interface with your code. As far as Java being the de-facto standard, while it is in higher use than C#, C# is being used by large businesses, and there is a large market for C# programmers.
        • Err... I don't know what industry you're in, but the standard in Pharmaceuticals, Energy & Utils, and Defense is Java. Those are just the 3 largest industries off the top of my head. Java is *fast*, extremely fast, I've written Java code that runs fast than C++. With JIT, speed is not a problem. The only reason Java has a somewhat bad name is because of Swing, but if you understand the extreme extensibility of Swing, it makes sense. If you want Java apps that feel fast, just use SWT or GTK's java bindin
    • Perhaps Java will be a more useful option once GNU Classpath matures a bit more, and GCJ support under Windows is improved. Indeed, a GCJ+SWT+Java solution could be quite powerful. You get the benefits of native compilation, with the benefits of the semi-portable SWT, and the benefits of Java, for desktop application/client development. Best of all, you lose most of the crud of the JRE (or the .NET CLR equivalent).

      And if the GNU Classpath support for Swing and AWT improves, then there'll be an option availa
      • Perhaps Java will be a more useful option once GNU Classpath matures a bit more, and GCJ support under Windows is improved.

        This will be news to the thousands of developers who are already using Java under Linux and Windows for application development right now! If you look at the IT job market (Java being the most required skill for commercial application development), you won't see Java uptake being held up because it is not currently a 'useful option'!

        Personally, I can see the advantage of a mature open
        • While Java is often suitable for enterprise apps or web based apps, it just isn't useful for consumer-grade application development. That's why we haven't seen any serious and widely-accepted office suites or web browsers written in Java, for instance, even after ten years.

          • by Decaff (42676) on Friday October 07, 2005 @06:48PM (#13743353)
            While Java is often suitable for enterprise apps or web based apps, it just isn't useful for consumer-grade application development

            That will be news to the many developers who have produced such applications. Go to the Swing Connection on the Sun Java Website and you will see hundreds of applications that are consumer-grade. This includes games, graphics apps, and multi-media apps.

            And, of course, there are the thousands of different Java games that are downloaded to mobile phones every day!

            So much for Java not being 'consumer-grade'!

    • by psavo (162634) <psavo@iki.fi> on Friday October 07, 2005 @06:26PM (#13743209) Homepage

      Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      I can apt-get install mono, but Sun told me to go fuck myself with a chainsaw when I wanted a .deb of Java1.5. (Yes, there is java-package, which does a great job, but really, it's a fucking mess).

      • Apples and Oranges (Score:4, Interesting)

        by AtOMiCNebula (660055) on Friday October 07, 2005 @07:55PM (#13743743) Journal
        Mono isn't produced by Microsoft, so it's unfair to compare Mono to Sun's JRE. Yes, Sun requires you to fetch the install file yourself (at least with Gentoo's Portage). But Mono is a GPL thing run by people not affiliated with Microsoft.

        You can't compare the two. Try comparing Mono and Blackdown instead.
        • by compass46 (259596)
          Mono has multiple licenses, depending on what part of the framework you are talking about.

          http://www.mono-project.com/FAQ:_Licensing [mono-project.com]
        • Reality does not have to be fair. It is easier to install mono then the sun jvm or any other jvm for that matter and so it will get used more and depended on more. It comes down to the path of least resistance and people will tend to use c,c++,perl,python,ruby as first choices, mono stuff as a second and java farther out mostly because of how easy it is to install that stuff and how standard it is.

          I know when writing python software when I need something outside the standard lib the first place I look is th
      • It's very easy to download the Sun JRE or JDK from Sun's website and to install it. Not much more effort that typing apt-get install.

        I've been using Debian, Fedora and CentOS recently after years of using Slackware and Solaris, and I can tell you that all the package managers have their advantages and disadvantages, but really, downloading and installing the Java distribution from Sun really isn't that difficult.

        Sun may have some strange attitudes towards the redistribution of Java, but from what I can ga

        • It is not that overrated. Imagine a system dependent on JRE for some or most applications. Now you would be forced to download a huge package from Internet to get it working. Of course then you would have to setup the classpaths, ***_HOMEs and such. And what if you needed JRE for an app to setup an Internet connection or to download what you need...

          On the other hand C/C++, shell, perl, python and all other apps run fine out of the box (and you don't even know what lang it was written in before you examine i
    • Where does it say that? TFA specifically says that you can write Java for .NET/Mono, using third-party IL generators. Many programmers already do that on Windows. They have various reasons for having to support .NET, but don't want to abandon their Java toolset.
    • Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      Sam


      I'm a long time linux user, and I love java - and I meet a lot of people of like mind in the course of my work. As for mono, we're all pretty much taking a "wait and see" approach. It's a neat hack, but... can we trust that microsoft won't stir up patent trouble? I dunno, java just seems a lot less risky.

      Alright, so who told you that linux programers won't use java?

      YHBT, my friend!

      HAND
    • One can apt-get install mono.
    • Sure they'll do it.

      ...to pad their resume. Read the classifieds lately? There's a lotta .NET jobs out there. It's nice to learn .NET without having to boot "that other OS", y'know.

  • by jarich (733129) on Friday October 07, 2005 @06:00PM (#13743061) Homepage Journal
    Wouldn't it be funny if .Net (with Mono) actually delivered on the promise of Java? That is to say, bringing software to the Linux platform from traditional MS developers?

    Given that Java was a new language, maybe the migration from MS developers wasn't all that great... but now, with Mono, MS developers can move right over.

    • What about the Windows developers working on Java? :-P
  • .NET Windows Forms (Score:2, Interesting)

    by Anamanaman (97418)
    I have a .NET Windows forms app that I'm looking to port to Linux using Mono. Anyone have any experience doing this? Is it something I should even bother trying to do?
    • by MooCows (718367) on Friday October 07, 2005 @06:33PM (#13743245)
      Mono implements System.Windows.Forms, but currently it's not stable.

      It's recommended to use the latest build of Mono System.Windows.Forms, you can find it here [mono-project.com].
      And here is the the Mono WinForms class status [myrealbox.com].
      I currently wouldn't rely on it. But the outlook is good.
      And here are some pretty pictures [myrealbox.com] of Mono's WinForms in action.

      For apps where the both compatiblity with Windows and Linux/OSX are important I'd use wx.NET [sourceforge.net].
      However on Win32 WinForms works best, even if it isn't the nicest (for developers) toolkit around.
    • by kupci (642531)
      You wanna run your .NET Windows Forms app on Linux you say? easy

      Seriously, you've just summed up the whole 'bait and switch' flaw with mono.

  • Not really news... (Score:3, Informative)

    by Momoru (837801) on Friday October 07, 2005 @06:04PM (#13743085) Homepage Journal
    Mono has been around and kickin' for almost as long as .NET has been. It still doesn't execute .NET 100%, but definitely something to check out if your a .NET person and want to use Linux.
  • portability problems (Score:5, Interesting)

    by vlad_petric (94134) on Friday October 07, 2005 @06:08PM (#13743110) Homepage
    The article is silent on the GUI part. Unfortunately, that's also the most unportable part with .NET. Since winforms was really tailored for the windows api, porting it is no trivial tasks. Windows.Forms/Mono [go-mono.com] is still under heavy development.

    Keep in mind that Microsoft saw .NET as cross-platform, but only between windows platforms. Java is far better in that respect. While full compatibility is in many cases impossible, the extra effort per platform is much smaller

    • Perhaps it is still better to stick with a cross platform C++ framework like wxWidgets or QT. They offer many of the benefits of Java and .NET, without many of the nasties.

      • I'm looking into wxWidgets vs. Windows Forms at the moment for a project I'm working on at the moment. It's my thesis research.

        Qt was eliminated right out - my project can't be made GPL (due to a piece of the code that is subject to export restrictions), and I can't afford the license cost for a commercial license (and the educational license was too restrictive: I could only develop on campus on a school owned computer.).

        Windows Forms is looking very slick. Cross compatibility isn't a requirement, its
    • Actually, wx.NET [sourceforge.net] and GTK# [sourceforge.net] work just fine on both Microsoft's runtime as on Mono's runtime. Compile on Win32 with VS.Net, run on Linux with Mono (or Portable.Net). I've tried it and ran into no problems.

      QT# exists or you can call QT libs directly from .Net. I have no experience with QT so can't comment. .Net isn't so 'boxed in' and 'made for win32' as I thought it would be. And C# is a pretty nice language.
  • Here we go again (Score:4, Insightful)

    by Billly Gates (198444) on Friday October 07, 2005 @06:09PM (#13743113) Journal
    "maintaining cross-platform capabilities, using a variety of .NET-compatible languages." .. great! You can use Microsoft VC.NET, Microsoft C#.net, and Microsoft VB.net on any version of Microsoft windows. (Well recent)

    maintaining cross-platform capabilities, using a variety of .NET-compatible languages. One of the great advantages of .NET is providing an easier migration path to Linux .. " Is the poster on crack? He might as well say " .. using a variety of MFC based languages makes targetting to Unix easy.

    Why do people even bother with Mono? I know I am going to be modded as a troll but I have yet to see a single app besides a hello world being cross platform? I think the developers looking at C# and Mono in a greater light than Java are ignoring the patent and copyright issues just because C# looks cooler. Thats pretty short sighted.

    C# would be the lowest ranked languaged behind visual basic if you want to avoid vender lock in.

    What will happen when C# 2.0 comes out? My guess is Linux will be playing catchup again and meanwhile windows will look like a better alternative to businesses standardizing on C# because their geeks mentioned how great Mono is.

    • I think there's a more important question to as first. Why bother with .Net?
    • What will happen when C# 2.0 comes out? My guess is Linux will be playing catchup again and meanwhile windows will look like a better alternative to businesses standardizing on C# because their geeks mentioned how great Mono is.

      Actually, Mono already supports the features of C# 2.0. The Whidbey beta has been out for over a year, you know.
    • by MooCows (718367)
      "great! You can use Microsoft VC.NET, Microsoft C#.net, and Microsoft VB.net on any version of Microsoft windows. (Well recent)"

      Right [gotdotnet.com].. of course not all of these are completed, but still. There are also some implementations not listed there like IronPython.
      Or you can install Mono or Portable.Net on Windows and compile without resorting to Microsoft tools. The resulting application will run just fine using the MS runtime or any other runtime on any other platform. (As long as you have the libraries you need
    • by cortana (588495) <sam@[ ]ots.org.uk ['rob' in gap]> on Friday October 07, 2005 @09:18PM (#13744192) Homepage
      Why do people even bother with Mono?
      I don't give a crap about whether Mono allows me to run shitty Windows-centric apps on my system. I bother with Mono because it makes it easy to rapidly develop and deploy programs for the linux desktop. Mono is a good enough product in its own right.

      The excellent java-gnome [sourceforge.net] project is the Java equivalent of GTK#/GNOME#, but I don't see nearly as many programs being developed for it. In fact, a quick apt-cache rdepends reveals that there are precicely zero applications using libgtk-java in Debian, whereas libgtk-cil is used by projects such as tomboy, graphmonkey, gnunit, beagle and blam. There are also a load of programs that have not yet been packaged; assuming that the same proportion of GTK# and java-gnome apps have been packaged, it seems that there is a lot more developer interest--buzz--around Mono than there is around Java. Mono-based programs are certainly mentioned more often (read: at all) on the feeds I read than Java-based ones; and how many "Creating Java applications for Linux" articles have been posted to Slashdot recently?

      So why is this? I recon it's simply down to how easy it is to get started using the platforms in question. Say I want to run Beagle [gnome.org]--I apt-get install beagle. Now let's say I want to run the hypothetical jeagle. I have to navigate, with a graphical browser no less, Sun's gargantuan site; agree to a huge, no-doubt soul-selling bullshit EULA; run Sun's crappy installer that shits untracked files all over my system... and I still can't apt-get install jeagle because Sun's crappy installer doesn't know about dpkg. As a Debian user who actually knows what he is doing, I can use java-package [debian.org] to convert Sun's crap installer into a .deb that halfway complies with Debian poilicy, but by making me go through this procedure Sun has basically killed my enthusiasm for working with this platform--there is no longer any buzz.

      "But Mono isn't made by Microsoft! It's not a fair comparison", you might say. To this I reply, I don't care! C# and Java are both nice, modern (perhaps I should say 'fashionable' to avoid being prodded by the Lispniks) languages that make software development fun and easy--but it is easier to get into C# because a platform that lets me use it is only an apt-get away.

      Now, perhaps Sun could turn this around by hiring a couple of Debian Developers to make some really high quality Debian packages of Java, and granting Debian permission to distribute them in non-free; but this only solves the problem for users of Debian and Debian-derived distributions. Sun would also have to find someone to create decent packages for Fedora, Mandriva, Suse, Slackware, whatever. But hold on a minute--Mono has people coming out of the walls to package it for their favourite distribution, so why should Sun have to put in extra effort to make this possible--and still be playing catch-up? It's because Mono has buzz! The openess, liberty and low barrier-to-entry have drawn developers to the Mono platform, while Java has languished under Sun's iron fist.

      In the end it's not about Java-the-language vs. C#; it's about the openess of the platforms: Java-the-closed/inaccessible platform vs the GPL'd Mono. Development of the components of an open source Java platform has been slow because Sun have already created a 'good enough' implementation of Java on GNU/Linux--but Mono has everything to to play for; the stakes are high, there are no grumpy old gits saying "Microsoft's GNU/Linux .NET implementation is good enough, Mono will never beat it", this is an exciting time when men are men, women are women, small furry creatures from Alpha Centuri are real small furry creatures... etc, etc.

      To summarise: Mono is exciting. Java is a pain in the ass.
    • Re:Here we go again (Score:5, Interesting)

      by miguel (7116) on Friday October 07, 2005 @11:26PM (#13744759) Homepage
      There are a number of cross-platform commercial applications that run on Mono, for example:

      * Novell's own iFolder client and servers (same code base, modulo UI which is native on each of the three platforms: Linux/Gtk, Windows/Winforms, Cocoa/OSX).

      * (http:///www.medsphere.com [medsphere.com]) Medsphere's products (Mono/Gtk# based).

      * Otee's Unity game engine (http://www.otee.dk/index.html [www.otee.dk]).

      You can look for the "Works with Mono" logo on open source .NET applications and various commercial applications.

      For a larger but still incomplete list, see:
      http://www.mono-project.com/Software [mono-project.com]

      As for your question about what will happen when C# 2.0 comes out, we have good news, we already have implemented it (we are missing two fairly minimal features though), for details you can see our web page on the subject:

      http://www.mono-project.com/CSharp_Compiler [mono-project.com]

      Generics, itereators, anonymous methods, nullable types, partial classes, per-accessor modifiers, static classes, fixed buffers and co/contra-variant delegates are all implemented and available today.

      And we can not wait to implement the new features in C# 3.0

      Miguel.
  • by oGMo (379) on Friday October 07, 2005 @06:10PM (#13743121)

    You keep using that word. I don't think it means what you think it means.

  • Why bother? (Score:5, Insightful)

    by Decaff (42676) on Friday October 07, 2005 @06:16PM (#13743158)
    With Java you now have a complete implementation of all language APIs on Windows, Linux, Solaris, HP and so on, not an incomplete port of .NET (Mono) potentially subject to Microsoft patents.

    If the Apache Harmony projects succeeds (and it has a lot of backing) there will be a complete open source cross-platform Java implementation. There are already open-source Java versions that are good enough for many applications (gcj, Kaffe).

    Mono is a waste of time.
    • How on Earth can this be rated troll when it there is not a single fact in the post which is incorrect?
    • Re:Why bother? (Score:3, Informative)

      by m50d (797211)
      With Java you now have a complete implementation of all language APIs on Windows, Linux, Solaris, HP and so on,

      With a horrible license and horrible performance.

      not an incomplete port of .NET (Mono) potentially subject to Microsoft patents. Anti-mono people go on about the patent bogeyman even though MS has *never* used a patent aggressively, and there are situations where it would benefit them far more to do so (OOo, Samba). The threat of patents is just so much hot air.

      If the Apache Harmony projects su

  • How cross-platform (Score:2, Interesting)

    by pmike_bauer (763028)
    A few years back, I had a serious Java epiphany. Try taking a JAR that runs on an IBM JVM (AIX) and, without a recompile or glitches, run it on a Sun JVM (Windows). It just works.

    A C# program targeting the Mono runtime will probably be very portable to all operating systems that run Mono. But, will a Mono app/code base developed on Linux run just as smoothly on the .NET runtime in Windows?
    • by kingos (530288)
      I do c# development at work (largely for the windows.forms gui code, most server side is c++).

      I took a console application that used network sockets, timers, and was completely multithreaded that I had compiled using microsoft's c# compiler, and copied it to a linux server (no recompile).

      Fired up mono ... it worked flawlessly, first time. I was impressed.

    • by m50d (797211)
      But, will a Mono app/code base developed on Linux run just as smoothly on the .NET runtime in Windows?

      Yes, that's the whole point, though it only will if it sticks to the standard APIs. There are things which are only supported in Mono, but they are split off into their own namespaces (usually Mono.*). The same is true with Java, if your thing uses sun.* it won't work on non-sun jvms.

  • by t35t0r (751958) on Friday October 07, 2005 @06:32PM (#13743237)
    Why does Mono show up so many times on slashdot? [google.com]

    Why use Mono/.NET when you have ruby, perl, php, and python? All of which are cross platform? As far as only being able to give binary code to your customers ActiveState's Perl Dev Kit allows you to do just this (even though it's not free, but still less expensive than a license for Visual Studio .NET). I'm sure someone has written a decompiler for PDK binaries but the same thing could be done for .NET applications.

    But honestly can someone who has done development in Mono and and the other aforementioned languages convince me or anyone else for that matter to learn C#/Visual Basic.NET, and enjoy what it has to offer? What does it offer that the other aforementioned languages do not?
    • Why use Mono/.NET when you have ruby, perl, php, and python? All of which are cross platform? I think the point would be that by having the same framework that MS is pushing for available on Linux allows for easier migration from Windows to Linux for those who would normally never consider such a move. The PHB's in our organization just realized that Windows is expensive (shocking, I know), but we've been working on a .NET Windows app that's already about 1.5m lines of code. I've been asked what I know a
    • Why use Mono/.NET when you have ruby, perl, php, and python? All of which are cross platform?

      Why use C++ when you have JavaScript? Why use Haskell when you have BASH? They're apples and oranges.

      As far as only being able to give binary code to your customers ActiveState's Perl Dev Kit allows you to do just this (even though it's not free, but still less expensive than a license for Visual Studio .NET). I'm sure someone has written a decompiler for PDK binaries but the same thing could be done for .NET applic
  • by TheNarrator (200498) on Friday October 07, 2005 @06:43PM (#13743317)
    Perhaps the most important benefit of using the Mono architecture is that you gain language independence.

    This is by far the most hyped feature of C# but it's also present in Java. If you look at the large incompatibilities between Visual Basic and VB.NET you'll see that .NET is not really that language independent and that each language is really more of a "skined" version of C#.

    As far as alternative languages go in Java there are many. Among the most popular are: JRuby [sourceforge.net]
    # interpreter written in 100% pure Java
    # Most builtin Ruby classes provided
    # Support for interacting with and defining java classes from within ruby
    # Bean Scripting Framework (BSF) support
    # Distributed under a tri-license (CPL/GPL/LGPL)

    Jython (Python) [jython.org]
    Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

    Groovy [codehaus.org]
    Groovy is an agile dynamic language for the Java 2 Platform that has many of the features that people like so much in languages like Python, Ruby and Smalltalk, making them available to Java developers using a Java-like syntax.

    There's a lot more smaller projects like JavaScript and Rhino, Jelly, BeanShell, Tcl/Java, Sleep, ObjectScript, Pnuts, Judoscript. Some people event think there are too many alternative languages for the Java Virtual Machine.

    • If you look at the large incompatibilities between Visual Basic and VB.NET you'll see that .NET is not really that language independent and that each language is really more of a "skined" version of C#.

      Mm, not really. C++/CIL (nee Managed C++) is closer to the metal of .NET. VB.NET has a ton of late binding support, C++ has pointers to boxed types, both have named indexers.. none of which are in C#.
  • It's the tools (Score:3, Insightful)

    by somerandomstring (882953) on Friday October 07, 2005 @06:45PM (#13743336)
    Why Mono? The answer is extremely clear: outstanding tools.

    Microsoft has some of the best development tools around, and the best of their stuff targets .Net. That being the case, and seeing that windows developers largely use MS tools, it stands to reason they'd find targeting Linux via Mono the path of least resistance.
  • GUI applications (Score:4, Interesting)

    by DynamiteNeon (623949) on Friday October 07, 2005 @07:12PM (#13743485)
    Don't get me wrong, I happen to like both C# and Java, but if I have to create a gui app on windows for some reason, C# and .net wins hands down.

    Yes, I realize I could use SWT, but that's still not necessarily good enough. It surprises me that Swing still sucks so much after all this time. I would love to use one language exclusively if I could, but until I see some decent gui apps being built using Swing, it's hard for me to want to use Java unless I have backend services to create.

    Having said that, I would like to know if anyone can point me to gui applications that use swing and are actually good and fast. I'm curious if they exist at all.
  • Java Vs C# (Score:3, Interesting)

    by Rac3r5 (804639) on Friday October 07, 2005 @07:40PM (#13743652)
    I've been programming since I was in Gr. 5. From all the languages I've ever programmed in(BASIC,dBase, Java, C/C++, C#, Assembler etc...), my favourite is Java and C#.

    What I like about Java is that it is a modern language that uses modern concepts, is very well documented and its vast lib support makes it very useful.

    C# also follows along the same lines of Java, making it quite similar except you have the option of getting out of the sandbox that Java uses. Some people need to get out of the sandbox for various purposes, and C# allows that, not Java.

    If I were to choose, I would choose C# 1'st for this very reason and then Java. Unfortunately, I'm a hardware programmer, so I am stuck using C :(
  • by instinctdesign (534196) on Friday October 07, 2005 @08:23PM (#13743915) Homepage
    Linux: Creating .NET C# Applications for Linux

    And tune in tomorrow for our feature on how to mount a Vespa motorbike engine in your Ferrari.
  • Not for me (Score:3, Interesting)

    by vandan (151516) on Friday October 07, 2005 @09:16PM (#13744186) Homepage
    If the goal is to make it easier for .NET developers to jump ship, then I suppose that sounds OK ... kinda. But it also makes it easier for Linux developers to write .NET stuff, and I don't feel so good about that.

    If people want an open-source, cross-platform environment, then there are plenty to go around. I use Gtk2-Perl, and I've written a number of Perl modules to assist database developers to connect their DB backend with their GUI. See http://entropy.homelinux.org/axis_not_evil [homelinux.org]

    Gtk2-Perl isn't the only option out there. For Gtk2 ( which runs on Linux, Windows, OS-X, and an impressive number of other platforms ), there are bindings for PHP, Python and Ruby. That covers what most people are recommending for RAD these days.

    Then there's QT. I haven't had much to do with it, but there are bindings for all the above languages and more.

    There's Java.

    I don't see the point in mimicking .NET, especially when Microsoft have such a war-chest of lawyers. Why not concentrate on our technology, and if people want to move to it on it's merits, they will. It's much more likely they'll see the merits if we present them with our technology, rather than an imitation of Microsoft's.

    And remember, as a wise man ( OK, it was Dubya, but anyway ) once said:

    We can outcompete with anybody
    • Re:Not for me (Score:3, Informative)

      by cr@ckwhore (165454)
      Actually, it's not "mimicking" anyting ... .NET is Microsoft's implementation of the Common Language Infrastructure, which is an ECMA (international) standard. Microsoft co-sponsored the submission of the CLI along with other companies, but it is by no means a proprietary "Microsoft thing".

      Mono happens to be a 'nix implementation of the CLI. Again, this is not "mimicking" anything... it's a native implementation of a recent standard. It also happens that the C# (also specified in the ECMA submission) imp

The only function of economic forecasting is to make astrology look respectable. -- John Kenneth Galbraith

Working...