??xml version="1.0" encoding="utf-8" standalone="yes"?>
Java的class文g转ؓEXE文g的八U方?/font>
我对~程一H不通,搜烦了下看怎么~译成exe文gQ?br />
于是发现了本文.其实,下面那个老兄回的更精彩.
Java应用E序本地~译为EXE的几U方?推荐使用JOVE和JET)
1. 从www.towerj.com获得一个TowerJ~译器,该编译器可以你的CLASS文g
~译成EXE文g。
2. 利用微Y的SDK-Java 4.0所提供的jexegen.exe创徏EXE文gQ这个Y件可以
从微软的|站免费下蝲Q地址如下Q
http://www.microsoft.com/java/download/dl_sdk40.htm
jexegen的语法如下:
jexegen /OUT:exe_file_name
/MAIN:main_class_name main_class_file_name.class
[and other classes]
3. Visual Cafe提供了一个能够创建EXE文g的本地编译器。你需要安装该光盘
上提供的EXElg。
4. 使用InstallAnywhere创徏安装盘。
5. 使用IBM AlphaWorks提供的一个高性能Java~译器,该编译器可以从下面的
地址获得Q
http://www.alphaworks.ibm.com/tech/hpc
6. JET是一个优U的Java语言本地~译器。该~译器可以从q个|站获得一个
试版本Q
http://www.excelsior-usa.com/jet.html
7. Instantiations公司的JOVE
http://www.instantiations.com/jove/...ejovesystem.htm
JOVE公司合ƈ了以前的SuperCedeQ一个优U的本地编译器Q现在SuperCede
已经不复存在了。
8. JToEXE
Bravo Zulu Consulting, Inc开发的一ƾ本地编译器Q本来可以从该公司的
|页上免费下载的Q不q目前在该公司的主页上找不到?br />
Feedback回道Q?br /># re: Java的class文g转ؓEXE文g的八U方法 ?br />几种java转exe的工Pq行一下比较,谈谈自己的看法:
1. 从www.towerj.com获得一个TowerJ~译器,该编译器可以你的CLASS文g~译成EXE文g?
注:现在已经找不刎ͼ不提供了Q被人家收购了?
2. 利用微Y的SDK-Java 4.0所提供的jexegen.exe创徏EXE文gQ这个Y件可以从微Y的网站免费下载,地址如下Q?
http://www.microsoft.com/java/download/dl_sdk40.htm
jexegen的语法如下:
jexegen /OUT:exe_file_name
/MAIN:main_class_name main_class_file_name.class
[and other classes]
注:没有试过
3. Visual Cafe提供了一个能够创建EXE文g的本地编译器。你需要安装该光盘上提供的EXElg?
注:没有试过
4. 使用InstallAnywhere创徏安装盘?
注:很不错的工具?
但就是要Q?MQ带jreQ,q有一U是Q?M的(不带jreQ?
但是它可以编译成各种q_上可以用的exeE序?
5. 使用IBM AlphaWorks提供的一个高性能Java~译器,该编译器可以从下面的地址获得Q?
http://www.alphaworks.ibm.com/tech/hpc
注:没有试过
6. JET是一个优U的Java语言本地~译器。该~译器可以从q个|站获得一个测试版本:
http://www.excelsior-usa.com/jet.html
注:不喜Ƣ?
~译好的E序q是jre的,听说正版的可以不能jre。安装好q要~译Q我用了30分钟?
7. Instantiations公司的JOVE
http://www.instantiations.com/jove/...ejovesystem.htm
JOVE公司合ƈ了以前的SuperCedeQ一个优U的本地编译器Q现在SuperCede已经不复存在了?
注:太烦了,老是出来一个对话框
用过Q会出来一个对话框Q表C是jove公司的品?
8. JToEXE
Bravo Zulu Consulting, Inc开发的一ƾ本地编译器Q本来可以从该公司的|页上免费下载的Q不q目前在该公司的主页上找不到了?
公司主页http://www.bravozulu.com/
下面q个FTP上曾l有q这个YӞ不知道现在是不是q在Q?
ftp://race.dlut.edu.cn/pub/java/tools/jet
注:很烦了,老是出来一个对话框Q但是没有想到我扑ֈ了crack,在google上找到?
现在L了那个对话框后,我很喜欢q个工具Q虽然它需要jreQ但是文件只?00多KQ很好哦?
9.Exe4j
很不?
10.jbuilder
q个工具不用多讲了,在jbuilder6.0以前的(包括6.0Q,是不能生成exe文g的,所以可以用如下的方法实现。这可以人家高手惛_来的Q我只是帮着宣传一下?
q有jbuilder7.0开始都可以生成exe文g?
q个是Borland不公开的用技巧,能够通过JBuilder来制作exe文g来启动Java文g?
JBuilderq不支持本地~译机制。但是有一个隐藏的技巧可以让你从可执行文件来启动JavaE序Q可以出现或者不出现consoleH口。想做到q些Q需要JBuilder的bin目录下的q些文g:
JBuilder.exe
JBuilderW.exe (可?
JBuilder.config
jdk.config
JavaLauncher.dll
"JBuilder.exe"是一个通用的可执行外壳文gQ用以启动JavaE序Q?JBuilderW.exe"好像是javaw.exe一P它把"JBuilder.exe"包装hQ但是运行时候不昄那个console的窗口。用这些文件的关键是文件名?JBuilder.exe"查找一个文件叫"JBuilder.config"的配|文Ӟ里面包含了运行JavaE序的必M息。同L"JBuilderW.exe"查找"JBuilder.exe"来启动不带ConsoleH口的JavaE序。如果把JBuilder.exe重命名ؓ"foo
.exe"Q那"foo.exe"去L"foo.config"配置文gQ同?JBuilderW.exe"被重命名?fooW.exe"Q它会去L"foo.exe"文g?
说到q里Q聪明的读者应该猜到怎样利用JBuilder.exe来启动应用程序了。只要把JBuilder.exe,JBuilerW.exe,JBuilder.config改名成相应的文g名,在JBuilder.config里面指定ȝ和类路径Q就能够通过执行JBuilder.exe(或者被改名后的exe文g)来启动Java应用E序了。下面是用本Zؓ例?
Borland JBuilder 5被安装在E:\jbuilder5\目录下,在E:\jbuilder5\bin\下徏立一个temp目录Q然后把JBuilder.exe,JBuilder.config,JavaLauncher.dll,jdk.config四个文g拯到E:\jbuilder5\bin\temp\目录下,然后在这个目录下建立一个hello目录Q在q个目录下生成一个hello.java文gQ即E:\jbuilder5\bin\temp\hello\hello.java文gQ?
//hello.java/
package hello;
public class hello{
public static void main(String s[]){
System.out.println("Hello, Exe file!");
}
}
~译成class文gQ然后打开Jbuilder.config文gQ作相应的修改:
在JBuilder.config里面扑ֈ下面两行
# Start JBuilder using the its main class
mainclass com.borland.jbuilder.JBuilder
修改?
# Start JBuilder using the its main class
mainclass hello.hello
addpath E:/jbuilder5/bin/temp/
addpath命o是把目录加入c\径中Q这个命令和其它config里面可以识别的命令可以在JBuilder/bin目录下的config_readme.txt里面扑ֈ详细说明?
然后jdk.config里面的javapath修改成相对的路径Q例如原来是
javapath ../jdk1.3/bin/java
修改?
javapath ../../jdk1.3/bin/java
最?
JBuilder.exe,JBuilder.config修改成所需要的文g名,例如foo.exe和foo.config文g?
现在执行foo.exe文g
xQ通过修改JBuilder来用exe文g启动自己的Java应用E序已经完成了?
但是好玩的地方ƈ不在q个地方Q下面的技巧可能更有趣Q将Jar文g打包q入exe文gQ?
假设利用上面的文Ӟ生成hello.jar包,
jar cvf hello.jar hello\*.class
然后jar包附加到JBuilder.exe后面去,
copy /b ..\JBuilder.exe+hello.jar foo.exe
在foo.config(JBuilder.config)文g里面把前面加入的c\径去掉,q加入下面的路径Q?
addpath E:/jbuilder5/bin/temp/foo.exe
然后执行Qfoo.exe
看到了么Q一个含jar包的exe文g被执行了Q?
q个q程的大致原理是Qexe文g的重要信息都在文件头部,所以把׃八糟的东西放exe文gN是不要紧的;而jar/zip文g的重要信息是在文件尾部的Q这样它们两不相qԌ能够Ҏ的被执行?
h意:读者如果用这个功能,得自己承担可能带来的风险Q因为Borland对这个功能不提供官方的支持!
]]>
在ChinaITLAB导师制辅gQ笔者发现问得最多的问题莫过?如何学习~程QJAVA该如何学习?"。类似的问题回答多了Q难免会感觉厌烦Q就萌生了写下本文的x。到时候再有h问vcM的问题,我可以告诉他Q她Q,请你ȝ看《JAVA学习之\》。拜读过台湾蔡学镛先生的《JAVA夜未眠》,有些文章如《JAVA学习之道》等让我们确实有共鸣Q本文题目也由此而来?br /> 软g开发之路是充满荆棘与挑战之?也是充满希望之\。JAVA学习也是如此Q没有捷径可走。梦惛_《天龙八部》中虚竹一栯无崖子醍醐灌而轻松获得一甲子功力Q是很不现实的。每天Ԓ天大?天神啊,误l我一本葵花宝典吧"Q殊不知即你获得了葵花宝典Q除了受自宫其n之苦外,你也不一定成得了"东方不|"Q倒是?西方p|"的几率高一炏V?br /> "不走弯\Q就是捷?Q佛l说的不无道理?br /> 1Q如何学习程序设计?
JAVA是一U^収ͼ也是一U程序设计语aQ如何学好程序设计不仅仅适用于JAVAQ对C++{其他程序设计语a也一L用。有~程高手认ؓQJAVA也好C也好没什么分别,拿来q。ؓ什么他们能辑ֈ如此境界Q我x因ؓ~程语言之间有共通之处,领会了编E的_NQ自然能够做C通百通。如何学习程序设计理所当然也有许多共通的地方?br /> 1.1 培养兴趣
兴趣是能够让你坚持下ȝ动力。如果只是把写程序作生的手段的话Q你会活的很累,也太对不赯׃。多兛_一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但h要是没有了梦惻I你觉得有味道吗?可能像许多深x地农民一P打打dQ喝喝功夫茶Q拜拜胦爷Q每个月有几万十几万甚x多的q帐Q凭I多Z"食利阶层"。你认ؓQ这h味道吗?有空多到一?a class="cssContent" target="_blank" href="http://www.softexam.cn/search/index.asp?type=all&field=all&keyword=E序?>E序?/a>论坛转{Q你会发玎ͼ他们其实很乐观幽默,时不时会冒出智慧的火花?br /> 1.2 慎选程序设计语a
h入错行Q女怕嫁错郎。初学者选择E序设计语言需要}慎对待。Y件开发不仅仅是掌握一门编E语a了事Q它q需要其他很多方面的背景知识。Y件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落?br /> 如果你对g比较感兴,你可以学习C语言/汇编语言Q进入硬件开发领域。如果你对电信的行业知识及网l比较熟悉,你可以在C/C++{之上多花时_以期q入电信软g开发领域。如果你Ҏ作系l比较熟悉,你可以学习C/Linux{等,为Linux内核开?驱动E序开?嵌入式开发打基础。如果你想介入到应用范围最q泛的应用Y件开发(包括电子商务电子政务pȝQ的话,你可以选择J2EE?NETQ甚至LAMPl合。每个领域要求的背景知识不一栗做应用软g需要对 "你现在讲I简单方便,你以后的路就长了"Q好象也是佛l中的劝戒?br /> 1.4 多实?快实?br /> 彭端淑的《ؓ学一首示子侄》中有穷和尚与富和尚的故事?br /> 从前Q四川边境有两个和尚Q一个IP一个有钱。一天,I和对富和说Q?我打去南v朝圣Q你看怎么P"富和说Q?q里dh几千里远Q你靠什么去呢?"I和说Q?我只要一个水钵,一个饭就够了?富和ؓ隑֜_"几年前我打买条船dP可至今没LQ你q是别去吧!" 一q以后,富和还在ؓU赁船只{wQ穷和尚却已l从南v朝圣回来了?br /> q个故事可解MؓQQ何事情,一旦考虑好了Q就要马上上路,不要{到准备周全之后Q再d事情。假如事情准备考虑周全了再上\的话Q别人恐怕捷_M。Y件开发是一门工E学U,注重的就是实践,"君子动口不动?对Y件开发h员来讲根本就是错误的Q他们提?动手至上"Q但别害怕,他们大多温文雅Q没有暴力們Q虽然有时候蓬头垢面的一?比尔盖茨"栗有前辈高h认ؓQ学习编E的U诀是:~程、编E、再~程Q笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要{到你完全理解了才动手敲代码Q而是应该在看书的同时敲代码,E序q行的各U情况可以让你更快更牢固的掌握知识点?br /> 1.5 多参考程序代?br /> E序代码是Y件开发最重要的成果之一Q其中渗透了 对于在JAVA开发领域的好书在笔者另外一文章中会专门点评。该文章可作为本文的姊妹?br /> 1.9 使用合适的工具
工欲善其事必先利其器。Y件开发包含各U各LzdQ需求收集分析、徏立用例模型、徏立分析设计模型、编E实现、调试程序、自动化试、持l集成等{,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使Y件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤h的境界就很高了,无招胜有招,手中无剑心中有剑q样的境界几乎不可企及。在W者另外一文章中会专门阐q如何选择合适的工具Q该文章也可作ؓ本文的姊妹篇Q?br /> 2QY件开发学习\U?br /> 两千多年的儒家思想孔孟之道Q中庸的思想透入骨髓Q既不冒q也不保守ƈ非中怹道,而是扑֯学习软g开发的正确路线与规律?br /> 从Y件开发h员的生规划来讲Q我们可以大致分Z个阶D,软g工程师→ BQ一门编E语aQ现在基本上都是面向对象的语aQJAVA/C++/C#{等。如果做WEB开发的话还要学习HTML/JavaScript{等?br /> CQ一U方法学或者说思想Q现在基本都是面向对象思想QOOA/OOD/设计模式Q。由此而衍生的Zlg开发CBD/面向斚w~程AOP{等?br /> DQ一U关pd 3.1.2 OO思想的领?br /> 掌握了基语法和JAVAE序q行原理后,我们可以用JAVA语言实现面向对象的思想了。面向对象,是一U方法学;是独立于语言之外的编E思想;是CBDZlg开发的基础;属于强势技术之一。当以后因工作需要{到别的面向对象语a的时候,你会感到特别的熟悉亲切,学v来像喝凉水这么简单?br /> 使用面向对象的思想q行开发的基本q程是:
●调查收集需求?br /> ●徏立用例模型?br /> ●从用例模型中识别分析类及类与类之间的静态动态关p,从而徏立分析模型?br /> ●细化分析模型到设计模型?br /> ●用具体的技术去实现?br /> ●测试、部|Ӏȝ?br /> 3.1.3 基本API的学?br /> q行软g开发的时候,q不是什么功能都需要我们去实现Q也是l典名言所说的"不需要重新发明轮?。我们可以利用现成的cR组件、框架来搭徏我们的应用,如SUN公司~写好了众多cdC些底层功能,以及我们下蝲q来的JAR文g中包含的c?我们可以调用cM的方法来完成某些功能或承它。那么这些类中究竟提供了哪些Ҏl我们用?Ҏ的参C数及cd是?cȝ构造器需不需要参敎ͼM可能SUN公司的工E师打国际长途甚至飘z过h告诉你他~写的类该如何用吧。他们只能提供文档给我们查看QJAVA DOC文档Q参考文?.4Q就是这L文档Q它可以说是 3.2.3学习开源Y件的设计思想
JAVA领域有许多源代码开攄工具、组件、框ӞJUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等{多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归Q你心甘吗?对这些工兗框架进行分析,领会其中的设计思想Q有朝一日说不定你也能写一个XXX框架什么的Q风光一把。分析开源Y件其实是你提高技术、提高实战能力的便捷Ҏ?br /> 3.2.4 规范的重要?br /> 没有规矩Q不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到 4Q结束语
需要强调的是,学习软g开发确实有一定的隑ֺQ也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在JAVA殿之外的朋友有所帮助的话Q笔者也ƣ慰了。哈哈,怎么听v来老气横秋呀Q没办法Q在电脑的长期辐之下,都快变成老头了。最后奉劝各?a class="cssContent" target="_blank" href="http://www.softexam.cn/search/index.asp?type=all&field=all&keyword=E序?>E序?/a>|荕Mhttp://www.chinaitlab.com/www/news/...ow.asp?id=33934
5.3 http://javaalmanac.com/egs/
5.4 http://java.sun.com/j2se/1.5.0/docs/api/index.html
U程QThreadQ?/p>
首先Q线E是很多J2EE初学者容易忽视的一个基本知识,可以_无论你是从Java世界的哪一扇门q入J2EE的,U程是必l之道?/p>
已经不记得在哪里看到q下面一D英文:
在过去,大概只有勇敢?a class="cssContent" target="_blank" href="http://www.softexam.cn/search/index.asp?type=all&field=all&keyword=E序?>E序?/a>才勇于用pthread和Win32U程Q现代语a如Java正试囑֜~写一些o人恐惧的应用如ƈ行计等斚w来挽救我们?/p>
J2EE的Servlet和EJB保我们不用担心U程以及同步{问题,我们只要象往怸LE,容器自动会用线E池{技术来支持我们的应用?/p>
由此可见Q线E是J2EE最基本的底层机Ӟ每个Servlet/JspE序其实是一D늺E程序,如果你不懂得U程/多线E的一些原理,如何能娴熟驾驭J2EE的Servlet/JspQ?/p>
在线E计方面有很多权威QDou Lee无疑是这斚w的杰Z表,他的q行计算包已l加入了最新的JDK1.5版本中,他的书籍都属于奠基性质Q但是,q样书籍可能不是很适合只想对线E进行了解的J2EE初学者?/p>
《JavaU程~程》(Java Thread ProgrammingQ?/p>
是我推荐的第一本有关J2EE书籍Q在q本书中Q作者以单的例子QŞ象易懂地从单U程讲解到多U程Q线E池QThread PoolQ、ƈ发同时访问对象和变量QConcurrent Access to Objects and VariablesQ,q些都是我们在^时Servlet/Jsp~程中经怼发生疑惑的地方,在这本书的案例中Q作者清晰明了地l我们展C些细节而有重要的技术。同Ӟ也让我们深刻地理解了直接~制多线E应用是一件“o人恐惧”的事情?/p>
很有意思的是,我在一家网上书店社区里也发C与我有同栯解的帖子Q称q本书是“一本让l典成ؓq去的书?/p>
设计模式
U程世界p微生物世界一P复杂且几乎没有边界,作ؓ信息pȝ?a class="cssContent" target="_blank" href="http://www.softexam.cn/search/index.asp?type=all&field=all&keyword=E序?>E序?/a>如果太执著于q样U技术的微观层面Q可能浪费太多宝贉|间和_֊Q在基本掌握多线E机制后Q需要更加关注J2EE的设计应用了?/p>
J2EE是Java世界中一个独特的框架或标准,所以,我们首先需要掌握基于Java的设计应用,q些设计应用技巧,是先行者经q长期实跉|ȝ出来的心得,他们UC计模式。在J2EE应用中,只有大量使用设计模式Q才能体现出分离和解耦的最高宗旨,才能使得自己的J2EEpȝ脉络清晰、层ơ分明,q样的系l才真正h良好的可伸羃性、稳固的健壮性以及方便的可维护性?/p>
GoF 23U设计模式已l成为经典,2002q我在我的网站J道发?3U设计模式Java详解Ӟ竟然在中文google里很隑֏现这斚w的资料,q让我万分惊Ӟ也许国h实是非常实在,只对法、数据结构等q样看得见、摸得着的概忉|兴趣Q其实我一直反复和别hԌ设计模式不是U抽象概念,它是实践的ȝQ如同UML一P是一U交和~码实现的语a?/p>
我在2002q帮朋友购买了GoF 23U设计模式的中文版:《设计模式:可复用面向对象Y件的基础》,它是2000q?2月第2ơ印L版本Q这L典必Mc,8000册在2q时间内都没有销售完毕,相比那些喧嚣炒作的书c,在出版几个月内销售过万,发昑־我们q个C会的Qw和急功q利了?/p>
当然Q这本薄薄的书虽然由四个国h鼎力协助译Q想必他们也D思竭虑,了最大努力了Q可惜书中还是有很多译Ơ妥之处Q媄响了它的销量?/p>
׃q本l典的GoF设计模式比较难懂Q初学者更多应该是从实例应用中了解和掌握GoF设计模式Q相x供实例应用的书籍有下面几本:
Mark Grand的Patterns in JavapdQ?/p>
籍华h阎宏的《Java与模式》;
W者的《Java实用pȝ开发指南》;
EJB
EJB是J2EE中一个重要组成部分,J2EE推荐你的业务功能核心放在EJB中实玎ͼEJBcM肯得基的“全家桶”,实际中需要的基础功能全都打包在一起了Q如果你是个挑剔或个性化的客P我想你可能不会只满于“全家桶”。不“全家桶”是否合适你Q了解它里面装的是什么是一个必需的过E。掌握EJB需要从两个斚w着手:基本原理和如何用?/p>
《精通EJBQ第二版Q?/p>
是对EJB原理讲解得比较透彻Q但是书中将EJB一些本质原理推卸给了CorbaQ而对Corba又没有仔l介l,我认为初学者应该在q里适可而止Q如果你非常对EJB底层实现感兴,我推荐阅读JBoss的源码,其实JBoss源码在你孜孜不倦的ȝ之劲d下很快会土崩瓦解?/p>
对象池(Object PoolQ、RMI和事务机制应该是EJB原理掌握三个方向Q这三种技术方向又可以推荐很多书籍供学习研IӞq里׃说了?/p>
EJB主要分EJB容器和EJB应用pȝQ初学者更多精力应该关注如何构建EJB应用pȝQ由于EJB提供功能强大且非常有特点Q因此,使用他们要非常小心,遵@一定的前提和规则,由此QEJB设计模式是不能不了解的?/p>
《EJB设计模式?/p>
是这斚w的经怹作,在书中,作者指Z使用CMP注意特点、DAO模式的重要性、DTO模式的变U等。阅L书的同时Q如果参考SUN的PetStore源码学习Q将会vC半功倍的效果Q完上面两本书,自己动手实践非常重要QEJB使用中关于EJB reference配置比较ȝQ其原理是这P调用?--- > EJB Reference ---> 被调用EJB的JNDI名称 ---- >被调用EJBQ这些细节用问题只有实跉|才能到Q也可以从网上寻找一些这斚w的电子教E实例?/p>
只有调试了一两个EJB实例Q这时你才可以站出来表达你的xQ喜Ƣ或不喜Ƣ?架构选型时也可以提供参考意见:是轻量型q是重量型?盲目排斥EJB或认为EJB是唯一解决Ҏ{两U极端观Ҏ要不得的Q条条大路通罗马,伸羃和性能是关键?/p>
q里推荐一本从U设计角度看待EJB/J2EE的书c:Rod Johnson的《J2EE设计开发编E指南》,英文是Expert oBne-on-One J2EE Design and DevelopmentQRod Johnson在书中从一个完的设计角度指出了EJB~点Q这些缺点他是用黑体标识Q非帔R目,同时Q他如果不使用EJB所带来的额外工作量使用正常字体标识了Q算是轻描E写吧。当ӞRod JohnsonZ其理想的设计落实ؓ代码Q主持了Spring框架开发,如果J2EE领域有一个既W合完美的设计要求,又能支持成熟应用Q同时又是业界标准,那是一个多么o人向往的事情,Spring框架臛_在这斚w做了有益的探索?/p>
集群、Web服务和资源整?/p>
对于中大型Y件系l,集群和Web服务是必需掌握的技术,目前相关书籍不多。如何将J2EE新技术和现有资源整合Q也属于一个探索性的领域Q期待这几个斚w有好的书c问世?/p>