با وجود کارايي زياد و انعطافپذيري بالاي زبان برنامهنويسي جاوا، اين ابزار قدرتمند و رو بهتوسعه هنوز نتوانسته جايگاه مناسبي براي پيادهسازي پروژههاي تجاري در مقايسه با ساير Frameworkهاي موجود بيابد. از جمله دلايل اصلي عدم استفاده از جاوا در بيشتر پروژههاي بزرگ تجاري، ميتوان به مشکل بازگشتپذيري يا Decompile شدن کدهاي نوشته شده، با اين زبان برنامهنويسي اشاره کرد که اين خود بهتنهايي يک معضل بزرگ امنيتي در مسير توسعه نرمافزارهاي تجاري با استفاده از اين ابزار بهشمار ميآيد.
برنامههاي نوشته شده در جاوا بهدليل استفاده از واسط زمان اجراي Java Runtime Environment يا بهطور اختصار JRE براي مهيا کردن بستري مناسب براي جلوگيري از کامپايل مجدد کد منبع و همچنين حفظ قابليت جابهجايي و استفاده در پلتفرمهاي مختلف، پس از کامپايل بهجاي تبديل شدن به زبان ماشين يا همان «صفر» و «يک» به قالب خاصي از دادهها بهنام Byte Code تبديل ميشود که اين خروجي همان قالب قابل فهم و اجرا براي JRE است.
همين موضوع باعث ميشود کد برنامههاي نوشته شده به زبان جاوا را با استفاده از متدهاي مهندسي معکوس تا حدود زيادي بازيابي کرد. اين مشکل بهحدي جدي است که شرکت توسعهدهنده زبان جاوا يعني سانميكروسيستمز، اقدام به ارائه ابزاري بهنام Obfuscator براي مبهمسازي کد منبع نوشته شده از طريق تزريق کدهاي اضافي بهزبان جاوا کرده تا پس از انجام عمليات ديكامپايل، کاربران نتوانند بهراحتي قطعات مختلف کد حاصل را درك و تفسير کنند.
اجراي اين برنامه بهگونهاي است كه در بدنه توابع و کلاسها در نتيجه نهايي و خروجي اصلي برنامه تغييري را در پي نخواهد داشت. البته استفاده از اين متد که بهصورت توكار (يا درونساخت Built-in) هم در کتابخانههاي جاوا و هم توسط IDE پيشفرض شرکت سان، يعني Netbeans نيز پشتيباني ميشود، نميتواند تمام آنچه که برنامهنويسان براي ايجاد امنيت بيشتر به آن نياز دارند را تامين کند. گذشته از اين، استفاده از روش مذکور سبب افزايش حجم فايل اجرايي پس از کامپايل، کندي در بارگذاري و اجراي برنامه، سختتر شدن انجام عمليات اشكالزدايي (ديباگ)، بالا بردن ميزان استفاده از حافظه اصلي و تحميل بار مضاعف بر دوش پردازنده بهدليل استفاده مکرر از حلقههاي تکرار و تصميمگيري ميشود.
در اين ميان روشي کاملا ابتکاري توسط برخي برنامهنويسان براي هر چه بالاتر بردن ضريب امنيت در کدهاي جاوا يا حتي ديگر زبانهاي برنامهنويسي که از يک قالب همسان با فريمورك جاوا بهره ميبرند، ارائه شده است. اين روش که به متد رمزگذاري (Encryption) معروف است، هماكنون بهعنوان يکي از بهترين و موثرترين راهحلهاي مطرحشده براي حفاظت از کدهاي جاوا شناخته ميشود. تفاوت عمده اين روش با ديگر متدها در اين است که روش رمزگذاري از آغاز تا پايان بايد توسط برنامهنويس و گروه توسعهدهنده پروژه پيادهسازي شود؛ برخلاف روش Obfuscator که براي مبهم کردن کد منبع از الگوهاي محدود و تکراري استفاده ميکند.
شايد اين موضوع در نگاه اول کمي دشوار بهنظر برسد اما کارايي واقعي روش رمزگذاري به اين موضوع وابسته است که منطق رمزنگاري در برنامه شما ميتواند کاملا متفاوت با تصور ديگران يا بهعبارت ديگر کاملا ابتکاري و شخصي باشد.