锁定老帖子 主题:Java程序—如何精简JRE或者生成exe
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-09
做成EXE到很简单,用C写一个,通过JNI调用JAVA就可以了,不过精简很难,去掉一些不必要的还有很大,参考:http://www.blogjava.net/tianzhihua/articles/99709.html
|
|
返回顶楼 | |
发表时间:2008-06-09
我有个小问题顺便想问下
通常在JDK下,都是让java.exe这个工具帮我们找到jre,把我们的程序运行在相应的jvm.dll上面,如果是单独的jre,没有java.exe工具,该如何设置能让应用程序直接运行在jvm.dll上啊,小弟愚笨 |
|
返回顶楼 | |
发表时间:2008-06-09
Nighthaven 写道 因为很多用户的电脑上没有合适版本的jre。用一个软件的同时必须安装另外一个软件(jre)会给人一种流氓软件强行捆绑的感觉,而很多用户对此很抵触。更不要提用户电脑上的jre版本千变万化(有没有jre,是微软的还是sun的,是1.4还是1.6),与其大费周章强迫其安装你的软件所需要的版本,不如省心点把jre内置在产品里算了。
当然内置jre就牵扯到jre的大小问题,一个5m的软件内置一个10多m的jre……也许硬盘不在乎,但是对下载时间的影响还是非常明显的,软件下载的时候,用户的耐心是很有限的,所以越小越好。 至于证书的问题,连android都能发布~!无论你修改过的jre多么不符合java规范,只要你不把它叫成是java,那就不会有人管你~ android的发布协议不清楚,好像是开源免费的,至于能不能任意删减,增加,替换,然后重新编译,就不清楚了。 如果在你的产品中不提java,跨平台,可能是没人管。 但是如果自己修改sun的jre,在修改的时候就已经违反协议了,只不过你不发布,不商用,没有人能知道罢了。 为什么要用java做桌面应用呢, 个人觉得在windows下做桌面应用,可以用VB代替Java,现在用C#更快。 |
|
返回顶楼 | |
发表时间:2008-06-09
tianzhihua 写道 做成EXE到很简单,用C写一个,通过JNI调用JAVA就可以了,不过精简很难,去掉一些不必要的还有很大,参考:http://www.blogjava.net/tianzhihua/articles/99709.html
把这个问题提出来,就是想问大家的时间真的多到可以去学屠龙之技了吗? 做成一个这样的exe,比用一个bat文件调用javaw -jar,高明到哪里去呢? 昨天还看到一个同学说struts2的iterator标签不支持break,和这个java不能生成exe有异曲同工之妙。 |
|
返回顶楼 | |
发表时间:2008-06-09
rubyeye 写道 我有个小问题顺便想问下
通常在JDK下,都是让java.exe这个工具帮我们找到jre,把我们的程序运行在相应的jvm.dll上面,如果是单独的jre,没有java.exe工具,该如何设置能让应用程序直接运行在jvm.dll上啊,小弟愚笨 不懂你的意思,jre是可以单独使用的,里面有个jre\bin\java.exe,可以用。 |
|
返回顶楼 | |
发表时间:2008-06-09
exe4j
|
|
返回顶楼 | |
发表时间:2008-06-09
王者之剑 写道 fight_bird 写道 Windows、Mas上的桌面程序有几个是用Java来做的?极少,为什么?就是因为jre这个累赘,100M的大小楼主都觉得小,桌面程序中又有多少大于100M的?精简jre或者按策略选择安装不同版本的jre是合理的技术需求,Java的浏览器插件同样存在这样的技术需求。
Sun正在做这样的工作,楼主去看看jdk1.6Update10的release note,jdk7也将使用这种策略来发布jre。 至于是否必要编译为exe文件,在jre充分精简或可以按策略选择不同版本安装的条件,完全可以避免这一步。 jdk1.6update10的release note我没有看到,见下图,貌似根本就没有你说的jdk1.6Update10 只有Java SE 6 Update 10 Beta jdk1.6update6的readme中有如下语句 Redistribution NOTE - The license for this software does not allow the redistribution of beta and other pre-release versions. 下面相关的条款我不想在这里贴了。 难道小同学们提问的就是怎样按照options里的列表把一些文件删除? 不好意思,忘记加beta这个词,目前确实是beta版。 新的jre发布策略见图,Sun已经意识到jre按需打包和安装的重要性,包括java浏览器插件的安装策略都将有大的变化。 详细文档参见:http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html |
|
返回顶楼 | |
发表时间:2008-06-09
fight_bird 写道 王者之剑 写道 fight_bird 写道 Windows、Mas上的桌面程序有几个是用Java来做的?极少,为什么?就是因为jre这个累赘,100M的大小楼主都觉得小,桌面程序中又有多少大于100M的?精简jre或者按策略选择安装不同版本的jre是合理的技术需求,Java的浏览器插件同样存在这样的技术需求。
Sun正在做这样的工作,楼主去看看jdk1.6Update10的release note,jdk7也将使用这种策略来发布jre。 至于是否必要编译为exe文件,在jre充分精简或可以按策略选择不同版本安装的条件,完全可以避免这一步。 jdk1.6update10的release note我没有看到,见下图,貌似根本就没有你说的jdk1.6Update10 只有Java SE 6 Update 10 Beta jdk1.6update6的readme中有如下语句 Redistribution NOTE - The license for this software does not allow the redistribution of beta and other pre-release versions. 下面相关的条款我不想在这里贴了。 难道小同学们提问的就是怎样按照options里的列表把一些文件删除? 不好意思,忘记加beta这个词,目前确实是beta版。 新的jre发布策略见图,Sun已经意识到jre按需打包和安装的重要性,包括java浏览器插件的安装策略都将有大的变化。 详细文档参见:http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html 多谢,看来sun想通了阿,但是如果java老是版本不兼容,而且版本众多,在windows平台上没法和C#比。 |
|
返回顶楼 | |
发表时间:2008-06-09
王者之剑 写道 tianzhihua 写道 做成EXE到很简单,用C写一个,通过JNI调用JAVA就可以了,不过精简很难,去掉一些不必要的还有很大,参考:http://www.blogjava.net/tianzhihua/articles/99709.html
把这个问题提出来,就是想问大家的时间真的多到可以去学屠龙之技了吗? 做成一个这样的exe,比用一个bat文件调用javaw -jar,高明到哪里去呢? 昨天还看到一个同学说struts2的iterator标签不支持break,和这个java不能生成exe有异曲同工之妙。 不知道你看过SWT没有,或者做个C和JAVA互调没有,作用就在这,做成EXE只是一个很简单的应用,真真的作用是让JAV可以和C(其他语言)之间可以有个沟通的桥梁 |
|
返回顶楼 | |
发表时间:2008-06-09
王者之剑 写道 Nighthaven 写道 因为很多用户的电脑上没有合适版本的jre。用一个软件的同时必须安装另外一个软件(jre)会给人一种流氓软件强行捆绑的感觉,而很多用户对此很抵触。更不要提用户电脑上的jre版本千变万化(有没有jre,是微软的还是sun的,是1.4还是1.6),与其大费周章强迫其安装你的软件所需要的版本,不如省心点把jre内置在产品里算了。
当然内置jre就牵扯到jre的大小问题,一个5m的软件内置一个10多m的jre……也许硬盘不在乎,但是对下载时间的影响还是非常明显的,软件下载的时候,用户的耐心是很有限的,所以越小越好。 至于证书的问题,连android都能发布~!无论你修改过的jre多么不符合java规范,只要你不把它叫成是java,那就不会有人管你~ android的发布协议不清楚,好像是开源免费的,至于能不能任意删减,增加,替换,然后重新编译,就不清楚了。 如果在你的产品中不提java,跨平台,可能是没人管。 但是如果自己修改sun的jre,在修改的时候就已经违反协议了,只不过你不发布,不商用,没有人能知道罢了。 为什么要用java做桌面应用呢, 个人觉得在windows下做桌面应用,可以用VB代替Java,现在用C#更快。 java做桌面应用还是不错的。拿游戏来说,windows平台的竞争者太多,小公司做个游戏卖不出去几份。如果兼容linux和mac,由于竞争对手相对较少,就相对容易卖出去。尤其是linux用户,对于游戏的渴望简直……当然linux和mac用户本身就很少,不过对于小公司来说,还是多少有些补益的。 而且就算不考虑跨平台,java因为有很多开源或者不开源的库可以用(尤其是和网络有关的库),还是挺好用的。当然还有一些人喜欢客户端和服务端使用同样的技术。1.6之后,java做桌面的劣势主要是jre最新版本的普及率过低。对于电信之类的大企业内部,由于jre很容易普及,swing(swt)做桌面还是挺流行的。 |
|
返回顶楼 | |