Slashdot Mirror


Essential .NET, Volume I

hmobius writes "In a world where developers are baying for customers' attentions, very few people can claim to command that of the developer. Their blogs may be the only clue to the higher level of thinking that they operate at, creating the answers to why and when code works in addition to the perennial how. Whether he likes it or not, Don Box is one such system-meister. He may dislike writing books, but when one comes out, people pay attention and read. His first foray into text, Essential COM, was the book to explain how COM worked, and his latest, Essential .NET, takes the .NET Framework's Common Language Runtime (CLR), and does exactly the same." Read on for the rest of hmobius' review. Essential .NET, Volume One author Don Box with Chris Sells pages 400 publisher Addison Wesley rating 8/10 reviewer Dan Maharry ISBN 0201734117 summary Great in-depth look at the CLR, but not for developers aiming to better their skills.

After chapter one's history of the evolution from COM to the CLR, the book takes a bottom-up approach to the CLR, starting with a deep and detailed six chapter look into the core elements of the platform. Chapter two begins with assemblies, the programmatic units in the CLR, and the implications of their construction. We learn how they are versioned, loaded and built, and why therefore they may be written in as many .NET languages as required. There's real depth to the material here -- you really do touch the bottom of the abyss, so to speak -- but it's countered with occasional levity that keeps this a readable book instead of a dense reference manual. The same is true of all the text. To wit, there's even some irony; "To allow old dogs to avoid learning new tricks, there is finalization," he declares in the next section on the Common Type System.

It's here that we discover how different types and interfaces are distinguished from themselves and from one another, and how their variations and relationships are kept separate by the CLR. It's refreshing to note that the proverbial big picture is never very far away from the commentary. After taking time to explore the avenues for types and interfaces, Box notes that types themselves aren't very interesting until you start working with instances of those types, and we're off again working through another thirty pages on how object instances preserve a sense of identity, how they are cast into other types and how they incorporate themselves into the concepts of reflection and metadata. Only then do we look at the actual lifecycle of an object, its creation, modification and disposal. The attention to detail is great, and there's little ambiguity in the text, but with that comes a slowness to this section that may leave readers frustrated.

One recurring theme of the book is the idea that while there is a very proper way and set of rules for doing things, there will always be circumstances in application development which call for exceptions to be made to those rules and made possible by .NET. This is true at a small scale and, as chapters six and seven prove, at a large one too, covering as they do how the CLR calls and runs methods first on a single machine and then over a wire. How does the runtime treat methods called explicitly, implicitly through a delegate, asynchronously, or as a combination of the three? How do remote calls and types bridge whatever gaps they must cross and activate the remote objects and methods they're targeting? The answers are here.

Essential .NET reflects Box's pride in .NET and also his slight dissatisfaction with it. You can sense that while he knows .NET version 1 is an improvement over COM, it's not as good as it could be and things are still be done in v2 and beyond. Chapter eight's look at AppDomains and in particular its discourse on threading within and through AppDomains is a good example of this. Meanwhile, we finally come full circle in our investigation of the CLR, seeing how the assemblies we built in Chapter 2 are resolved and executed within AppDomains. Exceptions to rules being included, we also see how objects references are marshaled across AppDomains for inter-application communication if this is required.

The last two chapters look at wider topics around the CLR in as much detail as they can for topics which have entire books dedicated to just them. Chapter nine covers code-access security and chapter ten topics which are not of the CLR but which be can be addressed from within a .NET application: explicit memory management, using p/invoke to import COM methods from DLLs and so on. Both are concisely written and to the point, but unsurprisingly leave you feeling like there's more to these topics than is covered here. Chapter nine is a great and clear introduction to code-level security, for example, but you'll get a lot more out of Michael Howard's book, Writing Secure Code if you want to know more.

Essential .NET isn't an easy read but everyone should try to read it at least once. Focusing on the CLR itself and how it deals with the components of an application means that it truly is aimed at the community of .NET developers as a whole (including those building and using alternate implementations of the CLR). The provided code examples are expressed in C#, but this is incidental, really, and won't stop VB.NET, J# or any other developers getting a great deal out of this book.

This is a dense, complex volume that requires a fair amount of effort to understand and use, and to some extent this may put people off. On the other hand, it is so packed with great nuggets of information that they may be inspired to keep reading. Of course, there is the question of whether this book will actually improve your .NET development skills, but in riposte, you can honestly say that no volume details the CLR and its potential so well, and that this alone is worth the book's cover price.

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

