java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI

老赵说起来也能算个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=1445909259488JD-GUI简介:JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse。

反编译有几个好处:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven搭建Nexus私服

私服的介绍 1 什么是私服 私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用。 在企业开发中,私服的建设是有必要的,其好处如下: 1.1 节省资金、外网带宽…

Java啤酒生产系统描述_Java描述设计模式(03):工厂方法模式

一、工厂方法模式1、生活场景系统常见的数据导出功能:数据导出PDF、WORD等常见格式。2、工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工…

@Autowired(required=false)注入注意的问题

1、前言 在使用spring开发过程中,我们基本上都是使用Autowired这个注解,用来注入已有的bean。但是有些时候,会注入失败。当我们加上参数(requiredfalse)就能解决。今天整理一个我在实际开发中的例子 2、required属性…

什么是ip地址、子网掩码、网关和DNS?

什么是ip地址、子网掩码、网关和DNS? 什么是ip地址? IP是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,IP有唯一性,即每台机器的IP在全…

Dubbo:RPC原理

1、RPC原理 一次完整的RPC调用流程如下: 1)服务消费方(client)调用以本地调用方式调用服务; 2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体; 3)clie…

java jni日志输出_java打印Jni层log

要在java层打印c的log必须引入这个头文件的宏定义:#ifndef __LOG#define __LOG#ifdef __cplusplusextern "C"{#endif#include//宏定义类似java 层的定义,不同级别的Log LOGI, LOGD, LOGW, LOGE, LOGF。 对就Java中的 Log.i log.d#define LOG_TAG "HelloJni"…

Dubbo基本原理机制

分布式服务框架: 高性能和透明化的RPC远程服务调用方案SOA服务治理方案Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接 Dubbo缺省协议采用单一长连接和NIO异步通讯, 适合于小数据量大并发的服务调用,以及服务消费者机器…

Dubbo是如何进行远程服务调用的?(源码流程跟踪)

首先会分析Dubbo是如何进行远程服务调用的,如果不了解dubbo的服务暴露和服务调用,请去看前两篇dubbo的文章,然后后面我还会说一下dubbo的SPI机制 当我们在使用reference 注解的时候,来调用我们的提供者的Service对象的时候&#…

Redis五种数据类型及应用场景

Redis五种数据类型及应用场景 MySqlMemcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的…

WebSocket介绍和Socket的区别

WebSocket介绍与原理 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP)请求完成。 ——百度百科 目的:即时通讯,替代轮询 应用场景:网站上的即时通讯是很常见的&#xf…

WebSocket协议入门介绍

文章目录WebSocket协议是什么WebSocket是应用层协议WebSocket与Http的区别为什么要使用WebSocket如何使用WebSocket客户端API在客户端使用WebSocket在服务端使用WebSocket反向代理对WebSocket的支持WebSocket协议是什么 WebSocket是应用层协议 WebSocket是基于TCP的应用层协议…

远程ykvm 插件移值java_Centos7 命令行下kvm安装windows,linux

查看是否支持egrep "svm|vmx" /proc/cpuinfo |uniq安装软件yum install libvirt -yyum -y install qemu-kvmsystemctl enable libvirtd && systemctl start libvirtd# 启动libvitd服务查看 ip add #查看是否有 virbr0网卡 yum install virt-installcentos7 例…

php7.0扩展yac,php扩展之yac安装

git克隆$ git clone https://github.com/laruence/yac.git解压安装注意这里的php-config可能不一样查看php-config位置$whereis php编译安装$ cd yac$ phpize$ ./configure --with-php-config/usr/bin/php-config$ make$ make install修改php.ini,载入扩展,重启php-fpmextensio…

springboot+websocket实现服务端、客户端

一、引言 小编最近一直在使用springboot框架开发项目,毕竟现在很多公司都在采用此框架,之后小编也会陆续写关于springboot开发常用功能的文章。 什么场景下会要使用到websocket的呢? websocket主要功能就是实现网络通讯,比如说…

输出有样式的php,PHP导出带样式的Excel

工作中做导出的时候,需要导出自定义的表格或嫌弃导出的Excel格式太难看了。需要设置颜色、字号大小、加粗、合并单元格等等。Paste_Image.pngPHP代码:php/**导出文件return string*/public function export(){$file_name "成绩单-".date(&quo…

idea创建多模块Springboot项目、导入多模块、删除多模块

前言 在eclipse中有Workspace(工作空间)和 Project(工程)的概念在 IDEA中只有 Project(工程)和 Module(模块)的概念。这个地方刚开始用的时候会很容易理不清它们之间的关系。在eclip…

包含内部类的.java文件编译后生成几个.class文件

如果一个类有内部类,编译将生成几个字节码文件,规则是怎样呢? 写在前,自己动手丰衣足食,结论只有个人实验支持,没有官方数据支持,欢迎自行查阅文档然后来指正,轻喷,谢谢…

Intellij IDEA远程debug教程实战和要点总结

远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用。 JAVA支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协…

Idea进行远程Debug

Idea远程调试 当把一个本地项目部署到远程服务器后有可能出现意想不到错误,这个时候通过远程调试能够更清楚的找到bug所在位置。本篇主要讲解如何使用Idea开发工具 进行调试1.远程调试服务器上面的SpringBoot 项目2.远程调试服务器上运行在tomcat中的项目&#xff…

matlab表示DFT和DTFT,【 MATLAB 】离散傅里叶级数(DFS)与DFT、DTFT及 z变换之间的关系...

上篇博文我们简单的讨论了离散傅里叶级数DFS和离散傅里叶变换DFT之间的关系,简单地说,DFT就是DFS在一个周期内的表现。为了后面讨论方便,这里给出DFS的系数公式(分析公式):(1) 其中:综合公式:(2) 为了对比&…