Welcome!

.NET Authors: Brad Abrams, Alin Irimie, Colin Walker, Maureen O'Gara, Reuven Cohen

Related Topics: .NET

.NET: Article

Feedback Special: Decompiler Debate

"This Article is Bizarre. The Author Makes a Lot of Effort to Downplay .NET Reflector"

Related Links:
  • Decompiler Round-Up: Regenerating Your Code

    The following commentary is from the flurry of e-mails that were posted here on the .NETDJ Web site regarding the article entitled "Decompiler Roundup" (.NETDJ, Vol. 2, issue 8).

    This article is bizarre. The author makes a lot of effort to downplay .NET Reflector, which is the tool everybody on the street is using (it was rated one of the top 10 developer tools). Next, he is comparing more expensive tools but only along the criteria that make Decompiler.NET look good. The code output example isn't correct or maybe just outdated (again it makes Decompiler.net look good). The comment "how each could handle pointers, because they are my favorite aspect of programming" makes this way too obvious.
    -Mario

    I was pleased to see the author's unbiased review confirming his positive experiences using our product. I've done my best to send bug reports regarding code generation issues to each of my competitors regarding their products, including the bugs exposed by the examples the author has chosen in this article. I reported most of these bugs to the authors of the products mentioned here including Reflector 4.0 back as early as 04/2004. The newsgroup discussions in which I had participated regarding code generation accuracy occurred prior to this article being written and I personally made all of the vendors mentioned in the article aware of code generation problems in their products. Each vendor had ample time to address these code generation issues prior to this article being written, and their response time is a good measure of the level of support that they provide for their products.

    The author just asks each developer to take the time to evaluate each product on his/her own. His conclusions are still accurate, even with newer versions of each of the products available that he reviewed. Decompiler.NET still generates higher-level and more accurate code that the other tools reviewed by the author in this article, and I'm aware of several additional code generation problems that still exist in current versions of the products mentioned here that cause them to continue to generate code that won't compile or run correctly. The author's conclusions are still 100% accurate and each developer can confirm this by downloading the trial versions of each of the products as the author recommends in his article. Please download a free trial version of our product yourself and confirm that it is still the best alternative for your needs at www.junglecreatures.com.
    -Jonathan Pierce

    The author is not unbiased. Just read this:
    "I chose to leave these two tools out of this article. Why? Well, for the same reason I don't do my own electrical work."

    "They do not offer the needed level of support."

    [Three times in a row. Apparently they do, his example runs fine in the current version.]

    "Decompiler.NET with obfuscator is available for $500 per CPU, giving it leverage over its toughest competitor" [Please click here to purchase without thinking]
    -Anonymous

    Reflector is an excellent tool that I use for casual browsing and code generation comparison. However, there are still many instances where Decompiler.NET generates higher- level and more accurate code, which is important to most professional developers. The current version of Reflector was released after this article was published and addresses these specific bugs over 4 months after they were reported to the author. There are many other code generation bugs in the current versions of the tools mentioned here that were not covered by the article.

    The author also made the point that Decompiler.NET was the only tool that generated code that had correct compile and runtime behavior for all of the test cases that he attempted including his Hypersonic example. This is not the case for any of the tools that he evaluated, including the current release of Reflector 4.0.18. I've sent several bug reports to Reflector's author that still exist in his current release regarding many code generation issues not covered by this article.
    -Jonathan Pierce

    Did the author of this article report those bugs to the tool authors or did you tell him what to write about?
    -Anonymous

    The author of this article contacted each of the vendors on his own and requested permission to include their product in his evaluation. The article was written entirely by the author including his code examples chosen by him based on his own experiences with each of the products he tested for his own needs. He was trying to identify unusual test cases to measure the robustness of all of the products included in his evaluation. From his conclusions, it appears that he was unable to identify any cases where Decompiler.NET didn't generate correct code to meet his needs. There are many other cases where the other products fail, so I'm not surprised that the author was able to identify some common cases that affected him personally.

    I have always encouraged developers to try each of the products themselves and form their own opinions about their accuracy. This article seems to point them in the correct direction so that they can confirm its conclusions themselves before purchasing any of the products mentioned.
    -Jonathan Pierce

    Okay, let's leave it that way. The article has too many coincidences and you are too well informed on what the author did and didn't do to make it believable. All the tools mentioned are very nice and no harm done if everybody is doing his own evaluation...
    -Anonymous

    The author isn't unbiased. The scoring card and the careful phrasing to ditch Spices and Salamander shows this. Also, he is leaving half the tools (Anakrino, Reflector, LSW) out, only giving a "doing his own electrical work" argument as a rationale so it isn't a good overview in the first place.
    -Anonymous

    Send us your feedback. Letters may be edited for length and clarity. Please provide full name, location, and, if applicable, title, and company. dndj@sys-con.com

    Related Links:
  • Decompiler Round-Up: Regenerating Your Code
  • More Stories By .NETDJ News Desk

    .NETDJ News Desk monitors Microsoft .NET and its related technologies, including Silverlight, to present IT professionals with news, updates on technology advances, business trends, new products and standards, and insight.

    Comments (16) View Comments

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    Most Recent Comments
    P 10/20/04 09:05:03 PM EDT

    Neil, what do you like about the Decompiler.NET UI? Disagree on that. I agree on code recompile. I ran into an issue with break statements inside switch statements with Reflector that got only fixed recently. Decompiler.NET left a few empty goto blocks in the code that haven't been a problem for recompiling. If that is worth 500 dollars is an entirely different question. For those that are desparate to get other peoples code to recompile without asking for the source and also don't want to spend a few minutes on fixing some issues it might well be worth it. In either case the sentiment that you can't do a "decompiler round-up" without Reflector is correct. This article was written for a very special kind of customer that wants to spend the big bucks on a decompiler tool, it wasn't written for the average developer that is looking for class browser to do spelunking of libraries, all those end up using Reflector anyway.

    Neil 10/18/04 11:56:03 PM EDT

    Mike is a liar - I use Decompiler.NET and think it is really good. I haven't seen any bugs. I also like the UI. My code from Reflector doesn't run.

    Jonathan Pierce 10/16/04 11:49:13 PM EDT

    The statements that I have made here and in public forums are supported by examples provided in the article or examples that I or others have already provided. The statements that we make are also positive, except in the case where we refute negative statments that compare our products to others inaccurately. We will be happy to discuss any specific code examples that you provide that support your statments comparing our product, and can provide many supporting examples where we generate better code than the other products that you mentioned here that support our claims regarding the quality and level of the code that we generate. Since the above post disagrees with the article author's conclusions, it is probably better for you to provide supporting examples that support your statements in the same way that I and the author of the article have already done. You will alse be more credible if you don't post anonymously, since both myself and the author of the article have clearly identified ourselves and are more than willing to support any claims that we have made here or in other public forums in response to negative and inaccurate statements made by others attempting to distort market perception regarding our products. We also frequently interact with the author of the product you mentioned, and provide bug reports and suggestions to him on a regular basis that have contributed significantly to the recent quality improvements made in his product.

    We continue to recommend that readers evaluate both products, and do their own comparison to determine which product provides a more complete and better supported solution that meets their specific needs. We continue to sell copies on a regular basis to users who have evaluated both products and still feel that our product does a better job for them in producing correct and higher level code that compiles and runs correctly for them. We also provide many features like obfuscation and automatic refactoring capabilities as well as more responsive and direct support that the other products you mentioned here do not provide.

    I'm sure that you would have a much different attitude regarding our product if it the other product you mentioned was not free or didn't exist at all. At a minimum, you should probably recognize the difficulting in providing tools that produce such high quality results as our tool and the competitor's tool that you mentioned and appreciate that both of us have provided needed tools to the developer community at accessible prices that are significantly lower than their development cost in order to assist the developer community. The competition, the review provided by this article, the bug reports, and the code samples that we continue to provide have had a direct and significant impact on the recent improved quality of all products in this market including the one that you mentioned. We continue to work directly with our competitors as colleagues to help the developer community as we can by providing low cost tools that otherwise would not be available.

    Jonathan Pierce
    President
    Jungle Creatures, Inc.
    http://www.junglecreatures.com/

    Anonymous 10/16/04 08:22:47 PM EDT

    "My users say" is sales blah. How many users do you have? How much is "many"? How many users do other tools have? This is intentionally "misleading" readers, which is what sales guys do all the time.

    Anonymous 10/16/04 08:10:18 PM EDT

    Jonathan, :)) you ask about not "misleading others" and making "unsupported derogatory statements" right after doing this yourself. Your feedback is full of empty shells and long winded sentences but it seems you are lacking supporting arguments.

    Jonathan Pierce 10/16/04 05:41:51 PM EDT

    Mike,

    I appreciate that you took the time to try out our product. You are entitled to form your own opinions about the products, but please try to refrain from making unsupported derogatory statements that might mislead others regarding our products. We only ask that users try the product for themselves and form their own opinions. We have received many compliments regarding our user interface and many customers have told us that our browser interface is easier to use than the ones found in the the other products you mentioned. Each product will differ regarding code generation capabilities, but our customers tell us that they find our code to be better than the other tools that you mentioned. Please send us specific examples that support your claims regarding the level of code that we generate compared to the other tools that you use. You post would be much more credible and followup discussions much more productive if you include examples of generated code that support the statements that you are making. We test our competitors tools all the time and send them feedback often, so we are very familiar with the level and accuracy of the code that they produce compared to our product.

    Jonathan Pierce
    President
    Jungle Creatures, Inc.
    http://www.junglecreatures.com/

    Mike 10/16/04 04:46:04 PM EDT

    My comparison after a little bit of testing:

    Reflector and FileDisassembler:
    Free, very good code quality (almost no gotos), great UI, very stable, everbody using it

    Decompiler.NET:
    500 dollars, good code quality (some gotos and sometimes worse than Reflector), ugly UI, buggy, no one using it

    Given it's price Decompiler.NET is a non-starter.

    If it was free it would still be a non-starter.

    sd 10/13/04 02:01:48 PM EDT

    Now you are juggling words around and wasting time.

    Jonathan Pierce 10/13/04 12:37:22 PM EDT

    We have tried to provide accurate and correct information to the developer community regarding our product's capabilities and strenths in response to statements made in this and other public forums. If you feel that our statements are not consistent with your personal experience or opinions regarding our product. please contact us directly so that we fully satisfy any questions or concerns that you have regarding our product offline. We will assist you with your use of the product for both Whidbey and the Compact Framework and any other concerns that you may have.

    Jonathan Pierce
    President
    Jungle Creatures, Inc.
    http://www.junglecreatures.com/
    support@junglecreatures.com

    ad 10/13/04 10:55:15 AM EDT

    Bottom line: Your statements above are not correct.

    Jonathan Pierce 10/13/04 08:39:15 AM EDT

    ad,

    It's no secret that I am the author of the Decompiler.NET product reviewed by the author in the original article. All of the vendors involved are welcome to provide feedback regarding the original article and respond to user posts in the discussions that followed.

    You will need to use our Whidbey version to simultaneously decompile assemblies written for multiple versions of the .NET framework including the compact framework because of issues with stong names and the way our 1.1 version implements introspection. Our 2.0 version uses a different implementation stategy and does not have these issues. It is available on request via email to support@junglecreatures.com to anyone who wish to evaluate it. Since it isn't yet released and we want feedback on it, we don't yet provide anonymous access to it.

    Whidbey is not yet released, and I don't see any issue with requiring the Whidbey runtime to be installed in order to decompiler Whidbey compiled assemblies.

    As I indicated, our Whidbey version will be released when Whidbey ships, but is available now for beta testing to anyone who requests it who is using .NET 2.0 Beta 1. We are supporting it and responding to any issues that our beta testers report using it. Please contact us via email so that we can provide you a copy to complete your evaluation of our Whidbey version.

    The Assembly browser is a new feature for our product. The user interface, although very powerful, is a very minor part of the implementation compared to the effort that vendors need to make in order to generate high level and accurate source code.

    Our product is priced low considering the quality of the code that we produce and the level of support that we provide to our customers. We respond immediately to any questions that they have and have assisted many of them with free consulting services related to recompiling and achieving correct runtime behavior from their specific decompiled applications.

    All decompilers do not produce equivalent code. We have taken the time to include significant optimizations such as eliminating goto statements from switch statments, that the other tools do not provide. As a result, our customers have told us that our product produces much higher level code than the competitive products that they have tried including the one that you mentioned. Each user should try both products and compare the level and runtime accuracy of the the code produced from their specific assemblies and the level of support and assistance that we provide to them at minimal cost.

    We also now include as part of our released version full integration with Visual Studio 2003 as a fully dockable Visual Studio tool window.

    Please contact us directly to obtain a beta version of our product that supports Whidbey now, and for any additional discussion that you might like to have with us.

    Jonathan Pierce
    President
    Jungle Creatures, Inc.
    http://www.junglecreatures.com/
    support@junglecreatures.com

    ad 10/13/04 01:17:21 AM EDT

    Jonathan, what you say is not correct:

    1) Your tool is not able to browse mscorlib.dll from .NET Compact Framework (just verified this).

    2) Reflector does not require to have Whidbey installed.

    3) Talking about private copies means "not supported".

    4) Assembly browser is not an "additional feature", other tools supported that for a long time.

    5) Your price is not low, it is exprensive. FileDisassembler is free and does the same.

    ad 10/13/04 01:04:28 AM EDT

    Jonathan, nice attempt to manipulate peoples opinions. You seem to be the author of that Decompiler.NET tool :-)

    Everybody, have a look at this:
    http://www.denisbauer.com/NETTools/FileDisassembler.aspx

    Jonathan Pierce 10/11/04 12:38:03 PM EDT

    Sean,

    Although the original article did not fully review Reflector, the code examples chosen by the author did include output from Reflector in his evaluation. Also, Decompiler.NET does not have the limitations that you described. The released version supports .NET 1.1 and .NET compact framework. Our Whidbey version is currently in beta and relies on the 2.0 beta runtime, but fully supports Visual Studio 2005 and the 2.0 runtime. We are making this version available to customers who request it. Feel free to contact us if you would like early access to it. Also, we now include an Assembly browser user interface and full integration with Visual Studio 2003 and Visual Studio 2005.
    We have kept our price low and provided these additional features as well as our other upgrades and support at no additional cost to our customers.

    Jonathan Pierce
    President
    Jungle Creatures, Inc.
    http://www.junglecreatures.com/
    support@junglecreatures.com/

    Sean 10/09/04 12:16:28 PM EDT

    Most people I know are using Reflector so the author should have included this tool in his review. The code quality of Decompiler.NET and Reflector is pretty much the same. Actually, Decompiler.NET is limited to .NET Framework 1.0 files while Reflector reads pretty much every format. So given the hefty price tags of the tools reviewed I really wonder why Reflector was left out.

    Atomic 09/18/04 04:08:30 PM EDT

    The author seems to be unbiased in the products he evaluated, however I really believe he shouldn't have left Reflector out of the comparation, as it's what most people use. From my use (I already tested Anakrino, Reflector, Decompiler.NET and Salamander on many assemblies, including some rather complex ones) I can say that Decompiler.NET is the one that generates the closest code to the original, and that it is the ONLY one that offered support when I got errors. And by the way, all the errors were fixed very fast.