58 of 286 comments (clear)

  1. Essential .NET? by James+A.+A.+Joyce · · Score: 2, Funny

    Isn't that an oxymoron?

    (Thank God I got that joke out of the way.)

    1. Re:Essential .NET? by tempny · · Score: 5, Insightful

      Jeez, as a technical community can't slashdotters resist making dumb jokes that have been made millions of times before and actually pay attention to the content of something that could be relevant to many of us? I want to see a first post that's not an easy and bad joke for once.

    2. Re:Essential .NET? by Foofoobar · · Score: 2, Insightful

      Well lets look at a few stats shall we? In 2001 according to vnunet, code red and nimda knocked out over 150,000 websites running on over 80,000 servers running IIS. The next month (according to netcraft.com statistics) approx 380,000 machines switched to Apache. Granted the vast majority of these could have just decided to run Apache on windows though this is extremely unlikely.

      In January of 2003, SQL Slammer took out over 30,000 machines running SQL (alot of them unknowingly thanks to Microsoft). Even Microsoft itself was taken offline due to the worm. Since then, Microsoft has lost 1% of it's server market to Apache. Again, everyone could be using Apache on Windows, though again, highly unlikely.

      I actually think I lowballed my stats by saying that 30% switched and obviously from the statictics, one can easily assume a much higher number but it is hard to take into consideration which are 'switchers' and which are new servers.

      Either way, the stats speak for themselves fairly well.

      --
      This is my sig. There are many like it but this one is mine.
  2. Slashbot book review. by rkz · · Score: 3, Informative

    This one is a great addition to the book shelf, you all know how to do certain things with .NET languages but this book clarifies nicely why you are actually doing it. Also, it introduces nice new .NET library/bytecode concepts which hardcore Visual basic 6/VC++ 6 users might not have come across before.

  3. Everyone? by Acidic_Diarrhea · · Score: 4, Funny
    "Essential .NET isn't an easy read but everyone should try to read it at least once."
    Alright, if you say so - I'll give it out as a Christmas present to everyone I know. I don't know how much my butcher will like it; he seems like more of a C# kind of guy.

    Get it? C-sharp? Because he uses knives...and they have to be sharp?

    The important thing is that I am happy with me.

    --
    I hate liberals. If you are a liberal, do not reply.
  4. Nice review by Acidic_Diarrhea · · Score: 2, Informative
    This is an excellent book. Richter's "Applied .NET Framework Programing" covers the CLR from the programmers point of view. Lidin's "Inside Microsoft .NET IL Assembler" is a detailed guide to IL, ilasm and the managed PE file format. Don Box's excellent "Essential .NET Volume 1" bridges the gap-- leveraging your knowledge of the CLS to present interesting internal, runtime aspects of the CLR.

    The first couple of chapters do rehash the metadata structure (that is, assemblies, modules and members), which anyone who has been using .NET should already have covered in the text you've been using up until this point. Obviously these chapters will prove tedious if you are already familiar with the concepts, however they are probably too terse to serve as a useful introduction. There are better texts for getting up to speed on that.

    However the latter two thirds of the book are excellent. I particularly enjoyed the precise, informative discussion of contexts, MarshalByRefObject, ContextBoundObject and method call interception. The book occasionally delves into implementation details of the Microsoft's CLR 1.0. These are extremely interesting and practically useful insights.

    That said, there are occasionally annoying typographical mistakes in the figures.

    --
    I hate liberals. If you are a liberal, do not reply.
    1. Re:Nice review by Anonymous Coward · · Score: 2, Interesting

      Here is the much awaited link to the amazon page from which this comment is stolen.

    2. Re:Nice review by pestie · · Score: 2, Funny
      ...leveraging your knowledge of the CLS to present interesting internal, runtime aspects of the CLR.

      CLS? That's easy.

      10 CLS
      20 PRINT "HI MY NAME IS MIKE!!"
      30 GOTO 20
  5. Skip this book by donald+knuth+troll · · Score: 3, Funny

    Donald Knuth will be writing THE definitive book on bytecode languages in TAOCP volumes 11-12. I don't see any reason to dick around with some amateur's feeble attempt.

    1. Re:Skip this book by Bodrius · · Score: 2, Funny

      To make it even better, it will all be implemented in three generations of his own bytecode languages, using interpreters and runtime systems implemented in his own 4 different assembly languages for 8 ficticious processors of his own invention, none of which has anything to do whatsoever with the inferior designs and implementations people use in the Real World (TM).

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
  6. Re:No interest by Tablizer · · Score: 5, Insightful

    nobody on Slashdot gives a RATS FUCKING ASS about fucking Winbloze shit!

    I don't like many aspects of the Microsoft Way either, but MS projects pay the bills better than OSS projects for some reason for me. If I was well-to-do, I might subsidize my slide over to OSS. But the tech economy is a wreck right now and I take what I can get. The demand for .NET is slowly growing, for good or bad. If you want your family to starve to serve the OSS cause, go ahead. But, I wanna eat, dude. the 90's are gone. It is grovel time.

  7. Re:If it's the essentials... by hmobius · · Score: 2, Informative

    Apparently volume 2 will deal with service oriented architectures. Web services, remoting.... that kind of thing

  8. uhh by nomadic · · Score: 4, Funny

    Their blogs may be the only clue to the higher level of thinking that they operate at

    Well let's not get delusions of grandeur here...

  9. No more spoilers in the reviews! by Anonymous Coward · · Score: 5, Funny

    Some of us had no idea CLR was going to replace COM. We all wanted COM to die a horrible death and now you've ruined the surprise. On top of that, you give away the fact that .NET is the first of a series. I suspect we won't get a real ending, but a cliffhanger that guarantees we show up for the sequel.

  10. Re:If it's the essentials... by HaloZero · · Score: 3, Funny

    Following volumes to cover Microsoft service pack updates and bug fixes.

    "Essential .NET, Volume XXIX - What NOT to do...."

    --
    Informatus Technologicus
  11. Re:While this review is not without merit by Horny+Smurf · · Score: 2, Funny

    You might think a web log run by a guy named "CmdrTaco" might provide some useful information on enchiladas and the like.

  12. Re:.Net is Java! by AntiOrganic · · Score: 4, Insightful

    I'm surprised that someone so focused on the evils of proprietary systems would be decrying C#. After all, C# is a ratified standard, while Java was pulled from standardization so Sun could maintain control of the language.

  13. Re:.Net is Java! by expro · · Score: 3, Interesting

    Were it not for the patents conspicuously taken out to prevent interoperable implementations, this would be true and CLR/C# would be a better alternative than Java.

  14. Don't Flame So Fast by RealisticWeb.com · · Score: 5, Insightful

    Before everyone starts scoffing at how much Micro$oft sucks, I just want to say that .NET is really the best product that MS has produced in a very long time. And when I say .NET I am referring to both the object library and the .NET server.
    I'm with the rest of /. when I say that I would rather be on a UNIX based platform, but like many of you due to my job I am forced to deal with a Windows Server environment if I like it or not, and as much as I have tried to hate it, I have actually been quite impressed with what you can do with Visual Studio and .NET
    When you write a .NET web application you use the same code (meaning VB.NET, C# etc, as opposed to ASP, or VB Script) that you would use when writing a desktop app, and the fist time the page is accessed, the web server compiles all the code into dll's on the fly. Converting my existing ASP apps into .NET has tripled the performance using the same hardware. This method is very very fast. Fast to develop and fast to benchmark. It would take me months to write a C/C++ cgi app to do the same thing that I can pump out in an afternoon with VB.NET. And more intuitive I might add.

    Go ahead and flame me now.

    --
    Sigs are out of style, so I'm not going to use one...oh wait..
    1. Re:Don't Flame So Fast by JeanBaptiste · · Score: 5, Informative
      When you write a .NET web application you use the same code (meaning VB.NET, C# etc, as opposed to ASP, or VB Script) that you would use when writing a desktop app,


      I also like .NET, it is the first good thing they have put in a while, it beats the hell out of COM...
      but your statement is not quite correct, unless I am not fully informed which is definately a possibility.... I have been finding more and more differences between programming for .aspx versus a standard desktop application... Still it beats the heck out of VS6...
    2. Re:Don't Flame So Fast by Anonymous Coward · · Score: 2, Insightful

      it's because it's a repackaged Java, reimplementing concepts and ideas that Sun (and others) has come up with for the past 7 years.

      believe me, if you've used both, you'll catch the striking similarities.

    3. Re:Don't Flame So Fast by grungeKid · · Score: 2, Informative

      Re: developer communities size, I find that there exists countless sites, blogs, newsgroups and mailinglist that cover all angles of .NET development.

      Apart from MSDN, I often find answers to my questions at gotdotnet.com, codeproject.com, www.dotnet247.com and the microsoft newsgroups. Brad Adams' and Chris Brumme's are very helpful for the low-level aspects of the .NET framework.

  15. MS hijacks the name of a top-level domain... by Anonymous Coward · · Score: 2, Informative

    ...The idea of some marketing guy noticing that his ISP's address ends in ".net" and thinking "Gee, what a cool way to align my marketing message with the corporate flavor-of-the-week"--or however it originated--is so intensely irritating to me that .NET could be the greatest thing in the world and I still wouldn't want to learn about it.

    I never did find out what "Microsoft BackOffice" and digital_nervous_system were supposed to mean. My guess is that I won't need to find out what .NET means, either.

    Actually, isn't Microsoft de-emphasizing ".NET" and calling it something else in order to call less attention to the community's general lack of interest in it?

    I wonder what Volume II will be called?

  16. Box on .NET by mrkurt · · Score: 3, Informative


    You can sense that while he [Don Box] knows .NET version 1 is an improvement over COM, it's not as good as it could be and things are still be done in v2 and beyond


    This could be an interesting read. The reviewer's comment on Box's impression of .NET confirms the wisdom of my decision not to be an early adopter of .NET, if I take it up at all. Although Box is a MS-centric developer, he discusses the issues involved in app development with candor as well as detail.



    --
    Always look on the briight side of life! (whistle, whistle)
  17. Structure overload by Tablizer · · Score: 3, Insightful

    You know, the "registries" and "assemblies" are getting so complex that I would rather they be stored and managed in a relational database. The rules and tools for relational databases are better understood and apply to many areas, reducing one's learning curve and let's them use existing tools to analyze data and structures. I can look at the schemas and data dictionaries (schemas with extra info, such as field descriptions), and fairly quickly get a feel for how the different entities work and relate to each other.

    A proprietary structure just ends up reinventing a lot of database wheels like concurrency, backups, change logging, etc., and has unfamiliar access protocols, often mirroring the "navigational databases" of the 1960's.

    I know, some of you say that I have an "if all you have is a hammer, then everything is a nail" view about RDBMS (relational databases), but when structures become non-trivial, then nothing beats a RDBMS in most cases. If it walks like a database and quacks like a database, then perhaps it is time to use a database.

    1. Re:Structure overload by TheTranceFan · · Score: 2, Insightful

      You're right about registries, that's for sure. I've heard Bill Gates himself thinks of the Windows Registry as a major screwup. The good news is that .NET eschews the registry to the extent that it can. Unlike COM (=OLE=ActiveX) which was highly dependent on the registry, .NET only uses the Registry to provide backwards-compatibility for COM hosts.

      As for assemblies, you might just not know what they are. Really an assembly is just an object file with a bunch of meta-data about what's in the file and what it links to. Also, assemblies can be "strongly-named," which involves hashing and signing the assembly to ensure that it hasn't been modified. They've also used this mechanism to allow concurrent versions of the same assembly (=DLL or whatever), which helps alleviate the "DLL Hell" that everyone's been struggling with for the last ten years.

      To top it off, for a lot of client-side programming, C# and the FCL (Foundation Class Library) are a good combination for new development. In fact, for a GUI client-side app (which is mostly what I do), I would probably choose C#/FCL over C++/ATL/WTL (and DEFINITELY over C++/MFC) from here out. Win32 programming is a bitch, and largely involves knowing tons of arcane undocumented minutiae about what actually works in the Win32 APIs and how to work around the bugs, and thankfully many of those bugs are worked around for you by the FCL. Not everything in Win32 is wrapped by FCL, but enough is to make it quite useful, and of course OOP, which is much better than raw :: Win32 APIs anyday.

      It's a lot of new stuff, and it seems pretty daunting, but it's worth learning if you have to write Windows stuff.

  18. Monster Tech-en developer demand tag team match by NZheretic · · Score: 3, Interesting
    Based upon job keyword searches on Monster.com, the most of the demand is still moving towards Java and J2EE. Lets play Monster Tech-en developer demand tag team over the last 31 days.

    Java Vs C#
    Java and C# = 239, C# = 736 OR 497 for C# alone, Java = 4596 OR 4357 for Java alone, Java Wins outright 4357 to 497.

    In fact Java is more in demand than C++ (3081) or Visual Basic ( 2252 )

    J2EE Vs .NET
    J2EE AND .NET = 23, .NET = 1392 or 1369 for .NET alone, J2EE = 2120 or 2097 for J2EE alone, J2EE wins by points 2097 to 1369.

    According to theory, .NET should be picking up the bulk of Visual Basic Developers...
    J2EE With Visual Basic Vs .NET WITH Visual Basic, Visual Basic AND J2EE AND .NET = 5, Visual Basic AND .NET = 58 or 53 alone, Visual Basic AND J2EE = 168 or 163 for J2EE alone, J2EE wins by points 163 to 53.

    In comparison to the number of Visual Basic based jobs, there is very little demand for the shift towards the backward incompatable Visual Basic.NET.

    According to theory, C# should be picking up the bulk of Visual Basic Developers...
    Java With Visual Basic Vs C# WITH Visual Basic
    Visual Basic AND Java AND C# = 65, Visual Basic AND C# = 250 or 185 alone, Visual Basic AND Java = 696 or 534 alone, Java wins by points 534 to 185.

    According to theory, C# should be picking up the bulk of the C++ developers...
    Java With C++ Vs C# WITH C++
    C++ AND Java AND C# = 149, C++ AND C# = 311 or 162 alone, C++ AND Java = 1242 or 1093 alone, Java wins outright 1093 to 162.

    1. Re:Monster Tech-en developer demand tag team match by PhxBlue · · Score: 3, Interesting

      I'd expected a search for COBOL to turn up a lot of hits, perhaps even more then Java. :) I was pleasantly surprised to find that COBOL only scored about 620 total hits. I don't know what perspective that adds, but it actually outweighs the C# positions.

      --
      !#@%*)anks for hanging up the phone, dear.
    2. Re:Monster Tech-en developer demand tag team match by dfranks · · Score: 2, Funny
      Of course, it is also possible that it takes 10 times as many Java developers to get the same job done.

      Just kidding...

  19. Also available on safari by FiggyBottom · · Score: 2, Informative
    --
    --- P,L,G
  20. Ah yes, time for the bi-daily B&N advertisemen by spookymonster · · Score: 2, Funny

    At least this review didn't give away the ending.

    --
    - Despite popular opinion, I am not perfect.
  21. Let us flame it slowly then... by Pac · · Score: 4, Insightful

    You should always write web application using a platform that allows you to use the same infra-structure you use for desktop application. Besides the learning curve problem, it also helps when you wnat to mix them both ("weblize" a destop app, for instance).

    That said, ASP and VB.NET are not the answer. Using non-portable languages to write web apps is a very bad idea.

    It would take me months to write a C/C++ cgi app

    Where are you from, 1994? If you really need unmantainable spagetthi like ASP, you can use PHP (portable across all known platforms), but you have Java (Tomcat) and Python (Zope) that allow you to use very high-level structures with a higher productivity (in my experience) than any Windows-only solution. No one writes C cgis anymore...

    1. Re:Let us flame it slowly then... by sheldon · · Score: 2, Interesting

      Using non-portable languages to write web apps is a very bad idea.

      Statement by assertion with no supporting evidence.

      C# is a ratified standard.

      The other languages you suggested are not.

      Maybe you should rewrite your statement "Using languages that I don't like because of religious bias is a very bad idea." It would be more honest.

  22. Event Based Page Model by Anonymous Coward · · Score: 5, Informative

    The big difference between the ASP.NET paradigm and that of, say, Java Servlet Pages, or XSP, etc. lies in the event-based nature of ASP.NET pages.

    Each ASP.NET page is an instance of the "Page" class, or one of its sub-classes. The "Page Lifecycle" defines the various phases that apply each time a page is accessed. The "Page" is simply the top-level node in the "control tree", and each control in the tree does the following for all its children (recursively):
    1. initialization
    2. handle postback data
    3. state management
    4. handle events
    5. pre-render stuff
    6. render to HTML (or whatever)
    7. clean up

    Most of your code will pertain to numbers 4 and 5 above, if done correctly.

    It's not immediately intuitive, coming from a Web App developer's perspective, but does provide a good general structure and mechanism.

    In addition, each Page is split into its actual class (the so-called "code-behind page"), and its representation as markup (the .aspx page). The .aspx page is parsed on each request, but the code-behing is pre-compiled.

    ASP.NET provides a robust programming model for web applications, but it also provides a lot of built-in mechanisms for doing common stuff. Authentication, Authorization, Caching, DataBinding, XML, conditional rendering, templating, data access through ADO.NET, internationalization, Debugging and Tracing utilities, and more.

    That said, I find the event-based programming model quite difficult to master. If used improperly, you can end up running the same code many times; for instance of you populate a given control (say a dropdown) from a database, and do so in response to many different events. Better to flag things and then fetch just once from the DB prior to rendering.

    Thoughts?

    PS: At the moment, you can't mix multiple languages (C#, VB.NET) within a single Web App.

    1. Re:Event Based Page Model by gludington · · Score: 4, Informative

      The big difference between the ASP.NET paradigm and that of, say, Java Servlet Pages, or XSP, etc. lies in the event-based nature of ASP.NET pages.

      Each ASP.NET page is an instance of the "Page" class, or one of its sub-classes.

      This is not a new invention of .NET, as these concepts go at least as far back as Java Server Pages. Every JSP page implements JspPage (or HttpJspPage), and follows roughly the same lifecycle. The container typically provides that JspPage class, though a developer can roll his/her own, as well. (Before people jump all over me, yes, in the Java world, people rarely put the page as the top controlling object, preferring to use a Servlet as the controller and the JSPs only to render the final view.)

      This is not to take anything away from .aspx -- some of it is quite nifty -- but the basic concept of a "Page" object and "Page Lifecycle" is not new to .NET; Java has had it for a while, and I am sure some geek out there will point out even older examples.

    2. Re:Event Based Page Model by BrerBear · · Score: 2, Interesting

      The big difference between the ASP.NET paradigm and that of, say, Java Servlet Pages, or XSP, etc. lies in the event-based nature of ASP.NET pages.

      Anyone in the J2EE community looking for similar event-based behavior should be keeping an eye on JavaServer Faces. One big problem is getting it to work on the existing JSP architecture, though, as JSP still has no server-side component model.

  23. Results not suprising. Java is the incumbant. by btakita · · Score: 2, Informative

    Java wins the "buzz word war" outright because it is an inucmbant platform with solid marketing for the past 5+ years. .NET is a new platform (about 1 year after release) that has not been adopted by most of the Microsoft clientelle.

    Lets revisit these results in two years.
    Considering M$'s deep pockets and commitment to .NET, I think an "upset" is in order.

  24. Parent is also Clueless! by Pac · · Score: 2, Interesting

    To use your own words, why don't you come back and post when you have a clue?

    If you "don't program in Java or C#", refrain from talking from the top of your head about something you can't know.

    And "all this platform compatibility is a moot point" only in your dreams. Java is far from perfect but its cross-platform enough to make it a far superior platform for web and network development in general. Only the very young and inexperient amateurs mock the importance of being able to choose any system running on any hardware for you applications.

  25. Java is a standard by SuperKendall · · Score: 4, Informative

    You can pick up a description of the VM and write one from scratch if you are so inclined, and the JCP controls how the platform develops - in all ways that matter, Java is a standard.

    Have a look at www.jcp.org if you want to see a more developer accessible standards process.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  26. Essential Mono by 73939133 · · Score: 2, Interesting

    C# seems like a very nice programming language, but I really don't give a damn about .NET--as far as I'm concerned, Microsoft has never been able to put together a good set of APIs and .NET doesn't look like that has changed.

    What I would like to see is a book on Mono, the core ECMA C# APIs, and the Mono-specific APIs like Gtk#. Is anybody working on that?

    1. Re:Essential Mono by miguel · · Score: 5, Informative

      Various publishers are working on books about Mono that will cover exactly what you want.

      But everything you learn in Don's Essential .NET book applies directly to Mono. In fact, before Don joined Microsoft, he was kind enough to let us preview his book, and that helped us understand various internals of the .NET framework.

      Miguel.

  27. Java is also in trouble by 73939133 · · Score: 5, Interesting

    The only Java implementations you can get are all based on code licensed from Sun. With the JCP, Sun stifles innovation and progress. And Sun holds numerous patents on Java technologies, making it unlikely that the platform will ever be truly open. With so much control over Java, it is particularly worrisome to see Sun's market evaporate--Sun is a company on the way down, and the question is: what will they do to/with Java before they hit bottom? An SCO-like scenario involving Sun, IBM, and open source implementations seems entirely plausible.

    Both Java and .NET are attempts by two big competitors to establish new proprietary platforms and to do an end-run around open source systems like Linux. If a large fraction of the software on Linux were done in Java, for example, Sun could basically give their own platform an advantage by tinkering with the Java-on-Linux implementation.

    The solution? Don't use either. Mono may be a way out because, in addition to a .NET compatible set of libraries (which you shouldn't use and which may be encumbered by patents), it is getting its own, native set of APIs.

    But if you want to avoid the issue altogether, just don't use either Java or C#--there are plenty of good alternatives around. In fact, most software these days should probably be written in languages like Python, with a few core C/C++ libraries for numerical and other high-performance subroutines.

    1. Re:Java is also in trouble by alext · · Score: 2, Informative

      Nope, Kaffe is the open source one that isn't based on Sun code. I suspect that there are a few clean-room embedded VMs out there too, but I can't prove it.

      Perhaps more relevant to the Linux users here is the huge growth in Java on Linux due to the commercial (but generally free) JVM implementations from BEA, IBM and Sun. This is what places Java-on-Linux head and shoulders above Mono.

      I agree, however, that there are valid alternatives to both, and people with a desire to do something creative rather than just cloning stuff might like to help out with Parrot, the Perl 6 VM, also targeting a bunch of other languages.

  28. Isn't imitation the sincerest form of flattery? by dot+niet · · Score: 5, Insightful

    I'll take umbrage with the kneejerk "Java has been doing this for years" comments. Must every idea be so mind-bendingly unique to be deemed useful? Should we all start buying Ford Model-A cars instead of Durangos (or whatever) because Henry Ford "was doing that 100 years ago!"? Are the CLR-based language features a lot like Java? Yes. Should every derivative product be denounced as coming to the table too late? I think not. Once more, .NET ( the bits for developers anyway) brings some better things to the table as well (as evidenced by Sun getting into the leapfrog game with Java v.Next features - Metadata (Attributes), etc).

  29. Re:No kidding by dubstop · · Score: 5, Funny

    very few Slashdot submitters or editors show basic competance

    That would be competence.

  30. Re:Thank God for .DOT.NET by Tablizer · · Score: 3, Funny

    Linus Torvalds can lick Steve Ballmer's scrotum!

    Does he have to sign an SCO-like Non-Disclosure Agreement to do it?

  31. Considering... by OS24Ever · · Score: 3, Insightful

    ...that some companies still have 'Windows 5.0' on their sheets as lists of systems with operating experience, I don't see how this is relavent.

    Right now 'Java' is the en vogue thing to ask for on a resume. C# hasn't reached that level yet. It's still a buzzword to the HR types.

    --

    As a rock-in-roll Physicist once said, No matter where you go, there you are.

  32. When is MS coming out with the .ORG framework? by handspike · · Score: 2, Insightful

    They're running out of common terms to steal and obfuscate, aren't they?

  33. Good book. by miguel · · Score: 5, Informative

    This is one of the best .NET books, the first of a series of pretty good books, by those involved deeply with the framework.

    This book covers the technicalities in the .NET framework, and is of special interest if you are interested in the advanced features of the Common Language Runtime like method interception, transparent proxies, application domains and metadata.

    Compiler writers, framework developers and those who need to get the most out of the framework will be interested in this title.

    I can not recommend this book enough. Don has done a fantastic job. It helped the Mono developers understand the low-level technical features of the framework.

    Miguel.

  34. Re:It *is* cross platform! by miguel · · Score: 5, Informative

    Mono is an implementation of the ECMA 334 and 335 standards which are available for anyone to implement (no patent strings attached, check the Mono FAQ for details).

    On top of that Mono implements plenty of class libraries: both the non-standarized class libraries from Microsoft, as well as our own universe of class libraries that take advantage of Unix-specific features.

    Here is a link: Mono Map (abridged).

    Miguel.

  35. Re:.Net is Java! by miguel · · Score: 2, Insightful

    C# and the CLI (ECMA standards 334 and 335) have no patent fees attached to it, it is completely patent free.

    The ironic thing is that *today* the fastest fully open source Java VM that can run Eclipse is Mono plus IKVM.NET (the open source Java VM that generates CIL code on the flight ;-)

    Miguel.

  36. There is a difference by MemeRot · · Score: 2, Insightful

    Everything you write in Java has to be written in Java. I know there are Java purists out there who may think that rocks, but it could be beneficial to be able to pick and choose languages for the task at hand. The multi-language innovation is really neat to me. Some languages make string processing a snap, some don't.

    Web services don't have to be anything other than classes interacting through XML - isn't that enough? That's a significant advance in code re-use that I see, much more important than object oriented programming I think. So often code that has been written doesn't work for a new language version, a new business process requires significant changes and everything gets rewritten, or other incompatibilities crop up. Since the cardinal rule MS wrote for COM objects was 'the interface is sacred' (I know, do as I say, not as I do, and I agree there) that always bugged me. So now you write a web service. Can be used by all your other apps, you can port your other apps to different language/OS/etc and still take advantage of it. I don't care what technology is behind a web service, just that web services themselves are future-friendly and seem to lead to the semantic web quite nicely. MS's contribution here isn't revolutionary, but it will get more people using it. The main benefit of web services is that I don't care whether you're serving it up from .Net, Java, manually coded Perl, whatever. It seems to me MS studied Java's strengths, copied those, added new things Java didn't think of (other language support), and avoided some of Java's pitfalls (C# is a standard, as is .Net), and that including web services is really a separate thing aside from their incorporation in Visual Studio.NET.

  37. Parent Post is no troll! by ratfynk · · Score: 2, Interesting

    The post was not a troll. the truth about the .Net framework is that it is designed eventually to only alow tcpa key coded web pages to be displayed on an MS browser. Anyone who is stupid enough to think that MS is not in the business of trying to lock up all internet communication deserves what is coming. Something that will make you raise your right arm and alow access to your wallet in salute! Really read this guy he is biased but he is right! http://www.cl.cam.ac.uk/users/rja14/tcpa-faq.html

    --
    OH THE SHAME I fell off the wagon and use sigs again!
  38. Response to blind criticisms of .NET by Junks+Jerzey · · Score: 3, Interesting

    I'm seeing a lot of blind flaming about .net, so here's my overall response. .net (all lowercase, not ".NET") is Microsoft rearchitecting Windows across the board. You don't use the Win32 API any more; you use the .NET libraries. You don't write applications in raw C++ any more, you use C# or another higher-level language that targets the CLR (Microsoft gave advance information to a number of indepdendent language developers, encouraging them to port their products to .net). Security issues caused by low-level buffer overruns have vanished. You get a nice Visual Basic-like environment for creating GUIs. This is all a great idea.

    The downside is that while .NET and C# are much better than the Win32 API and C++, there's a general staidness to it all. It feels like we've moved from 1985 to where we should have been in 1994. C# feels wonderful if you're a C++ programmer who never used Turbo Pascal or Visual Basic (or if you're a Turbo Pascal or Visual Basic programmer annoyed with C++), but it feels overly complex if you've used a dynamic language like Python, Smalltalk, or Lisp. The OOPness of .NET is very heavy and static. And it's all still based on a compile-run cycle, which is hard to go back to once you've gotten away from it.

    Personally, even though I think Microsoft is correcting a lot of past mistakes with .NET, and even though Microsoft is showing a lot of initiative and is willing to throw out a lot cruft we've all gotten used to, I don't think it's enough. The result is still complex enough and elaborate enough that it's tough to bank on it as the future.

  39. Essential .NET? by batkins · · Score: 2, Funny
    oxymoron n. - words whose meanings contradict each other


    Hmmm, Essential .NET?

  40. Re:It *is* cross platform! by miguel · · Score: 3, Interesting

    The red parts are components that Microsoft has not submited to ECMA for standarization and hence have no explicit patent grant. Whether there is an enforceable patent there is unknown, but is dubious, as for the most part they are wrappers to existing technology, or implementations of concepts already available.

    The green parts are components that we have developed outside of the Microsoft world (they do not have a Microsoft equivalent). Whether there are patents or not is uncertain as they are also wrappers for existing technologies (Gtk, Mozilla, etc). Microsoft would certainly not have a Mozilla# patent ;-)

    Miguel.

  41. "Innovative"-right... languages for the java vm: by AndersDahlberg · · Score: 2, Informative
    Everything you write in Java has to be written in Java. I know there are Java purists out there who may think that rocks, but it could be beneficial to be able to pick and choose languages for the task at hand. The multi-language innovation is really neat to me. Some languages make string processing a snap, some don't.

    Sorry to bring you the news, but you really should get out more :)

    http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.ht ml
    Among the most interesting of those you find
    • jython (python running on the java vm - the fastest python implementation?)
    • eiffel
    • smalltalk
    • nice (indeed a very nice ;) language - a little bloated syntax though)
    • sather
    • ada
    • ruby
    • javascript (rhino)
    • aspectj (first AOP language)
    • forth
    • fortran and last but not least a very promising language called
    • Kava http://www.research.ibm.com/people/d/dfb/papers.ht ml#Bacon01Kava
    So, again, your point about .net's language innovation was?
  42. Aside from hype and BS by Anonymous Coward · · Score: 2, Insightful
    From first hand experience with hardcore enterprise applications that handle big time loads, .NET has 10 years to go before it will handle medium/big loads. I'm not talking about some tiny e-commerce site that gets a couple hundred or thousand transactions a day. Anything that doesn't do 3 million requests a day to me is small/medium. Anyone that has done hardcore high load applications will tell you how hard it is to handle 5-20K transactions per second. By transaction I don't meant hits either. Not page views, not some simple dynamic page that just shows a couple kilobytes of data from a database.

    I'm talking transactions that do more than just insert a new order into a database. Something that actually has to coordinate a transaction across several remote systems and insure the transaction follows well defined process. Can .NET do these types of transactions? Sure, but it will require a lot of hard work and dedication to reach 1K transactions per second. If you want to reach fault tolerant transactions across a cluster of servers, you're best option today is to use Java. Microsoft officially doesn't have any plans to build a stateful application server that provides object persistence management.