`
王者之剑
  • 浏览: 196430 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

Java程序—如何精简JRE或者生成exe

阅读更多

(对不起,这里没有答案。)

时至今日,仍然有人在问这样的问题。

且不说现在100M不到的东西相对于硬盘来说根本不值一提。

JRE允许发布的前提中的一条就是要保持完整性。

 

你如果要做一个小的,可执行的Java程序,最好的办法就是自己根据JVM规范写一个。

但是写完以后你会发现小不了,除非你做的连玩具都不是。

 

精简JRE还可以说是为了省硬盘,做成exe是为了什么?

 

谁知道?

分享到:
评论
20 楼 laiseeme 2008-06-10  
最近想用java做一些桌面应用程序 比如进销存  但是老板不让 还是用delphi'
我觉得那还不如用c#
delphi是不是用的人越来越少了呢?
19 楼 Nighthaven 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)做桌面还是挺流行的。
18 楼 tianzhihua 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(其他语言)之间可以有个沟通的桥梁
17 楼 王者之剑 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#比。
16 楼 fight_bird 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
15 楼 foolfisher 2008-06-09  
exe4j
14 楼 王者之剑 2008-06-09  
rubyeye 写道
我有个小问题顺便想问下
通常在JDK下,都是让java.exe这个工具帮我们找到jre,把我们的程序运行在相应的jvm.dll上面,如果是单独的jre,没有java.exe工具,该如何设置能让应用程序直接运行在jvm.dll上啊,小弟愚笨

不懂你的意思,jre是可以单独使用的,里面有个jre\bin\java.exe,可以用。
13 楼 王者之剑 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有异曲同工之妙。
12 楼 王者之剑 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#更快。
11 楼 rubyeye 2008-06-09  
我有个小问题顺便想问下
通常在JDK下,都是让java.exe这个工具帮我们找到jre,把我们的程序运行在相应的jvm.dll上面,如果是单独的jre,没有java.exe工具,该如何设置能让应用程序直接运行在jvm.dll上啊,小弟愚笨
10 楼 tianzhihua 2008-06-09  
做成EXE到很简单,用C写一个,通过JNI调用JAVA就可以了,不过精简很难,去掉一些不必要的还有很大,参考:http://www.blogjava.net/tianzhihua/articles/99709.html
9 楼 Nighthaven 2008-06-09  
因为很多用户的电脑上没有合适版本的jre。用一个软件的同时必须安装另外一个软件(jre)会给人一种流氓软件强行捆绑的感觉,而很多用户对此很抵触。更不要提用户电脑上的jre版本千变万化(有没有jre,是微软的还是sun的,是1.4还是1.6),与其大费周章强迫其安装你的软件所需要的版本,不如省心点把jre内置在产品里算了。

当然内置jre就牵扯到jre的大小问题,一个5m的软件内置一个10多m的jre……也许硬盘不在乎,但是对下载时间的影响还是非常明显的,软件下载的时候,用户的耐心是很有限的,所以越小越好。

至于证书的问题,连android都能发布~!无论你修改过的jre多么不符合java规范,只要你不把它叫成是java,那就不会有人管你~
8 楼 王者之剑 2008-06-08  
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里的列表把一些文件删除?


7 楼 fight_bird 2008-06-08  
Windows、Mas上的桌面程序有几个是用Java来做的?极少,为什么?就是因为jre这个累赘,100M的大小楼主都觉得小,桌面程序中又有多少大于100M的?精简jre或者按策略选择安装不同版本的jre是合理的技术需求,Java的浏览器插件同样存在这样的技术需求。

Sun正在做这样的工作,楼主去看看jdk1.6Update10的release note,jdk7也将使用这种策略来发布jre。

至于是否必要编译为exe文件,在jre充分精简或可以按策略选择不同版本安装的条件,完全可以避免这一步。
6 楼 王者之剑 2008-06-07  
yanwt 写道
楼主,不知道就不要在这里误导别人啊,精简jre应用是很广的,很多单片机里面没有那么大空间,不能放完整的jre程序所以要精简的。至于为什么要exe就不清楚了。

嵌入式貌似用J2ME的吧,那个好像不大
5 楼 Joo 2008-06-06  
rubyeye 写道
在WIN下,做成EXE为了让用户看着顺眼

现在的用户已经被BS调教出来了
4 楼 javadev 2008-06-06  
使用jb就可以直接打包exe文件。
3 楼 jiyanliang 2008-06-06  
可以试一试打包工具,很多打包工具支持java打包的。
2 楼 rubyeye 2008-06-06  
在WIN下,做成EXE为了让用户看着顺眼
1 楼 tapestry 2008-06-06  
小了可以在线下载

相关推荐

    Java 打包jar生成exe(极限精简完全攻略)

    大家都知道,通常Java程序需要JVM与OS互动才能运行于本地环境之上,所谓鱼与熊掌不可兼得,这样做虽然极大降低了程序的移植难度,却同时增加了程序的环境要求,因为无论你用什么方法,总需弄个虚拟机才能让你的Java...

    制作桌面软件exe执行文件和精简jre步骤.zip

    在IT领域,特别是Java开发中,经常需要将应用程序...总结,将Java应用程序转化为exe并精简JRE,既方便了用户,也优化了软件性能。通过使用恰当的工具和方法,可以实现这一目标,同时需要注意各种技术细节和合规问题。

    自己动手精简你的jre到做小

    自己动手精简我们jre,再打包成exe这样java程序就可以在windows下很好的运行了,而且jre体积也很小不影响下载!感兴趣的可以下载后动手精简一下你的jre,我的精简到了2M以内,做成exe后根本看不出来是java做的。里面...

    精简Jre和Jsmooth

    "精简JRE"通常指的是为了减少安装体积、提高运行速度或者针对特定应用需求而定制的JRE版本。这种定制化的过程可能包括移除不必要或冗余的库、插件和服务,使得JRE更加轻量化,适用于那些对系统资源有限制或有特定...

    java程序转换成exe程序exe4j

    4. **设置JRE**:exe4j允许你选择JRE的安装路径,或者嵌入一个精简版的JRE到.exe文件中,使得用户无需额外安装JRE就能运行程序。 5. **定制启动参数**:你可以自定义.exe程序的启动参数,比如添加命令行选项,设置...

    java客户端以及jre瘦身

    1. **精简JRE**: 只包含必要的类库和组件,去除不使用的模块。例如,如果应用程序不需要Swing或JavaFX,那么这些组件就可以从JRE中移除。 2. **裁剪资源**: 删除不必要的本地库和语言包,只保留目标系统所需的语言...

    精简版JRE.rar

    通过使用精简版JRE,开发者可以降低生成的.exe文件的大小,这对于分发和下载来说非常有利,特别是对于那些网络条件不佳的用户。 另一方面,`Inno Setup`是一款流行的安装制作工具,它可以创建小巧且功能强大的...

    java生成exe-exe4j安装与使用图文讲解

    【Java生成EXE - 使用exe4j】 Java应用程序在Windows平台上部署时,常常面临一个问题:用户需要安装JRE,而且需要正确版本,这对许多不熟悉技术的用户来说是个挑战。为了解决这个问题,开发者通常会寻找方法将Java...

    jre精简工具(附详细教程).

    Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序必不可少的组件,它包含了Java虚拟机(JVM)、Java核心类库以及其他支持Java程序运行的组件。然而,标准的JRE体积较大,对于某些特定场景,如...

    Java生成Exe工具-JavaExe

    这个工具的主要目的是解决Java程序在Windows系统上运行时需要依赖JRE(Java Runtime Environment)的问题,因为不是所有用户都安装了JRE。通过JavaExe,开发者可以创建独立的、自包含的.exe文件,用户只需双击即可...

    精简jre的利器autojar

    【标题】"精简jre的利器autojar"所涉及的知识点主要集中在Java应用程序的部署和优化上。Autojar是一款非常实用的工具,主要用于自动化Java应用程序的打包过程,特别是对于那些需要精简JRE(Java运行环境)的项目,它...

    java 生成exe文件,exe4j完整过程

    Java 生成EXE文件是为了将Java程序转换成Windows操作系统下的可执行文件,便于非Java环境下的用户运行。本文主要介绍了使用exe4j工具将Java程序转换为EXE的详细步骤。 1. **下载与安装exe4j** 首先,你需要从官方...

    jre6精简版

    exe4j是一个将Java应用程序转换为Windows可执行文件的工具,这样即使目标计算机上没有安装Java,也能运行Java程序。精简版JRE6在这种情况下可以作为嵌入的一部分,减少最终生成的exe文件大小,提高执行效率。 标签...

    JAVA程序打包完全功略(exe).doc

    **exe4j**是一款功能强大的Java应用程序打包工具,它能够将Java应用程序及其依赖的库文件打包成单一的可执行文件(.exe),使得Java程序可以在没有安装JRE(Java Runtime Environment)的系统上运行。这对于分发和...

    精简JRE - verbose命令

    `log.txt`文件很可能是通过运行带有verbose选项的Java程序生成的日志文件,包含了上述选项之一或多个的输出结果。 在实际应用中,我们需要根据具体情况选择合适的verbose选项,分析日志,找出性能瓶颈或故障原因。...

    精简的JRE7的资源

    Java运行环境(Java Runtime Environment,简称JRE)是运行Java应用程序所必需的系统组件,它包含了Java虚拟机(Java Virtual Machine, JVM)、类库以及其他支持Java程序运行的组件。JRE7是Java的一个重要版本,它在...

    精简JRE第一步 — 精简bin目录

    因此,"精简JRE第一步 — 精简bin目录"这一主题探讨了如何优化JRE,减少其体积,特别是针对`bin`目录的优化。 `bin`目录是JRE的核心部分,包含了Java虚拟机(JVM)和其他必要的可执行文件。这些文件用于启动Java...

    java程序或项目 打包 成 jar 与exe 文件

    在这里,我们将详细介绍如何将 Java 程序或项目打包成 jar 文件,然后将 jar 文件转换成exe 文件,并最终生成一个安装文件。 将 Java 程序或项目打包成 jar 文件 要将 Java 程序或项目打包成 jar 文件,我们需要...

    精简的jre,及精简工具

    精简了jdk1.6的jre 精简工具是GreenJVMMake.jar 下载后GreenJVMMake.jar不用解压,直接使用(将它与您的程序.jar放在同一个文件夹内) 使用方法javaw -jar GreenJVMMake.jar -t da -i ./myapp.jar -o ./ 就可生成rt....

Global site tag (gtag.js) - Google Analytics