站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题Matrix Java 大讲坛之 JVM移植研究

Matrix Java 大讲坛之 JVM移植研究

摘要: Matrix Java 大讲坛之 JVM移植研究
内容: 山鬼的情人 19:45:42
  
  我是山鬼的情人,大家好
  
杨树 19:45:51
  
  等了好久算是等到山鬼讲课了
  
山鬼的情人 19:46:00
  
  先自我介绍一下,我是XXXXX公司工程师
  
山鬼的情人 19:46:19
  
  (公司有规定,不准借公司名号招摇撞骗)
  
郁也风 19:46:29
  
  原来这就是传说中XXX啊
  
杨树 19:46:30
  
  那我帮你说?哈哈
  
头发乱了~~ 19:46:39
  
  主要方向是啥?能说说吧?
  
char 19:46:49
  
  5星级的公司。
  
山鬼的情人 19:46:54
  
  今天很高兴有机会和大家讨论一下jvm和jvm移植方面的问题
  
农民 - Javen 19:58:59
  
  热烈欢迎!
  
char 19:47:22
  
  我忘记拿jvm那本书到公司来。
  
山鬼的情人 19:47:55
  
  java是个很了不起的发明,最初的想法是用在数字家电上
  
山鬼的情人 19:48:17
  
  数字家电上面的硬件差异很大,软件移植很麻烦
  
山鬼的情人 19:48:46
  
  于是,sun的牛人就想到了用vm来屏蔽硬件的差异
  
山鬼的情人 19:49:17
  
  jvm的核心是这样一个循环
  
农民 - Javen 20:01:09
  
  我爱 Java
  
山鬼的情人 19:49:55
  
!stop {
  
;
  
instruction ;
  
  }
  
山鬼的情人 19:50:36
  
  这段伪语言说明了jvm的简单的执行过程,即取指令,执行指令
  
山鬼的情人 19:50:46
  
  jvm核心可以被看作一个软cpu
  
山鬼的情人 19:51:54
  
的时候,要根据具体指令完成不同的操作
  
山鬼的情人 19:52:29
  
  一般来讲,cpu都有若干通用寄存器,
  
山鬼的情人 19:53:04
  
  sun再定义jvm的时候,为了保证通用性,定义了基于stack的jvm,也就是说,jvm实际上没有寄存器
  
山鬼的情人 19:53:31
  
  指令所需的操作数,都是保存在stack中,
  
山鬼的情人 19:54:00
  
  上面讲的是jvm的执行引擎方面的细节
  
杨树 19:54:42
  
  一会儿有对这部分提问的时间吗?
  
山鬼的情人 19:54:43
  
  除了执行引擎,jvm还有class loader, gc模块等一些主要模块
  
山鬼的情人 19:54:52
  
  随时提问
  
杨树 19:55:11
  
  还是寄存器的问题
  
山鬼的情人 19:55:15
  
  ?
  
杨树 19:55:48
  
  thinking in java里面提到java中的数据存储在5个部分中
  
Spring 19:56:19
  
  java是不是抢掉了一段内存用于自己。
  
杨树 19:56:45
  
  堆,栈,常量池,静态池,还有就是寄存器
  
杨树 19:57:13
  
  这个寄存器是指真实的寄存器还是虚拟出来的?
  
Spring 19:57:26
  
  它是在调用java虚拟机的时候启用的吗?
  
杨树 19:57:27
  
  一直没搞懂
  
Spring 19:57:32
  
  启用一段内存。
  
山鬼的情人 19:57:39
  
  等一下,我在jvm spec上好像没有找到这个
  
山鬼的情人 19:57:49
  
  比如你要做个arm的模拟器
  
杨树 19:57:57
  
  自己觉得jvm中不该有自己的寄存器
  
杨树 19:58:04
  
  嗯
  
山鬼的情人 19:58:24
  
  所有的寄存器实际都是变量
  
山鬼的情人 19:58:56
  
  例如在x86系统中,可以有mov ax, 0
  
微雨心情 19:59:02
  
  请问哪里有关于JVM、Java二进制的资料?
  
山鬼的情人 19:59:12
  
  jvm中没有这样的操作,所有的操作数都是在stack中
  
杨树 19:59:29
  
  嗯,清晰一些了
  
山鬼的情人 19:59:31
  
  网上有下jvm规范
  
微雨心情 19:59:40
  
  中文版的,有么?
  
山鬼的情人 19:59:52
  
  比如,你要做模拟器,可以这样定义寄存器 unsigned int ax
  
Spring 19:59:55
  
  何谓jvm规范。
  
山鬼的情人 20:00:01
  
  e文版
  
山鬼的情人 20:00:14
  
  jvm规范定义了jvm必须有哪些特性
  
农民 - Javen 20:12:11
  
  再在讲座时间,大家问题不要太偏。
  
山鬼的情人 20:00:37
  
  嗬嗬
  
