|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-18
sslaowan 写道 王者之剑 写道 Nighthaven 写道 王者之剑 写道 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)做桌面还是挺流行的。 要生成exe什么的,应该不是大企业的要求:) 我不是说java不能做桌面应用,而是说不要去研究怎样生成exe,这样的屠龙之技,大家不要学。 要学最有价值的部分,才不会浪费时间,才能让自己有价值。 那这种事总要有人做吧? 用一位大姐的话说:让没有看到这个讨论的人去做吧! 只是你没见过这样的大企业应用罢了,例如我们的项目就需要支持多种客户端,有一种表现层就是RCP,本来程序打包成exe才10多兆,但是我要带个一百多兆的jre,很苦恼。 大企业应用不是上门服务? 再不济也得搞张光盘,不然好意思卖几十万上百万? 难道真的让大企业信息部门的人自己下载安装? 有什么苦恼的? |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-18
54powerman 写道 楼主难道打印个hello world这么简单的程序也愿意接受100M的大小??别抬杠,有时应用就这么简单。
并且,不是所有用户都有jre,jre毕竟不是.net framework; 也不是所有程序都是写给自己用的。 hello world用javascript写就可以了。 做成helloword.html 也跨平台。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-18
sslaowan 写道 王者之剑 写道 hut 写道 晕了。真会跑题。
问题是 怎么精简,结果讨论 到 有没有精简的必要去了。服了。 明白人来了呀,嗯,发这个问题,就是讨论审题的问题。 因为我发现有些人要生成exe的原因是为了有个快捷方式点一下就可以执行。 大家知道一个.class文件是不能点了就执行的。jar也不大行。 更不用说包括很多lib的了,开发时在集成环境中还好,发布时怎么办?初学者面对这样一个问题,会像红军战士想念毛主席一样想念exe。 其实这不是exe的问题,在windows下写个bat就可以了。 没有搞清问题所在,就在解决的太多了。 如何精简,如果协议许可的话,不是一个什么难题,根本就没有讨论的必要。就算不用工具,用copy命令也用不了一天吧。不要告诉我你这个项目是两天开发出来的。 本来没登陆,看了你这话很生气,你开篇的问题是下面这个,也没说讨论如何精简啊? 王者之剑 写道 精简JRE还可以说是为了省硬盘,做成exe是为了什么?
谁知道? 精简JRE还可以说是为了省硬盘? 因为你说的只是一个原因,所以更多的做过类似项目的人才跟你说了其他精简JRE的理由 你还真是搞笑 我觉得我们要搞清楚两个问题: 1.jre允不允许精简? 我看jre带的license不允许:你想怎么精简就怎么精简,只要你自己开发的程序能运行。 2.假认我们不管license,精简能做到什么效果? 我认为不管你怎么精简,jre都会比你的程序大得多。你的程序用到的java类越多,越不太可能精简。 我觉得很多问题,我们一开始就走错了方向,这是我发这个贴子的原因。 做为一个技术人员,你不要走在一条错误的路上,不要把时间用来学习看似高深,但实际无用的东西。 所以做你的RCP,精简jre或者生成exe的事情让别人去做吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-18
试试jet吧,可以生成dll,exe
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-20
生成EXE我认为无聊到极点,大多数人也没有非要生成EXE,就算了。
精简jre看来很多人有需要。这个贴子浏览量已过6000,在google里搜索“精简JRE",已经排到了第一条。 不说点儿什么,好像太那个了,就和大家探讨一下如何精简JRE(我没有做过这种事,写的都是我这会儿的想法)。 假设随意精简JRE是被允许的。 1.最小的jre肯定是我们写的应用程序运行必须用到的文件。因此通用的精简的jre是不存在的。因为我们没有用到的class尽量不要打包进来。 2.如果能找出项目用到的所有class,那么有助于问题的解决。解决这个问题需要做两件事:1)解析class文件,找到import的class名。2)解析jar文件,把用到class给复制出来。只要读JVM规范就可以。(暂不考第三方包可能存在的被混淆情况) 3.不可能每个jre的精简都是一样的,尤其是还有不同厂家的。这里以sun 的windows jdk1.6的jre 为例。可以看到,除了lib下面的jar文件外,还有许多其他文件,bin下面也有很多dll。因此需要有文件的说明,否则不好精简这些东西。 4.如果java命令能提供有用的信息,那么可能有一定帮助。-verbose这个可以打印类的信息。但是各位都号称项目大大的,所以全部功能运行一遍不大现实。还是用上面的解析class文件好一些。-client -server -hotspot的说明,可以认为bin下面的sever可以不要,减去了3M,client目录下面有个文件太大了,能不要就好了。不能确信。 5.除了应用程序用到的class以外,系统会不会有一些应用程序没用到,自己必须的class。 6.最狠的方法当然是只把class里用到的方法和变量,dll里用到的函数打包。 综上,熟读JVM规范和找到sun对于自己jdk的文件说明基本就可以精简jre了。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-20
JVM规范
http://java.sun.com/docs/books/jvms/ JDK的目录结构 http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/jdkfiles.html http://java.sun.com/j2se/1.5.0/docs/tooldocs/linux/jdkfiles.html http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html http://java.sun.com/javase/6/docs/technotes/tools/linux/jdkfiles.html |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-20
目录不够详细,假认bin下只需要列出来的文件的话,那bin的简化就不用考虑了。
java.exe javaw.exe java.dll awt.dll client\jvm.dll压缩成zip不到2M(是不是还是大?) |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-27
个人认为,要EXE是为了方便广大用户吧...
|
|
| 返回顶楼 | |





