According to Business Software Alliance statistics, four out of every ten software programs is pirated in software business, world wide. Global piracy rate has increased 40% over the past years and nearly $11 billion is lost. This is definitely a clear threat for software producers and thus to global economy. Over the years, several software protection techniques have been developed, code obfuscation is one of them and it is very promising. Code obfuscation is a form of software protection against unauthorized reverse-engineering. In this paper we discuss software protection techniques in general and provide a broad overview of known obfuscation algorithms. We also address the issues related to implementation of obfuscation algorithms. Finally we propose JHide, an obfuscation tool kit for protection of Java code. We conclude our paper identifying the need for reviewing the performance of the algorithms as the future scope of our work.