设计java

j2ee轻量级框架,IMVC,IORM && web网络游戏

2008年7月17日 #

抽取最小的jre--BuildJre项目开启

    java在桌面软件的失利,很大程度上取决与她运行环境的陪着复杂度,还有随时带的一个庞大的jre环境。有时候我们并不需要jre中全部的类库支持,我们只需要一些对我们项目有用的类库,能否有一种通用的方法来抽取jre中的这些对我们有用的部分呢?google了下找到了几篇文章介绍这个的。主要就是用verbose参数运行jar,然后观察java载入了多少java类,然后手动或者写个程序自动的吧这些类打包和jvm打包为一个全新的jre环境。这种方法是可行的,但是却是不通用,而且这种方法还有一个很大的弊端,当有些类导入到我们项目中,但是在verbose的时候没有用到(比如一些异常类),我们就不会导入,最终可能在发布运行的时候就用到了,这样可不妙。那么是否还有其他方法来瘦身jre环境呢,然后通过随身附带jre发布java程序?答案一定是有的,我已经着手在开发这个应用,我把她起名为BuildJre。
    一,可行性分析(我们加上在win系统下):
       java.exe是java运行的一个入口程序,当我们键入明了 java className的时候,首先启动都是这个程序,然后这个程序回去查找可用的jre库,一般是先搜索本目录和父亲目录,如果接着搜索环境变量,判断是否为jre的依据是,首先java.exe查找怀疑目录(比如父目录)的bin下有没有java.dll,如果找到,那么他就判定这个是jre目录然后查找lib\i386下的jvm.cfg,最后更具这里面的参数去启动bin\client或者bin\server下的jvm.dll,这个才是真正的java虚拟机,到这里,java.exe把控制权全部交给jvm,然后jvm就初始化,分配内存等,运行程序了,运行程序期间导入的jdk包,都在jre目录下的lib\rt.jar下。
       说道这里,我们发现,其实不用环境变量,只要有jre环境就能运行java程序,这使得我们更加坚定java程序也可以桌面化,因为他也是可以不用配置那么麻烦的环境变量直接运行的。再回到瘦身来,刚才说了,jdk中所有的以来包全部位于jre\lib\rt.jar下,我们要廋的就是这个,40多M的rt,我们通过类依赖抽取,对于一个普通的java程序,预计可以廋到小于10M,然后配合java.exe,java.dll,等几个小的程序,预计目标是平均廋身到15M以内。

    二,实施思路,用verbose方法不通用,不能在程序内部抽取jre,而且还有可能遗漏依赖项,不足提倡。我们架设有一个标志的依赖说明库,比如ArrayList这个类依赖的所有包都一一对应,那么我们如果在程序里import ArrayList的话,那么我们可以迅速抽取相关的依赖包,然后在整个项目的所有import中去重复,不就ok了?现在的问题在于:
          1,不是所有的jdk包都需要import的,比如java.lang下就不用import
          2,有些jdk内部类在同一个包下不用写import也一样依赖。
          3,计算jdk内部依赖估计要很长实践,因为文件很多,依赖很复杂。
    这些问题基本上都有解决方法,我已经开始着手解决。

    希望有一天,我们的java项目发布,只要带上10M的小型环境,也不用配置环境变量,双击,ok。。哈哈

posted @ 2008-08-05 20:59 刹那 阅读(2016) | 评论 (2)编辑 收藏

突然说几句

    这年头,webgame一个一个的冒出来,令我们应接不暇,有人说webgame是一场新的泡沫,也有人说是互联网新的机会,有人说webgame是小公司叫板游戏行业的机会,也有资深游戏人士说小公司做webgmae没戏(盛大高管说,因为没有品牌和玩家资源)。不管怎么样,webgame的兴起已经无法阻挡,包括我们公司,也是众进军者中的一个。

    webgame游戏商进军的主要两个领域是 策略类游戏(往往以js,ajax技术和纯通的web技术为基础),和flash休闲社区游戏(以flash as3等技术为基础)。策略类游戏很早就有了,甚至比现在的门户网站还早,只是那个时候没有现在这么兴起,时下具有代表性的主要是一些三国,战争类游戏,像盛大这种大游戏公司也介入不少,连baidu这种重来不碰游戏的公司都开始进入了。而flash游戏相对来说比较少,比如梦境家园(纯休闲娱乐,可以k歌),比如热舞街(劲舞团的web版),天空左岸 和 富豪街 等都不错。还有两个我本人比较期待的还没有公测的flash网游,一个是昆仑online,一个是和热舞街,富豪街同一个公司的 口袋宠物。看他们的游戏截图已经非常类似传统的大型游戏了。当然,更期待的是我们在开发的flash网游,哈,内容和名字现在还不能透露(小小透露下,我们的网游pk模式和现在任何一种网游的pk模式都不同,挺好玩的哦)。

    。。。。不想说了。。想起来一本书上的一句话“真正有想法的人,已经埋头在实现自己的想法了,不会把自己的想法写出来,在网上瞎扯淡的,都是没事干的。”

posted @ 2008-07-26 12:49 刹那 阅读(324) | 评论 (2)编辑 收藏

游戏开发进展

    游戏前台主要以flash as3 为主,后台用java,目前已经初步做出一个原型,包括用户行走,多用户移动同步,地图场景与主程序分离,场景加载等等功能,地图编辑器也已经做的差不多了,计划今天能完成,如果完成的话,就可以直接拿给美工去做地图场景了,最终导出一个xml文件和相关的资源(图片等),主程序通过这个xml文件加载场景。
    这几天主要的任务包括 客户端UI统一界面设计,需要做到高耦合,让ui界面通过xml文件配置,服务器端数据库的设计,主程序调用外部swf模块的企业级设计,游戏任务脚本语言的初步设计,等等。

posted @ 2008-07-17 07:10 刹那 阅读(223) | 评论 (0)编辑 收藏