Spring 20:00:43
  
  吼吼,继续吧。山鬼的情人。
  
山鬼的情人 20:01:00
  
  比如matrix的项目,jasmine,就实现了一个简单的class loader
  
山鬼的情人 20:01:15
  
  java的一个重要特性是垃圾回收
  
山鬼的情人 20:01:38
  
  jvm规范没有规定垃圾回收的具体实现算法,这个机制由jvm开发商来实现
  
山鬼的情人 20:02:00
  
  实际上,仅有jvm还是不够的,
  
Spring 20:02:10
  
  能问个问题吗?jvm有几个开发商呀???
  
山鬼的情人 20:02:17
  
  多了去了
  
山鬼的情人 20:02:32
  
  intel, microsoft, sun, 还有日本韩国公司
  
Spring 20:02:35
  
  我们不是都从sun下载jdk吗?难道还有别的东东吗?
  
山鬼的情人 20:02:37
  
  ibm
  
杨树 20:02:52
  
  bea
  
山鬼的情人 20:02:59
  
  jdk包含了jvm的x86实现,
  
杨树 20:03:03
  
  jrocket
  
头发乱了~~ 20:03:10
  
  细细,这个俺熟悉
  
山鬼的情人 20:03:13
  
  有些厂商专门提供特殊设备上的实现
  
Spring 20:03:14
  
  不是还有solaris,还有linux吗?
  
  
