Slashdot Mirror


Practical Mono

hisham writes "At first glance, you would think that Practical Mono is yet another introductory book about C# and Mono, but all of that drastically changes the moment you look at the book's table of contents and see the variety of topics it covers and the lengths to which the author goes to describe the more important details." Read the rest of Hisham's review. Practical Mono author Mark Mamone pages 402 publisher APRESS rating Excellent reviewer Hisham Mardam Bey ISBN 1-59059-548-3 summary Takes the readers from an introduction to .NET, Mono, and C# to their most advanced features using a real world approach.

The book gently eases the into what .NET and Mono are giving a historical background for each. What I found very interesting is the fact the author takes time to explain about .NET in the real world, and ties this to Mono to give the reader a clear idea of how any why Mono was started and what the reader can do to participate in this effort.

Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop. This gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds.

Having gotten the user all set up and ready for action, the book then moves on to introduce the author to C#. This is a subtle introduction that eases the user into what C# is and how the language works. Chapter 3 comes in very handy when you want to brush up on your C# skills or are new to C#. the author continues to give the reader more information about C# in a more detailed fashion in Chapter 4, "Learning C#: Beyond the Basics". This chapter goes into some nitty-gritty detail about C# classes, exceptions, and all round more advanced C# topics.

Chapter 5 moves into the more exotic areas of .NET that deal with the CLR, IL, assemblies, and the general assembly cache (GAC). This chapter is very helpful if the reader wishes to acquire in depth info of how the .NET environment works. Other discussed topics here are garbage collection, application domains, and the class library. This is one of those chapters that make this book an excellent recommendation for both novice and advanced users of C# and .NET.

The first 5 chapters have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other. They have also explained C# and introduced the reader to its syntax and advanced features. Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.

Chapter 6 goes right into the heart of on of .NET's most desired features, Windows Forms. The author explains what Windows Forms is, what GDI+ is, how to implement a good user interface, and gives real world examples of how to do all of that introducing the reader to Windows Forms' various controls. A nice section that is mentioned in several chapters is the "Whats New in Version 2.0?" section that informs the reader about what to expect in the new version of .NET in regard to that particular topic.

Because the author knows that not all people will be using Windows Forms to design their graphical interfaces, he goes into GTK+ and Glade and takes up a complete chapter explaining what they are and how they can be used instead of Windows Forms. Chapter 7 serves as a gentle introduction to the GTK+ and Glade world, and makes sure the uses knows how to pick between Windows Forms and the GTK+ / Glade combination.

