Java开发的利器: 反编译工具 JD-GUI

简介:

原文地址:http://simpleframework.net/news/view?newsId=82757dbe8bd1487992b01247b349225b


老赵说起来也能算个Java程序员,可是写过的Java代码并不多,可老赵实实在在是从程序员干起的。虽然肚子里也装了不少的东西,可作为一件乐此不疲的事情,就是看那些所谓“高人”的代码。

高人们的行事风格,十人十样,难一而足,不能以常人之准则判之。诸如,功能强大用之方便的IDE不用,用文本编辑器写Java代码;抑或一个类中洋洋洒洒 数千行代码,且无一行注释;再或编写完代码后,进行混淆,美其名曰“知识保护”;另者高举Opensource的大旗,源码却无处可寻;更有甚者,一个 “Hello world!”,能整出是好几种实现方式,...。请注意,我无意质询或贬低这些高人们,知识产权归创造者,理所当然。

Andy语录:代码是写的,不是看的!然而有时看高人们的代码,还是收获颇丰的,或者可以说是一种学习的捷径。

而高人们之所以高,还在于他们产出的代码,确实有过人之处,以巧为媒,以能为介,不管你们信不信,反正我是相信的!

陈述如此之多,不外乎引出标题所述的Java反编译工具: JD-GUI。老赵以前在看高人们的代码时,常用的工具是 DJJAVA,或者直接用其中所带反编译工具的内核:JAD,尤其是成批反编译一个整包的Java类时,更是如此。

今日早晨,想看看自己写的Java代码,反编译后和自己原来写的东西究竟有何区别,下载 DJJAVA 的最新版,多次不成功,不知是网络的原因,还是自己失去了耐心,决心重新找个可用的东西,结果发现了 JD-GUI 这个东东。

其优点如下:

(1) C++实现,速度奇快;免安装,一个 jd-gui.exe文件,下载后拷贝即用。

(2)勿论.class还是jar包,打开后,可以直接查看代码,且是排好版的格式。

(3)且可以直接存储源代码,最可贵的是可以将 jar 包中的源代码全部转储。

示例如下:

0_0.png?t=1445909259473
0_0.png?t=1445909259478
0_0.png?t=1445909259481
0_0.png?t=1445909259484
0_0.png?t=1445909259488


反编译有几个好处:

    ①可以看自己的项目中的class文件是否编译到了,因为服务器运行的是class文件。

    ②可以查看别人提供的jar包里面的源码,进行学习

    ③可以加强自己的安全意识,尽量减少代码泄露出去。不能避免别人反编译,但是我们可以增加反编译的难度。




      本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/1886591,如需转载请自行联系原作者



相关文章
|
4天前
|
Java 关系型数据库 开发工具
Java开发者必备技能与工具:构建高效开发环境的指南
【7月更文挑战第23天】作为Java开发者,掌握核心技能、熟练使用开发工具与框架、不断提升自己的软技能是构建高效开发环境的关键。希望本文能够为广大Java开发者提供一些有价值的参考和启示,助力大家在Java开发的道路上越走越远。
|
16天前
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
38 2
|
17天前
|
前端开发 Java 关系型数据库
Java中的电子商务网站开发实战
Java中的电子商务网站开发实战
|
18天前
|
Java 数据挖掘 Linux
Java中的跨平台桌面应用开发实践
Java中的跨平台桌面应用开发实践
|
21天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
22天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
16天前
|
存储 Oracle Java
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
21 0
|
16天前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
23 0
|
16天前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
17 0
|
18天前
|
Java 测试技术 Maven
在Java项目中集成单元测试与覆盖率工具
在Java项目中集成单元测试与覆盖率工具