What types of applications should be Obfuscated and/or Compacted?
Anyone developing Java or .NET applications where the source code is not publicly available or there is private information embedded inside the code. One argument we have heard is that we are writing Corporate wide software so we do not need to obfuscate. Assuming the you give all your employees access to the source code for that application this is true. But, if not, whoever has access to the application can easily reverse engineer the source code with a freely available tool or an online web submission. If you have any information such as SQL, username/passwords, proprietary business logic etc. inside the application it can be easily obtained. In addition, applications that have a networked/distributed component, browser based, or written for J2ME or the .NET Compact Framework will clearly benefit from compaction.