仓酷云
标题:
JAVA网页设计让Java程序自带JRE
[打印本页]
作者:
小妖女
时间:
2015-1-18 11:54
标题:
JAVA网页设计让Java程序自带JRE
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.程序用Java开辟程序,公布时总要思索的成绩就是怎样在利用者的呆板上装好JRE。要思索的成绩良多:利用者有无才能单独安装JRE,利用者已有的JRE和我们必要的版本是否是分歧,会不会呈现版本成绩,等等。利用.NET要思索的成绩就少些。如今.NETCLR仿佛已很提高了,看很多多少D版的WinXP城市本人安装最新的.NETCLR,并且仿佛它的安装界面也比JRE友爱些。完全办理安装JRE的成绩的计划,就是让我们的使用程序本人背着JRE!如许,我们的程序就像传统的Win32使用程序一样,双击就能够实行,不必管地点的呆板上是不是有JRE,是甚么版本的JRE,不管如何,我有我本人的!要做到这一点,实在十分简单。王森在他的《Java深度历险》(强力保举这本书,内容少而精)的第一章就注释了JDK,JRE,JVM之间的干系。注释了我们实行java.exe时产生的事变。个中提到,java.exe按照一套逻辑来寻觅能够用的JRE,起首查找本人地点的目次下有无JRE(据王森讲如许说不切实,我没有JDK全体的源代码,在此无从考据);其次查找本人的父目次下有无JRE;最初才是查询Windows的注册表。一般我们在安装好了JRE的呆板上的任何一个目次下都能够实行java.exe。由于它在安装时被复制到了windows的system32目次下,尔后者不管怎样城市在path情况变量中。这个java.exe终极一定会会见注册表来断定真实的JRE的地点地。若我们请求每个使用程序都自带JRE,一定不克不及走这条路。但,逻辑的第二条讲,java.exe会在它的父目次下查找JRE,办理计划就在这一条中。假定我们的使用程序打好了包,叫做MyApp.jar,放在MyApp的目次下。我们在MyApp目次下,能够实行javaCjarMyApp.jar来运转我们的程序。我们安装的是JRE1.5,在C:ProgramFilesJavajre1.5.0下。如今,我们只必要复杂的将jre1.5.0目次搬到MyApp目次下,特地改个简单写的名字好比叫jre。如今,我们的使用程序就象如许:MyAppMyApp.jarJreJre1.5.0目次下的全体内容Java.exe就在jre目次下的bin目次中。依据第二条逻辑,java.exe会在它的父目次中查找jre,实行证明,它会查找lib目次,而lib就在jre目次下。因而,如许java.exe就会断定jre的地点然后一般实行java程序,不会往管我们是不是安装了JRE,注册表中是不是有注册项这些琐事了。试一下,在命令行下进进MyApp的目次下,假定它在C盘,将path指向MyApp下的JRE:setpath=c:MyAppjrein然后运转:javaCverboseCjarMyApp.jar加上verbose参数以断定我们的确用了这一套被搬出了家的JRE。程序能够运转,而且在命令行输入的前几行,能够看到:[OpenedC:MyAppjrelibt.jar][OpenedC:MyAppjrelibjsse.jar][OpenedC:MyAppjrelibjce.jar][OpenedC:MyAppjrelibcharsets.jar]因而程序读取切实其实实是它的公有的JRE。至此,我们仿佛完成了义务。可是如今我们的公有JRE仍不完善,弱点是太年夜。JRE1.5有靠近70MB,作为我们的公有的JRE,很多多少内容都是能够丢弃的。Jre目次下的license都能够不要,bin下的实行文件只必要保存java.exe大概javaw.exe,lib下只需保存rt,jsse,jce,charsets几个库就能够了。除i386和zi两个子目次外,其他的子目次都能够不要。Zi下只必要保存本人区域的子目次和其下的一些文件就能够。Lib下除库以外的属性文件等等都要保存。如许清算一番,JRE仍旧有靠近50MB。还能够持续清算几个库文件内里不必要的内容,这必要细心的收拾,会很费工夫。最好能写出一个主动工具匡助我们收拾它们。从Sun公司高低到的JMF内里附带的用Java写的媒体播放器就自带了JRE,只要几个MB。清算事后必要运转几遍我们的使用程序,以确保我们的JRE不短少工具。假如我们但愿能有一个程序间接启动我们的使用程序,那就还要费些工夫。最复杂的办法是弄出一个快速体例来,可是快速体例的路径不克不及是绝对的,不便利我们安装。我想到的计划就是用Win32程序包装一下。在VS.NET下写一个Win32小程序:intPASCALWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpszCmdLine,intnCmdShow){STARTUPINFOsi;PROCESS_INFORMATIONpi;ZeroMemory(&si,sizeof(si));si.cb=sizeof(si);ZeroMemory(&pi,sizeof(pi));//Startthechildprocess.if(!CreateProcess("jreinjavaw.exe",//实行的程序名"jreinjavaw.exe-jarMyApp.jar",//带参数的实行程序NULL,//Processhandlenotinheritable.NULL,//Threadhandlenotinheritable.FALSE,//SethandleinheritancetoFALSE.0,//Nocreationflags.NULL,//Useparentsenvironmentblock.NULL,//Useparentsstartingdirectory.&si,//PointertoSTARTUPINFOstructure.&pi)//PointertoPROCESS_INFORMATIONstructure.){ErrorExit("CreateProcessfailed.");}//Waituntilchildprocessexits.WaitForSingleObject(pi.hProcess,INFINITE);//Closeprocessandthreadhandles.CloseHandle(pi.hProcess);CloseHandle(pi.hThread);}基础上是依照MSDN文档中的例子照搬的。将它编译成一个EXE文件,我们的义务才全体完成。双击这个EXE文件,我们的程序启动了,看起来和传统的Win32程序没有两样,JRE完整被埋没在底层。P.S.利用了这个计划后,我用WiseInstallationSystem制造安装程序,发明一个十分奇异的成绩,安装停止后,安装程序仿佛非要运转一个叫做GLJ甚么甚么,后缀是TMP的程序,还必要JVM,了局就报错JVM.DLL找不到。安装老是不乐成。我已禁失落了OCX/DLL/EXE自注册和卸载撑持,为何还不合错误?有谁晓得是为何吗?
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之!
作者:
简单生活
时间:
2015-1-21 16:48
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
若天明
时间:
2015-1-22 14:19
是一种突破用户端机器环境和CPU
作者:
灵魂腐蚀
时间:
2015-1-24 12:22
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者:
兰色精灵
时间:
2015-2-1 10:37
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
若相依
时间:
2015-2-5 18:45
是一种突破用户端机器环境和CPU
作者:
admin
时间:
2015-2-24 03:58
是一种将安全性(Security)列为第一优先考虑的语言
作者:
冷月葬花魂
时间:
2015-3-3 23:24
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者:
透明
时间:
2015-3-9 01:09
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者:
小魔女
时间:
2015-3-13 00:07
是一种使用者不需花费很多时间学习的语言
作者:
因胸联盟
时间:
2015-3-20 06:23
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
海妖
时间:
2015-3-22 21:57
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者:
飘飘悠悠
时间:
2015-3-22 23:10
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者:
仓酷云
时间:
2015-3-28 17:53
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者:
谁可相欹
时间:
2015-3-29 12:43
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者:
精灵巫婆
时间:
2015-4-1 00:08
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者:
莫相离
时间:
2015-6-12 11:46
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者:
第二个灵魂
时间:
2015-6-22 23:55
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者:
飘灵儿
时间:
2015-6-29 12:18
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2