动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.IBM 关于 数据验证 和 异常处理的.
.Java编程技巧:列表排序.
.用本地引用提高EJB访问效率.
.集成WAP和Java 浏览器解决电信难.
.使用Java实现数据报通讯过程.
.性能优化:==代替equals.
.当MySQL集群时, JDBC路径的使用方.
.在JAVA中连接Sybase数据库(例子).
.对于log4j的深层次的理解.
.J2EE疑难解决实例.
.用JavaBean数据组件集成JSF应用程.
.IoC/依赖注入、以及在Spring中的.
.系统构建高性能J2EE应用的五种核.
.JavaMail快速入门(下).
.使用Web服务和Ja.NET来实现互用性.
.Java程序设计的基本结构.
.RMI规范--第四章.
.尝鲜:最新版Eclipse3.1及插件介.
.J2EE会话外观模式与值对象.
.为何不让SOA变得简单?.

Java 相关的编译技术

发表日期:2008-1-5 |


 


除了 Java 的编译器和虚拟机器之外,还有一些相关的编译技术,本文章试图做一个简单的说明。

JIT 编译器
传统的 Java 虚拟机器很愚蠢,将一道 bytecode 的指令翻译成机器码之后,马上执行这些机器码,执行完这批机器码之后,就把这些机器码丢了,接着再翻译下一道 bytecode 的指令,继续下去 ...。即使下次执行到以前执行过的 bytecode 指令,依然要重新翻译成机器码才能执行,如此一来,效率当然不好。

使用 JIT 编译器(Just-In-Time compiler)技术的虚拟机器比较聪明,会把经常执行的部分在第一次先翻译好放在内存,以后再次执行到这里时,就不用再翻译,直接从内存取出机器码即可执行。这么一来,只要你的内存够大,JIT 编译器的技术够好,你的 Java bytecode 执行速度也可以逼近纯编译式的程序。

其它程序语言的编译器
任何档案只要符合 Java bytecode 的格式,就可以被 Java 虚拟机器执行。制造出 Java bytecode 的方式有许多种,不一定要使用 Java 语言来写程序,才能编译成 Java bytecode。Java 是语言也是平台,你可以不使用 Java 语言(也就是 Java 编译器),只使用 Java 平台(也就是 Java 虚拟机器)。只要某语言有提供编译器,能将该语言的原始码编译成 Java bytecode 格式,就可以在 Java 平台上执行。

据我所知,目前已经有下列语言提供兼容于 Java 平台的编译器(以英文字母顺序排列):Aardappel,Ada,Agora 98,BAMBOO,Basic,Bistro,Bolero,C,C++,CLIPS,COBOL,Correlate,Dawn,E,EcmaScript,Eiffel,Foo,Forth,Fortran,Funnel,Haskel,Hojo,javascript,Jickle,JIF,Jinni,Lisp,LL,LLP,Logo,LUCk,MINERVA,Mini,ML,Modula-2,NetRexx,Nice,Oberon-2,Pascal,PLAN,Pnuts,Prolog,PS3I,Python,Sather,Scheme,SELF,Simkin,Small Talk,Tcl,WebL,Yassl,Yoix,Yoyo。

原生编译器
假如你不在乎 Java 程序能否跨平台,你希望 Java 程序能如同 C/C++ 一般被编译成机器码而非 Java bytecode,那么你可以使用 Java 原生编译器(native compiler)。目前已经有不少这样的产品可以使用。

Java 原生编译器有两大类,一类可以把 Java 的原始码编译成机器码,另一类则可以把 Java bytecode 编译成机器码。

反编译与混淆器
Java bytecode 因为档案格式简单,信息保留完整,且指令是最简单的堆栈式(stack-based)架构等因素,所以很轻易被反编译(de-compilation)。反编译指的是和编译相反的过程,对 Java 来说,反编译就是把 Java bytecode 转换成 Java 原始码的过程。

为了防止你辛劳地开发出来的 Java bytecode 被他人反编译成原始码,你可以透过混淆器(obfuscator)将你的 Java bytecode 转换成更混乱的 Java bytecode,执行起来效果一样,但是被混淆过的 Java bytecode 比较不轻易被反编译。你通常要为此付出一点代价,因为混淆过的程序执行速度通常会变慢。且混淆器只能增加反编译的难度,不能保证你的程序一定无法被反编译成功。究竟道高一尺,魔高一丈,假如有人愿意花许多时间和精力反编译你的 Java bytecode,你根本就无法拦阻。

组译与反组译
汇编语言(assembly)是一种非常接近机器码的语言。将汇编语言转成机器码的工具称为组译器(assembler),反过来将机器码转成汇编语言的工具称为反组译器(dissembler)

对于 Java 虚拟机器来说,Java bytecode 就如同它的机器码,有没有一种语言是很接近 Java bytecode 的呢?也就是说,Java 有没有的汇编语言呢?基本上,Sun 并未定义 Java 的标准汇编语言,但是有一些人定义了自己的 Java 汇编语言,并提供 Java 的组译器(甚至反组译器)。例如 Jasmin 以及 javaa 都是 Java 组译器。

前处理器
前处理器(pre-processor)也称为前编译器(pre-compiler)或前翻译器(pre-translator),其目的在将源码中不符合语言规范的部分转换成符合语言规范的形式。比方说:我们可能在 Java 源码中除了使用 Java 语言之外,还穿插使用自订的语法。这些自订的语法无法被 Java 编译器处理,所以我们必须先透过一个前处理器来将自订语法的部分转换成 Java 语言,然后就可以交由 Java 编译器处理。

目前有不少 Java 的前处理器,例如 iContract、SQLJ,都是用来扩充 Java 语言之用的。

最佳化工具软件
一般来说,最佳化有两种:
1. 让档案体积变小,可以节省储存空间并加快网络传送速度。
2. 让执行速度变快。
对于 Java 来说,还有第三种最佳化:
3. 让程序结构变乱,不轻易被反编译。也就是前面提到过的混淆(obfuscation)。

这三个目的之间经常互相排挤:结构变乱,通常会使得程序变慢,且体积变大;体积变小,通常会使得速度变慢,且结构变整洁;速度变快,通常会使得体积变大,且结构变整洁。



上一篇:优化JAVA性能 人气:702
下一篇:字节码如何防止内存错误及提高代码质量 人气:1124
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-4 PhpCMS2008 bulid 081203 简体中
2008-12-4 Menalto Gallery v1.5.10 多国语
2008-12-4 Phpcms2008 bulid 081203 简体中
2008-12-4 乘风多用户计数器 v3.92 (Acc)
2008-12-4 乘风多用户计数器 v3.92 (Sql)
2008-12-4 BBSxp 2008 8.0.5 SP2 Build 081
2008-12-4 ASBLOG v2.5 bulid 081118(1201)
2008-12-4 非零坊幽默短信 v3.4
2008-12-4 红茶巴士(公交)查询系统 v3.0
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成