仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1597|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页编程之用javap 反汇编帮你了解java特征

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:44:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?用javap反汇编帮你了解java特征(利用javap深切检察类文件)

Builder.com
利用javap深切检察类文件

Java开辟职员熟习在一个轮回中利用StringBuffer来取代串连String对象能取得最好功能。但是,多半开辟职员历来没有对照两种办法发生的字节代码的区分。在Java开辟工具包(JDK)中有一个叫做javap的工具能够告知你为何如许做能够取得最好功能。



Javap将一个类和它的办法的一些转储信息输入到尺度输入。该工具不把代码反编译为java源代码,可是它会把字节代码反汇编成为由Java假造机标准界说的字节代码指令。

在你必要检察编译器为你大概给你做了甚么的时分,大概你想要看一处代码的修改对编译后的类文件有甚么影响的时分,javap相称有效。

如今以我们后面提到的StringBuffer和String作为一个例子。上面是一个专门为例子计划的类,它有两个办法,都前往一个由0到n的数字构成的String,个中n由挪用者供应。两个办法独一的区分在于一个利用String构建了局,别的一个利用StringBuffer构建了局。

publicclassJavapTip{
publicstaticvoidmain(String[]args){
}

privatestaticStringwithStrings(intcount){
Strings="";
for(inti=0;i<count;i++){
s+=i;
}

returns;
}

privatestaticStringwithStringBuffer(intcount){
StringBuffersb=newStringBuffer();
for(inti=0;i<count;i++){
sb.append(i);
}

returnsb.toString();
}
}

如今让我们看看对这个类利用Cc选项运转javap的输入。-c选项告知javap反汇编在类中碰到的字节代码。

运转体例以下:

>javap-cJavapTip

此命令的输入为:

Methodjava.lang.StringwithStrings(int)
0ldc#2
2astore_1
3iconst_0
4istore_2
5goto30
8new#3
11dup
12invokespecial#4
15aload_1
16invokevirtual#5
19iload_2
20invokevirtual#6
23invokevirtual#7
26astore_1
27iinc21
30iload_2
31iload_0
32if_icmplt8
35aload_1
36areturn

Methodjava.lang.StringwithStringBuffer(int)
0new#3
3dup
4invokespecial#4
7astore_1
8iconst_0
9istore_2
10goto22
13aload_1
14iload_2
15invokevirtual#6
18pop
19iinc21
22iload_2
23iload_0
24if_icmplt13
27aload_1
28invokevirtual#7
31areturn

假如你之前没有看过Java汇编器,那末这个输入对你来讲就会对照难明,可是你应当能够看到withString办法在每次轮回的时分都新创立了一个StringBuffer实例。然后它将已有的String确当前值追加到StringBuffer上,然后追加轮回确当前值。最初,它对buffer挪用toString并将了局赋给现有的String援用。

withStringBuffer办法与这个办法恰好相反,在每次轮回的时分withStringBuffer只挪用现有StringBuffer的append办法,没有创立新的对象,也没有新的String援用。

在这类情形下,我们已晓得了利用StringBuffer取代String是一种好的做法,可是假如我们不晓得呢?那末javap能够匡助我们找到谜底。在这里你能够看到更具体的关于String,StringBuffer的注释

你其实不会常常必要一个Java反汇编器,可是当你必要的时分,晓得你本人的呆板已有一个而且用法相称复杂的反汇编器固然是一件功德。假如你感乐趣,看书看看javap的别的选项――也许你会发明在你的情况中必要的特征。


关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
乐观 该用户已被删除
沙发
发表于 2015-1-21 13:52:52 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
柔情似水 该用户已被删除
板凳
发表于 2015-1-24 19:44:08 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
只想知道 该用户已被删除
地板
发表于 2015-2-2 12:43:36 来自手机 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
小魔女 该用户已被删除
5#
发表于 2015-2-6 13:08:06 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小妖女 该用户已被删除
6#
发表于 2015-2-16 05:25:38 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
透明 该用户已被删除
7#
发表于 2015-3-5 00:07:20 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-10 16:28:55 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
不帅 该用户已被删除
9#
发表于 2015-3-23 15:17:59 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
再见西城 该用户已被删除
10#
发表于 2015-4-5 15:09:57 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
第二个灵魂 该用户已被删除
11#
发表于 2015-4-18 06:48:21 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
谁可相欹 该用户已被删除
12#
发表于 2015-4-29 21:28:22 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
兰色精灵 该用户已被删除
13#
 楼主| 发表于 2015-5-5 16:19:01 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
老尸 该用户已被删除
14#
发表于 2015-5-7 19:31:00 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
飘灵儿 该用户已被删除
15#
发表于 2015-6-15 03:11:10 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
若相依 该用户已被删除
16#
发表于 2015-6-18 02:37:55 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
admin 该用户已被删除
17#
发表于 2015-6-18 12:28:31 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
莫相离 该用户已被删除
18#
发表于 2015-6-20 07:28:58 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
分手快乐 该用户已被删除
19#
发表于 2015-6-25 08:02:27 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小女巫 该用户已被删除
20#
发表于 2015-6-25 11:06:23 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表