After finishing Chapter 7, the user has a very good idea about how to design a complete graphical user interface using freely available tools (Windows Forms in Mono, and GTK+ / Glade using GTK# in Mono). The author now moves on to describe ADO.NET, a heavily used feature of .NET which is also available through Mono. This chapters enlightens the reader and explains all aspects of using ADO.NET in applications to connect and utilize databases. The particular example is geared towards installing MySQL. Explanation is given both for Linux and Windows, which also shows that Mono can be used as a .NET alternative on Windows.

Since XML is constantly referred to as a "hot topic", the author does not let us down and dedicates a complete chapter to discussing XML and Mono. If the reader is new to XML, then he / she will be pleased to find out that an explanation to what XML is and its history is given at the beginning of Chapter 9: Using XML. The chapter deals with looking at XML documents and traversing them. The author shows us a real world example by applying this knowledge to create an RSS feed class library.

Chapter 10 is for those of us with enthusiasm for networking and remoting. This chapter, "Introducing Networking and Remoting", starts by explaining what networks are and their general concepts, then dives into how we can do networking related programming in .NET. We apply this knowledge later on and create an RSS feed handler.

Another heavily used feature in .NET is ASP.NET. Chapter 11: Using ASP.NET, explains what ASP.NET is, how it works internally, and how to use it. This chapter shows the reader how to set up a web server for ASP.NET (both the XSP web server and an external web server) and moves on to show the user how a web service can be written. A lot of readers will find this chapter very useful as web services seem to be an increasing and expanding field right now.

Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads. Advanced readers will particularly like this chapter as it handles some of the "harder" more demanding features of .NET.

This book not only serves as a great learning experience that shows you how things are done in the real world, it also as a general good reference for C#, .NET, and Mono and several of their features. Definitely one you should have in your bookshelf right by your work desk.

I enjoyed reading Mark's book, and I would recommend it to people that are either getting into .NET / Mono or have some experience but would like to further it."

You can purchase Practical Mono from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

110 comments

  1. Nope... by connah0047 · · Score: 5, Funny

    At first glance, you would think that Practical Mono...

    No...at first glance, I think this is a book about how to get the kissing disease easier.

    1. Re:Nope... by AKAImBatman · · Score: 1, Funny

      Shame on you. I can't believe you would turn down such an opportunity. Especially when the first step is, "Find a girl!" :-P

    2. Re:Nope... by Z0mb1eman · · Score: 1

      No...at first glance, I think this is a book about how to get the kissing disease easier.

      Learning C# will make it more likely to kiss girls?

      I am SO confused.

      --
      ClutterMe.com - easiest site creation on the Net. Just click and type.
    3. Re:Nope... by Anonymous Coward · · Score: 0

      No...at first glance, I think this is a book about how to get the kissing disease easier.

      Gramatically, shouldn't it be:

      I think this is a book about how to get the 'kissing disease' more easily.

    4. Re:Nope... by Anonymous Coward · · Score: 0

      No...at first glance, I think this is a book about how to get the kissing disease easier.
      A perfect book for the slashdot crowd. Who is gonna write it? None of us are eligible.

    5. Re:Nope... by Liveandletlive · · Score: 0

      Why do you hate .NET so much?

      --
      I know the world exists because I exist.
  2. Waynes World Quote by TheRealMindChild · · Score: 4, Funny

    "Once, I thought I had mono for an entire year. Turns out I was just really bored"

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
  3. Very basic indeed by DoofusOfDeath · · Score: 4, Funny
    I see that this is book is of industry-standard quality, then:
    Having gotten the user all set up and ready for action, the book then moves on to introduce the author to C#.
    1. Re:Very basic indeed by Anonymous Coward · · Score: 0

      *Author* of a Mono program, perhaps?

  4. I prefer stereo by Anne+Thwacks · · Score: 0

    Subject says it!

    --
    Sent from my ASR33 using ASCII
    1. Re:I prefer stereo by nurb432 · · Score: 2, Funny

      So buy 2 copies.. geeesh..

      --
      ---- Booth was a patriot ----
  5. Practical Mono? by Black+Rabbit · · Score: 2, Funny

    That sounds along the same lines as Practical Herpes!

    1. Re:Practical Mono? by Anonymous Coward · · Score: 0

      It's funny, at work we name all our Wintendo machines after STD's.

      One of our domain controllers is herpes, another is aids, etc.

    2. Re:Practical Mono? by BigGerman · · Score: 1

      another book from Developer-to-Developer series?

  6. A note to Linux users. by gasmonso · · Score: 4, Informative
    "If you are an experienced C# developer looking to move to Mono for Linux support, this is NOT the book for you. It is a very basic level introduction to development using Mono and C#. It also contains several editing and content mistakes including misplaced screen shots, and simple factual errors such as describing INSERT and UPDATE as DDL and SELECT as DML (they are all DML). Frankly I expected more from APress."

    This was taken from a review on Amazon that people may find useful.

    http://religiousfreaks.com/
  7. MonoDevelop? by aCapitalist · · Score: 1, Insightful

    Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop.

    Bahaha. Mono is a deployment option for windows developers. Nobody in their right mind uses MonoDevelop when they can use VS.NET

    1. Re:MonoDevelop? by Anonymous Coward · · Score: 0

      you're right. why would anyone use monodevelop on windows when they can use what monodevelop is based on.

    2. Re:MonoDevelop? by nanter · · Score: 1
      Not always.

      We are using Mono for an internal Research and Development effort where we are operating under a few constraints:

      1. As cheap as possible.
      2. Open source where possible.
      3. Relevant to our programs that have commercial solutions available to them and where acquisition decisions aren't under our control.

      What that means is that for our R&D effort, we are not going to be able to use VS.NET, but we have programs that will require our development team to be familiar with C# and the .NET framework.

      THAT is where Mono comes in. And for our purposes, THAT is where MonoDevelop comes in.

    3. Re:MonoDevelop? by jilles · · Score: 1

      Particularly because running the two on the same platform is a bit hard. Mono runs on windows, sort of, if you want to. But forget about getting any of the mono tools working on windows. And lets be fair, most people currently developing on visual studio are unlikely to run anything else than windows. So even if they wanted to, there's no way for them to even try out monodevelop short of installing linux.

      --

      Jilles
    4. Re:MonoDevelop? by aCapitalist · · Score: 1

      Yes, and you develop in VS.NET and deploy on Mono. Rational people don't use that utterly, craptastic MonoDevelop shit for development - unless you're some deranged open source jihadist.

    5. Re:MonoDevelop? by nanter · · Score: 1

      We don't have a choice. We don't have money for purchasing Windows and VS.NET licenses on our R&D effort, yet we need to get experience with .NET.

    6. Re:MonoDevelop? by jav1231 · · Score: 1, Funny

      "Since a lot of people using Mono might be coming from a traditional .NET environment"
      Because most of the Linux community considers Mono a waste of resources and cohorting with Satan...

    7. Re:MonoDevelop? by heanol · · Score: 1

      http://msdn.microsoft.com/vstudio/express/default. aspx Price: Visual Studio Express Editions--Free for 1 year SQL Server Express Editions--Free

    8. Re:MonoDevelop? by nanter · · Score: 1
      Unfortunately that's not available to us as we are a for-profit corporation.

      Not to mention that we don't have any Windows boxes available to use for this effort. We're using all Fedora Core stuff.

    9. Re:MonoDevelop? by socalian45678 · · Score: 1
      4. Can I use Express Editions for commercial use?

      Yes, there are no licensing restrictions for applications built using the Express Editions.

      From the faq

  8. Thirst for knowledge by digitaldc · · Score: 1

    Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.

    Whoa, for a minute there I thought this was a book about WINE.

    --
    He who knows best knows how little he knows. - Thomas Jefferson
  9. Is it just a .Net book? by cyberjessy · · Score: 5, Informative

    From the review, it seems that the book deals with very few Mono specific stuff, like XSP and gtk#. Everything else is common to both MS .Net and Mono. Which makes me wonder, what is the real worth of buying this book. There are so many excellent books available for .Net (Microsoft Press has some excellent titles. Generally I have found MS Press books to be excellent on MS topics), which will take you through the basics and even to tricky details of the CLR and IL. The remaining Mono specific stuff can be gathered from the Internet.

    So why buy this book? I would have bought one, if it talked more about Mono specific stuff. Like compatibility problems, challenges when building for .Net and Mono, more Linux specific stuff etc etc.

    --
    Life is just a conviction.
    1. Re:Is it just a .Net book? by CyricZ · · Score: 3, Insightful

      It could very well just be an attempt to squeeze more sales out of an existing .NET book by including a small amount of Mono-specific information.

      Then again, such extensions may not be overly practical. Developers writing software for the general public will often want their applications to also run on Windows, and hence they will ignore the Mono-specific capabilities.

      But also, if it takes much effort to move programs from .NET to Mono, many might just stick with targetting .NET. Others might say to hell with both, and use Java instead.

      Indeed, I would not purchase this book if it is 95% generic .NET material, and 5% Mono-specific. It'd be far better to get a book that is 100% Mono-specific, with perhaps a page or two introduction to .NET (and recommendations on books covering only .NET).

      --
      Cyric Zndovzny at your service.
    2. Re:Is it just a .Net book? by MobyDisk · · Score: 1

      Because if I want to learn to program in .NET, why do I have to start with .NET then cross over to Mono? Why not learn on Linux to start with?

    3. Re:Is it just a .Net book? by hugget · · Score: 1

      For you people looking for Mono-specific stuff, accu.org seems to "highly recommend": Mono - a Developer's Handbook by Edd Dumbill & Neil Borstein http://www.accu.org.nyud.net:8090/bookreviews/publ ic/reviews/m/m003690.htm (CoralCDN:ized link)

    4. Re:Is it just a .Net book? by ChunderDownunder · · Score: 1

      Indeed, an audience for this book would be existing programmers who are curious about .NET as a platform. Mono is as good as a choice as any to learn the concepts of CLR without Windows specifics. Further a book like this might help answer the viability of mono/.NET as a cross-platform alternative to Java.

      No need to run Windows, just apt-get install and within a few minutes you're running your first C# application. I hear Eclipse even has a C# plugin...

  10. Parent nick says it! by smittyoneeach · · Score: 1

    Aftuw he suwvived Pwacticaw Mono-nucweosis, what kiwwed Ewmer Fudd?

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  11. Re:Save $7.00 (17.5%) by Anonymous Coward · · Score: 0

    Why's this modded down? You DO save $7 at Amazon over B&N!

  12. What a "cosmic" review... Man... by GReaToaK_2000 · · Score: 0, Flamebait

    I liked the info in the book review. It provided what is in the book, but geesh!!!

    It felt like I was reading something by (the character)David Van Driessen.

    Catch that ref if you can. :-D
    He heh!!

  13. DEAR GOD, What the hell does this even SAY? by deathbyzen · · Score: 0
    The book gently eases the into what .NET and Mono are giving a historical background for each. What I found very interesting is the fact the author takes time to explain about .NET in the real world, and ties this to Mono to give the reader a clear idea of how any why Mono was started and what the reader can do to participate in this effort.

    Two glaring grammatical mistakes that made me not read the rest of the article. That is ridiculously bad.

    1. Re:DEAR GOD, What the hell does this even SAY? by CyricZ · · Score: 2, Insightful

      Hisham Mardam Bey, the reviewer, may not be a native speaker of English. While that doesn't excuse such obvious errors by any means, it may help explain why they are present. But don't let errors like that prevent you from reading what he has to say about this book. If in the end you disagree, that is fine. But to not read the review at all is a mistake.

      --
      Cyric Zndovzny at your service.
    2. Re:DEAR GOD, What the hell does this even SAY? by milimetric · · Score: 1

      i agree with you, but at the same time i disagree. Strictness in grammar and spelling is a lot more important than people think. Without a strict powerful language, you have no defense against social and political illness. Look at history.

  14. question about native code by Anonymous Coward · · Score: 1, Interesting

    Here's a practical Mono question:

    If I need high performance out of something in C#/.Net, I can always write it in native C++ and package it up as a COM object. What would be an analogous concept in Mono? How does the Mono framework support native, unmanaged code?

    1. Re:question about native code by ZenShadow · · Score: 1

      (disclaimer: I haven't actually done this...)

      I imagine you'd use P/Invoke, just like you do under Windows. COM is no longer the preferred way to integrate managed/unmanaged code.

      --S

      --
      -- sigs cause cancer.
    2. Re:question about native code by rootmon · · Score: 1

      Mono has support for P/Invoke: // foo.cs // build with "mcs foo.cs -unsafe"

      using System;

      using System.Runtime.InteropServices;

      public class foo {

      [DllImport ("libc", EntryPoint="getenv")]
      private static extern string getenv(string s);

      public static void Main ()
      {

      Console.WriteLine ("Your home directory is {0}\n", getenv("HOME"));

      }

      }

      --
      "As flies to the wanton boys are we to the gods; they kill us for sport." - William Shakespeare, King Lear
    3. Re:question about native code by Decaff · · Score: 1

      If I need high performance out of something in C#/.Net, I can always write it in native C++ and package it up as a COM object.

      I don't see the point. C# on .NET is not that slow. I could understand needing to use native C++ if you were running something that was several times slower, but there really isn't that much difference between C# and C++. The use of unmanaged code is to allow legacy C++ code to run on .NET, and to allow all sorts of 'unsafe' things to be done. Performance is not a good reason to do this.

    4. Re:question about native code by Anonymous Coward · · Score: 0

      I beleive f-spot uses a C libraries via PInvoke to gain speed in rendering/dealing with images.

  15. Is there any Mono/C#/.Net book... by Anonymous Coward · · Score: 0

    That honestly discusses the influence of Java on C# (which is pretty huge...), and has a discussion why you would choose to develop for .Net rather than JVM?

    Cause most books I've glanced through seem to be remarkably silent on those questions.

  16. Re:Save $7.00 (17.5%) by __aaclcg7560 · · Score: 3, Insightful

    It wouldn't gotten modded down if the link was linked directly to the book. Instead, the link has the parent's info for the Amazon Associate program where a percentage of every purchase goes to the parent. If a lot of /. goes stampeding into buying the book, that's a tidy fortune for the parent.

  17. "The first 5 chapters. . . by kfg · · Score: 1

    ". . . have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other."

    In the same manner that the first 5 chapters of The Feynman Lectures on Physics makes one very knowledgeable about physics.

    Teach Yourself Programming in Ten Years

    KFG

  18. Re:Save $7.00 (17.5%) by AdamWeeden · · Score: 1

    If a lot of /. goes stampeding into buying the book, that's a tidy fortune for the parent.

    And I think the question that comes to mind is "So what?" If the price stays the same between buying it through him, or buying it straight from Amazon, why would it matter?

    --
    I was quoted out of context in my autobiography...
  19. Re:Save $7.00 (17.5%) by Seiruu · · Score: 1

    It may have something to do with objectivity. A "reviewer" that can make money if people buy the book. Is that honestly the kind of reviews you want to have to decide whether a book is good or not?

    Personally, I wouldn't read a Bill Gates review on Linux to decide if linux is good or not.

  20. Mono? A dead product. by broward · · Score: 3, Funny
  21. Re:3 Word Summary of Practical Mono by Decaff · · Score: 2, Insightful

    uhh no. Java sucks.

    Nothing like a good reasoned technical comment to educate Slashdot readers, eh?

  22. Re:3 Word Summary of Practical Mono by Anonymous Coward · · Score: 0

    Uh no. You suck.

  23. Re:3 Word Summary of Practical Mono by filesiteguy · · Score: 1
    Ahh, but Java has nothing on Mono or C#.

    Just look: In Java you type..

    class HelloWorld {
    public static void main(String[args]);
    system.out.println( "Hello World" );
    }


    ...whereas in C#/Mono you write...

    class HelloWorld {
    static void main() {
    System.Console.WriteLine( "Hello World" );
    }
    }

    ...the two couldn't be further apart! Look, there's more curly bracket thingy's in C#! No way you can substitute Java for c# / Mono.

  24. Re:3 Word Summary of Practical Mono by Anonymous Coward · · Score: 0
    Nothing like a good reasoned technical comment to educate Slashdot readers, eh?

    If you were new here, such optimism could be excusable!

  25. Re:3 Word Summary of Practical Mono by DigitlDud · · Score: 1

    One follows its own naming conventions, the other doesn't. =)

  26. Re:Save $7.00 (17.5%) by Anonymous Coward · · Score: 0

    That argument makes absolutely no sense. The original poster simply provided a very objective link to the book, which had a discount over the link provided by /. The only issue here is money, where people are so obsessively involved with material goods that they are absolutely unwilling to give a % commission to the original poster, even though s/he took the time and effort to provide that information (for which the commission should be an appropriate reward).

  27. If These Are Advanced Techniques... by CowboyBob500 · · Score: 1

    Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads.

    Then what the hell are the basics? OK, I can just about let reflection pass, but a developer doesn't deserve to get above the rank of Junior or Beginner until they understand threads and performance tuning.

    Bob

  28. I thought I was working with MONO once.. by ThePuceGuardian · · Score: 0, Redundant

    .. as it turned out, I was just really bored.

  29. Best Spatial Ever by Whiteox · · Score: 0, Offtopic

    And I thought it was about Mono Hi-Fi.
    No joke! Many years ago I had the pleasure of listening to a high end valve amp (Radford) hooked up to a Fons turntable, listening to (of all things), Cowboy music, all in glorious mono and the sound stage from the modified AMW speakers (and the submarine battery cables used for speaker wire) was so realistic, so 3D that 'stereo' sounded artificial.
    Must of been the direct to disc cut on the vinyl.
    So much for 5.1 sound.!

    --
    Don't be apathetic. Procrastinate!
  30. Help with definitions by rpg25 · · Score: 1

    This review is interesting, but very hard for the non-.NET indoctrinated to follow. Specifically, many terms go undefined, which is a particular problem for the review of a book aimed at MONO beginners. For example, what are:
    CLR
    IR
    GAC (I know what it stands for, but what does it do?)
    Since Chapter 7 is apparently about ADO.NET, it would be nice to give the reader a little sense of what this is.

    1. Re:Help with definitions by andrewzx1 · · Score: 1

      Read the friendly book, my friend, that is why it was written!

    2. Re:Help with definitions by carlcub · · Score: 1

      CLR = Common Language Runtime. Basically, the .Net runtime environment. The Java equivalent is the JVM (Java Virtual Machine.)
      IL = Intermediate Language. This is the code generated by .Net compilers, and executed by the CLR.
      GAC = Global Assembly Cache. This is a special area for system-wide assemblies. They don't need to be in the same directory as the main assembly for a given program. Assemblies in the GAC also automatically recieve full trust.

  31. They aren't alternatives. by Debiant · · Score: 1

    I think the problem is that not many people have to ponder that question(JVM vs. .NET).

    Java's strength is that it's crossplatform and fares well with distributed systems.
    C# that it's on Windows, part of .NET, Java/C++ like and runs on MS servers as in graphical applications too.

    People who have to ponder which is better, propably either don't really need Java and those who need Java propably don't need or can't use C#.

    Only reason people really would need C# is propably if working on Windows Servers or doing Windows GUI's. If you need crossplatform compatability and scalability, you're better of with Java but forget the fast graphical application witht it.

    It might be diffent thing if .NET were really cross platform with MS support, but it isn't. Too bad for Microsoft, good for Sun and Java.

    --
    Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
    1. Re:They aren't alternatives. by Decaff · · Score: 2, Interesting

      If you need crossplatform compatability and scalability, you're better of with Java but forget the fast graphical application witht it.

      Why? These days Swing is directX or opengl accelerated, and very well integrated with the Windows desktop and system. If you want something even more native use the cross-platform SWT toolkit.

    2. Re:They aren't alternatives. by Josh · · Score: 1

      A while back I tried the Java Qt bindings and thought they were pretty nice. So if interface
      portability is only required for Unix/X11, Win32, and MaxOSX that might be a good alternative as well.

    3. Re:They aren't alternatives. by Anonymous Coward · · Score: 0

      Swing is still slower than Windows.Forms, is NOT as integrated, lacks a decent Forms designer and because Java's inherant lack of basic language features like events and delegates, event-driven GUI is near impossible as code is unnecessarily bloated and unintuitive. This and many more reasons is why there are still no mainstream Windows applications based on Swing.

    4. Re:They aren't alternatives. by Decaff · · Score: 1

      Swing is still slower than Windows.Forms, is NOT as integrated, lacks a decent Forms designer and because Java's inherant lack of basic language features like events and delegates, event-driven GUI is near impossible as code is unnecessarily bloated and unintuitive. This and many more reasons is why there are still no mainstream Windows applications based on Swing.

      This is wrong in so many ways it is hard to know where to start. However, I shall try and be brief. First, Swing can be as fast as anything on windows because on modern JVMs it can have direct access to accelerated graphic functions, just like Windows components. Secondly, it is highly integrated with the operating system (take a look at Java Native Desktop Components). Thirdly, there have been first-rate Java form designers for years. The latest GUI tools on NetBeans are some of the best ever. Fourthly, Java has had events in almost since it started. Delegates are a highly debated language issue - most GUIs don't have them. Finally, (and this completely wrecks your argument) there are, of course, mainstream applications that run on Windows that use Swing.

      The personal and small business financial package Moneydance has been highly rated - even by the Washington Post. It is a Swing application.

      The highly successful P2P program LimeWire is a Swing application.

      The Yahoo! Site Builder is a widely used program. It is a Swing application.

    5. Re:They aren't alternatives. by davidwt · · Score: 1

      Yes, and what useful office/business applications are written in SWING? I've still yet see a java app launch at anywhere near the speed an equivalent Windows app does (even the second time it gets launched and may have been cached). Eclipse is one of the slowest IDE's out there. I would venture it is slower than Borland's (though, that may be debatable :) ).

    6. Re:They aren't alternatives. by Decaff · · Score: 1

      Yes, and what useful office/business applications are written in SWING?

      Look back at my post. Moneydance is a business application.

      I've still yet see a java app launch at anywhere near the speed an equivalent Windows app does (even the second time it gets launched and may have been cached).Eclipse is one of the slowest IDE's out there. I would venture it is slower than Borland's (though, that may be debatable :) ).

      Open Moneydance under Windows. Opens in a few seconds. So do other apps such as JEdit. You can hardly compare IDE speeds as a basis for typical application performance.

  32. Re:3 Word Summary of Practical Mono by jsight · · Score: 2, Interesting
    Another difference is that your Java version doesn't compile. The comparison should be:
    class HelloWorld {
    public static void main(String argv[]) {
    System.out.println( "Hello World" );
    }
    }
    Compared to:
    class HelloWorld {
    public static void Main() {
    System.Console.WriteLine( "Hello World" );
    }
    }
    Same number of curly braces. :)
  33. Re:3 Word Summary of Practical Mono by Anonym0us+Cow+Herd · · Score: 1

    It seems to me that you left out some curly brackety thingies in the Java version.

    --
    The price of freedom is eternal litigation.
  34. Getting a dev environment running by chiph · · Score: 1

    ..is my big hassle with it. I installed SuSE 9.3 on a spare machine (yes I know v10 is out now), and nothing I did seemed to be able to get Mono to compile. I followed all the help/man pages, both on the mono site as well as Novell's site. Google, both web and newsgroups, was no help either.

    Maybe once I get some free time I'll wipe the machine and try again with SuSE 10, since I've heard that the Mono packages come bundled with it. I'll cross my fingers and hope that all the dependencies get satisfied by the installer.

    If that doesn't work, I suppose I could install it on Windows. But, what would the point be of doing that?

    Chip H.

  35. Obligatory Simpson Reference by geekwithsoul · · Score: 0, Offtopic

    Mono . . . Aw, it's not for you. It's more of a Shelbyville idea.

    1. Re:Obligatory Simpson Reference by geekwithsoul · · Score: 1

      Whoever modded me down as offtopic needs an attitude adjustment, or if humourous asides posted in /. are now offtopic, we might as well shut the damn server off now as that's 95% of the posts.

      Guess someone doesn't like Mondays :)

  36. What a terribly written review! by pdxChris · · Score: 0, Flamebait

    Paragraph 1 "a clear idea of how any why Mono was started" - that would be a clearer idea than I get about what this sentance was supposed to mean.

    Paragraph 2 "gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds." Is this ABOUT the reader ("THEIR tools") or TO the reader ("YOU start off"... on more solid grounds than this shaky, shifting sentance structure)?

    Paragraph 3 "introduce the author to C#" - I'd hope the author was already introduced, so that the author could introduce the READER to C#.

    Paragraph 4 "general assembly cache (GAC)" No, it's the Global Assembly Cache, at least in Microsoft's version of .Net. Just checked (in less than 60 seconds): it's "global assembly cache" in Mono as well.

    Then a few somewhat coherent paragraphs, until we get to:

    "makes sure the uses knows how to pick"... As the USER, I'd like to pick the USES of the software.

    "connect and utilize databases"... Utilize literally means, "put to use for a purpose that is not the intended design." You can USE a screwdriver to turn a screw, or UTILIZE a screwdriver to pound in a nail. You can USE a database to create, select, update, and delete information. You can UTILIZE a database to fill out a marketing buzzwords list or take up space on a disk.

    "if the reader is new to XML, then he / she will be pleased" There's already a way to say this well in English: "Readers new to XML will be pleased." I'd be pleased to read a review that looked more like English, less like XML.

    If the quality of the review represents what the book is about, I'd prefer to not waste my time with book or subject matter. Unfortunately, I can't get back the time I wasted reading this incredibly lousy review.

    1. Re:What a terribly written review! by Anonymous Coward · · Score: 0
      Utilize literally means, "put to use for a purpose that is not the intended design."

      Huh?

      My references define 'utilize' basically as a synonym for 'use' with the added nuance that it usually implies to put something to practical use.

  37. Mono 'is cross-platform' by mythz · · Score: 1

    I was suprised when I got my ASP.NET application running without changes on my Linux Web Server. It turns out that most of .NET is implemented except for omissions like 'Enterprise Services' (Active Directory) in its place they have an LDAP namespace which you can use to talk to any LDAP-compatible directory (i.e. Novell Directory, Open LDAP, etc)

    But as a webdeveloper using ASP.NET you can consider it 'cross-platform', ASP.NET 1.1 is fully compliant and most of ASP.NET 2.0 is though you have to use the 'gmcs' compiler to currently use C# 2.0 features.

    Also being a Java developer, using XSP to develop with is unfamiliary productive, it boots in a fraction of a second - a lot less than the 8 seconds for my basic tomcat installation.

    mod_mono has benefits as ASP.NET can be run as a first-class citizen (similar to perl,php,etc) on apache without needing to open any other ports and without needing to run mod_proxy/mod_jk services.

    There is a lot to like about mono. C# is a far superior language than Java, I can't see how people can think otherwise. Typed Exceptions is the only 'feature' missing (read: annoying code-bloat) and that is by design. C# features include: Properties, Indexers, Delegates/Events, Partial classes, ref/out params, Operator Overloading.

    Although one of my favourite things about mono is that it can run Boo (http://boo.codehaus.org/) on Linux. It is an advanced agile, statically-typed agile language that has Python's power and brevity with C# performance. It can also run in interactive mode which efectively gives you a scripting language productivity with a compliled language performance - the best of both worlds.

    Personally coming from a Java web-developer perspective I'm not a fan of ASP.NET webforms for all situations, (Its really productive for Intranet applications) but for my Internet applications I still prefer to generate XHTML/CSS so I need servlet style control, its good to know that with .ashx files and the IHttpHandler interface you have them out of the box.

    Also Mono is 'Open Source' (In contrast to other popular platforms :), as a result it is installed by default in Fedora.

  38. Not (necessarily) poorly written by faboo · · Score: 1

    but poorly edited. All of the points you make are based on editing mistakes, not writing mistakes per se.

    Given that the review was largely an outline of the topics covered in the book, it could stand some rewriting too, but try for some more positive sounding feedback and correct use of English all `round, eh? :)

  39. Re:3 Word Summary of Practical Mono by Anonymous Coward · · Score: 0

    u suck

  40. Re:frist mneh!!! by Anonymous Coward · · Score: 0

    I love it!!

  41. Re:Save $7.00 (17.5%) by Anonymous Coward · · Score: 0

    Ok, now this guy gets modded insightful for a not so insightful comment, and with little justification for his points at that. Sigh, mods, get your acts together.

  42. Re:Save $7.00 (17.5%) by Eric+Damron · · Score: 1

    It has to do with ethics.

    --
    The race isn't always to the swift... but that's the way to bet!
  43. Performance good enough for games? by tepples · · Score: 1

    The use of unmanaged code is to allow legacy C++ code to run on .NET, and to allow all sorts of 'unsafe' things to be done. Performance is not a good reason to do this.

    So would a 3D video game's graphics or physics run acceptably fast in managed code (e.g. C# or managed C++) compared to unmanaged code?

    1. Re:Performance good enough for games? by be-fan · · Score: 1

      People keep bringing up game programming, but its a poor example. Games are usually not written to be maintainable over the long term, and as such tend to use very ugly code to wring the last bit of performance out of the hardware (though this is getting more rare now as the GPU becomes more of a bottleneck than the CPU). If you're doing processor-specific scheduling, asm inner loops, etc, C# won't offer you the same level of performance. However, C# will get you most of the way to the same level as clean, portable C code built with some care towards performance. For most tasks, even many performance intensive ones, that's enough.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:Performance good enough for games? by Anonymous Coward · · Score: 0

      Games for the PC are not designed to 'wring the last bit of performance' out of the hardware. They haven't been since the days of DOS. Most of the code in a game engine is pretty easily maintained, and isn't designed with efficiency in mind. Do you know why? Because most of the code is inconsequential to the final product's performance. What's highly-optimized are the algorithms and the implementation used for performance critical sections of the code. This is most-often the rendering pipeline, with the AI and mechanics following. Using C# means losing control of memory management. Life-time, locality, overhead, and allocation complexity. It also means dealing with CLR startup overhead, and leaves performance on 64-bit targets in the hands of Microsoft (.NET 2.0 64-bit is noticeably worse on AMD64). The only saving grace of the CLR vs. Java is that when it comes time to interface the high-performance code you've had to write in C, at least you don't have to deal with JNI.

    3. Re:Performance good enough for games? by Decaff · · Score: 1

      So would a 3D video game's graphics or physics run acceptably fast in managed code (e.g. C# or managed C++) compared to unmanaged code?

      Yes. Much of the 'management' can be optimised out by code analysis at runtime. I have seen reports of C# physics application running pretty close to C++ speed.

    4. Re:Performance good enough for games? by Decaff · · Score: 1

      Using C# means losing control of memory management. Life-time, locality, overhead, and allocation complexity.

      Of course it doesn't. All this means is that you lose control of this using pointers to 'raw memory' (which, of course, is never 'raw' under a well-managed OS). You can have full control of allocation, life-time and management of objects and storage within managed areas.

      The only saving grace of the CLR vs. Java is that when it comes time to interface the high-performance code you've had to write in C, at least you don't have to deal with JNI.

      Of course, all these arguments are made redundant by the fact that there are now high-performance 3D games written in managed languages like Java with no call-outs to user code in C for performance. Graphical performance is available by optional use of DirectX or OpenGL.

      The argument that everything needs to be hand-optimised and managed is just starting to look rather old fashioned and stale....

    5. Re:Performance good enough for games? by Anonymous Coward · · Score: 0

      You can have full control of allocation, life-time and management of objects and storage within managed areas.

      No you can't. Using a custom allocator in C# would be a pain in the ass to such an extent as to boggle the mind. This has jack-all to do with pointer arithmetic, btw.

      Of course, all these arguments are made redundant by the fact that there are now high-performance 3D games written in managed languages like Java with no call-outs to user code in C for performance.

      Like what? Are you going to impress me with some Quake 2 port with weak performance that depends on JNI to issue OpenGL commands? Or maybe some game that doesn't require optimization because it could be safely written in VB4?

      The argument that everything needs to be hand-optimised and managed is just starting to look rather old fashioned and stale....

      Very little game code is hand-optimized. Only the performance critical sections, you illiterate twit. As a Java web homo, I'm sure you've had a lot of experience working on 3D games.

    6. Re:Performance good enough for games? by Decaff · · Score: 1

      No you can't.

      Yes you can.

      Using a custom allocator in C# would be a pain in the ass to such an extent as to boggle the mind. This has jack-all to do with pointer arithmetic, btw.

      Who needs a custom allocator? You can allocate areas of memory. You can use them. You can free them when you like. Check the MSDN site - there is plenty of documentation.

      Like what? Are you going to impress me with some Quake 2 port with weak performance that depends on JNI to issue OpenGL commands?

      Well yes, I am. I don't accept your arbitrary use of 'weak performance', which is simply a phrase you are using without evidence to make a point. Others don't think it has weak performance. JNI is simply a way of calling OpenGL code. Are you implying in some strange way that major game writers don't use DirectX or OpenGL to get performance? Of course they do. Why shouldn't Java?

      Or maybe some game that doesn't require optimization because it could be safely written in VB4?

      No - there are other games. Tribal Trouble for example.

      Only the performance critical sections, you illiterate twit.

      Great way to argue! I guess this is what happens when people run out of facts.

      As a Java web homo, I'm sure you've had a lot of experience working on 3D games.

      Well, actually, you have a lot right here!

      I use Java, I write Web apps, and I am gay, so 'Java Web Homo' is pretty accurate!

      As for working on 3D games - no, but I have done 3D stuff in Java - molecular graphics, terrain contouring...

  44. Re:3 Word Summary of Practical Mono by be-fan · · Score: 4, Funny

    Arguing C# versus Java is like arguing about the color of the turd you stepped in.

    --
    A deep unwavering belief is a sure sign you're missing something...
  45. Want to try Mono? by beat.bolli · · Score: 1

    The Monoppix Project makes a Knoppix-based Live CD with the complete Mono development environment included. So if you want to give it a hassle-free try, go ahead!

    --
    Karma: none (due to not believing in reincarnation)
  46. A rose by any other name would smell like by drachenstern · · Score: 1

    brown

    green

    brown

    green

    ah, hell, it's just dog ####

    --
    2^3 * 31 * 647
  47. oh if only i had by drachenstern · · Score: 1

    MOD POINTS. SOMEONE PLEASE MOD THIS POST UP!

    okay, thanks, i needed that laugh.

    that was good.

    back to work now, i guess.

    --
    2^3 * 31 * 647
  48. VS.NET Express on one of the Windows emulators by davidwt · · Score: 1

    Has anyone tried running the VS.NET express on one of the Windows emulators for Linux? results?

    1. Re:VS.NET Express on one of the Windows emulators by socalian45678 · · Score: 1

      I've used it under VMware... it's kind of a hog, though.