╃(Chris 20:03:20
  
  不过,中国没有自己的jvm.本来我和山鬼原来讨论过这样的计划,但是没有精力和时间来组织.
  
Spring 20:03:20
  
  噢,我明白了。
  
头发乱了~~ 20:03:22
  
  HP有
  
山鬼的情人 20:03:32
  
  比如,手机,数字电视,智能卡
  
山鬼的情人 20:03:47
  
  jre = jvm + runtime lib
  
杨树 20:03:50
  
  建议还是统一时间提问把
  
  这样太乱了
  
Spring 20:03:57
  
  比如说摩托罗拉的手机上有java游戏,那它就开发了自己的了。
  
头发乱了~~ 20:04:02
  
  中国有吧?清华有几个研究所都由自己的嵌入式的JVM
  
农民 - Javen 20:15:55
  
  to spring : 你的字体请改为正常的。 不要太大。 默认的
  
山鬼的情人 20:04:15
  
  ..清华?我们给他们做了一个
  
共筑佳话 20:04:34
  
  
  
头发乱了~~ 20:04:47
  
  哦,我在清华的时候,有的同学所在的研究所就再作。
  
  
山鬼的情人 20:04:54
  
  jvm的另外一个重点就是和native lib的交互
  
  
  
  
山鬼的情人 20:05:31
  
  比如,虽然java 提供了socket方面的lib,但是,os的socket一般只提供了c语言的api,
  
山鬼的情人 20:05:54
  
  所以,如果没有native lib来支持的话,java lib就是无本之木
  
头发乱了~~ 20:06:06
  
  除了和C之外还有别的么?
  
山鬼的情人 20:06:11
  
  所以,如果没有native lib来支持的话,java lib就是无本之木
  
山鬼的情人 20:06:24
  
  我移植过的都是c
  
头发乱了~~ 20:06:33
  
  通过JNI?
  
杨树 20:06:45
  
  kni?
  
山鬼的情人 20:06:48
  
  这些native lib有的是porting jvm时候必须要实现的,
  
山鬼的情人 20:06:54
  
  有的是jni,
  
山鬼的情人 20:07:19
  
  一般来说,标准的java lib所依赖的本地特性都是porting jvm必须要实现的
  
╃(Chris 20:07:31
  
  native实际上是jvm最复杂的模块之一.比如jni,有一些开源的jvm第一步都不会实现jni.后续版本再慢慢支持.
  
山鬼的情人 20:07:49
  
的实现,否则,println都没办法用
  
山鬼的情人 20:08:03
  
  jni则是一个需要hero才能搞定的事情之一
  
杨树 20:08:28
  
  
  
山鬼的情人 20:08:41
  
  jni的主要挑战在于要将java call stack 中的参数copy 到c call stack,同时还要用类似的方法处理返回值
  
头发乱了~~ 20:09:05
  
  只能是值传递?
  
山鬼的情人 20:09:06
  
  这段代码必须用汇编写,其难度并不小于操作系统的task 切换
  
山鬼的情人 20:09:47
  
  也可能传引用
  
山鬼的情人 20:09:59
  
  jvm实现中引用作为一个index
  
╃(Chris 20:10:25
  
  关于native和java的参数对应,这个,在sun的jvm里有一个对应模块.可以参考这个设计..
  
山鬼的情人 20:10:47
  
  幸运的是,很多工作的代码是可移植的
  
头发乱了~~ 20:11:01
  
  那Native和JAVA使用的是一个方法栈么?
  
山鬼的情人 20:11:02
  
  在大多数porting jvm的工作中,这些都不用重写
  
山鬼的情人 20:11:09
  
  不是
  
头发乱了~~ 20:11:21
  
  是同一个进程么?
  
杨树 20:11:22
  
  不同的内存空间吧?
  
山鬼的情人 20:11:37
  
  同一进程空间
  
山鬼的情人 20:12:08
  
  一般来说是同一进程空间,这个依赖于jvm的实现
  
山鬼的情人 20:12:35
  
  sun的jvm参考实现中充分考虑的移植的问题,专门作了移植的抽象层
  
山鬼的情人 20:12:59
  
  以cldc为例,这个是最简单的jvm的porting
  
头发乱了~~ 20:13:03
  
  同一进程空间维护多个方法栈,估计很麻烦,
  
  
山鬼的情人 20:13:31
  
  仅仅需要实现十几个桩函数后,cldc就能跑起来了
  
山鬼的情人 20:14:17
  
  当然,更复杂的jvm移植起来更困难,另外一个例子,java card jvm移植起来应该也不容易,因为要写太多asm
  
山鬼的情人 20:15:13
  
  jvm的参考实现可以从sun.com下载
  
山鬼的情人 20:15:23
  
  是open source的,大家有兴趣可以看看
  
山鬼的情人 20:16:04
  
  以基于数字电视的jvm为例,移植的过程中,我们开发了下列模块
  
山鬼的情人 20:16:38
  
  posix thread封装
  
  ansi 文件api封装
  
  gfx engine
  
  
  
  
山鬼的情人 20:16:52
  
  中文支持
  
山鬼的情人 20:17:36
  
  对于这些庄模块,必须先进行严格的单元测试,然后进行集成
  
山鬼的情人 20:17:50
  
  即便如此,即成时候仍然有大量稀奇古怪的问题
  
山鬼的情人 20:18:44
  
  由个叫kaffe的开元jvm实现,
  
山鬼的情人 20:19:24
  
  国内有大学做这方面的移植,但是kaffe本身并不太稳定,所以大家要移植的话,还是推荐sun的参考实现
  
╃(Chris 20:19:41
  
  kaffe.org
  
山鬼的情人 20:20:09
  
  kaffe在cygwin下编译出来的东西都死机,不敢用
  
╃(Chris 20:20:45
  
  这个会不会是cygwin的问题?感觉cygwin还是有点不是很标准
  
山鬼的情人 20:21:04
  
  cygwin也是有问题
  
山鬼的情人 20:20:56
  
  好像技术方面overview的内容差不多了,嗬嗬,喝口水
  
山鬼的情人 20:21:30
  
  两个有问题的东西碰到一起了,难说谁对谁错了,嗬嗬
  
微雨心情 20:21:34
  
  牛啊!做到了这个层次了!佩服!
  
山鬼的情人 20:22:00
  
  由本书叫做深入java虚拟机,可以参考一下
  
╃(Chris 20:22:04
  
  恩,这就是所谓的low end.而j2ee是所谓的high end.呵呵.
  
山鬼的情人 20:22:06
  
  但是感觉翻译的不是很好
  
头发乱了~~ 20:22:16
  
  那就不看
  
头发乱了~~ 20:22:18
  
  不看翻译的
  
╃(Chris 20:22:29
  
  对,这本书建议大家看英文原版
  
山鬼的情人 20:22:31
  
  j2ee的jvm可能采用了另外一些大型计算方面的技术
  
杨树 20:22:34
  
  还可以了,曹晓刚翻译的
  
山鬼的情人 20:22:42
  
  比如j2ee的执行引擎应该是并行的
  
山鬼的情人 20:22:54
  
  垃圾回收也和桌面的jvm应该不同
  
头发乱了~~ 20:23:00
  
  J2EE和J2SE使用的虚拟机不是一个?
  
山鬼的情人 20:23:12
  
  有可能不是一个
  
╃(Chris 20:23:26
  
  山鬼:你们项目里用到的gc是什么算法
  
头发乱了~~ 20:23:40
  
  比如呢?
  
╃(Chris 20:23:46
  
  不是一个,weblogic,websphere这些都有自己对jvm的优化
  
山鬼的情人 20:23:49
  
  忘记了,gc算法一般都不该,可能就是什么火车算法之类
  
山鬼的情人 20:24:13
  
  j2ee的jvm应该要为大型计算作些改进
  
头发乱了~~ 20:24:19
  
  Weblogic的优化只是调一些参数罢了
  
山鬼的情人 20:24:28
  
  比如,充分应用多处理器和海量内存的能力
  
头发乱了~~ 20:25:04
  
  SUN JVM支持MP么?
  
山鬼的情人 20:25:07
  
  能google到关于很多improve jvm性能的paper,那都是国外的学者做学问的东西
  
山鬼的情人 20:25:14
  
  国内做不到这么深入了
  
山鬼的情人 20:25:23
  
  我移植过的肯定不知耻
  
山鬼的情人 20:25:26
  
  支持
  
山鬼的情人 20:25:34
  
  j2ee的应该支持
  
头发乱了~~ 20:25:42
  
  哦,MUMA和PUMA呢?
  
山鬼的情人 20:25:47
  
  不过这是个人分析
  
山鬼的情人 20:26:03
  
  MUMA?
  
山鬼的情人 20:26:20
  
  
  
山鬼的情人 20:27:17
  
  大家有什么问题但说无妨,嗬嗬
  
╃(Chris 20:28:00
  
  呵呵,山鬼,要不一个模块一个模块来讲? 从classloader开始?
  
╃(Chris 20:28:25
  
  其实jasmin改进一下就是一个calssloader
  
山鬼的情人 20:28:25
  
  ...这样讲一个模块也就一句话,嗬嗬
  
杨树 20:28:28
  
  山鬼会累死的
  
山鬼的情人 20:28:43
  
  class loader,顾名思义了,就是loding class,
  
山鬼的情人 20:29:00
  
  至于如何loading, 就是解析class 文件的过程
  
山鬼的情人 20:29:23
  
  要是能共享ppt就好了,嗬嗬
  
山鬼的情人 20:29:51
  
  一附图顶好多句话啊,嗬嗬
  
头发乱了~~ 20:30:09
  
  放到Matrix上去行不?
  
杨树 20:30:13
  
  对阿
  
泥娃娃 20:30:25
  
  找农民啊
  
头发乱了~~ 20:30:41
  
  把农民揪出来
  
山鬼的情人 20:30:47
  
  等一下
  
雪儿飞飞 20:30:49
  
  我们用netmeeting吧
  
山鬼的情人 20:30:54
  
  我用连接
  
头发乱了~~ 20:31:02
  
  会很慢,如果这么多人的话
  
  
山鬼的情人 20:31:10
  
  我用连接
  
共筑佳话 20:31:34
  
  内网联不上吧
  
农民 - Javen 20:43:28
  
  可以抓图片上来啊。 山鬼
  
山鬼的情人 20:31:52
  
  ...我这里太慢了,图打不开
  
山鬼的情人 20:32:26
  
  好的,try一下
  
头发乱了~~ 20:32:28
  
  农民大哥,给开个FTP不就得了?
  
泥娃娃 20:33:08
  
  是啊,我也是内网的呀
  
雪儿飞飞 20:33:48
  
  还不如,以后编一个专门远程讲课的软件呢
  
山鬼的情人 20:33:51
  
  ...抱歉,我在网上找的图一个都打不开
  
雪儿飞飞 20:34:03
  
  肯定有市场
  
雪儿飞飞 20:34:19
  
  卖给大学
  
农民 - Javen 20:46:07
  
  好啦。以后再说啦。 我们在考虑以后的情况。 现在继续
  
KIKI 20:34:30
  
  远水不解近渴呀,
  
山鬼的情人 20:34:57
  
  好像我讲得太细节了一点哦,嗬嗬
  
leowu2000 20:35:11
  
  在应用方面能不能多举一些例子?
  
山鬼的情人 20:35:25
  
  移植的应用?
  
雪儿飞飞 20:35:39
  
  细致了好
  
leowu2000 20:35:45
  
  另外关于嵌入式操作系统 嵌入式虚拟机 嵌入式应用方面有介绍么?
  
山鬼的情人 20:35:52
  
  right,
  
山鬼的情人 20:36:12
  
  现在java已经在手机上得到了广泛应用
  
山鬼的情人 20:36:25
  
  国内有两个公司做手机的java移植
  
头发乱了~~ 20:36:49
  
  哪两个?
  
山鬼的情人 20:37:21
  
  另外,在数字电视上面,java也有普及的趋势,清华和上海交大都有支持java的数字电视解决方案
  
山鬼的情人 20:37:30
  
  科银京城
  
山鬼的情人 20:37:41
  
  还有一个忘记了
  
郁也风 20:37:43
  
  山东鲁能也在做
  
leowu2000 20:37:43
  
  一个公司的的不同型号手机操作系统会有多系列么?所谓的移植基本上都是这些嵌入式应用吧?
  
山鬼的情人 20:37:52
  
  当然,sun中国研究院也有
  
山鬼的情人 20:37:59
  
  对
  
leowu2000 20:38:45
  
  有没有引人注目的应用介绍一下?
  
头发乱了~~ 20:38:56
  
  那虚拟机是必须依靠操作系统才能运行么?
  
山鬼的情人 20:39:11
  
  不一定
  
leowu2000 20:39:21
  
  如果只是目前的这些应用 在硬件、软件性能上是不是都还不能满足要求?比如3G应用?
  
头发乱了~~ 20:39:22
  
  不依靠?举个例子
  
山鬼的情人 20:39:38
  
  理论上说,只要能实现jvm所依赖的几个桩函数都能搞顶
  
山鬼的情人 20:39:51
  
  sun有人把jvm做到gba游戏机上免去了
  
山鬼的情人 20:40:09
  
  当然,有os肯定要省事很多
  
杨树 20:40:18
  
  JOYSOS
  
头发乱了~~ 20:40:19
  
  实际呢?实际有不依靠操作系统的JVM么?我想那会更快
  
leowu2000 20:40:23
  
  如果直接绕过jvm下边的所谓操作系统 是不是感觉和java card类似了?
  
头发乱了~~ 20:40:37
  
  JAVACARD没有操作系统么?
  
山鬼的情人 20:40:39
  
  3g手机的处理器和内存能力完全能支持java
  
leowu2000 20:41:06
  
  支持java肯定没有问题如果考虑大型的应用呢?
  
山鬼的情人 20:41:32
  
  肯定不能跑跟桌面差不多的应用,但是以后跑thin client应该没有问题
  
leowu2000 20:41:58
  
  假设最简单的在手机上边实现一个大型网络游戏的客户端 这样的话目前这些移植的jvm适用么?
  
雪儿飞飞 20:42:08
  
  thin client 是什么
  
山鬼的情人 20:42:18
  
  手机上肯定是j2m
  
山鬼的情人 20:42:25
  
  j2me
  
头发乱了~~ 20:42:55
  
  我看如果芯片内存够,就可以开发更多的功能
  
leowu2000 20:43:11
  
  我考虑一种应用 比如在dvd机上边实现很多网络应用利用这些够么?还是重点在嵌入式操作系统?
  
山鬼的情人 20:43:15
  
  功能太强大了费电..
  
山鬼的情人 20:43:56
  
  以后需要用java的地方很多,实际上,sun 20年前的想法在未来的几年正在实现
  
山鬼的情人 20:44:12
  
  如果愿意,还可以把jvm做到数字洗衣机上
  
leowu2000 20:44:32
  
  那jvm下边一层呢?
  
山鬼的情人 20:44:56
  
  可以是os,也可以是别的,
  
╃(Chris 20:45:10
  
  韩国已经有电视上玩的网络游戏了.
  
农民 - Javen 20:56:52
  
  对于 JVM ,操作系统到底有多重要? 或者有了 JVM ,操作系统就可以无所谓了?
  
山鬼的情人 20:45:35
  
  一般来说,比较复杂的jvm还是依赖于os好
  
山鬼的情人 20:45:53
  
  jvm的主要问题是慢
  
leowu2000 20:45:56
  
  我也在考虑这两者之间的具体关系以及现在应用情况
  
头发乱了~~ 20:46:10
  
  主要依赖OS的什么?内存管理?进程调度?还是文件管理?或者别的什么?
  
山鬼的情人 20:46:20
  
  文件管理
  
山鬼的情人 20:46:35
  
  任务调度有些jvm提供了
  
山鬼的情人 20:46:41
  
  还有网络
  
leowu2000 20:46:46
  
  介绍一下消费类电子产品在这方面的应用吧?或者您给设想一下也可以:)
  
山鬼的情人 20:46:53
  
  游戏
  
山鬼的情人 20:47:11
  
  基于通信终端的证券应用
  
山鬼的情人 20:47:19
  
  目前主要是这个
  
╃(Chris 20:47:27
  
  如果不依赖os,很多功能都要自己实现,不能直接用native的lib,也会是一个损失吧
  
头发乱了~~ 20:47:31
  
  恩,有道理,网络协议用JAVA实现估计会很慢
  
╃(Chris 20:47:37
  
  java tv?
  
山鬼的情人 20:47:44
  
  对,只是说,有可能
  
头发乱了~~ 20:47:45
  
  淘汰了~
  
山鬼的情人 20:48:17
  
  比如java card,这种系统可能就不依赖os
  
╃(Chris 20:48:40
  
  java tv 淘汰了?
  
山鬼的情人 20:48:47
  
  如果开发java应用不用关心有无os的问题
  
山鬼的情人 20:49:02
  
  很多java技术都被淘汰了,大浪淘沙
  
山鬼的情人 20:49:07
  
  不过java发展了
  
头发乱了~~ 20:49:19
  
  那装函数如何芯片被调度?毕竟这些执行指令是存在记忆体上的
  
山鬼的情人 20:49:39
  
  有些jvm自己有调度机制
  
leowu2000 20:49:39
  
  开发java应用当然可以不关心这些的吧但是如果想开发一个产品呢?jvm仅仅是很小一部分么?
  
山鬼的情人 20:49:51
  
  要开发终端系统?
  
山鬼的情人 20:50:01
  
  那就把jvm外包出去
  
leowu2000 20:50:37
  
  对的终端产品
  
头发乱了~~ 20:50:49
  
  然后呢?要求把作出和SUN的ByteCode兼容的JVM就可以了?
  
山鬼的情人 20:51:05
  
  ?
  
╃(Chris 20:51:06
  
  符合sun的jvm规范就可以了吧.
  
山鬼的情人 20:51:11
  
  对
  
山鬼的情人 20:51:17
  
  让人来给你坐移植
  
山鬼的情人 20:51:32
  
  这属于很专的领域,需要一定的积累
  
头发乱了~~ 20:51:45
  
  符合规范是不是就是指的是指令兼容?
  
山鬼的情人 20:51:58
  
  有两个要求
  
山鬼的情人 20:52:16
  
  1.兼容jvm规范
  
  2.通过sun的tck测试
  
山鬼的情人 20:52:27
  
  这就是完整的java虚拟机了
  
╃(Chris 20:52:31
  
  kaffe通过tck了么?
  
头发乱了~~ 20:52:31
  
  TCK干嘛用的?
  
山鬼的情人 20:52:40
  
  kaffe没有
  
杨树 20:52:41
  
  tck测试有专有工具吗?
  
╃(Chris 20:52:56
  
  tck得给钱给sun来帮你做吧
  
山鬼的情人 20:53:09
  
  tck是sun的一套测试集,
  
山鬼的情人 20:54:02
  
  买了以后通过测试后才能算是贴标的java虚拟机
  
杨树 20:54:11
  
  
  
山鬼的情人 20:54:59
  
  tck很贵的
  
leowu2000 20:57:01
  
  基于硬件arm有公司在做jvm么? 随便乱问的
  
杨树 20:57:18
  
  山鬼在做
  
农民 - Javen 21:09:07
  
  jboss 才刚刚通过 SUN 的测试。 就是不愿意花这个钱。 不知道为什么还是妥协了,或者 SUN 也有让步
  
  
  
  
  真是的, SUN 为大家做了这么多贡献,出钱时还是有那么多不愿意!
  
山鬼的情人 20:57:27
  
  我可以帮你找人做,也可以帮你联系公司
  
山鬼的情人 20:58:10
  
  要看你要移植j2me, pbp什么的
  
山鬼的情人 20:58:23
  
  不同规模的jvm移植难度大不一样
  
郁也风 20:58:26
  
  呵呵,javen,我了解的说法好像是jboss想做,而sun去阻挠啊:)
  
leowu2000 20:58:54
  
  呵呵是直接基于硬件 少了操作系统一层么?
  
leowu2000 20:59:42
  
  你所说的不同规模的定义是不是就是支持的lib的多寡?
  
╃(Chris 20:59:48
  
  没有吧,sun肯定是鼓励大家做,然后要商标就要交钱测试.国内j2ee服务器好像就金蝶过了测试.
  
山鬼的情人 20:59:57
  
  sun是国立大家做的
  
山鬼的情人 21:00:05
  
  鼓励
  
山鬼的情人 21:00:23
  
  如果你是arm的,应该有os好
  
泥娃娃 21:01:23
  
  金蝶不是主攻.NET的吗?
  
山鬼的情人 21:01:57
  
  .net没搞头
  
山鬼的情人 21:02:11
  
  但是m$好像买通了不少官员
  
雪儿飞飞 21:02:23
  
  谁用过wsad
  
leowu2000 21:02:48
  
  不是.net没有搞头 是ms胃口太大 不肯业界一起分享 当然要费劲了
  
共筑佳话 21:03:17
  
  呵呵,不够开放?
  
山鬼的情人 21:03:29
  
  大家还有没有jvm方面的问题?我这里没宽带,不能看图片,
  
leowu2000 21:04:37
  
  jvm移植我感觉是专业性很强的一个东西有机会还是想多了解一下应用情况
  
山鬼的情人 21:04:43
  
  对
  
山鬼的情人 21:04:52
  
  这一块你应该外包给别人
  
山鬼的情人 21:04:59
  
  你要做啥东西?
  
leowu2000 21:04:59
  
  j2me能满足3G应用么?
  
农民 - Javen 21:16:42
  
Transmeta ,与 JVM 有什么不同? 好像要火起来,实际上没有太火,为什么?
  
  
leowu2000 21:05:45
  
  不是我做我只是在考虑这些问题 将来有机会肯定找你
  
山鬼的情人 21:05:47
  
  3g中国实践太少
  
山鬼的情人 21:05:54
  
  软cpu?
  
leowu2000 21:06:15
  
  可是在国外好像也不是应用很多吧
  
头发乱了~~ 21:06:30
  
  问几个初级问题,大家不要扁我。
  
  WIN下面SUN的虚拟机最大能开到多少G内存?
  
leowu2000 21:06:43
  
  在我看来 目前基于jvm上边的很多终端应用还都不太成熟
  
山鬼的情人 21:06:52
  
  这个应该是局限于你的机器把
  
头发乱了~~ 21:07:02
  
  是不是4G?
  
头发乱了~~ 21:07:13
  
  PC机,32位的
  
农民 - Javen 21:21:30
  
  Transmeta 就是前几年炒过一把的软件 CPU 呀,主要是做了一个软件的中间层,模拟 x86 的指令。 现在好像没有太火。 这个技术目前来说好像关键在于节能、省电
  
山鬼的情人 21:12:02
  
  很高兴今天有机会交流
  
农民 - Javen 21:23:43
  
  而 JVM 做的事情是,在 cpu 之上与应用程序之间多个中间层。 transmeta 的中间层在 CPU 下面,模拟 x86 。这样再底层的硬件 cpu 的灵活性就大了。
  
雪儿飞飞 21:12:07
  
  一个最基本的jvm包括哪几部分
  
leowu2000 21:12:16
  
  另外jre包含的lib会不会越来越多?对于jvm移植会有什么影响?
  
山鬼的情人 21:12:19
  
  sorry,
  
山鬼的情人 21:12:30
  
  这个简单问题,我只是没哟强调
  
山鬼的情人 21:13:25
  
  jvm = class loader + execute engine
  
leowu2000 21:14:02
  
   不好意思 误解了
  
山鬼的情人 21:14:01
  
  execute engine = execute kernel + opstack + call frame
  
山鬼的情人 21:14:12
  
  call frame相当于call frame
  
山鬼的情人 21:14:17
  
  call stack
  
leowu2000 21:14:29
  
  jvm和jre完全分开的
  
山鬼的情人 21:14:53
  
  并不完全独立,一般都互相在一起
  
leowu2000 21:15:20
  
  手机上的jvm移植是不是只要满足j2me规范即可?
  
山鬼的情人 21:15:36
  
  对
  
leowu2000 21:15:43
  
  另外一般的jvm大小如何?运行是对系统的要求如何?
  
山鬼的情人 21:16:24
  
  看是什么jvm了
  
山鬼的情人 21:16:31
  
  一般mide 2m左右把
  
头发乱了~~ 21:16:51
  
  对于单CPU系统来说,JVM如何处理多线程的调度?
  
山鬼的情人 21:17:13
  
  这就是操作系统原理里面的内容了
  
山鬼的情人 21:17:24
  
  用户线程的实现
  
头发乱了~~ 21:17:37
  
  不是由JVM本身来实现多线程么?
  
山鬼的情人 21:17:43
  
  是
  
山鬼的情人 21:17:59
  
  但这个技术是操作系统原理里面讲的
  
leowu2000 21:18:06
  
  对于实时应用的jvm 能介绍一些么?
  
leowu2000 21:18:27
  
  或者说有没有这方面的需求和应用?
  
山鬼的情人 21:18:28
  
  据说火星车就用到了real time java
  
头发乱了~~ 21:18:50
  
  恩,在操作系统里面,我知道有常用的若干种调度算法。JVM线程调度和OS类似?
  
╃(Chris 21:19:04
  
  呵呵,山鬼说得火星车,是欧洲那部没有等上火山得那部,是我们学校做的.
  
╃(Chris 21:19:16
  
  多数用的java
  
山鬼的情人 21:19:17
  
  hehe
  
山鬼的情人 21:19:23
  
  hehe
  
头发乱了~~ 21:19:50
  
  啥学校?做火星车?
  
╃(Chris 21:19:52
  
  那架车有个模型摆在我实验室旁边
  
╃(Chris 21:20:21
  
  扯远了.山鬼继续
  
山鬼的情人 21:20:31
  
  迷路了,嗬嗬
  
山鬼的情人 21:21:00
  
  到哪了?
  
头发乱了~~ 21:21:10
  
  呵呵,灌水灌多了,灌习惯了
  
leowu2000 21:21:33
  
  realtime java?
  
山鬼的情人 21:21:46
  
  realtime java没有垃圾回收
  
头发乱了~~ 21:21:58
  
  那依靠手动垃圾处理?
  
山鬼的情人 21:22:00
  
  对
  
╃(Chris 21:22:05
  
  讲到多线程实现.jvm里这个实现应该大家不同吧,比如类似于cpu得超流水技术就可以进行调度.
  
头发乱了~~ 21:22:10
  
  感觉变成C++了
  
山鬼的情人 21:22:21
  
  嗬嗬,cldc的多线程我不太熟悉
  
头发乱了~~ 21:22:34
  
  呵呵,偶对多线程感兴趣,没关系,继续
  
山鬼的情人 21:22:49
  
  数字电视上的那个是依赖于基于本地task管理的posix 封装
  
头发乱了~~ 21:23:10
  
  倚赖OS?
  
山鬼的情人 21:23:12
  
  因为一般的,如果jvm提供了线程管理的话,都不用怎么修改,
  
山鬼的情人 21:23:34
  
  如果没有提供的话,则依赖于posix thread
  
山鬼的情人 21:23:43
  
  主要是这样
  
╃(Chris 21:23:55
  
  对阿,每个线程,在classloader之后,有自己得constant pool,然后jvm执行引擎来调度指令stack的指令就行了.实际上和单cpu没关系,只是多线程而已.
  
╃(Chris 21:24:14
  
  em..
  
山鬼的情人 21:24:31
  
  realtime java还能直接操作内存空间
  
╃(Chris 21:24:32
  
  山鬼: 执行引擎是不是所有指令都做?200多个指令?
  
山鬼的情人 21:24:37
  
  对
  
山鬼的情人 21:24:44
  
  200多个,做死了
  
╃(Chris 21:24:54
  
  呵呵,最累就是这里了吧,机械劳动
  
山鬼的情人 21:24:56
  
  realtime java绝对是最牛x的java
  
山鬼的情人 21:25:20
  
  因为要操作io端口什么的需要具有操作绝对地址的能力
  
leowu2000 21:26:35
  
  呵呵越底层越来不java了
  
山鬼的情人 21:27:02
  
  靠,严重意外,我刚才听到一声爆炸,然后停电了...
  
山鬼的情人 21:27:12
  
  靠,严重意外,我刚才听到一声爆炸,然后停电了...
  
╃(Chris 21:27:18
  
  ,怎么回事
  
leowu2000 21:27:37
  
  ups?
  
山鬼的情人 21:27:41
  
  不知道,只有笔记本亮着,周围几栋楼停电了
  
╃(Chris 21:27:44
  
  笔记本吧?
  
╃(Chris 21:27:48
  
  呵呵
  
山鬼的情人 21:27:48
  
  是
  
头发乱了~~ 21:28:01
  
  哦,我以为你点蜡用电脑呢
  
雪儿飞飞 21:28:14
  
  我还以闹鬼了
  
山鬼的情人 21:28:14
  
  我脚踩发电机,
  
雪儿飞飞 21:28:32
  
  山鬼来找你了
  
山鬼的情人 21:28:36
  
  靠,先是灯一闪,然后一声巨响
  
头发乱了~~ 21:28:37
  
  估计是缝纫机改装的
  
leowu2000 21:28:39
  
  这个发电机要移植有难度:)
  
山鬼的情人 21:28:42
  
  好了
  
山鬼的情人 21:28:56
  
  大家有问题尽管问了
  
头发乱了~~ 21:29:20
  
  给大家推荐一个做JVM的高人:
  
  "Stefan Sarne"
  
农民 - Javen 21:41:15
  
  好了,大家还有 jvm 相关问题吗?
  
头发乱了~~ 21:29:37
  
  JRocket的一个重要项目经理
  
山鬼的情人 21:29:58
  
  高人
  
Totodo 21:30:34
  
  T_T,,,晕了好半天...
  
山鬼的情人 21:30:36
  
  其实jvm技术含量很高的,国内做了个皮毛
  
拓拔涛 21:31:09
  
  学习
  
  
  
  
  
Totodo 21:31:16
  
  我习惯方式,就是DOC + CODE....
  
农民 - Javen 21:42:59
  
  要不今天就到这里。 辛苦山鬼了! 再次感谢!
  
  
Totodo 21:31:29
  
  要能提供就好了...谢谢山鬼..
  
郁也风 21:31:35
  
  汗,像我这种半路出家的选手还是做点不费脑子的活吧
  
头发乱了~~ 21:31:37
  
  恩,国内好像只在嵌入式JVM上有东西,在通用JVM上没啥成果
  
山鬼的情人 21:31:54
  
  本人水平有限,有什么不足请多支教
  
leowu2000 21:32:04
  
  以后还要多请教呢:)
  
╃(Chris 21:32:06
  
  呵呵,感谢,辛苦了,山鬼
  
山鬼的情人 21:32:09
  
  
  
山鬼的情人 21:32:14
  
  
  
农民 - Javen 21:43:55
  
  
  
Totodo 21:32:15
  
  锵锵....
  
Totodo 21:32:19
  
  强.
  
头发乱了~~ 21:32:19
  
  PIAJI PIAJI!
  
农民 - Javen 21:44:04
  
  
  
╃(Chris 21:32:26
  
  为中国jvm的熊起耳努力
  
leowu2000 21:32:26
  
  谢谢了!辛苦了老兄!
  
拓拔涛 21:32:30
  
  
  
郁也风 21:32:36
  
  山鬼抓紧准备蒲扇吧,今儿好像很热啊:0
  
山鬼的情人 21:32:43
  
  靠,热傻了
  
  
  
Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
↑返回目录
前一篇: Java Collections---HashMap深度分析与比较
后一篇: 源代码--java写小游戏,吞食蛇